web-dev-qa-db-ja.com

SOCKSプロキシにSSHを使用している場合、DNS接続はそれを通過しますか?

SOCKSプロキシを作成するためにssh -D 8080 my serverを使用しています。次に、OSXを設定して、SOCKSプロキシとしてlocalhost:8080を使用します。私はこれを使用して、監視されずにインターネットにアクセスしています。

GoogleのDNSサーバー(8.8.8.8)を使用していますが、DNSクエリがSSHトンネルを通過していることを確認するにはどうすればよいですか?

15
Jason Marzst

私は答えが少し遅れていることを知っていますが、参考のため、そしてまだ答えを探している人のために、

Firefox configのnetwork.proxy.socks_remote_dnsプロパティをTRUEに設定し(アドレスバーにabout:configと入力)、ローカル/リモートsocks5プロキシでDNSルックアップを有効にします(プロパティをダブルクリックして値を切り替えます)。

PS:他のブラウザについてはわかりません:(

SOCKS 5 プロキシであり、クライアントプログラムがサポートしている場合、DNSはプロキシを経由します。ほとんどのブラウザはSocks 5プロキシを介してDNSをサポートしますが、そのためには特別な構成が必要になる場合があります。

あなたの目標がウェブ上のプライバシーであるなら、あなたは本当に privoxy のようなものを使うべきです。 PrivoxyはWebリクエストのヘッダーをクレンジングし、DNSを含むすべてのトラフィックが確実にSocks 5プロキシを通過するようにします。ローカルでprivoxyを実行すると、sshを使用してSocks 5トラフィックをトンネリングできます。

8
David Schwartz

SSHトンネルはTCP/IP接続専用であるため、箱から出してそれを行うことはできません。UDPトラフィックは、特別な設定なしにそのトンネルを通過することはできません。基本的に、記述されている here のように、netcatを使用していくつかのトリックを実行するには、fifoを作成する必要があります。その後、遠端ボックスからグーグルのDNSを使用できます。

2
pfo

前述のように あそこ 、あなたの システム全体のルックアップはトンネリングされません

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
1
Frederick Nord

アプリケーションによって異なります。たとえば、Firefoxはホスト名を解決せずにSOCKSプロキシに送信します。この場合、プライバシーのために何もする必要はありません。ワイヤーシャークで確認できます。

PS。 SOCKS5プロキシを使用していると想定します。 SOCKS4はホスト名をサポートしていません。

0
okwap

Pfoが言うように、SSHトンネルはTCPトラフィック専用であり、アプリケーションはSOCKSプロキシを認識する必要があります。

すべてをトンネリングする場合は、適切なVPNが必要です。 OpenVPN のようなものを見てください。

0
James O'Gorman