SOCKSプロキシを介してSSHを実行しますか?

SOCKSプロキシを介してSSHを実行しますか?

VPNを使用せずにローカルでVPNと同様の動作を達成する必要があります。

WANからアクセスできる特定のサーバーに対してSOCKSプロキシを作成しました。すべてのトラフィックがプロキシを介して転送され、そのネットワーク内のホストにアクセスできるようにしたいと思います。

私のSOCKSプロキシは次のとおりです。

ssh -t -D 8088 user@proxy-host 'watch -n 1 date'

システム設定を使用してシステムをプロキシに設定しました。

ここに画像の説明を入力してください。

環境変数が正しく設定されていることを確認しました。

naftuli@macbook-nkay:~$ env | grep socks_proxy
socks_proxy=socks://127.0.0.1:8088/

ただし、SSHを介して特定のサーバーに接続すると、そのサーバーにアクセスできなくなります。

$ ssh internal-host
ssh: Could not resolve hostname internal-host: Name or service not known

問題は、DNSがSOCKSトンネルを介して転送されないことです。設定する方法はありますか?リモートDNSを手動で使用するようにFirefoxを設定できましたが、これはうまく機能しました。これに環境変数はありますか?

ベストアンサー1

同様のトピック:

socks_proxyopenssh自体は環境変数を理解していません。たとえば、プロキシを介してトラフィックを転送するには、netcatを使用する必要があります。

 ssh -o ProxyCommand='nc -X 5 --proxy 127.0.0.1:8088 %h %p' user@host

openssh の下位機能が環境変数を考慮していないため、DNS 要求の配信がより複雑になります。要求をプロキシに転送するローカルDNSリゾルバを設定する必要があるかもしれません。持つdns-tcp-ソックス-プロキシ、処理する必要があります。

./dns_proxy --socks_port=8088 --listen_port=53

このデーモンを実行するときは、/etc/resolv.confこのDNSを有効にする必要があります(Macではこれを尊重してください)。

nameserver 127.0.0.1

簡単なテストでやり直す必要がありますdigが、このパーサーが機能する場合はプロキシ部分は必要ありません。

dig example.com

ジャンプボックスの代わりに:

簡単な選択肢として、通常のホストをジャンプホストとして使用し、プロキシ部分をスキップし、-WIOリダイレクト用のスイッチを使用することをお勧めします。

ssh -oProxyCommand="ssh -W %h:%p jumpbox" destination_host

ジャンパーボックスでDNS検証とルーティングを実行する必要があります。このオプションはあなたのシステムに簡単に統合できます。~/.ssh/config

おすすめ記事