SOCKSプロキシを作成するためにssh -D 8080 my server
を使用しています。次に、OSXを設定して、SOCKSプロキシとしてlocalhost:8080
を使用します。私はこれを使用して、監視されずにインターネットにアクセスしています。
GoogleのDNSサーバー(8.8.8.8)を使用していますが、DNSクエリがSSHトンネルを通過していることを確認するにはどうすればよいですか?
私は答えが少し遅れていることを知っていますが、参考のため、そしてまだ答えを探している人のために、
Firefox configのnetwork.proxy.socks_remote_dns
プロパティをTRUEに設定し(アドレスバーにabout:configと入力)、ローカル/リモートsocks5プロキシでDNSルックアップを有効にします(プロパティをダブルクリックして値を切り替えます)。
PS:他のブラウザについてはわかりません:(
SSHトンネルはTCP/IP接続専用であるため、箱から出してそれを行うことはできません。UDPトラフィックは、特別な設定なしにそのトンネルを通過することはできません。基本的に、記述されている here のように、netcatを使用していくつかのトリックを実行するには、fifoを作成する必要があります。その後、遠端ボックスからグーグルのDNSを使用できます。
前述のように あそこ 、あなたの システム全体のルックアップはトンネリングされません 。
SSHベースのソリューションが必要な場合は、 ここ からインスピレーションを得るか、または SSHuttle を使用できます(例: ここ )。 DNSクエリを簡単に転送するパッチがあります。
YMMV、しかし私は以下で成功しました:
#!/bin/bash
# Taken from http://stackoverflow.com/questions/4594319/Shell-replace-cr-lf-by-comma
DNSSERVERS=$(nmcli d show | grep DNS | awk '{print $2}' | sed -e 'H;${x;s/\n/,/g;s/^,//;p;};d' )
sshuttle \
-vvv \
--dns-hosts ${DNSSERVERS} \
-r server \
254.254.254.254/32
アプリケーションによって異なります。たとえば、Firefoxはホスト名を解決せずにSOCKSプロキシに送信します。この場合、プライバシーのために何もする必要はありません。ワイヤーシャークで確認できます。
PS。 SOCKS5プロキシを使用していると想定します。 SOCKS4はホスト名をサポートしていません。
Pfoが言うように、SSHトンネルはTCPトラフィック専用であり、アプリケーションはSOCKSプロキシを認識する必要があります。
すべてをトンネリングする場合は、適切なVPNが必要です。 OpenVPN のようなものを見てください。