面对没有公网IP的网络环境,有很多类似的需求场景,我们都可以统一用一个比较成熟且常用主流的解决方案:内网穿透。内网穿透,即内网映射,内网IP端口映射外网IP或域名,下面介绍几种内网穿透软件的方式,包括frp、nat123、ngrok、nps、ssh、lanproxy、等,供大家学习和参考。每一种工具都会有相应的文章教程,相关操作使用介绍和工具信息。
FRP内网穿透
frp 是一个可用于内网穿透的反向代理应用,支持 tcp, udp, http, https 协议。利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。支持P2P穿透,访问端和被访问端都安装。利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。搭建与配置的要求是需要拥有一台公网IP的服务器或云主机或VPS主机。通过自己公网IP服务器搭建内网穿透方式,实现外网对内网的连接访问。
开源内网穿透工具,有技术条件和公网主机资源的,可以自己修整搭建,或进一步进行深度的为自己项目量身打造。
nat123内网穿透
nat123端口映射。可以上网即可将本地内网IP端口映射外网自己域名(或自动生成的免费二级域名)访问连接。支持全端口P2P穿透(端对端直连),支持80穿透后本地公网IP加速(让网站文件完全走本地带宽流量),自带防火墙管理。版本包括windows(常用有界面操作简单)、linux(适合种类主流命令操作系统,web管理)、android(旧手机也可搭建当服务器)、http(如智能路由API调用)、微信远程控制(比如关注微信后即可进行远程开机操作)。同时支持无公网IP直接映射外网,和支持自己公网IP主机搭建内网穿透服务(windows登录nat123发布映射服务即可,界面操作简单,不用复杂配置,适合大多数用户使用)。
有永久免费线路服务,也提供付费级稳定线路服务更好体验。以windows操作使用为例,界面操作很方便。在目标主机本地,或所在局域网另台互通电脑上安装并登录nat123添加端口映射。填写好内外网地址关系,即可绑定访问应用域名。
涉及内网映射外网信息有参考如下,应用类型:根据自己内网穿透场景选择。如办公OA登录管理网用非80网站的类型来映射外网。免费用户推荐选择使用全端口P2P的类型使用。
映射服务:默认开放免费线路。按需切换到对应VIP线路。
应用名称:自定义。
内网端口:本地应用打开使用的端口号。如选择了全端口的类型,则不显示也不用填写这项,因为是所有端口都会映射到。
内网地址:自己服务器本地内网IP。如是本机用127.0.0.1格式。
外网端口:自动分配的不用改,外网访问用的端口号。如选择了全端口的类型,则不显示也不用填写这项,因为是所有端口都会映射,且内外网端口访问是一样的。
外网地址:自动生成一个免费二级域名。或填写上自己的域名,同时在自己域名解析网站设置,添加一个对应的cname指向,让自己域名生效。
映射保存生效后,即完成内网映射的设置。nat123内网映射后,在外网访问连接时,使用域名(和外网端口)即可进行访问连接。如使用了全端口P2P的类型映射模式,同时需要在外网访问端安装使用P2P访问者(nat123客户端安装包安装后同在有),在P2P访问者打开对应域名和端口后,再进行访问连接。
Ngrok内网穿透
一个通过任何NAT或防火墙为您的本地主机服务器提供即时访问、安全的URL的命令。类似nat123和frp,ngrok分为服务端和客户端,也可以自己搭建服务端。
开源内网穿透软件,不支持P2P协议穿透(frp和nat123均支持P2P穿透),适合自己公网Ip主机搭建转发项目使用。
NPS内网穿透
NPS是一款轻量级的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。跟FRP类似,同样需要自己有公网IP服务器并自己搭建内网穿透的使用前提。官方给的安装方式有三种,我这里选择docker安装为示例,
docker pull ffdfgdfg/nps请确保为conf文件夹
SSH内网穿透
配合autossh工具使用,因为autossh会容错
自动重新启动SSH会话和隧道。autossh是一个程序,用于启动ssh的副本并进行监控,在死亡或停止传输流量时根据需要重新启动它。 这个想法来自rstunnel(Reliable SSH Tunnel),但是在C中实现。作者的观点是,它不像匆匆忙忙的工作那么容易。使用端口转发环路或远程回显服务进行连接监视。在遇到连接拒绝等快速故障时,关闭连接尝试的速度。在OpenBSD,Linux,Solaris,Mac OS X,Cygwin和AIX上编译和测试; 应该在其他BSD上工作。免费软件。
如何通过SSH让外网访问内网呢?我们有服务器internal(内网服务器)和一个外网能访问的服务器external。怎么让内网的服务器也能够被外网访问呢?我们可以通过external来做中转。
准备:内网服务器,可以访问外网:internal
外网服务器:external
原理:ssh工具是一个非常强大的工具,除了能够远程连接,还能建立隧道,转发端口。利用这个特性就可以把外网的端口请求,连接到内网端口。ssh本身的连接并不稳定,借助工具autossh可以很稳定的建立隧道,因为失败或者其他网络情况下,autossh会自动维护和保持连接。
安装:安装autossh
1)下载autossh
2)安装
$ wget http://www.***.com/autossh/autossh.tgz
$ gunzip -c autossh.tgz | tar xvf -
$ cd autossh
$ ./configure
$ make && make install
建立连接
第一步:连接内网到远程
autossh -M 60102 \
-fN -o "PubkeyAuthentication=yes" \
-o "StrictHostKeyChecking=false" -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" \
-R localhost:60002:localhost:10110 \
-p 2222 root@*.com
这一段命令的意思就是把internal内网端口10110连接到external:*.com的60002端口,external:*.com的ssh端口是2222,autossh数据监听端口是60102,-o 的参数和ssh的-o是一致的。
第二步,把外网访问流量连接到external监听端口
ssh -p 2222 -fNTCL *:80:localhost:60002 localhost
这一段命令的意思就是把external外网机的80端口流量转发到本机external的60002上面。因为60002是和internal的10110连接的,所以现在可以直接通过外网80端口访问到内网的10110。
Lanproxy内网穿透
lanproxy是一个将局域网个人电脑、服务器代理到公网的内网穿透工具,目前仅支持tcp流量转发,可支持任何tcp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面...)。目前市面上提供类似服务的有nat123、TeamView、等等,但要使用第三方的公网服务器就必须为第三方付费,或测试级和轻量级场景可以使用第三方提供的免费线路服务,同样这些免费服务都有一些限制,如流量、或带宽,因为数据包会流经第三方服务器,占用第三方宽带等资源。
Spike内网穿透
Spike是一个可以用来将你的内网服务暴露在公网的快速的反向代理,基于ReactPHP,采用IO多路复用模型。采用Php实现。有兴趣有条件的个人可以自行尝试测试体验。
快速了解相关:
使用端口映射还是动态域名解析?>
端口映射与动态域名解析的区别?>
选择什么映射类型?
80映射与网站加速的区别?>
本地加速与网站加速的区别?>
免费与VIP的区别?>
如何选择映射VIP?
如何使用映射VIP(80网站)?>
如何使用映射VIP(非网站)?>
如何使用动态域名解析VIP服务?
如何使用自己的域名(根域名和www子域名)?>
客户端帐号能否多处登陆?
当前活动:
1.
非80映射免费VIP。
2.
80映射免费VIP全映射。
3.
非网站免费VIP全端口。
4.
充值送N币再送T币。
5.
站外分享送T币活动。
端口映射高级功能:
1.
如何切换使用映射VIP线路。
2.
http穿透解决http屏蔽问题。
3.
端口映射应用多机负载均衡。
4.
80映射网站默认使用快照提示取消。
5.
映射网站默认未登录提示页面自定义。
6.
如何设置映射网站离线转跳自定义目标地址。
7.
防火墙与访问日志(查看来访者IP和阻止IP端口)。
8.
80网快照录制和缓存删除。
9.
自主发布映射服务。
10.
自主选择网站集群线路访问端国内外区域。
动态域名解析高级功能:
1.
动态域名解析应用多机负载均衡。
2.
动态域名解析VIP怎么用。
域名解析高级功能:
1.
域名解析A记录宕机检测和故障转移。
2.
URL显性转发和隐性转发。
3.
URL转发默认提示取消。
远程开机:
1.
微信/网页远程开机。
![]() |
![]() |
![]() |