透過的な SSH トンネリング

透過的な SSH トンネリング

で定義された SSH トンネルがあります/etc/ssh/ssh_config。これには以下が含まれます:

LocalForward 0.0.0.0:8000 some-service:80
LocalForward 0.0.0.0:8001 some-other-service:80

元の DNS 名を使用してトンネルにアクセスできるようにしたい (つまり、curl some-serviceを使用するのではなく、引き続き機能するはずですcurl 0.0.0.0:8000)

これを実現するために、/etc/hostsファイルに次の内容を追加しました。

127.0.0.2 some-service
127.0.0.3 some-other-service

iptablesここで、次の操作を実行するコマンドがいくつか必要になると思います。

When I see a request to 127.0.0.2:80 I should proxy it to 127.0.0.1:8000
When I see a request to 127.0.0.3:80 I should proxy it to 127.0.0.0:8001

すると、 は( 経由で)curl some-serviceに解決され、次に( 経由で) にプロキシされ、次に(ssh トンネル経由で ) にヒットします。127.0.0.2/etc/hosts127.0.0.1:8000iptablessome-service:80


質問: これを実現するにはもっと簡単な方法があるはずです。そうでない場合、iptablesコマンドはどのようになりますか?

答え1

使用ssh ダイナミックフォワード次を追加することで、SOCKS プロキシを設定するオプションがあります.ssh/config:

DynamicForward localhost:8000

次に、curl に SOCKS を使用するように指示します。

curl --socks5 localhost:8000 ...

curlSOCKSを活用する方法は他にもあります。ドキュメンテーション

答え2

ここでの正しいエチケットはわかりませんが (質問を閉じる? 重複としてマークする?)、この質問に対する承認済みの回答がここにあります:

https://serverfault.com/questions/982063/透過的なSSHトンネリング

関連情報