一、相关概念
1.1、链(chain)
iptables包含以下五种内置链:
- PREROUTING:数据包刚到达本机,未经过路由之前;
- INPUT:数据包经过路由进入本机;
- FORWARD:数据包转发;
- OUTPUT:数据包从本机发出,未经过路由之前;
- POSTROUTING:数据经过路由离开本机。
1.2、表(table)
iptables包含四种表:
- raw表:关闭nat表上启用的连接追踪功能;
- mangle表:拆解报文,作出修改,并重新封装;
- nat表:网络地址转换,修改源IP地址或目的IP地址,也可以对端口进行修改;
- filter表:过滤数据包。
表处理的优先级:raw表 --> mangle表 --> nat表 --> filter表
1.3、表链关系
raw表对应的链:PREROUTING、OUTPUT;
mangle表对应的链:PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING;
nat表对应的链:PREROUTING、OUTPUT、POSTROUTING,CentOS7以上系统还包括INPUT;
filter表对应的链:INPUT、FORWARD、OUTPUT
1.4、路由功能
路由功能发生的时刻:
- 数据包到达本机后,判断目标主机是哪里?
- 数据包离开本机时,判断应该由哪个接口(网卡)送往下一站。
1.5、报文流向
数据包流向大致可以分为三类:
- 数据包流入本机:PREROUTING --> INPUT
- 数据包由本机流出:OUTPUT --> POSTROUTING
- 数据包转发:PREROUTING --> FORWARD --> POSTROUTING
二、iptables使用
2.1、iptables命令用法
iptables命令语法格式:
iptables [-t table] COMMAND chain [-m matchname [per-match-options]] -j targetname [per-target-options]
- -t table:raw、mangle、nat、filter。默认值为filter;
- chain:内置链包括PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING;
- COMMAND:
链管理相关:
-N:自定义一条新的规则链;
-X:删除自定义的规则链,指定链名则删除指定链,不指定则删除所有;
-P:设置默认策略。对filter表中的链,策略有:ACCEPT(接收),DROP(丢弃),REJECT(拒绝)。DROP和REJECT的区别在于REJECT有特定的数据返回给对方,而DROP则直接丢弃数据包;
-E:重命名自定义链。引用计数不为0的链不能被重命名,也不能被删除;
规则管理相关:
-A&