摘要: 根据路由器对待outbound流量及inbound流量的不同态度,可以区分出四种不同的Nat类型。

当Client和Server进行通信时,Client会自动在本地绑定一个高位端口,双方的通信实际上是(Client IP, Client Port) <---> (Server IP, Server Port)这一对Endpoint之间的通信。

当Client处于Nat设备后时,Client IP对Server而言是不可达的,双方的同行必须经过Nat设备的转发,即(Client IP, Client Port) <---> (Router IP, Router Port) <---> (Server IP, Server Port)

就像是防火墙规则由入网规则和出网规则共同组成一样,Nat的类型也由两方面规则共同决定,分别是Mapping Behavior(类似于出网规则)和Filter Behavior(类似于入网规则)。

Mapping Behavior

Mapping Behavior控制的是(Client IP, Client Port) <---> (Router IP, Router Port)这对映射关系。具体而言,一共有三种不同给规则。

  1. Endpoint Independent:对于同一个内网IP,无论连接的另一方的IP如何变化,路由器为此内网IP打开的公网IP:Port不发生变化;
  2. Address Dependent Mapping:对于同一个内网IP,只要连接的另一方的IP不改变,路由器为此内网IP打开的公网IP:Port不发生变化;
  3. Address And Port Dependent Mapping:对于同一个内网IP,只要连接的另一方的IP或Port有一个改变,路由器为此内网IP打开的公网IP:Port就会发生变化。

考虑一个场景,内网设备先通过(100.0.0.0, 55555)和服务器(1.1.1.1:1111)建立连接,再通过(100.0.0.0, 55555)和服务器(2.2.2.2:2222)建立连接,如果两次连接中,内网IP和路由器IP的映射关系不发生变化,则Mapping Behavior是Endpoint Independent,即,只要内网Endpoint不变,则内网IP和路由IP的映射关系不变。

再考虑一个场景,内网设备先通过(100.0.0.0, 55555)和服务器(1.1.1.1:1111)建立连接,再通过(100.0.0.0, 55555)和服务器(1.1.1.1:2222)建立连接,如果两次连接中,内网IP和路由器IP的映射关系不发生变化,则Mapping Behavior是Address Dependent Mapping,否则是Address And Port Dependent Mapping。这二者的区别在于,当连接的另一方仅端口变化时,内网IP和路由器IP的映射关系是否改变。

Filter Behavior

Filter Behavior控制的是(Router IP, Router Port) <---> (Server IP, Server Port)间的数据。具体而言,也一共有三种不同的规则。

  1. Endpoint Independent:只要存在(Client IP, Client Port) <---> (Router IP, Router Port)这样的映射关系,任意发给(Router IP, Router Port)的报文均会被转发给(Client IP, Client Port);
  2. Address Dependent Mapping:只有来自过去一段时间内与(Client IP, Client Port)通信过的Server IP的报文才会被Router转发给(Client IP, Client Port);
  3. Address And Port Dependent Mapping:只有来自过去一段时间内与(Client IP, Client Port)通信过的(Server IP, Server Port)的报文才会被Router转发给(Client IP, Client Port);

总结

3种Mapping Behavior和3种Filter Behavior可以组合出9种类型的Nat,但只有其中的4种有实际意义。

Mapping Behavior Filter Behavior Name
Endpoint Independent Endpoint Independent Full Cone NAT
Endpoint Independent Mapping Address Dependent Filtering Restricted Cone NAT
Endpoint Independent Mapping Address and Port Dependent Filtering Port Restricted Cone NAT
Address And Port Dependent Mapping Address And Port Dependent Mapping Symmetric NAT

PS:Full Cone NAT、 Restricted Cone NAT、Port Restricted Cone NAT和Symmetric NAT是RFC3489中的定义,已经被RFC5769中的Mapping Behavior和Filter Behavior取代。