1. 引言
上一篇文章中,我们介绍了 netfilter/iptables 的原理。 netfilter/iptables 原理 本文我们就来介绍一下 iptables 的具体用法。
2. 安装 iptables
虽然 netfilter 是集成在 linux 系统内核的,但是用户层的 iptables 还是需要手动安装和开启才可以使用的。
2.1. 安装 iptables
yum install -y iptables yum install iptables-services
2.2. 开启 iptables
systemctl start iptables.service systemctl enable iptables.service #设置开机自启动
3. iptables 的用法
iptables 的基本用法就是 -
iptables (选项) (参数)
从上一篇文章中我们知道 iptables 是以规则为单位进行 IP 信息包的过滤和管理的,我们就从规则的配置入手。
4. iptables 的基本选项
- -L - 显示规则链中已有的条目
- -F - 清楚规则链中已有的条目
- -Z - 清空规则链中的数据包计算器和字节计数器
- -N - 创建新的用户自定义规则链
- -P - 定义规则链中的默认目标
- -h - 显示帮助信息
- -p - 指定要匹配的数据包协议类型
- -s - 指定要匹配的数据包源ip地址
- -j<目标> - 指定要跳转的目标
- -i<网络接口> - 指定数据包进入本机的网络接口
- -o<网络接口> - 指定数据包要离开本机所使用的网络接口
5. 规则的增删和修改
5.1. 基本命令
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> —sport 源端口 <-d 目标IP/目标子网> —dport 目标端口 -j 动作
5.2. 选项
- -A - 向规则链中添加条目
- -D - 从规则链中删除条目
- -i - 向规则链中插入条目
- -R - 替换规则链中的条目
5.3. 表名
- raw - 高级功能,如 - 网址过滤
- mangle - 数据包修改(QOS),用于实现服务质量
- net - 地址转换,用于网关路由器
- filter - 包过滤,用于防火墙规则
5.4. 规则链名
- INPUT链 - 处理输入数据包
- OUTPUT链 - 处理输出数据包
- PORWARD链 - 处理转发数据包
- PREROUTING链 - 用于目标地址转换(DNAT)
- POSTOUTING链 - 用于源地址转换(SNAT)
5.5. 动作
- accept - 接收数据包
- DROP - 丢弃数据包
- REDIRECT - 重定向、映射、透明代理
- SNAT - 源地址转换
- DNAT - 目标地址转换
- MASQUERADE - IP伪装(NAT),用于ADSL
- LOG - 日志记录
6. iptables 实战
6.1. 查看现有规则
iptables -L -n
6.2. 删除某个请求
比如要删除INPUT里序号为8的规则。
iptables -D INPUT 8
6.3. 允许所有请求
iptables -P INPUT ACCEPT
6.4. 清除默认规则
iptables -F # 清空所有默认规则 iptables -X # 清空所有自定义规则 iptables -Z # 所有计数器归0
6.5. 允许来自于lo接口的数据包
如果没有此规则,你将不能通过127.0.0.1访问本地服务。
iptables -A INPUT -i lo -j ACCEPT
6.6. 开启某个端口
iptables -A INPUT -p tcp —dport 端口 -j ACCEPT
6.7. 允许 icmp 请求(ping)
iptables -A INPUT -p icmp -m icmp —icmp-type 8 -j ACCEPT
6.8. 允许所有对外请求的返回包
iptables -A INPUT -m state —state ESTABLISHED -j ACCEPT
6.9. 添加内网ip信任
iptables -A INPUT -p tcp -s 192.168.1.50 -j ACCEPT
6.10. 过滤除iptables规则之外的所有请求
iptables -P INPUT DROP
7. 参考资料
https://wiki.archlinux.org/index.php/Iptables_(简体中文) http://man.linuxde.net/iptables。 https://wangchujiang.com/linux-command/c/iptables.html。 https://www.jianshu.com/p/8fd07c60f23f。