
で定義された 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/hosts
127.0.0.1:8000
iptables
some-service:80
質問: これを実現するにはもっと簡単な方法があるはずです。そうでない場合、iptables
コマンドはどのようになりますか?
答え1
使用ssh
ダイナミックフォワード次を追加することで、SOCKS プロキシを設定するオプションがあります.ssh/config
:
DynamicForward localhost:8000
次に、curl に SOCKS を使用するように指示します。
curl --socks5 localhost:8000 ...
curl
SOCKSを活用する方法は他にもあります。ドキュメンテーション。
答え2
ここでの正しいエチケットはわかりませんが (質問を閉じる? 重複としてマークする?)、この質問に対する承認済みの回答がここにあります: