iptables是一个命令行工具位于用户空间,用户通过iptables这个客户端将安全设定执行到内核的netfilter模块。netfilter是linux操作系统的一个数据包处理模块,具有网络地址转换、数据包内容修改、数据包过滤等防火墙功能。
一、表和链
链可以理解为“关卡”,数据包通过不同的关卡匹配不同的规则,然后根据规则的进行处理。如drop、accept、reject等。
- 在centos6中INPUT的规则不能存在与nat表,但是centos7是可以的;
- 日常更多使用的是从表到链的对应关系
- raw表中的规则可以被使用的链:PREROUTING,OUTPUT
- mangle表中的规则可以被使用的链:PREROUTING,INTPUT,FORWARD,OUTPUT,POSTROUTING
- nat表中的规则可以被使用的链:PREROUTING,OUTPUT,POSTROUTING
- netfilter表中的规则可以被使用的链:INTPUT,FORWARD,OUTPUT
- 链的匹配规则是从上到下按顺序匹配,直到匹配成功
- ipvs模块用于lvs转发,附属在INPUT链上,作为netfilter的一部分
- 常用场景
- 到本机应用的数据包:PREROUTING --> INTPUT
- 由本机转发数据包:PREROUTING --> FORWARD --> OUTPUT
- 由本机应用发出的数据包:OUTPUT–> POSTROUTING
- 本机作为lvs转发数据包:PREROUTING --> INTPUT --> IPVS–> POSTROUTING
- linux主机支持转发,需开启内核IP_FORWARD功能
二、规则管理
iptables -t filter -I INPUT -s 192.168.0.240 -j ACCEPT #添加规则
iptables -t filter -A INPUT -s 192.168.0.2401-j ACCEPT #追加规则
iptables -t filter -D INPUT 3 #删除规则
service iptables save #保存规则,需要安装iptables-service,默认保存到/etc/sysconfig/iptables
iptables-save > /etc/sysconfig/iptables #保存规则,持久化
iptables-restore < /etc/sysconfig/iptables #载入规则
三、与firewalld区别
firewalld和iptables一样,它们的作用都用于维护规则,而真正使用规则干活的是内核的netfilter。只不过firewalld和iptables的结果以及使用方法不一样。firewalld是iptables的一个封装,可以让你更容易地管理iptables规则。它并不是iptables的替代品,虽然iptables命令仍可用于firewalld,但建议firewalld时仅使用firewalld命令
-
firewalld可以动态修改单条规则,动态管理规则集,允许更新规则而不破坏现有会话和连接。而iptables,在修改了规则后必须得全部刷新才可以生效;
-
firewalld使用区域和服务而不是链式规则;
-
firewalld默认是拒绝的,需要设置以后才能放行。而iptables默认是允许的,需要拒绝的才去限制
默认是拒绝的,需要设置以后才能放行。而iptables默认是允许的,需要拒绝的才去限制