实现内网穿透的几种方式
大部分普通电脑对外都没有固定的公网IP、或处于NAT网络内,要从局域网外直接访问该电脑,需要借助第三方工具。
一、有一台公网固定IP服务器的情况
1、Nginx
Nginx具有4层/7层的反向代理的功能,我们可以利用该特性实现向内网计算机的请求转发,具体实现方式为通过conf/nginx.conf配置文件的stream、http节实现。
所有基于TCP/UDP协议的相关上层协议都可以通过如下配置转发,以下代码表示通过本服务器的13389端口转发到内网计算机192.168.1.100的3389远程桌面端口。
stream{ upstream rd_100{ server 192.168.1.100:3389;//定义上游服务器的IP和端口 } server{ listen 13389; proxy_pass rd_100; } }
而HTTP、HTTPS可通过如下配置转发,以下代码表示通过本服务器80端口绑定主机名www.test.com并转发到内网计算机192.168.1.100的8080端口。
http { upstream internal_server { server 192.168.1.100:8080;//定义上游服务器的IP和端口 } server { listen 80; server_name www.test.com; location / { proxy_pass http://internal_server/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } }
2、VPN服务
在本服务器上安装并开放VPN服务,内网计算机加入该VPN,且其它计算机也加入VPN即可访问。
3、代理服务器
在本服务器上安装并开放代理服务,其它计算机设置代理访问。
4、FRP等第三方内网穿透工具
分别设置服务端配置文件frps.ini和客户端配置文件frpc.ini。
[common] bind_port = 7000 dashboard_port = 7500 # dashboard's username and password are both optional dashboard_user = admin dashboard_pwd = admin enable_prometheus = true authentication_method = token token = admin
[common] server_addr = *.*.*.* server_port = 7000 admin_addr = 127.0.0.1 admin_port = 7400 admin_user = admin admin_pwd = admin authentication_method = token token = admin [rdp] type = tcp local_ip = 127.0.0.1 local_port = 3389 remote_port = 13389
5、其它
二、没有一台公网固定IP服务器的情况
1、蒲公英等组网软件
本质上是由第三方提供公网固定IP服务器的VPN服务。
2、花生壳等内网映射软件
3、其它