本文主要解决在家庭宽带中没有公网IPV4,但需要将家里的比如群晖等Web服务映射到公网中供大家访问,通过nat打洞的方式可以吃满家里的上行带宽,以下教程是基于我光猫桥接,路由器系统是openwrt24.10.1。
前提条件
确保你这条宽带非NAT4,怎么判断宽带是否NAT4下载NatTypeTester运行,选择RFC 3489,STUN服务器选择miwifi那个,单击测试按钮,NAT类型只要不是Symmetric即可打洞。如果你natmap装在路由器上,开不开启FullCone NAT均可打洞成功
软件下载地址:123云盘NatTypeTester下载链接 提取码:3rxY
安装natmap软件包
进入openwrt路由器后台,依次点击系统-软件包,在过滤器中搜索 natmap,由于我这里已经安装好,我们安装第三个natmap中文汉化包会自带安装前面两个软件;
安装好后我们刷新路由器界面,在服务菜单就能看到NATMap插件了。
配置natmap
这里有两种配置方法,第一种是利用openwrt的防火墙规则将打洞后获取到的公网IP和端口映射出去;第二种是利用natmap自带的转发功能映射,通过第二种转发出去会对路由器有额外开销,优先使用第一种。
防火墙中转
NATMap设置
我们通过服务-NATMap 进入到NATMap插件,点击 添加 按钮,按下图依次填写参数,填写完成后单击保存
协议:TCP //你要穿透的协议是TCP还是UDP,如果两者都要的话在新建一条记录即可,我们这里是需要将群晖映射到外网,所以选择TCP
地址族限制:仅IPv4 //你想监听IPv4还是IPv6,目前家宽一般都有公网IPv6,我这里选择仅IPV4;
接口:wan //选择你路由器拨号的接口
keep-alive间隔: //这里可以留空
STUN 服务器:turn.cloudflare.com //输入公用STUN服务器,不知道写这个即可
HTTP 服务器:qq.com //输入一个国内稳定的域名即可
绑定端口:9001 //随意输入高位端口,不要和内网其他端口冲突
所有参数填写完成后我们单击保存,稍等片刻NATMap界面就会出现外部IP地址以及外部端口;
防火墙设置
依次单击网络-防火墙-端口转发,添加一条记录
名称: //这里可以随意填写
地址族限制:仅IPv4 //和上面natmap保持一致
协议:TCP //和上面natmap保持一致
源区域:wan
外部端口:9001 //填写natmap中绑定端口
目标区域:lan
内部IP地址: //填写提供Web服务的IP地址,我这里是要将群晖映射出去,所以我选中的是群晖的IP
内部端口:5001 //填写内网端口号,群晖默认https端口就是5001
测试
以上步骤操作完成后我们通过natmap提供的外部IP+外部端口即可访问群晖页面。
natmap中转
NATMap设置
通过natmap中转设置方法和natmap一样,只是需要勾选“转发模式”
转发目标:192.168.100.100 //输入你提供Web服务的IP地址,我这里是要将群晖映射出去,所以我选中的是群晖的IP
转发目标端口:5001 //填写内网端口号,群晖默认https端口就是5001
通知脚本: //可以留空,也可以自动添加其他脚本
防火墙设置
依次单击网络-防火墙-通信规则,添加一条记录
名称: //这里可以随意填写
协议:TCP //和上面natmap保持一致
源区域:wan
目标区域:设备(输入)
目标端口:9001 //填写natmap中绑定端口
操作:接受
其他保持默认即可
测试
以上步骤操作完成后我们通过natmap提供的外部IP+外部端口即可访问群晖页面。
后记
针对家庭宽带运营商会定期强制重拨(一般不会超过7天),当路由器重新拨号后外部IP和端口号就会发生变化,这时我们需要输入新的IP和端口号才可以访问Web服务,如果想做到类似DDNS的话可以参考natmap作者在Github上的分享。
参考文献
natmap作者:https://github.com/heiher/natmap
《通过natmap打洞实现在私网IP中运行Web服务》留言数:0