搭建frp用作内网SSH穿透

步骤

  1. github下载最新的frp二进制文件(目前最新为0.21版本)。其中frps,frps.ini为服务端,供vps使用;frpc,frpc.ini为客户端,供内网的工作站使用
  2. 设置frps.ini,并vps上运行 ./frps -c frps.ini,注意frps需要持续运行,可以参考我之前的文章,使用screen后台运行frps
# frps.ini
[common]
bind_port = 7000 #frps服务监听的端口
token = 123 # 链接口令

3. 设置frpc.ini,并在工作站上运行,./frpc -c frpc.ini,同样,记得后台运行

# frpc.ini
[common]
server_addr = x.x.x.x # 此处为 vps 的公网ip
server_port = 7000 # vps上frps服务监听的端口
token = 123 # 链接口令

[ssh]
type = tcp
local_ip = 127.0.0.1 
local_port = 22 # 需要暴露的内网机器的端口
remote_port = 6000 # 暴露的内网机器的端口在vps上的端口

4. 在需要登录工作站时,使用ssh -p 6000 user@vps.ip-p 6000表示ssh链接vps.ip上的6000端口,对应着frpc.ini中的设定,因此会直接被frps转发到内网工作站的127.0.0.1的22端口,即内网工作站的sshd端口上

 

注意的坑:

frpc和frps运行成功后都会显示success信息,通常frps端运行不会有问题,但frpc可能无法链接上。

原因可能在于:

1. 内网无法链接公网

2. 内网系统的防火墙阻止了对外网的6000端口访问

3. 公网运营商限制了6000端口的访问(少见)

4. vps运营商的防火墙阻挡了对vps的6000端口的访问

5. vps系统的防火墙阻止了对自己6000端口的访问

 

排除方法:

1. 内网ping vps的ip,如果成功,则排除原因1

2. 使用不同电脑wget探测vps的6000端口,wget vps.ip:6000,如果没有回应,则说明vps的防火墙或是vps运营商的防火墙设置有问题

3. 以上都不满足,则原因在于2和3

4.客户端和服务端的版本不一致

我自己frpc无法链接时,经检查问题出在原因2,使用google cloud compute engine,防火墙设置不对,导致6000端口无法访问。

 

总结

  • 通过自建frp可以安全地完成内网穿透;
  • 整体的速度与vps、内网机器相关;
  • 流量都要经过vps转发,因此不适合传输大型的计算结果。
posted @ 2023-12-15 01:16  笠航  阅读(56)  评论(0编辑  收藏  举报