在 CentOS 上执行 iptables 命令报错,常见原因大致可以分为以下几类。你可以先说明具体报错信息,我可以更精准判断;下面先列出最常见的情况和解决办法。
iptables -L
# 或
service iptables status
报错类似:
Unit iptables.service could not be foundFailed to start iptables.service: Unit not foundCentOS 7 以后默认用 firewalld,iptables 只是底层工具,不一定有 iptables-service。
如果你坚持用 iptables:
# CentOS 7
yum install -y iptables-services
systemctl stop firewalld
systemctl disable firewalld
systemctl start iptables
systemctl enable iptables
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
报错:
iptables: Permission denied (you must be root)
必须用 root 或 sudo:
sudo iptables -L
报错类似:
iptables: No chain/target/match by that name
或
can't initialize iptables table `filter'
lsmod | grep iptable
modprobe ip_tables
iptables -A INPUT -p tcp --dport22 -j ACCEPT # 少空格
iptables -A INPUT -j DROP # 顺序错误
先测试:
iptables -L -n -v
iptables -L
无规则但 firewalld 正常
CentOS 8 默认用 nftables
update-alternatives --set iptables /usr/sbin/iptables-legacy
service iptables save
CentOS 7+:
/usr/libexec/iptables/iptables.init save
请贴出:
cat /etc/centos-release)我可以直接帮你定位并给出命令。