这篇文章只是记录常用的iptables命令示例(基于CentOS/EulerOS测试),不深入解释该命令。
查询现有防火墙规则
iptables -nvL INPUT --line-number
结果示例:
# iptables -nvL INPUT --line-number
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 337K 340M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
2 781 53052 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
3 15366 1896K INPUT_direct all -- * * 0.0.0.0/0 0.0.0.0/0
4 15366 1896K INPUT_ZONES_SOURCE all -- * * 0.0.0.0/0 0.0.0.0/0
5 15366 1896K INPUT_ZONES all -- * * 0.0.0.0/0 0.0.0.0/0
6 59 2360 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
7 14801 1865K REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
其中第一列为规则的序号(后面删除的时候可以用到)。
一般配置防火墙规则的套路都是:前面几条规则是放行哪几个条件,最后几条规则是拒绝哪一批条件。规则序号小的,优先级高。
向现有防火墙规则中插入一条规则
例如:防火墙对外开放8080端口,以下命令立即生效:
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
向现有防火墙规则中追加一条规则
例如:防火墙对外开放8080端口,以下命令立即生效:
iptables -A INPUT -p tcp --dport 1888 -j ACCEPT
深坑警告:
iptables -I
和iptables -A
都是用于添加规则,区别在哪呢?
iptables -I
是将规则直接插入到现有规则的最上面,也就是规则的序号为1,优先级最高。
iptables -A
是将规则追加到现有规则的最后面,也就是规则的序号最大,优先级最低。
删除防火墙规则
例如:删除前面查询到的序号为5的规则
iptables -D INPUT 5
防火墙配置保存
为了固化防火墙规则(防止重启丢失规则),可通过以下方式保存:
service iptables save
注意:
上述命令可能会提示The service command supports only basic LSB actions (start***
错误,可以通过安装iptables-services解决:
systemctl stop firewalld
关闭防火墙
yum install iptables-services
安装或更新服务
systemctl enable iptables
启动iptables
systemctl start iptables
打开iptables
如果是CentOS,也可以通过如下方式添加固化规则:
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload
重启/关闭防火墙
重启防火墙
systemctl restart firewalld
关闭防火墙:
systemctl stop firewalld