server1:10.10.10.1:內(nèi)網(wǎng)服務(wù)器;無代理
server2:10.10.10.2:內(nèi)網(wǎng)服務(wù)器炮叶;有代理(代理端口為8888)
server3:192.168.1.xx:外網(wǎng)服務(wù)器
使用frp實(shí)現(xiàn)通過外網(wǎng)訪問server3(的指定端口)從而訪問內(nèi)網(wǎng)服務(wù)器server1鹊杖, server2是server1的代理服務(wù)器扛芽。
1.配置server3的frps.ini(服務(wù)端)
[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服務(wù)綁定的端口號(hào)(frps與frpc一致)
auth_token 為frps與frpc的認(rèn)證秘鑰 (frps與frpc一致)
http_proxy/https_proxy 為內(nèi)網(wǎng)(server2)代理服務(wù)器的地址+代理服務(wù)端口號(hào)
由于server1沒有外網(wǎng)也沒有代理川尖,所以只能通過server2的代理連接外網(wǎng)服務(wù)器上的frps
type=tcp 設(shè)置訪問方式為tcp
local_port =3125 本地訪問(ssh訪問)端口為3125
remote_port =5066 設(shè)置遠(yuǎn)程對(duì)外端口為5066(就是設(shè)置server3訪問server1的端口)
3.啟動(dòng)frps 和frpc
server3上啟動(dòng):
./frps -c frps.ini
server1上啟動(dòng):
./frpc -c frpc.ini
后臺(tái)持續(xù)啟動(dòng)
nohup ./frps -c frps.ini&
nohup ./frpc -c frpc.ini&
4.通過server3訪問server1(ssh)
確保服務(wù)器安裝了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服務(wù)端需和客戶端版本一致(最好一致吧)
執(zhí)行./frpc -c frpc.ini
時(shí)報(bào)錯(cuò)被芳,返回:
login to server failed:ConnectTcpServer using proxy error, StatusCode [403]
403是forbbiden/refused
解決辦法:
1.檢查服務(wù)器有沒有設(shè)置代理的環(huán)境變量HTTP_PROXY馍悟,(在/ etc/profile或者/etc/environment)刪除代理環(huán)境變量
或者 直接執(zhí)行
http_proxy="" ./frpc -c frpc_.ini
2.檢查代理服務(wù)器上(server2)的 squid配置
把#http_access deny CONNECT !SSL_ports
注釋掉
或者類似的deny項(xiàng)都注釋掉
如果用的是別的代理軟件,如tinyproxy锣咒,在配置文件中添加
ConnectPort 7000
保存restart proxy服務(wù)