コマンド 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
これに該当します。INPUT
OUTPUT
FORWARD
ポート転送はチェーンでは処理されないのでINPUT
、チェーン内でポートを開く必要はありませんINPUT
。するただし、チェーンによって処理されますFORWARD
。その点には注意してください。
ボーナスヒント:を学習したりトラブルシューティングしたりする場合iptables
、 の出力はiptables-save
の出力よりもはるかに優れていますiptables -L -v --line-numbers
。 試してみると、きっとうれしい驚きを感じるでしょう :)