iptables与NAT设置
鸟哥的防火墙规则流程图
iptables 建各表格的相性
显示规则
-Z :所有的 chain 的流量都零
修改规则
-A :新增加一,增加在原本的最後面。例如原本已有四,
使用 -A 就可以加上第五!
-I :插入一。如果有指定此的序,是插入成第一。
例如原本有四,使用 -I 成第一,而原本四成 2~5
:有 INPUT, OUTPUT, FORWARD 等,此名又 -io 有,看底下。
-io 路介面:定封包出的介面
-i :封包所入的那路介面,例如 eth0, lo 等介面。需 INPUT 配合;
-o :封包所出的那路介面,需 OUTPUT 配合;
-p 定:定此用於哪封包格式
主要的封包格式有: tcp, udp, icmp 及 all 。
-s 源 IP/域:定此之封包的源目,可指定的 IP 或包括域,例如:
IP :192.168.0.100
域:192.168.0.0/24, 192.168.0.0/255.255.255.0 均可。
若『不』,加上 ! 即可,例如:
-s ! 192.168.100.0/24 表示不 192.168.100.0/24 之封包源;
-d 目 IP/域:同 -s ,只不指的是目的 IP 或域。
-j :後面接作,主要的作有接受(ACCEPT)、(DROP)、拒(REJECT)及(LOG)
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.10:80
从公网访问DMZ主机,其中10.20.40.0/24是内网,10.1.1.101是对外的公网地址
-A PREROUTING -d 10.1.1.101/32 -j DNAT --to-destination 10.20.40.1
之后往往需要使用MASQUERADE使外网数据包通过正确的网卡到达内网(外网主机不知如何路由)(不知道前面括号的解释是否正确)
-A POSTROUTING -s 10.1.1.0/24 -d 10.20.40.0/24 -o eth1 -j MASQUERADE
端口重定向
iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -o eth1 -j MASQUERADE
其中eth1是公网网卡,-s是内网网段,NAT服务器内网地址是10.1.1.1
在内网机器上设置默认网关为10.1.1.1
生效之后在内网机器上ping 8.8.4.4
root@xen-test0:/etc/network# ping 8.8.4.4
iptables-save > /etc/nat.rules
恢复iptables设置
iptables-restore /etc/nat.rules
如果想在网卡重启时自动加载防火墙,则
auto eth0iface eth0 inet dhcppre-up iptables-restore < /etc/iptables.up.rulespost-down iptables-restore < /etc/iptables.down.rules