在我们的日常运维工作中,经常要用到Iptables这个工具来设置IP信息包过滤和防火墙配置,首先,Iptables的配置文件为/etc/sysconfig/iptables,所有的规则都是要写到这个文件里的,不然重启后就会失效。

1、IPtables通常包括三个表格(Fliter、NAT、Mangle)

filter∶主要跟Linux本机有关,是预设的table。通常下面有三个链(chain):
INPUT∶主要与数据包想要进入我们Linux本机有关;
OUTPUT∶主要与Linux本机所要送出的数据有关;
FORWARD∶这个与Linux本机比较没有关系,他可以将数据包转发到后端的电脑中,与nat这个table相关

NAT:主要用来做源与目的IP或者端口的转换,与linux本机无关。
PREROUTING∶在进行路由判断之前所要进行的规则(DNAT/REDIRECT)POSTROUTING∶在进行路由判断之后所要进行的规则(SNAT/MASQUERADE)OUTPUT∶与发送出去的封包有关
mangle∶这个表格主要是与特殊的封包的路由旗标有关,早期仅有PREROUTING及OUTPUT链,不过从kernel2.4.18之后加入了INPUT及FORWARD链。由于这个表格与特殊旗标相关性较高,所以像咱们这种单纯的环境当中,较少使用mangle这个表格

2、Iptables的常用命令

查看iptables现有规则:

#iptables-L-n

清除现有iptables规则:

#iptables-F#清除预设表filter中的所有规则链的规则:

允许局域网内192.168.0.0/24的所有主机访问代理服务器,除了192.168.0.3这台主机:

#iptables-AINPUT-ieth0-s192.168.0.3-jDROP

#iptables-AINPUT-ieth0-s192.168.0.0/24-jACCEPT

将来自eth0的数据包全部接收:

#iptables-AINPUT-ieth0-jACCEPT

将服务器80端口重定向到8080端口:

#iptables-tnat-APREROUTING-Ptcp--dport80-jREDIRECT--to-ports8080

使服务器允许来自网络接口eth1,并且来源端口为80的数据进入服务器:

#iptables-AINPUT-ieth1-ptcp--sport80-jACCEPT

让服务器的80端口对外开放:

#iptables-AINPUT-ieth0-ptcp--dport80-jACCEPT

允许来自外部的ping测试

#iptables-AINPUT-picmp--icmp-typeecho-request-jACCEPT
#iptables-AOUTPUT-picmp--icmp-typeecho-reply-jACCEPT

仅允许来自指定网络的SSH连接请求

以下规则仅允许来自192.168.100.0/24的网络:

#iptables-AINPUT-ieth0-ptcp-s192.168.100.0/24--dport22-mstate--stateNEW,ESTABLISHED-jACCEPT
#iptables-AOUTPUT-oeth0-ptcp--sport22-mstate--stateESTABLISHED-jACCEPT

允许出站DNS连接

#iptables-AOUTPUT-pudp-oeth0--dport53-jACCEPT
#iptables-AINPUT-pudp-ieth0--sport53-jACCEPT

(再续)