背景:
客户要求能从外网网页端访问web控制中心。
介绍:
申请了一个阿里云服务器,其实第一次有试用版本,申请了服务器以后,服务器会给你分配一个外网IP,具体链接:阿里云
申请后就可以在工作台看到了:
然后去安全组打开端口配置:
配置需要访问的端口。
这时候我们通过内网(可以访问外网IP)的电脑进行登录:
ssh root@172.76.118.223 输入密码
然后就可以登录到云服务器了。
但是这个时候我们只能以客户端的方式从内网访问云服务器,那么当我们在云服务器上部署了一个web程序,而这个程序需要从我们的内网访问数据,这时候怎么办?
这时候就需要frp代理(内网穿透)了。
具体看如下:
博客一
博客二
两个博客说的很详细,我这里补充一下:
阿里云服务器设置frp的服务端,你自己的电脑设置为frp的客户端,因为云服务器是无法主动跟你这边内网的电脑建立连接的,只能由内网的电脑主动去连接阿里云服务器才可以,所以这里是这种配置。
阿里云服务器端的frp配置如下:
[common] # 共同配置,必需有该配置(请勿修改该代理名) bind_port = 7000 # frps 监听的端口
记得把这个端口在云服务器上添加上喔。
也就是说frp这个程序的服务端设置在云服务器上,这个frp服务器的端口是7000,然后启动
这个时候你在你电脑上用:
telnet 阿里云服务器地址 7000
是可以联通的。
然后在你内网中的电脑中设置frp程序的客户端配置:
[common] server_addr = 120.76.118.232 server_port = 7000 [web0] type = tcp local_ip = 127.0.0.1 local_port = 9990 remote_port = 6000 [web1] type = tcp local_ip = 192.168.1.25 local_port = 9990 remote_port = 6001 [web2] type = tcp local_ip = 127.0.0.1 local_port = 1935 remote_port = 6002 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 1935 remote_port = 6003
如果你要访问内网中的22,那么输入
ssh -p 6006 内网主机用户名@云服务器ip
输入密码的时候一定要输入内网中的密码,虽然它提示你输入阿里云本机密码
再说一次:
有人访问阿里云服务器:
http://阿里云服务器外网ip:6001
它的链路是如下的
阿里云服务器frp服务端—》内网电脑frp客户端—》192.168.1.25:9000
然后按照原路返回
这方方式适合各种音视频流,比如rtsp rtmp http-flv等
参考:NAT路由器打洞原理
https://www.cnblogs.com/mq0036/p/4644776.html