NAT 映射行为与过滤行为

本文将介绍 RFC 5780 中的 NAT 映射行为和过滤行为。而不是 RFC 3489 中的四种 NAT 类型 (NAT1~4)。

情景

运营商大部分时候不会分配公网 IPv4 地址,而是多个用户共用一个。这时需要 NAT (网络地址转换) 技术,使得多个用户可以使用一个公网 IP 访问互联网。

而 NAT 又存在不同的映射行为与过滤行为,这将会影响处于 NAT 后的用户的部分上网体验 (例如 P2P)。

映射行为

映射行为将会决定如何将一个内部地址与端口映射到外部地址与端口 (出站)。

先来看一个典型案例。

   本地地址与端口 ------> NAT 后的地址与端口 -----> 目标地址与端口
192.168.1.100:10000 --> 183.xx.xx.100:20000 --> 114.51.4.19:19810

在上面的例子中,位于 NAT 后的用户向目标 114.51.4.19:19810 发送数据。

用户的本地地址和端口为 192.168.1.100:10000,经过 NAT 后的地址与端口为 183.xx.xx.100:20000

192.168.1.100:10000 -> 183.xx.xx.100:20000 这就是一个映射。

端口相关

解释:目标端口会影响 NAT 映射后的地址与端口。

此时如果用户用相同的本地地址和端口向 114.51.4.19:11451 发送数据,即目标地址相同但目标端口不同

如果NAT后的地址与端口仍然为 183.xx.xx.100:20000,则说明映射行为是端口无关的。

如果NAT后的地址端口发生了变化,例如 183.xx.xx.100:20001,则说明映射行为是端口相关的。

地址相关

解释:目标地址会影响 NAT 映射后的地址与端口。

此时如果用户用相同的本地地址和端口向 19.19.8.10:19810 发送数据,即目标地址不同但目标端口相同

如果NAT后的地址与端口仍然为 183.xx.xx.100:20000,则说明映射行为是地址无关的。

如果NAT后的地址端口发生了变化,例如 183.xx.xx.100:20002,则说明映射行为是地址相关的。

地址与端口相关

如果上述两项都相关,则为地址与端口相关

解释:目标地址与目标端口都会影响 NAT 映射后的地址与端口。

过滤行为

过滤行为将会决定哪些地址与端口发送的数据能够通过 NAT (入站)。

以刚才的案例为基础,假设对方想发送数据给用户。

   本地地址与端口 <------ NAT 后的地址与端口 <---- 对方的地址与端口
192.168.1.100:10000 <-- 183.xx.xx.100:20000 <-- 114.51.4.19:19810

对方使用先前接收数据的地址和端口向用户发送数据,通常都是可以的。

但如果对方使用不同的地址/端口,或者其他人想要向用户发送数据,则需要考虑NAT过滤行为

端口相关

解释:只有主动向某个或某些目标端口发送过数据,这些端口向我们发送的数据才能通过NAT设备。

此时如果对方用 114.51.4.19:19811 向我们发送数据,即地址相同但端口不同

如果用户能够收到对方发来的数据,则说明过滤行为是端口无关的。

如果用户无法收到对方发来的数据,说明被NAT设备过滤了,则过滤行为是端口相关的。

地址相关

解释:只有主动向某个或某些目标地址发送过数据,这些地址向我们发送的数据才能通过NAT设备。

此时如果对方用 114.51.4.20:19810 向我们发送数据,即地址不同但端口相同

如果用户能够收到对方发来的数据,则说明过滤行为是地址无关的。

如果用户无法收到对方发来的数据,说明被NAT设备过滤了,则过滤行为是地址相关的。

地址与端口相关

如果对方只能使用 114.51.4.19:19810 向我们发送数据,其他的地址/端口发送的数据都无法收到,则说明过滤行为是地址与端口相关的。

本文链接:

https://blog.nkxingxh.top/archives/450/
1 + 9 =
2 评论
    异月Chrome 131Android Q
    2024年12月30日 回复

    你这地址臭臭的哇(

      NKXingXhChrome 131Windows 10
      1月2日 回复

      @异月 (~ ̄▽ ̄)~