myblog
myblog copied to clipboard
iptables常用命令
1. 查看对应规则表中所有规则
iptables -t 表名 -L
2. 指定表指定链的规则
iptables -t 表名 -L 链名
3. 显示序号
iptables -t 表名 -L 链名
1. 尾部添加规则
命令语法:iptables -t 表名 -A 链名 匹配条件 -j 动作
示例:iptables -t filter -A INPUT -s 192.168.1.146 -j DROP
2. 首部添加规则
命令语法:iptables -t 表名 -I 链名 匹配条件 -j 动作
示例:iptables -t filter -I INPUT -s 192.168.1.146 -j ACCEPT
3. 指定位置添加一个规则
命令语法:iptables -t 表名 -I 链名 规则序号 匹配条件 -j 动作
示例:iptables -t filter -I INPUT 5 -s 192.168.1.146 -j REJECT
4. 设置表的指令链的默认策略
命令语法:iptables -t 表名 -P 链名 动作
示例:iptables -t filter -P FORWARD ACCEPT
5. 根据序号删除
命令语法:iptables -t 表名 -D 链名 规则序号
示例:iptables -t filter -D INPUT 3
6. 根据匹配条件和动作删除规则,删除指定表中指定链的指定规则
命令语法:iptables -t 表名 -P 链名 动作
示例:iptables -t filter -P FORWARD ACCEPT
7. 删除指定表中指定链的所有规则
命令语法:iptables -t 表名 -F 链名
示例:iptables -t filter -F INPUT
8. 删除指定表中的所有规则
命令语法:iptables -t 表名 -F 链名
示例:iptables -t filter -F INPUT
8. 保存iptables规则
命令语法:iptables -t 表名 -F 链名
示例:iptables -t filter -F INPUT
9. 从指定文件载入iptables规则
命令语法:iptables -t 表名 -F 链名
示例:iptables -t filter -F INPUT
1. -s参数用于匹配报文源地址,可以指定多个,也可以指定一个网段
#示例如下
iptables -t filter -I INPUT -s 192.168.1.111,192.168.1.118 -j DROP
iptables -t filter -I INPUT -s 192.168.1.0/24 -j ACCEPT
iptables -t filter -I INPUT ! -s 192.168.1.0/24 -j ACCEPT
2. -d参数用于匹配报文目的地址,可以指定多个,也可以指定一个网段
#示例如下
iptables -t filter -I OUTPUT -d 192.168.1.111,192.168.1.118 -j DROP
iptables -t filter -I INPUT -d 192.168.1.0/24 -j ACCEPT
iptables -t filter -I INPUT ! -d 192.168.1.0/24 -j ACCEPT
3. -p参数用于匹配报文协议的类型
#示例如下
iptables -t filter -I INPUT -p tcp -s 192.168.1.146 -j ACCEPT
iptables -t filter -I INPUT ! -p udp -s 192.168.1.146 -j ACCEPT
4. -i参数匹配报文从哪个网卡流入本机的
#示例如下
iptables -t filter -I INPUT -p icmp -i eth4 -j DROP
iptables -t filter -I INPUT -p icmp ! -i eth4 -j DROP
5. -o参数用于指明报文要从哪个网卡流出
#示例如下
iptables -t filter -I OUTPUT -p icmp -o eth4 -j DROP
iptables -t filter -I OUTPUT -p icmp ! -o eth4 -j DROP
6. 常用扩展模块
常用的扩展匹配条件如下:
- -p tcp -m tcp --sport 用于匹配tcp协议报文的源端口,可以使用冒号指定一个连续的端口范围
- -p tcp -m tcp --dport 用于匹配tcp协议报文的目标端口,可以使用冒号指定一个连续的端口范围
#示例如下
iptables -t filter -I OUTPUT -d 192.168.1.146 -p tcp -m tcp --sport 22 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport 22:25 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport :22 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport 80: -j REJECT
iptables -t filter -I OUTPUT -d 192.168.1.146 -p tcp -m tcp ! --sport 22 -j ACCEPT
7. multiport扩展模块
常用的扩展匹配条件如下:
- -p tcp -m multiport --sports 用于匹配报文的源端口,可以指定离散的多个端口号,端口之间用"逗号"隔开
- -p udp -m multiport --dports 用于匹配报文的目标端口,可以指定离散的多个端口号,端口之间用"逗号"隔开
#示例如下
iptables -t filter -I OUTPUT -d 192.168.1.146 -p udp -m multiport --sports 137,138 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport --dports 22,80 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport ! --dports 22,80 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport --dports 80:88 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport --dports 22,80:88 -j REJECT
1. 创建自定义链
#示例:在filter表中创建IN_WEB自定义链
iptables -t filter -N IN_WEB
2. 引用自定义链
#示例:在INPUT链中引用刚才创建的自定义链
iptables -t filter -I INPUT -p tcp --dport 80 -j IN_WEB
3. 重命名自定义链
#示例:将IN_WEB自定义链重命名为WEB
iptables -E IN_WEB WEB
4. 删除自定义链
删除自定义链要满足下面两个条件:
- 自定义链没有被引用
- 自定义链中没有任何规则
#示例:删除引用计数为0并且不包含任何规则的WEB链
iptables -X WEB
调试iptables
iptables -t raw -A OUTPUT -p icmp -j TRACE
iptables -t raw -A PREROUTING -p icmp -j TRACE
centos7使用:
modprobe nf_log_ipv4
centos6使用:
modprobe ipt_LOG
查看是否成功:
# sysctl net.netfilter.nf_log.2
net.netfilter.nf_log.2 = ipt_LOG