1.iptables防火墙利用nat表,能够实现NAT功能,将内部地址与外部地址进行转换,完成内外网通信。

内部主机发送封包出去的流程:

1.经过nat表的PREROUTING链

2,经路由判断这个封包是否要进入主机,若不进入主机则经过filter表的FORWARD链

3.通过nat表的POSTROUTING链最后送出去

nat表支持的操作:

SNAT :用来做源网络地址转换,改变数据包的源ip地址,只能用在nat表的POSTROUTING链。

只要连接的第一个符合条件的包被SNAT,那么这个连接的其他所有的数据包就会自动的被SNAT。

DNAT:转换目的地址,改变数据包的目的ip地址,用于nat表的PREROUTING链和OUTPUT链。

MASQUERADE:MASQUERADE的作用与SNAT完全一样,改变数据包的源地址,因为对每个匹配的包,MASQUERADE都自动的查找可用的ip地址,

语法:

iptables -t  nat  -A POSTROUTING -o 网络接口 -j SNAT --to-source  ip地址

举例:公司内部使用10.0.0.0/8 网段的ip地址,外网地址为125.33.218.221,如何配置使内网可以上网。

1.开启内核路由转发功能

echo 1 > /proc/sys/net/ipv4/ip_forward

2.SNAT 转换源ip地址

iptables -t nat  -A  POSTROUTING -o  eth1  -j  SNAT    --to-source  125.33.218.221

DNAT:语法

iptables -t  nat  -A  PREROUTING  -i 网络接口  -p 协议 --dport 端口  -j   SANT --to-destination  ip 地址

2.内网192.168.100.10 对外开放www服务,如何设置允许外网访问

iptables  -t  nat   -A PREROUTING -i eth0 -p tcp --dport 80  -j DNAT  --to-destination  192.168.100.10:80

3.使用DNAT将发送至202.200.30.27并且端口为80的数据包转发至192.168.1.104

iptables -t  nat  -A PREROUTING -d 202.200.30.27 -p tcp  --dport 80 -j DNAT  --to-destination 192.168.1.104

内网绑定mac地址上网,设置nat路由器

 

#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
arp -f /root/mac.txt
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -F INPUT
iptables -F FORWARD
iptables -F POSTROUTING -t nat
cat /root/mac.txt | while read LINE
do
ipad='echo $LINE | awk '{print $1}''
macd='echo $LINE | awk '{print $2}''
iptables -A FORWARD -s $ipad -m mac --mac-source $macd -j ACCEPT
done
iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A nat -A POSTROUTING -o eth0 -s 192.168.1.102 -j SNAT --to 113.57.224.3
iptables -A nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE