Red Hat Linux (RHEL) で IPTables を使用してポートをリダイレクトする方法は?

Red Hat Linux (RHEL) で IPTables を使用してポートをリダイレクトする方法は?

ポート 80 を 8080 に転送したいので、次のように編集してみました/etc/syscongfig/iptables:

-A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

しかし、次のことがわかりました:

# service iptables restart
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Applying firewall rules: iptables-restore v1.4.7: 
          Line 8 seems to have a -t table  option.

何が問題なのでしょうか? どのように対処すべきでしょうか?

答え1

ファイルは/etc/syscongfig/iptablesiptables-restore に対して正しい構造になっていますか?

このルールをファイアウォールに手動で追加してみてください

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

コマンド/etc/sysconfig/iptablesの出力と比較するiptables-save

答え2

これはあなたのiptablesルール:

-A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

しかし、私は代わりに次のようになるべきだと考えています:

-A PREROUTING -t nat -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080

が追加されていることに注意してください-m tcp。 は-p tcpルールのプロトコルまたはチェックするパケットのプロトコルと一致しますが、 は-m tcpIPTables に TCP パケットと一致するように明示的に指示します。 混乱しているように見えますが、私が知る限り、ポート固有のルールが呼び出される場合は と-p tcpペアにする必要があります-m tcp

誰かがこの要件の背後にある理論的根拠や論理を詳しく説明できる場合は、コメント欄で意見を述べてください。

関連情報