内网穿透的技术有很多,常用的方法有:
- ssh/autossh
- ngfork
- frp (本文将介绍该方法)
github地址:https://github.com/fatedier/frp
frp为传统的C/S结构,可分为客户端和服务端,其中
- frpc(客户端) 运行在内网环境
- frps(服务端)运行在有公网IP的服务器
frp 运行原理
编写frpc.ini文件,例如:
[common] server_addr = 公网IP server_port = frps运行的端口 token = 一串随机字符用来防止未经授权的使用 [appName] type = tcp local_ip = 127.0.0.1 local_port = 需要映射的本地端口 remote_port = 映射成公网服务器的端口
服务器端frps.ini就更简单了
[common] bind_port = 服务端运行的端口 token = 一串随机字符用来防止未经授权的使用 ;允许被使用的端口范围 allow_ports = 40000-50000
假设frps 运行在 1.2.3.4:34567,客户端(192.168.1.5)把本机的80端口映射成了38888端口,则链路如下
192.168.1.5:80 <-> 1.2.3.4:34567 <-> 1.2.3.4:38888
提高映射服务可靠性
请使用supervisor分配守护frpc/frps即可达到理想可靠性