美文网首页
NAT 科普与类型提升

NAT 科普与类型提升

作者: 0晨鹤0 | 来源:发表于2018-12-15 18:35 被阅读0次

    起因是朋友买了一个迅雷玩客云,但是提示 NAT 类型有问题,导致诸多功能不好用。折腾一番后也进一步搜索了相关资料,深入了解一下。本文旨在用最通俗的语言解释清楚相关问题,在专业性方面可能有缺失。

    使用 PS3/Xbox 朋友遇到无法联机或 NAT 类型显示为严格也是类似原因。

    什么是 NAT

    首先我们得先理解 NAT 的概念。它全称是 Network Address Translation 即网络地址转换。使用 NAT 的原因很多,主要是 IPv4 地址资源枯竭,以及为了网络安全(也便于监管)。我们知道每一个能够上网的设备必然有一个 IP 地址,但是并不是所有设备都拥有「公网IP」。而 NAT 就是把内网 IP 映射成公网 IP,从而使设备可以访问互联网。

    这里说 公网IP 并不规范。现在很多运营商已经不分配公网 IP 了。

    听起来很高端的技术其实就在我们身边。一般常规的家庭网络拓扑是这样的:

    入户光纤 → 猫 → 路由器 → 终端设备

    运营商只给我们分配了一个 IP 地址,这个 IP 理所应当被路由器占用着。而我们许多终端设备拿到的是路由器分配的内网地址,一般类似 192.168.x.x。显然这个内网地址是无法和互联网通讯的。因此我们需要 NAT 来建立内网 IP 与 公网 IP 的映射,这样当终端设备访问互联网,将数据交给路由器,然后路由器转交给服务器;服务器返回的数据交给路由器,路由器再根据映射传给终端就OK了。这个过程是 NAT。

    什么是 UPnP

    UPnP 是通用即插即用协议,英文 Universal Plug and Play。在这里,其目的是更加方便地穿透 NAT。可以理解为有了 UPnP 软件可以根据需求让路由器进行动态地进行端口映射。而不是你去路由器后台一个个手动设置。

    下面是我的 UPnP 列表:


    可以看到根据请求,路由器自动地把 WAN 10960 端口映射到了 192.168.50.120:10960 上,其实这个是我们家的摄像头,这样就可以从外面直接看到画面了。

    NAT 类型

    下面是我们的重点了。NAT 是有许多类型的,不同的类型限制不同。而对于大部分的应用(例如 PS3/XBox 联机游戏)来说,限制越少越好。

    NAT 有4个类型:

    • NAT1: Full Cone NAT
    • NAT2: Address-Restricted Cone NAT
    • NAT3: Port-Restricted Cone NAT
    • NAT4: Symmetric NAT

    从 NAT1 至 NAT4 限制越来越多。一般来说 NAT1/2 可以畅通无阻地进行联机。

    典型情况下:

    • NAT1 可以与 NAT1/2/3 联机
    • NAT2 可以与 NAT1/2 联机
    • NAT3 只能与 NAT1 联机
    • NAT4 洗洗睡吧

    NAT1

    Full Cone NAT 是限制最小的一种。它将一个内部地址(iAddr:port1)与外部地址(eAddr:port2)建立映射。所有来自 iAddr:port1 的包都由 eAddr:port2 向外发送。所有外部主机(hostAddr:any)都可以通过向 eAddr:port2 发送数据来到达 iAddr:port1。(any 表示任意端口)

    NAT2

    相比1,NAT2 增加了地址限制。一个内部地址(iAddr:port1)与外部地址(eAddr:port2)建立映射。所有来自 iAddr:port1 的包都由 eAddr:port2 向外发送。但是只有曾经被 iAddr:port1 主动发送过包的外部主机(hostAddr:any)可以通过向 eAddr:port2 发送数据来到达 iAddr:port1

    也就是说即便知道了 IP 与端口号,外部主机也不可以主动发送数据。

    NAT3

    相比2,NAT3 又增加了端口限制。一个内部地址(iAddr:port1)与外部地址(eAddr:port2)建立映射。所有来自 iAddr:port1 的包都由 eAddr:port2 向外发送。但是只有曾经被 iAddr:port1 主动发送过包的外部主机(hostAddr:port3可以通过向 eAddr:port2 发送数据来到达 iAddr:port1

    注意哦,这里外部主机不仅地址,而且端口号也必须匹配才可以。

    NAT4

    内部地址每一次请求一个特定的外部地址,都可能会绑定到一个新的端口号。也就是请求不同的外部地址映射的端口号是可能不同的。

    这种类型基本上就告别 P2P 了。

    提升 NAT 类型

    由于种种需求,我们往往希望获得至少 NAT2 的类型。提升 NAT 类型是一个非常复杂的问题,因为相关因素实在太多了。

    首先给大家一个 NAT 类型测试工具

    一般来说,我们希望 NAT 层数越少越好。每多一层 NAT 就意味着更加复杂的情况与配置。依旧是典型的网络拓扑:

    入户光纤① → 猫② → 路由器③ → 终端设备

    我们目标是把 NAT 降到1层(只有③),当然这是目标,但不是必须的。

    拿到公网 IP

    公网 IP 指的是全球可路由的地址。也就是说在全球任意地方只要接入互联网就可以访问到。

    拥有公网 IP 对于 P2P 应用来说绝对是一个基础要求,这可以省掉许多麻烦(使①不发生 NAT)。如何确定自己是不是公网 IP 也很简单。访问这里你可以得到一个 IP 地址,把它与路由器中显示的 WAN 口 IP 进行比较,如果一致那么就是公网 IP 了。

    如果不一致,那么只能联系运营商,自己是没有办法的。一般来说一级运营商(电信/联通)比较容易,而一些二级甚至三级运营商(长城)就没什么希望了。如果拿不到公网 IP,只能期望运营商不要把 NAT 类型限制太死吧。

    猫改为桥接模式

    区分猫和路由器

    是调制解调器,仅仅负责将数字信号与电/光信号互相转换,功能单一。路由器可以扩展多个接口、进行组网以及相关配置,功能强大。无线路由器可以建立 WiFi 热点。

    区分桥接与路由模式

    现在原来越多的猫“越权管理”,增加了路由功能,也就是说猫和路由器一体化了。每一个路由器可以理解为一层网络,我们不希望层数过多。同时猫的路由功能往往不完善,难以进行高级配置。而桥接模式就是让猫回归本质,只负责信号转换。

    区分路由与桥接模式最方便的办法是:如果你的路由器(电脑)直接连到猫上就可以上网,那么是路由模式;如果路由器需要配置 PPPoE 拨号那么就是桥接模式。

    更改模式

    一般来说更改模式需要猫的超级密码,这个用户是没有的。请联系运营商客服请求修改。改为桥接后②也不会发生 NAT 了。

    警告:没能力折腾的不建议自己破解改。更改桥接模式之后记得重新配置路由器,输入宽带账号密码才可以正常上网。

    更改路由器设置

    首先要修改 NAT 类型,并不是所有的路由器或者路由器系统都支持这一设置。很幸运我的华硕路由器支持。打开 NAT 并将类型设置为最宽松的 NAT1(Fullcone)。

    接着启用 UPnP,绝大部分路由器都支持的,耐心找一找。如果真的不支持那我建议换路由器。

    如果不支持上述的 NAT 类型设置,我们还有一个大招。大部分的路由器都支持 DMZ (非军事化区),DMZ 指定的设备完全暴露在公网上。但是一个网络一般只能够设置1个 DMZ,显然如果设置多个路由器就不知道应该把数据包交给谁了。由于 DMZ 是和 IP 绑定的,而 IP 是动态分配的。所有首先我们将 IP 与 MAC 绑定(不同的路由器设置不同),然后将此 IP 设置为 DMZ 即可。

    更改系统设置

    最后如果你的系统启用了防火墙那么记得将需要的程序添加例外,或者关闭防火墙(不推荐)。最后进行测试,我已经提升到 NAT1 啦~

    相关文章

      网友评论

          本文标题:NAT 科普与类型提升

          本文链接:https://www.haomeiwen.com/subject/sltahqtx.html