跳转至

NAT


网络地址转换(Network Address Translation)
转发过程中修改报文的IP端口

解决问题

  • IPv4地址短缺
  • 保护内网

静态NAT

一个内网IP地址对应一个外网IP地址

网络地址端口转换(NAPT)

支持端口映射,内网多个主机不用不同的NAT端口
允许多台主机共享一个公网IP地址

地址转换


如上如所示:
host到server时,router会修改报文的源IP和源端口
server到host时,router会修改报文的目的IP和目的端口

NAPT例子

NAPT维护一个带有IP以及端口号的NAT表,结构如下:

内网IP 外网IP
192.168.1.55:5566 219.152.168.222:9200
192.168.1.59:80 219.152.168.222:9201
192.168.1.59:4465 219.152.168.222:9202

NAT类型

完全圆锥型NAT(Full cone NAT)

内部地址iAddr:iPort映射到外部地址oAddr:oPort
所有发自iAddr:iPort的数据包都经由oAddr:oPort向外发送
任意外部主机都能经由发送数据包给oAddr:oPort到达iAddr:iPort
png
上例中:
client1发送消息到server1后
server1和sever2都可以发送数据到oAddr:oPort到达client1

受限圆锥型NAT((Address-)Restricted cone NAT)

内部地址iAddr:iPort映射到外部地址oAddr:oPort
所有发自iAddr:iPort的数据包都经由oAddr:oPort向外发送
只有iAddr:iPort曾经发送过的外部目的主机(可以使用任意端口)才能将数据报文通过oAddr:oPort到达 iAddr:iPort
png
上例中:
client1发送消息到server1后
只有server1才能发送数据通过oAddr:oPort到达client1
sever无法到达client1

端口受限圆锥型NAT(Port-Restricted cone NAT)

受限制锥形NAT基础上,限制了目的主机回送消息使用的源端口
内部地址iAddr:iPort映射到外部地址oAddr:oPort
所有发自iAddr:iPort的数据包都经由oAddr:oPort向外发送
只有iAddr:iPort曾经发送过的外部目的主机(固定端口)才能将数据报文通过oAddr:oPort到达 iAddr:iPort
png

对称NAT(Symmetric NAT)

不同的iAddr:iPort映射到不同的eAddr:ePort
目的服务器回消息时,需要将收到包内的源IP和端口作为发包的目的IP和端口才能将数据送回
png