/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
私が現在持っているルールが有効な構文であるかどうか?
以下は私のOSの詳細です
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/"
ユーザーA.B.としてBusterが使用するnftables
とiptables
の間の非互換性に問題があることを指摘します。互換性のあるバージョン間でiptables-restore
を使用して復元するiptables
ルールを保存するための最良の方法。
問題のある行を削除し、ルールを復元します。
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
を使用して、すべてのルールが適用されていることを確認します。