我的/etc/iptables/rule.v4
文件包含许多规则,下面是我看到问题的行
-A INPUT -p tcp -m multiport --dports 22 -j ACCEPT
-A INPUT -p udp -m multiport --dports 16384:32768 -j ACCEPT
当我尝试iptables-restore
这样做时失败并出现以下错误
root@rs-dal:/etc/iptables# iptables-restore rules.q
iptables-restore v1.8.2 (nf_tables): multiport needs `-p tcp', `-p udp', `-p udplite', `-p sctp' or `-p dccp'
Error occurred at line: 26
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
root@rs-dal:/etc/iptables#
为什么它失败了?,同样的规则已经成功地应用于Debian Jessie
.
当我像下面这样改变规则时,它也起作用了。
-A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT -p udp --dport 16384:32768 -j ACCEPT
我检查了iptables -L
并成功应用了这些规则,如下所示
ACCEPT udp -- anywhere anywhere udp dpts:16384:32768
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
我当前拥有的规则是否是有效的语法?
以下是我的操作系统详细信息
root@rs-dal:/etc/iptables# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux buster/sid"
NAME="Debian GNU/Linux"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
答案1
nftables
正如用户 AB 指出的那样,Buster 使用的 和之间存在不兼容问题。 保存要恢复的规则的iptables
最佳方法是在兼容版本之间进行恢复。iptables
iptables-restore
删除有问题的行,并恢复规则:
iptables-restore < rules.q
将规则重新添加到您的配置并保存:
iptables -A INPUT -p tcp -m multiport --dports 22 -j ACCEPT
iptables-save > rules.q
现在再次尝试恢复:
iptables-restore < rules.q
用于iptables -L
验证您的所有规则是否都已到位。