Linux

如果規則文件中有 –multiport 選項,則 Debian buster/sid 中 的 iptables-restore 失敗

  • March 22, 2019

我的/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/"

正如使用者 AB 指出的那樣nftables,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驗證您的所有規則都已到位。

引用自:https://unix.stackexchange.com/questions/508002