iptables是Linux平台下的包过滤防火墙,是netfilter/iptables IP信息包过滤系统的一部分,用来设置、维护和检查Linux内核的IP数据包过滤规则,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能,iptables是基于内核的防火墙,功能非常强大
四表五链
四表:
- filter表——过滤数据包
- Nat表——用于网络地址转换(IP、端口)
- Mangle表——修改数据包的服务类型、TTL、并且可以配置路由实现QOS
- Raw表——决定数据包是否被状态跟踪机制处理
五链:
- INPUT链——进来的数据包应用此规则链中的策略
- OUTPUT链——外出的数据包应用此规则链中的策略
- FORWARD链——转发数据包时应用此规则链中的策略
- PREROUTING链——对数据包作路由选择前应用此链中的规则
- POSTROUTING链——对数据包作路由选择后应用此链中的规则
使用 iptables 命令可以对具体的规则进行查看、添加、修改和删除
iptables选项
| 选 项 | 功 能 |
|---|---|
| -A | 添加防火墙规则 |
| -D | 删除防火墙规则 |
| -I | 插入防火墙规则 |
| -F | 清空防火墙规则 |
| -L | 列出添加防火墙规则 |
| -R | 替换防火墙规则 |
| -Z | 清空防火墙数据表统计信息 |
| -P | 设置链默认规则 |
iptables参数
| 参数 | 功能 |
|---|---|
| -p | 匹配协议 |
| -s | 匹配源地址 |
| -d | 匹配目标地址 |
| -i | 匹配入站网卡接口 |
| -o | 匹配出站网卡接口 |
| --sport | 匹配源端口 |
| --dport | 匹配目标端口 |
| --src-range | 匹配源地址范围 |
| --dst-range | 匹配目标地址范围 |
| --limit | 四配数据表速率 |
| --mac-source | 匹配源MAC地址 |
| --sports | 匹配源端口 |
| --dports | 匹配目标端口 |
| --stste | 匹配状态(INVALID、ESTABLISHED、NEW、RELATED) |
| --string | 匹配应用层字串 |
命令iptables -naL:
-L 表示查看当前表的所有规则,默认查看的是 filter 表,如果要查看 nat 表,可以加上 -t nat 参数。
-n 表示不对 IP 地址进行反查,加上这个参数显示速度将会加快。
-v 表示输出详细信息,包含通过该规则的数据包数量、总字节数以及相应的网络接口。