ループバックネットワークインターフェイスからポート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にリダイレクトすると失敗します(上記を参照)。