iptables エラー: 不明なオプション --dport

iptables エラー: 不明なオプション --dport

コマンド iptables は、ルールを定義するときに最もよく使用されるオプションの 1 つを認識しなくなりました: --dport

次のエラーが発生します:

[root@dragonweyr /home/calyodelphi]# iptables -A INPUT --dport 7777 -j ACCEPT_TCP_UDP
iptables v1.4.7: unknown option `--dport'
Try `iptables -h' or 'iptables --help' for more information.

上記のルール追加コマンドは、Terraria 接続を有効にするための例にすぎません。

以下は、私が現在最低限備えている iptables 構成 (listiptablesは にエイリアスされていますiptables -L -v --line-numbers) であり、--dport過去に動作していたことは明らかです。

root@dragonweyr /home/calyodelphi]# listiptables 
Chain INPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1       39  4368 ACCEPT     all  --  lo     any     anywhere             anywhere            
2      114 10257 ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED 
3        1    64 ACCEPT     tcp  --  eth1   any     anywhere             anywhere            tcp dpt:EtherNet/IP-1 
4       72 11610 ACCEPT     all  --  eth1   any     anywhere             anywhere            

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 91 packets, 10045 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain ACCEPT_TCP_UDP (0 references)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            

また、カスタムチェーンを定義しようとしています(この質問) で tcp と udp 接続を受け入れるように設定すれば、tcp と udp を有効にしたいものすべて (Minecraft や Terraria サーバー、またはまったく別のサービスなど) に対して 2 つのルールを定義する必要がなくなります。しかし、これでもうまくいきません。

[root@dragonweyr /home/calyodelphi]# iptables -P ACCEPT_TCP_UDP DROP
iptables: Bad built-in chain name.

丁寧な言葉で言えば、これは非常にイライラする状況です (これに伴う罵り言葉の量は、船乗りに口を慎むように言われるほどです)。私の Google 検索能力はひどいので、この問題の有効な解決策はまだ見つかっていません。ルーターでは CentOS 6.5 を実行しています。皆さんが提供できる支援やアドバイスがあれば、とても助かります。

編集:

ボーナス質問: ポート転送も設定する予定です。特定のポート経由での着信接続を受け入れるためのルールを設定する必要はまだありますか?

答え1

まずまたは の-pようなオプションを指定します。 -p tcp-p udp

例:

iptables -A 入力 -p tcp --dport 22 -m 状態 --state 新規 -j ドロップ

iptables -A 入力 -p udp --dport 53 --sport 1024:65535 -j 受け入れる

試してみることもできます-p allが、私はそれを試したことがなく、例でもあまりサポートされていません。

答え2

もう一つの解決方法は、rootとして実行することを忘れていることです。私はDebianチュートリアルを使用しているときにこれに遭遇しました。

$ iptables -t nat -p tcp -I PREROUTING --src 0/0 --dst 127.0.0.1  --dport 80 -j REDIRECT --to-ports 8080
iptables v1.8.2 (nf_tables): unknown option "--dport"
$ sudo iptables -t nat -p tcp -I PREROUTING --src 0/0 --dst 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
# OK

答え3

--dport を使用する場合はプロトコル (-p) が必要です。例:

-p tcp

答え4

@dmourati と @diegows がすでに最初の質問に答えているので、2 番目の質問に取り組みます。そしてボーナスの質問です。ボーナスのヒントも付け加えておきます ;)

iptables -P のみは BUILT-IN チェーンを受け入れます。表では、 、、チェーンがfilterこれに該当します。INPUTOUTPUTFORWARD

ポート転送はチェーンでは処理されないのでINPUT、チェーン内でポートを開く必要はありませんINPUTするただし、チェーンによって処理されますFORWARD。その点には注意してください。

ボーナスヒント:を学習したりトラブルシューティングしたりする場合iptables、 の出力はiptables-saveの出力よりもはるかに優れていますiptables -L -v --line-numbers。 試してみると、きっとうれしい驚きを感じるでしょう :)

関連情報