在自己家里内NAS中安装了一系列的各种应用和服务,如果家里宽带接入时路由器WAN没有分配到固定公网IP,则会让在外网访问不了自家NAS上的应用,手机上也连不上,就十分不方便。除了NAS的访问,其他像web网站、FTP、远程办公软件系统、GPRS、监控、SVN、数据库、等等,内网提供外网访问,及涉及公网访问局域网场景,所以我们需要内网穿透,方法主要有这几个:动态域名解析、反向代理转发、nat123内网映射P2P穿透。下面对比说明一下相关实现及步骤:
一,动态域名(解析变化公网IP)
最早期的方法,要求家中拨号网络有一个外网 ip,每次断线拨号虽然 ip 变了,通过定时请求动态域名提供商的一个接口,把域名指向改成你最新的外网地址,这样其他地方就可以通过域名访问你家里的 IP 了。
一般动态域名路由器都支持设置。对于智能路由还可以自定义动态域名解析使用URL、域名和IP等参数。即使不支持也没关系,你家里内的服务器(或旧手机平板设备运行如nat123安卓版的动态域名客户端)的定时请求一次 DDNS 服务商接口即可,比如nat123 的 http://ddns.nat123.com 免费动态域名更新:http://username:password@ddns.nat123.com/update.jsp?hostname=yourhostname
在家里服务器的 crontab 中设置每几分钟get访问一下上面的地址,把用户名密码和hostname替换成你免费申请的免费动态域名(或自己注册的域名),即可更新。更多动态域名API调用接口可以参考这个《nat123动态域名解析HTTP版》
最后家中路由器需配置端口转发,比如把外网 ip 的 443 端口转给内网服务器的 443 端口。
这是最廉价的解决方案,且动态域名解析后,域名访问是完全走本地宽带流量,速度由本地自己拉的宽带质量线路决定的。唯一问题是当 IP实时更新后,需要等本地网络线路经过的各级DNS缓存TTL时间,在本地DNS网络线路域名解析TTL时长更新范围时间内,你是无法访问的,因为当本地DNS未更新时,本地域名解析到的IP还是原来变化前的IP未更新到新的IP地址。不过可以将本地DNS修改使用较稳定的三方公共DNS地址,如阿里云公共DNS地址使用,会比默认DNS更快些生效和稳定些。同时需要确保本地公网IP端口是不受限制,可以使用的。比如不少地方网络商默认禁止了80、443、8080等一些常用端口,需要实测下然后变更为其他正常端口号(如90)来使用。
如果家里有外网 IP ,这是首选方案,现在越来越多宽带新开户无法得到外网 IP 地址,比如电信。如果本身原来是有公网IP的,但曾经不经本人同意允许把IP换成内网 IP,可以尝试打电话去理论找回自己的公网IP。但随着 IPv4 资源减少,外网 IP 肯定越来越少,所以我们就需要反向代理转发或内网穿透P2P的方案。
二,反向代理(自己搭建转发服务)
家中没有外网 IP 时,如果你有一台固定公网 IP 的外网 VPS主机或云服务器,那么可用它做跳板访问家里内网端口。在云主机上启动一个反向代理服务,同时在家里内网服务器上启动另外一个映射服务,那么链接外网云主机的 443 端口,可以被反向代理转发到内网的 443 端口上。
最简单的方案是 ssh -R 反向代理,比如我想把内网另外 192.168.0.55:443 端口暴露给 VPS ( 114.115.8.11 )的 8443 端口,可以在任意一台内网机器上运行: ssh -R 0.0.0.0:8443:192.168.0.55:443 user@114.115.8.11
这样会让远端(-R )创建一个新端口( 8443 ),并把该端口的数据通过 ssh 链接传回来给我,我再把它转发给我能访问的 192.168.0.55:443。在云主机修改下 /etc/ssh/sshd_config: GatewayPorts yes 这样连接外网云主机上的 8443 端口相当于连接内网 192.168.0.55 的 443 端口了。
该方法没有断线重连,连接断了 ssh 进程就会退出,需要额外写个BAT脚本什么的来检测重启,或者用 autossh 自动重启来保活。正儿八经长期用的话,推荐使用专业程序来提供更加稳定高效的方向代理。这类服务程序有很多,且还是开源的也不少,可以自行网上查找下载用。
如果自己有外网IP云主机是windows操作系统习惯操作的,也可以使用nat123安装并发布映射服务提供自己另个帐号来使用或他人使用,有界面操作的简单安装发布和使用,这样在windows云主机上搭建映射转发服务也很方便。更多自己公网主机搭建内网穿透详细参考《nat123独立服务器版-自主运营-自行提供公网服务器搭建映射服务》
三,内网穿透(带P2P方案)
不管本地是内网IP,还是没有公网IP服务器,甚至或不能或不想花费更多时间精力费用搞云服务器时,这里推荐用nat123内网映射来做内网穿透外网访问,可以上网即可将本地内网IP端口映射外网域名访问,用自己域名或免费二级域名。nat123内网映射外网的方法操作也很简单,只需要在本地服务器,或内网所在另台互通主机上,安装并登录nat123添加端口映射,设置好对应的内外网IP域名信息即可。
涉及内网映射外网信息有参考如下,应用类型:根据自己内网穿透场景选择。如办公OA登录管理网用非80网站的类型来映射外网。免费用户推荐选择使用全端口P2P的类型使用。
映射服务:默认开放免费线路。按需切换到对应VIP线路。
应用名称:自定义。
内网端口:本地应用打开使用的端口号。如选择了全端口的类型,则不显示也不用填写这项,因为是所有端口都会映射到。
内网地址:自己服务器本地内网IP。如是本机用127.0.0.1格式。
外网端口:自动分配的不用改,外网访问用的端口号。如选择了全端口的类型,则不显示也不用填写这项,因为是所有端口都会映射,且内外网端口访问是一样的。
外网地址:自动生成一个免费二级域名。或填写上自己的域名,同时在自己域名解析网站设置,添加一个对应的cname指向,让自己域名生效。
映射保存生效后,即完成内网映射的设置。
内网映射后,在外网访问连接时,使用域名(和外网端口)即可进行访问连接。如使用了全端口P2P的类型映射模式,同时需要在外网访问端安装使用P2P访问者(nat123客户端安装包安装后同在有),在P2P访问者打开对应域名和端口后,再进行访问连接。
快速了解相关:
使用端口映射还是动态域名解析?>
端口映射与动态域名解析的区别?>
选择什么映射类型?
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.
微信/网页远程开机。