在常规的搭建会采用反向代理技术进行公网映射,反向代理的工作原理是,代理服务器来接受客户端的网络访问连接请求,然后服务器将请求有策略的转发给网络中实际工作的业务服务器,并将从业务服务器处理的结果,返回给网络上发起连接请求的客户端。但是反向代理技术的使用要满足以下两个条件:①反向代理服务器需要具有公网IP。②反向代理服务器需要能够访问需要映射服务器的局域网。以下是示意图:
目前大多是遇到的映射问题是,因为价格原因和运营商的管控很多PC和服务器没有公网IP,而云服务器并不能满足与需要映射服务的原始服务器主机在同一局域网,为了解决这一问题我们提出采用穿刺软件的解决方案,将局域网内可以访问公网的服务器装上穿刺软件客户端,再通过在云服务器上安装穿刺软件服务端,将局域网和公网服务器通过软件连接的方式。这样穿刺主机的服务端和客户端相结合就相当于反向代理服务器。而需要满足反向代理的两个条件分别由云服务器(穿刺主机服务端)满足拥有公网IP,局域网内可以访问公网的服务器(穿刺主机客户端)满足可以访问局域网。
Frp是一款免费穿刺软件,是一种快速反向代理,目前,它支持TCP和UDP,以及HTTP和HTTPS协议,可以通过域名将请求转发到内部服务。frp 还有一个 P2P 连接模式。一下是他的使用方式:
将frps.exe与frps.ini其放到具有公网IP服务器上,Frpc.exe与frpc.ini的需要穿刺的局域网内服务器上
修改配置文件frpc.ini启用此功能:
[common]
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_pwd = admin
然后访问http://127.0.0.1:7400查看管理界面,用户名和密码均为admin.
修改配置文件frps.ini连接到 frp 客户端:
frps.ini
[common]
bind_port = 7000
frps启动命令:
./frps -c ./frps.ini
修改配置文件frpc.ini开启映射:
[common]
server_addr = x.x.x.x
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
请注意,local_port(在客户端侦听)和remote_port(在服务器上公开)用于进出 frp 系统的流量,而server_port在 frp 之间使用。
frpc启动:
./frpc -c ./frpc.ini
使用 frp 公开 HTTP(S) 服务
修改frps.ini,设置vhost HTTP端口为8080:
[common]
bind_port = 7000
vhost_http_port = 8080
运行frps:
./frps -c ./frps.ini
修改frpc.ini并设置server_addr为远程frps服务器的IP地址。这local_port是您的网络服务的端口:
[common]
server_addr = x.x.x.x
server_port = 7000
[web]
type = http
local_port = 80
custom_domains = www.xxxxx.store
运行frpc:
./frpc -c ./frpc.ini