127.0.0.1 以外の IP によるループバック時のポート リダイレクト

127.0.0.1 以外の IP によるループバック時のポート リダイレクト

ループバック ネットワーク インターフェイスのポート 80 をリダイレクトして、そのポートへのアクセスが実際にポート 8080 に送信されるようにします。

次のコマンドを使用しようとしましたが、アプリケーションが 127.0.0.1:8080 でリッスンしている場合にのみ機能し、127.1.2.3:8080 でリッスンしている場合は機能しません。

sudo iptables -t nat -I OUTPUT -p tcp -o lo --dport 80 -j REDIRECT --to-ports 8080

追加も試してみました--source 127.1.2.3/32 --destination 127.1.2.3/32が、まだ機能しません。

127.0.0.1:8080 でリッスンしているアプリケーションを開くと、リダイレクトが機能します。

ssh remote -L127.0.0.1:8080:192.168.0.3:80

nc 127.0.0.1 80 # works

しかし、127.1.2.3:8080 でリッスンしているアプリケーションを開くと動作しません。

ssh remote -L127.1.2.3:8080:192.168.0.3:80

nc 127.1.2.3 80 # fails
nc: connect to 127.1.2.3 port 80 (tcp) failed: Connection refused

nc 127.1.2.3 8080 # works, so the application is still listening on 8080

127.xxx のポート 8080 を同じ IP のポート 80 にリダイレクトするにはどうすればよいですか?

アップデート: モチベーション

SSH を使用して次のポート転送 (127.1.2.3:80 → 192.168.0.3:80、および 127.1.2.4:80 → 192.168.0.4:80) を実行しようとしています。

ssh remote -L127.1.2.3:80:192.168.0.3:80 -L127.1.2.4:80:192.168.0.4:80

ポート 80 は「特権」ポートであるため、ssh はローカルホスト上でそれを開くことができません。これを回避するには、いくつかの方法があります。

  • sudo sshただし、ルート アカウントに SSH 設定とキーをコピーする必要はありません。
  • 機能を使用しますが、パッケージの更新によってこれが機能しなくなる可能性があります。
  • 別のポート (例: 8080) を使用します。これは機能しますが、相対 URL 以外の URL は壊れます。
  • 特権ポートを非特権ポートに再ルーティングすることが、私がやろうとしていることです。127.0.0.1 の単一のリダイレクトでは機能しますが、127.0.0.1 以外の IP でリダイレクトすると失敗します (上記を参照)。

関連情報