web-dev-qa-db-ja.com

iptables:ポート80をポート8080に転送

内部でポート80をポート8080にポート転送するにはどうすればよいですか?

私の目標は、ポート8080でWebアプリサーバー(Glassfish)を実行することですが、外部の世界が通常ポート80でアクセスできるようにします。これは、Glassfishをrootとして実行する必要がないように行われています。

/ etc/sysconfig/iptablesに次のルールを追加してみました。

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

ただし、これにより次のエラーが発生します。

Applying iptables firewall rules: iptables-restore v1.3.5: Line 21 seems to have a -t table option.
7
Caffeine Coma

In/etc/sysconfig/iptablesのようなテーブルは指定できません。各テーブルには、アスタリスクとテーブル名が設定されています。これがあなたがやろうとしていることの骨組みです:

*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination :8080
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT

ファイルを編集する代わりに、iptablesコマンドを使用して手動でルールを設定し、iptables-save > /etc/sysconfig/iptablesまたはservice iptables saveを実行することもできます。

8
Mark Wagner

あなたは近かった

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination:8080

これは、NATを実行する必要があるため、応答がクライアントに返されるときに、8080ではなくポート80から送信されたように見えます。

3
Patrick