考虑到UDP的无状态特性,目前针对其的NAT实现大致可分为Full Cone、Restricted Cone、Port Restricted Cone和Symmetric NAT四种。
值得指出的是,对于TCP协议而言,一般来说,目前NAT中针对TCP的实现基本上是一致的,其间并不存在太大差异,这是因为TCP协议本身 便是面向连接的,因此无需考虑网络连接无状态所带来复杂性。
NAT类型
- 基础NAT:旧的NAT,它仅实现将内网主机的私有IP地址和公网IP地址之间的一对一转换,不能解决ipv4地址紧缺问题,目前几乎很少看见这种NAT设备了,可以不考虑。
- NAPT(Network Address/Port Translator):可以让内网n台主机共享一个公共的外网IP,它不但会改变经过这个NAT设备的IP数据报的IP地址,还会改变IP数据报的TCP/UDP端口。
NAPT类型
全锥形NAT
其特点为:一旦内部主机端口对(iAddr:iPort)被NAT网关映射到(eAddr:ePort),所有后续的(iAddr:iPort)报文都会被转换为(eAddr:ePort);任何一个外部主机发送到(eAddr:ePort)的报文将会被转换后发到(iAddr:iPort)。限制锥形NAT
其特点为:一旦内部主机端口对(iAddr:iPort)被映射到(eAddr:ePort),所有后续的(iAddr:iPort)报文都会被转换为(eAddr:ePort);只有 (iAddr:iPort)向特定的外部主机hAddr发送过数据,主机hAddr从任意端口发送到(eAddr:ePort)的报文将会被转发到(iAddr:iPort)。端口限制锥形NAT
其特点为:一旦内部主机端口对(iAddr:iPort)被映射到(eAddr:ePort),所有后续的(iAddr:iPort)报文都会被转换为(eAddr:ePort);只有(iAddr:iPort)向特定的外部主机端口对(hAddr:hPort)发送过数据,由 (hAddr:hPort)发送到(eAddr:ePort)的报文将会被转发到(iAddr:iPort)。对称型NAT
其特点为:NAT网关会把内部主机“地址端口对”和外部主机“地址端口对”完全相同的报文看作一个连接,在网关上创建一个公网“地址端口对”映射进行转换,只有收到报文的外部主机从对应的端口对发送回应的报文,才能被转换。即使内部主机使用之前用过的地址端口对去连接不同外部主机(或端口)时,NAT网关也会建立新的映射关系。
如何区分nat类型
- 基础NAT和NAPT
- 基础NAT现在几乎没有了,一般是用于NAT拥有多个公网IP的情形下,将公网IP地址与内网主机进行静态绑定。
- NAPT将内网主机的连接映射到外部网络中的一个单独IP地址上,同时在该地址上加上一个由NAT设备选定的端口号。
对称NAT和锥形NAT
场景:在内网主机A,启动一个udp服务,内网端口号为7777,分别向外网主机1和外网主机2发起通信,内网主机A是
对称NAT:在外网主机1和外网主机2收到主机A的外网ip一样,但是端口不一样。
锥形NAT:在外网主机1和外网主机2收到的主机A的外网ip和端口号一样。完全圆锥形NAT和限制形NAT
场景:内网主机A正在使用外网地址ipa:porta和外网主机1通信,这时外网主机2使用ipa:porta访问内网主机A,内网主机A是
完全圆锥形NAT:可以访问
限制形NAT:访问拒绝
4.ip限制形NAT和端口限制形NAT
场景:内网主机A正在使用外网地址ipa:porta和外网主机1的ip1:port1通信,外网主机1使用ip1:port2访问内网主机A的ipa:porta,内网主机A是:
ip限制形:可以访问
端口限制形:访问拒绝
NAT设备类型测试工具
自己做一个