家庭网络NAT优化
转载:家庭网络优化指南:提升NAT类型,降低游戏延迟、提高下载速度 – 猫点饭
四种类型
家庭网络都是使用NAT技术的,一般划分NAT4个类型:NAT1、NAT2、NAT3、NAT4,具体如下:
Full Cone NAT(全锥形)
- 内网主机使用一个固定的公网IP和端口进行所有外部通信。
- 任何外部主机只要知道这个公网IP和端口,就能向内网主机发送数据。
Restricted Cone NAT(IP限制锥形)
- 内网主机使用一个固定的公网IP和端口进行所有外部通信。
- 只有内网主机曾向某外部主机发送过数据,该外部主机才能向内网主机发送数据。
Port Restricted Cone NAT(端口限制锥形)
- 内网主机使用一个固定的公网IP和端口进行所有外部通信。
- 只有内网主机曾向某外部主机的特定IP和端口发送过数据,该外部主机才能向内网主机发送数据。
Symmetric NAT(对称形)
- 内网主机与每个外部主机通信时,会分配不同的公网IP和端口。
- 外部主机只能在收到内网主机的数据后才能回传数据,在安全性上最为严格,但也最容易导致连接问题。
玩过网心云、甜糖、京东云这些PCDN的服务,对NAT类型肯定不陌生了,它们都要求你的网络类型达到:NAT1收益才能最大化,分跑没跑到多少先不说,网络优化可学会了不少知识呢,这波不亏!
NAT类型有哪些影响?
NAT类型主要影响UDP协议的通信性能和稳定性。特别是在需要低延迟和高实时性的应用中,例如在线游戏、VoIP和视频通话。
游戏的影响:玩主机游戏的影响很大,如果你有PS、Xbox、NS 等主机,可以在网络状态里看到 NAT类型;对网络游戏会影响延迟和丢包率,以及匹配系统的效率和成功率。
语音视频的影响:你可能遇到过微信视频提示网络质量不好,但WiFi信号满格的状况,这种情况很有可能是NAT4类型,导致无法P2P连接成功导致的。
BT下载的影响:P2P下载等应用,最为开放的NAT类型,可以连接到更多的资源数,加快下载的速度。
开放性:NAT1>NAT2>NAT3>NAT4
安全性:NAT1<NAT2<NAT3< NAT4
家庭宽带一般是NAT3,Port Restricted Cone NAT(端口限制锥形)。
NAT打洞
NAT 打洞技术基本都是基于UDP协议的,STUN协议是一个专门帮助位于NAT后的网络设备进行点对点连接(打洞)的,要求如下:
NAT1 | NAT2 | NAT3 | NAT4 | |
---|---|---|---|---|
NAT1 | ✅ | ✅ | ✅ | ✅ |
NAT2 | ✅ | ✅ | ✅ | ✅ |
NAT3 | ✅ | ✅ | ✅ | ❌ |
NAT4 | ✅ | ✅ | ❌ | ❌ |
简单总结能实现点对点通信的条件:位于NAT后的设备,NAT类型要:A+B ≤ 6 才可以实现NAT穿越。
NAT类型如何优化?
宽松的NAT环境可以建立直接P2P连接,尽可能避免经过中继服务器,实现更好的网络性能。那么问题来了,如何提升你的家庭宽带NAT类型?这才是重点。
光猫改桥接(建议):路由器拨号+开启Upnp+开启Full Cone网络(如果有此设置,华硕、锐捷可设置)。
光猫路由模式:进入光猫后台开启Upnp,路由器设置成AP模式(有线中继),减少一层NAT设备更容易达到NAT2以上。
注意:路由器DMZ会暴露一个指定的主机IP,和Upnp有冲突,不建议开启。
第一种网络拓扑
大部分家庭都是光纤入户→光猫有网了→接入路由器的WAN口,路由器有无线网了,电脑、电视等有线设备接入路由器或者交换机,那么就是下面这种网络架构:
这种架构其实光猫才是家里的主路由,我们买的路由器被当做了二级路由,家庭内网IP情况如下:
- 光猫:192.168.1.1
- 路由器:192.168.10.1
连接路由器的设备:电脑、手机等就是192.168.10.X 这样的IP了,手机通过路由器上网会经过两层NAT,效率大大降低。
第二种网络拓扑
也就是光猫改桥接,路由器拨号上网,这一步做完,减少一层NAT,是大家最推荐的做法,完全掌控家庭网络,随机折腾。
第三种网络拓扑
这种网络结构使用的人数是最少的,适合于光猫无法改桥接,没有超级密码的情况
和第一种网络结构一样,光猫当主路由进行上网,区别是路由器不当做二级路由了,直接设置为AP模式,只提供无线功能,网络层级减少一个NAT
优化家庭网络重点:路由器能少一个层级就少一个层级,这样可以减少一个NAT设备,最后才有可能达到NAT1类型。
- 有条件给光猫改桥接
- 光猫不能改桥接
下面分两种情况来优化家庭网络
优化方案
光猫改桥接
现在的光猫早已不是当初单纯的小猫了,变身:光猫+路由器+AP接入点,我们第一步就要恢复光猫的本职工作,光电转换调制解调的工作。路由这种脏活、累活关我小猫什么事?
办理宽带的时候直接跟运维师傅说、一般都会给你改桥接。办理好了的可以找运维师傅直接要超级密码自己改,默认不给桥接的原因无非是怕麻烦、大部分用户只需要插上就能上网、少一个环节少出错。
这一步做完,减少一层NAT,家庭网络的拓扑结构变成了:
▲ 路由器外网IP:100.64.x.x 虽然还是内网IP,但不是192.168.1.2这样的了
只是路由器拨号,网络只优化了一半,还是不够,端口转发这个功能也同样重要
什么是端口转发?
端口转发是一种网络技术,它允许从互联网上的一个端口的数据传输被重定向到另一个端口,通常是从公共IP地址的端口转发到局域网内部的私有IP地址的端口。这样做可以让外部设备通过互联网访问您家庭网络中的特定服务,如文件服务器、游戏服务器或其他在线服务。
路由器开启UPnP
UPnP简单来说是自动的端口转发,某些有需求的应用可以直接穿透到因特网,不需要做复杂的端口映射设置,开启后可以提升p2p连接的成功率,对远程桌面应用也有帮助。
DMZ也可以,是把一个内网设备的IP直接暴露在公网上,只能暴露一个,一般不会同时用这两个功能。
▲ 现在路由器都有这个功能,建议打开,图上是京东云路由器自己映射的一些端口,不知道是什么服务
光猫改桥接路由器拨号+路由器开启UPnP功能:
光猫有条件改桥接的情况,家庭宽带能做的优化就完成了!
光猫无法改桥接
这种情况为什么会出现?不明但有,运维师傅不配合之类的,或者自己不想太折腾,那么也有方法,先看拓扑图:
路由+UPnP让光猫来提供,这样整个家庭网络内部的IP统一,如果有NAS之类的设备,也可以实现局域网互相访问,不会出现两个网段的情况。
噢!懂了,但怎么做?
有些路由器如padavan系统
有AP模式、华硕、TP应该也有,这种情况上网方式直接设置为AP模式即可。
大部分路由器没有这个模式的,上网模式只有几种,还是京东云举例:
光猫开启UPnP
这个不需要超级密码,光猫背面的普通用户就可以修改!
光猫无超级密码优化的方式:路由器LAN口接入光猫LAN口+光猫开启UPnP功能
NAT类型检测工具
Python
人生苦短,我用Python!万能的python当然能实现这个小功能,PyStun3是一个开源的Python STUN客户端,旨在帮助用户获取NAT类型和外部IP地址。
sudo apt install pystun3
sudo apt install pipx
pipx install pystun3
# 若报错
#⚠️ Note: '/home/taketo/.local/bin' is not on your PATH environment variable. These apps will not be globally accessible until your PATH is
# updated. Run `pipx ensurepath` to automatically add it, or manually modify your PATH in your shell's config file (i.e. ~/.bashrc).
echo 'export PATH=$PATH:~/.local/bin' >> ~/.bashrc
source ~/.bashrc
然后终端里输入:
pystun3
稍等一会,就会出结果,python结果很准确。
NAT Type: Symmetric NAT
External IP: 122.96.31.89
External Port: 39649