如果我使用SSH作为SOCKS代理,DNS连接是否通过它?

我正在使用ssh -D 8080 my server来创build一个SOCKS代理。 然后,我将OS Xconfiguration为使用localhost:8080作为SOCKS代理。 我正在使用它来访问互联网而不被监控。

我正在使用Google的DNS服务器(8.8.8.8),但是如何确保DNS查询正在通过SSH隧道?

    我知道答案有点晚了,但是对于那些仍在寻找答案的人来说,

    在firefox config(在地址栏中inputabout:config)中的network.proxy.socks_remote_dns属性设置为TRUE(只需双击该属性切换值),以启用本地/远程socks5代理上的dns查找。

    PS:我不确定其他浏览器:(

    如果它是SOCKS 5代理,并且客户端程序支持它,则DNS将通过代理。 大多数浏览器通过Socks 5代理支持DNS,但是可能需要特殊的configuration才能完成。

    如果你的目标是在networking上的隐私,你真的应该使用像privoxy的东西。 Privoxy将清理您的Web请求的标题,并确保所有stream量(包括DNS)通过Socks 5代理。 在本地运行privoxy ,您可以使用ssh来传输Socks 5stream量。

    由于SSH隧道仅用于TCP / IP连接,因此无法进行此操作 – 如果没有特殊设置,UDP通信将无法通过隧道。 基本上你需要创build一个fifo来做一些netcat的欺骗,如这里所描述的。 然后你可以使用谷歌的DNS从远端盒子。

    如上所述,您的系统范围查找不是隧道式的 。

    如果你想要一个基于SSH的解决scheme,你可以从这里得到灵感或者使用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 

    正如pfo所说,SSH隧道只用于TCP通信,应用程序必须知道SOCKS代理。

    如果你想要一切隧道,你需要一个适当的VPN。 看看像OpenVPN的东西。