iptables中nat表可以实现SNAT, DNAT, 双向NAT和两次NAT.
一. 源地址NAT
1. 标准的SNAT
SNAT的目的是进行源地址转换,应用于POSTROUTING规则链.在路由决定之后应用.SNAT与出站接口相关,而不是入站接口. 语法如下:
iptables -t nat -A POSTROUTING -o <outgoing interface> -j SNAT --to-source <address>[-<address>][:port-port]
2. MASQUERADE源NAT
MASQUERADE没有选项来指定在NAT设备上使用的特定源地址,使用的源地址就是出站好接口的地址.
iptables -t nat -A POSTROUTING -o <outgoing interface> -j MASQUERADE [--to-ports <port>[-port]]
二. 目的地址NAT
目的地址NAT有2种形式: DNAT和REDIRECT. REDIRECT是目的地址转换的特殊形式,将数据包重定向到NAT设备的输入或回环接口. 目的地址NAT应用于nat表的PREROUTING和OUTPUT规则链,在做出路由决定前对目的地址进行修改.在PREROUTING中,DNAT和REDIRECT规则与用来接受通过本地路由转发或送到主机的入站接口的数据包的入站接口有关.在OUTPUT中,DNAT和REDIRECT规则用来处理来自NAT主机本身生成的出站数据包.
1. 标准目的地址NAT(DNAT)
iptables -t nat -A PREROUTING -i <incoming interface> -j DNAT --to-destination <address>[-<address>][:port-port] iptables -t nat -A OUTPUT -o <outgoing interface> -j DNAT --to-destination <address>[-<address>][:port-port]
目的地址用来替换数据包中的原始目的地址,多位本地服务器地址.
2. REDIRECT
iptables -t nat -A PREROUTING -i <incoming interface> -j REDIRECT [--to-ports <port>[-port]] iptables -t nat -A OUTPUT -o <outgoing interface> -j REDIRECT [--to-ports <port>[-port]]
REDIRECT重定向数据包到执行REDIRECT操作的那台主机.
【编辑推荐】