
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_proxy
openssh自体は環境変数を理解していません。たとえば、プロキシを介してトラフィックを転送するには、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
ジャンプボックスの代わりに:
簡単な選択肢として、通常のホストをジャンプホストとして使用し、プロキシ部分をスキップし、-W
IOリダイレクト用のスイッチを使用することをお勧めします。
ssh -oProxyCommand="ssh -W %h:%p jumpbox" destination_host
ジャンパーボックスでDNS検証とルーティングを実行する必要があります。このオプションはあなたのシステムに簡単に統合できます。~/.ssh/config