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