frp内网穿透:通过代理连接frps,实现经过外网,代理,访问内网服务器

server1:10.10.10.1:内网服务器;无代理
server2:10.10.10.2:内网服务器;有代理(代理端口为8888)
server3:192.168.1.xx:外网服务器
使用frp实现通过外网访问server3(的指定端口)从而访问内网服务器server1, server2是server1的代理服务器。
1.配置server3的frps.ini(服务端)

[common]
bind_port = 7000
auth_token = influx

2.配置server1的frpc.ini (客户端)

[common]
server_addr = 192.168.1.xx
server_port = 7000
auth_token = influx
http_proxy = http://10.10.10.2:8888
https_proxy =https://10.10.10.2:8888

[bc_ssh]
type = tcp
local_port = 3125
remote_port = 5066

说明:
       server_port   为server3  frp服务绑定的端口号(frps与frpc一致)
       auth_token    为frps与frpc的认证秘钥 (frps与frpc一致)
       http_proxy/https_proxy  为内网(server2)代理服务器的地址+代理服务端口号
       由于server1没有外网也没有代理,所以只能通过server2的代理连接外网服务器上的frps 
       type=tcp 设置访问方式为tcp
       local_port =3125 本地访问(ssh访问)端口为3125
       remote_port =5066 设置远程对外端口为5066(就是设置server3访问server1的端口)
3.启动frps 和frpc

server3上启动:
./frps -c frps.ini
server1上启动:
./frpc -c frpc.ini
后台持续启动
nohup ./frps -c frps.ini&
nohup ./frpc -c frpc.ini&

4.通过server3访问server1(ssh)

确保服务器安装了ssh
ssh -p 5066 @username192.168.1.xx:5066

注意:
     username 为server1也就是10.10.10.1的用户名;password也是server1的password 
     由于frpc的remote_port = 5066所以在server3的端口是5066就指定了访问的是server1
遇到的问题

frp服务端需和客户端版本一致(最好一致吧)

执行./frpc -c frpc.ini时报错,返回:

login to server failed:ConnectTcpServer using proxy error, StatusCode [403]

    403是forbbiden/refused
解决办法:

1.检查服务器有没有设置代理的环境变量HTTP_PROXY,(在/ etc/profile或者/etc/environment)删除代理环境变量
或者 直接执行
http_proxy="" ./frpc -c frpc_.ini

2.检查代理服务器上(server2)的 squid配置
#http_access deny CONNECT !SSL_ports注释掉
或者类似的deny项都注释掉
如果用的是别的代理软件,如tinyproxy,在配置文件中添加
ConnectPort 7000

保存restart proxy服务

你可能感兴趣的:(frp内网穿透:通过代理连接frps,实现经过外网,代理,访问内网服务器)