NAT(Net Address Trancelate)
是将局域网里的内部地址(如192.168.0.x)转换成公网(Internet)上合法的IP地址(如202.202.12.11),以使内部地址能像有公网地址的主机一样上网。这个优于代理服务器,能做直接访问外部IP地址,但NAT往往会过滤掉部分UDP数据包。借助于NAT,私有(保留)地址的”内部”网络通过路由器发送数据包时,私有地址被转换成合法的IP地址,一个局域网只需使用少量IP地址(甚至是1个)即可实现私有地址网络内所有计算机与Internet的通信需求。
NAT将自动修改IP报文的源IP地址和目的IP地址,Ip地址校验则在NAT处理过程中自动完成。有些应用程序将源IP地址嵌入到IP报文的数据部分中,所以还需要同时对报文的数据部分进行修改,以匹配IP头中已经修改过的源IP地址。否则,在报文数据部分嵌入IP地址的应用程序就不能正常工作。
SNAT
是指在数据包从网卡发送出去的时候,把数据包中的源地址部分替换为指定的IP,这样,接收方就认为数据包的来源是被替换的那个IP的主机
DNAT
就是指数据包从网卡发送出去的时候,修改数据包中的目的IP,表现为如果你想访问A,可是因为网关做了DNAT,把所有访问A的数据包的目的IP全部修改为B,那么,你实际上访问的是B,因为,路由是按照目的地址来选择的,因此,DNAT是在PREROUTING链上来进行的,而SNAT是在数据包发送出去的时候才进行,因此是在POSTROUTING链上进行的。
除了 IP 伪装 (MASQUERADE) 之外,我们还可以直接指定修改 IP 封包表头的来源 IP 呢! 举例来说,如下面这个例子:
假设对外的IP固定为192.168.1.100.若不想使用伪装
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.100
- 列表内假设你的 NAT 服务器对外 IP 有好几个,那你想要轮流使用不同的 IP 时,你的 IP 范围为 192.168.1.210~192.168.1.220
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.210-192.168.1.220
地址转行方法
Full-cone NAT, also known as one-to-one NAT
(Address)-restricted-cone NAT
Port-restricted cone NAT
Like an address restricted cone NAT, but the restriction includes port numbers.