ポート80を8080にリダイレクトし、ローカルマシンで動作させる


61

マシンのポート80のトラフィックを8080にリダイレクトしました

sudo iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 8080

私のマシンを除くすべての世界でうまく機能します。私は開発者であり、自分でポート80を8080にリダイレクトする必要があります。

私のIPは 192.168.0.111

Webサーバーはポート8080で実行されます

サーバーが稼働しているのと同じマシンからではhttp://192.168.0.111/なく、ウェブサイトを開きたいhttp://192.168.0.111:8080/


申し訳ありませんが、ポート80を8080に転送する目的は何ですか?
ma11hew28 14年

2
@mattdipasquale、通常のユーザーはポート80にアクセスできないため、PythonフラスコのようなWebサービスを通常のユーザーとして実行できませんでした。
クリスチャン

Webサーバーをポート80にバインドしないのはなぜですか?
デビッドフォースター

5
私は、その非rootユーザーはポート80/443にバインドすることはできませんし、彼はルートとして彼のウェブサービスを実行したいdoesntのために推測すると思います...
パベルK.

回答:


80

ループバックインターフェイスOUTPUT向けのパケットはチェーンを経由しないため、チェーンを使用する必要があります。以下が機能するはずです。として実行:PREROUTINGroot

iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8080

1
ポート80はグローバルにアクセス可能である必要がありますか?私はあなたの解決策を試してみました、私のポート番号8080はアクセス可能ですが、80はしたがって動作しませんでした @heemayl
alper

2
これは機能しませんでしたが、なぜこれが投票されるのか
わかり

@Diyoda_定義してください動作しませんでし
-heemayl

3
これがubuntu 18.04では機能しないことを確認できます
アーメドハムディ

2
Ubuntu 18.10で動作しませんでした
Christopher Bradshaw

6

ポート80と8080の両方を許可するiptablesを使用するだけで、80から8080にリダイレクトします。正しいnicに割り当てていることを確認してください。例では、eth0を使用しています

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

ありがとう!Ubuntu 19で動作中
ウラジミールイシェンコ

1
iptableの変更を保存しておくといいでしょうsudo apt-get install iptables-persistent
ウラジミールイシェンコ

6

これは私のために働いた。

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

+1はUbuntu 18.04(少なくともTCP用)で動作し、ポート7000-> 7001およびポート7001でリッスンしているサーバーはポート7000からの着信接続を受信しました:)
hanshenrik

1
正しいネットワークインターフェイスを使用するようにしeth0てください。すべてのシステムで呼び出されるわけではありません
hanshenrik

4

の代わりにiptables、あなたは試すことができます: sudo ssh -gL 80:127.0.0.1:8080 localhost


2
これはオプションですが、すでにポート80にWebサーバーがあるため、私が望むものではありません。iptablesでそれを行い、ポート80でWebサーバーを実行したままにすることを好みます。代わりに、異なるステップにルールを適用するだけでよいと思いますPREROUTING
最大14

はい-Maxが提案したように、ポートフォワーディングをリッスンするものがある場合、これはポートの競合を引き起こします。上記の答えは、より一般的なケースです。
cgseller

この解決策を試みると、「接続が拒否されました」というメッセージが表示されます。
ミッチャス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.