查看规则
ipatbles -t filter -L
-t参数指定表名
-L参数列出规则
还可以使用-v显示更详细的规则信息
iptables -vL
不指定-t参数时,默认都是filter表
#命令输出信息
Chain INPUT (policy ACCEPT 13 packets, 10752 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * * 192.168.1.102 0.0.0.0/0
#字段解释
#policy:默认策略
#packets|pkts:策略或者规则匹配到的包的个数
#bytes:策略或者规则匹配到的所有包的大小
#target:规则对应的动作
#prot:规则对应的协议
#opt:规则对应的选项
#in:数据包来源接口
#out:数据包输出接口
#source:来源地址
#destination:目标地址
–-line-numbers或者--line参数可以显示规则编号
-n参数可以不对IP进行名称反解析,来源地址和目标地址都直接显示IP
-x参数显示精确可读性高的计数值
可以在末尾指定只查询某链规则
iptables -vL PREROUTING
新增规则
iptables -I INPUT -s 192.168.1.102 -j DROP
-I参数表示在INPUT链的filter表首部插入规则
-s参数表示匹配来源地址,反之-d参数表示目标地址
-j参数表示匹配条件符合后执行的动作
iptables -A INPUT -s 192.168.1.102 -j ACCEPT
-A参数表示在INPUT链的filter表末尾插入规则
注意:相同的匹配条件,只会执行匹配到第一条规则的动作,后面的不会执行
地址范围取值则需要借助iprange模块
iptables -I INPUT -m iprange --src-range 192.168.1.102-192.168.1.105 -j DROP
-m参数模块
--src-range参数表示来源地址范围,--dst-range参数表示目标地址范围
iptables -A INPUT -s ! 192.168.1.102 -j ACCEPT
!表示匹配条件取反,这里表示匹配来源地址不是192.168.1.102的主机
iptables -I INPUT 2 -s 192.168.1.102 -j REJECT
这里是将规则插入到第二行,使用--line参数可以查询
iptables -I INPUT -s 192.168.1.102 -m tcp -p tcp --dport 22 -j REJECT
--dport参数匹配目标端口,与之对应的则有--sport参数匹配来源端口
-p参数匹配协议类型
dport和sport参数还有一种端口范围取值的写法
iptables -I INPUT -s 192.168.1.102 -m tcp -p tcp --dport 22:25 -j REJECT
#22~25端口
iptables -I INPUT -s 192.168.1.102 -m tcp -p tcp --dport :25 -j REJECT
#0~25端口
iptables -I INPUT -s 192.168.1.102 -m tcp -p tcp --dport 22: -j REJECT
#22~65535端口
多个不连续的端口写法,则需要借助multiport模块
iptables -I INPUT -s 192.168.1.102 -m multiport -p tcp --dports 22,80:85,443 -j REJECT
multiport有dports和sports两个参数,注意port后面有个s哦!该模块只能用于tcp与udp
iptables -I INPUT -i ens33 -p icmp -j DROP
-i参数表示匹配报文流入的网络接口(用于PREROUTING、INPUT、FORWARD)
与之对应的有匹配-o参数指定报文流出的网络接口(用于FORWARD、OUTPUT、POSTROUTING)
删除规则
iptables -t filter -D INPUT 3
-D参数删除规则,删除INPUT链filter表中的第三个规则,使用--line参数可以查询
也可以直接写明匹配条件和动作等删除规则
iptables -D INPUT -s 192.168.1.102 -j DROP
清空规则
清除INPUT链中的规则
iptables -F INPUT
修改规则
iptables -R INPUT 1 -s 192.168.1.103 -j REJECT
-R参数修改规则,后面接需要修改的参数即可
注意:不指定来源地址则会默认为0.0.0.0/0,会有更改成对全部来源地址进行动作的风险
修改默认策略
iptables -P INPUT DROP
保存规则到文件
iptables-save > /opt/iptables.txt
从文件重载规则
iptables-restore < /opt/iptables.txt
开机自动加载规则
Debian/Ubuntu
安装iptables-persistent
apt install iptable-persistent -y
保存规则
netfilter-persistent save
Centos/Redhat
直接将规则覆盖到指定文件
iptables-save > /etc/sysconfig/iptables
ip6tables-save > /etc/sysconfig/ip6tables