我ssh -D 8080 my server
用来创建SOCKS代理。然后,我将OS X配置localhost:8080
为用作SOCKS代理。我正在使用它来访问互联网而不受监视。
我正在使用Google的DNS服务器(8.8.8.8),但是如何确保DNS查询通过SSH隧道?
我ssh -D 8080 my server
用来创建SOCKS代理。然后,我将OS X配置localhost:8080
为用作SOCKS代理。我正在使用它来访问互联网而不受监视。
我正在使用Google的DNS服务器(8.8.8.8),但是如何确保DNS查询通过SSH隧道?
Answers:
我知道答案有点晚了,但是对于参考和那些仍在寻找答案的人,
将network.proxy.socks_remote_dns
firefox config中的属性(在地址栏中键入about:config)设置为TRUE(只需双击该属性即可切换值),以启用对本地/远程socks5代理的dns查找。
PS:我不确定其他浏览器:(
如果它是SOCKS 5代理,并且客户端程序支持它,则DNS将通过该代理。大多数浏览器通过Socks 5代理支持DNS,但是可能需要特殊配置。
如果您的目标是网上隐私,则应使用privoxy之类的东西。Privoxy将清除Web请求的标头,并确保所有流量(包括DNS)都通过Socks 5代理。在privoxy
本地运行,您可以ssh
用来建立Socks 5流量的隧道。
如那边所述,您的 系统范围的查找不会被隧道化。
如果您需要基于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