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はlocalhostでそのポートを開くことができません。これを防ぐ方法はいくつかあります。

  • sudo sshしかし、SSH設定とキーをrootアカウントにコピーしたくありません。
  • 機能は使用されますが、パッケージの更新によってこの機能が中断される可能性があります。
  • 動作しますが、相対URL以外のポート(8080など)を使用すると破損します。
  • 特権ポートを許可されていないポートに再ルーティングすることが私が望むものです。 127.0.0.1では単一のリダイレクトとして機能しますが、127.0.0.1以外のIPにリダイレクトすると失敗します(上記を参照)。

ベストアンサー1

おすすめ記事