Iptables 防火墙NAT表介绍

2019-03-09 0 By admin

在计算机网络中,网络地址转换(Network Address Translation,缩写为NAT),也叫做网络掩蔽或者IP掩蔽(IP masquerading),是一种在IP数据包通过路由器或防火墙时重写来源IP地址或目的IP地址的技术。
NAT服务可能会对TCP/IP数据包中的源IP地址、目的IP地址、源端口和目的端口进行修改操作。

一、为什么需要NAT?

这种技术普遍使用在一个局域网中有多台主机,但只有一个公有IP地址。使用NAT服务可以使多态主机同时访问因特网。
当然,NAT也让主机之间的通信变得复杂,导致降低了通信效率。

二、NAT表规则链介绍

PREROUTING链 在进行路由判断之前所要进行的规则(DNAT/REDIRECT)。
修改目标IP地址,用于内网端口映射。
POSTROUTING链 在进行路由判断之后所要进行的规则(SNAT/MASQUERADE)。
修改来源IP地址,用于代理局域网私有IP访问Internet。
OUTPUT链 本地产生的数据包,出站时要进行的规则。
Iptables 防火墙Filter表和Nat表数据流程

不管我们设置的是SNAT或者DNAT的规则时,Iptables 中NAT机制都会自动帮我们判别“另一个方向的应答数据包”。从而不需要我们设置对应的第二条规则。

三、数据表处理方式(Target方法)

REDIRECT: 端口重定向
MASQUERADE :地址伪装
DNAT : 目标地址转换
SNAT :源地址转换
MARK :打标签
LOG:记录日志信息,然后传给下一条规则继续匹配.

四、配置实例

1、修改源NAT(SNAT)
代理局域网私有IP地址主机访问Internet网络。
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT –-to-source 1.2.3.4

更改所有来自192.168.1.0/24的数据包的源ip地址为1.2.3.4。

2、IP地址伪装
IP地址伪装是一种SNAT的特殊情况,也就是所谓的MASQUERADE。
将数据包的源IP改为-o出口设备的IP地址。
通常建议在使用拨号上网的时候使用,或者说在合法ip地址不固定的情况下使用。
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
可以看出,这时候我们没有必要显式的指定源ip地址信息。

3、修改目的NAT(DNAT)
将经过本机的数据包,修改目的IP地址到另外一台机器。
iptables –t nat –A PREROUTING –i eth1 –d 61.240.149.149 –p tcp –dport 80 –j DNAT --to-destination 192.168.10.6
本Iptables 机器IP地址61.240.149.149,当访问80端口后,映射到后端的核心服务器192.168.10.6。

4、本机端口映射
有一种DNAT的特殊情况是重定向Redirection,单独对端口进行转换。

iptables -t nat -A PREROUTING -i eth1 -p tcp -s 192.168.1.0/24 –dport 80 -j REDIRECT –to-port 3128

squid配置形成透明代理时使用,假设squid的监听端口是3128,通过以下语句来将来自192.168.1.0/24,目的端口为80的数据包重定向到squid监听端口。