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を構成することができ、それはうまくいきました。このための環境変数はありますか?
同様のトピックが [〜#〜] su [〜#〜] で議論されました:
openssh自体はsocks_proxy
環境変数を理解していません。プロキシを介してトラフィックを送信するには、たとえばnetcatを使用する必要があります。
ssh -o ProxyCommand='nc -X 5 --proxy 127.0.0.1:8088 %h %p' user@Host
Opensshの低レベル関数は環境変数を考慮しないため、DNS要求を転送する場合はより複雑になります。おそらく、リクエストをプロキシに転送するローカルDNSリゾルバを設定する必要があります。 dns-tcp-socks-proxy があり、処理する必要があります。
./dns_proxy --socks_port=8088 --listen_port=53
このデーモンを実行するときは、このDNSを使用するように/etc/resolv.conf
(Macがこれを尊重することを期待)を設定する必要があります。
nameserver 127.0.0.1
Dig
を使用すると簡単なテストが可能になるはずですが、このリゾルバーが機能している場合は、プロキシ部分は必要ありません。
Dig example.com
簡単な代替手段として、通常のホストをジャンプホストとして使用し、プロキシ部分をスキップして、IOリダイレクトを-W
スイッチを使用して実行することをお勧めします。
ssh -oProxyCommand="ssh -W %h:%p jumpbox" destination_Host
ジャンプボックスでDNSの再検索とルーティングを行う必要があります。このオプションは、~/.ssh/config
に簡単に組み込むことができます