通常我们在配置iptables时,需要一条一条命令敲上去,其实我们可以所敲的命令会保存在/etc/sysconfig/iptables文件中,在系统启动时,/etc/init.d/iptable文件会自动调用/etc/sysconfig/iptables文件进行防火墙配置。
- vi /etc/sysconfig/iptables
- # Firewall configuration written by system-config-securitylevel
- # Manual customization of this file is not recommended. *filter
- :INPUT ACCEPT [0:0]
- :FORWARD ACCEPT [0:0]
- :OUTPUT ACCEPT [0:0]
- :RH-Firewall-1-INPUT - [0:0]
- //上面的内容定义了内建的INPUT、FORWARD、OUTPUT链,还创建了一个名为RH-Firewall
- //-1-INPUT 的新链。
- -A INPUT -j RH-Firewall-1-INPUT
- //上面这一条规则将添加到INPUT链上,所有发往INPUT链上的数据包将跳转到RH-Firewall
- //-1-INPUT链上。
- -A FORWARD -j RH-Firewall-1-INPUT
- //上面这行功能与前行相同,,只是它将规则应用到FORWARD所有链,至此所有发往INPUT和
- //和FORWARD链的数据包都会转到RH-Firewall-1-INPUT上。
- -A RH-Firewall-1-INPUT -i lo -j ACCEPT
- //上面的规则将被添加到 RH-Firewall-1-INPUT链,它可以匹配所有的数据包,其中流入接口
- //是一个环回接口(lo),匹配这条规则的数据包将全部通过 。
- -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
- //上面的规则匹配所有的协议ICMP的数据包,该规则将允许icmp类型的数据包通过防火墙 。
- -A RH-Firewall-1-INPUT -p 50 -j ACCEPT
- //上面的规则允许协议类型为50的数据流通过,类型50的协议是一种加密的IPV6协议头。
- -A RH-Firewall-1-INPUT -p 51 -j ACCEPT
- //上面的规则允许协议类型为51的数据流通过,类型51作为一种IPV6协议的验证头。
- -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.12.13.14 -j drop
- //上面的规则拒绝目的地地址是224.12.13.14、目的端口是5353的UDP数据包通过。
- -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
- //上面的规则允许目的地的端口是80的用于新建连接的TCP数据包通过,因为这条规则没有提到接口,所以,
- //它会允许所有新的外来连接到达端口80。
- -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
- //拒绝所有其他不能匹配上述任何一条规则的数据包,决绝数据包时,还会发出一条icmp-host-prohibited消息。
- COMMIT
记得每次修改都不要忘记执行service iptables reload!!!(否则修改不生效)
总结
IPtables有三张表,每个表都有内建的链
filter表:用于路由网络数据包,不会对数据包进行修改,是系统的默认表,如果没指定“-t”选项,iptables就是用该表。filter表有三个链。
●INPUT:网络数据包流向服务器
●OUTPUT:网络数据包从服务器流出
●FORWARD:网络数据包经服务器路由
nat表:用于地址转换的表,是一种将内部IP地址转换成外部IP地址的方法
mangle表:用于更改网络数据包的表,可以实现对数据包的修改,也可以给数据包附加一些外带数据
当数据包进入服务器时,Linux内核会查找对应表中的对应链,直到找到一条规则与数据包匹配。如果该规则的目标是ACCEPT,就会跳过其余的规则,而数据包会继续被发送。如果规则的目标是DROP数据包,该数据包会在其路径上被拦截,就不会再考虑其他规则,所以规则越详细的要写在靠前的位置
iptables命令参数表


















