去年我在中国工作了几个月。我从来没有费心去设置真正的 VPN,只是创建了一个 SSH 隧道,并更改了浏览器的代理设置以通过它进行连接。
一切都运行良好(当然除了闪光灯),但那很好。
然而,现在我回到中国,但我对这种方法感到困惑。我做了和上次一样的事情,并且根据https://ipcheckit.com/我的 IP 地址确实是我在美国 (私人) 服务器的 IP,而且我使用在去中国之前很久就创建的指纹登录我的服务器,所以不可能发生 MITM。此外,ipcheckit.com 的证书来自 GeoTrust - 所以一切都应该没问题
但是,我仍然无法访问在中国被屏蔽的网站。有人知道这是怎么回事吗?
答案1
如果您使用 linux 或 osx,您可以尝试使用 sshuttle 创建 ssh 隧道。这将确保所有数据包都通过隧道传输。
https://github.com/apenwarr/sshuttle
./sshuttle -r 用户名@sshserver 0/0 -vv
另外使用公共 DNS 服务器,如 Google 或 OpenDNS
此外,如果您想代理您的 DNS 请求,命令将是。
./sshuttle --dns -vvr 用户名@sshserver 0/0
在过去的两年里,Sshuttle 为我提供了非常好的服务,我可以访问被越南 ISP 阻止的所有内容。
唯一的缺点是,它仅支持基于密码的身份验证(AFAIK)。
答案2
使用 SSH 代理绕过被 DNS 过滤阻止的网站时,DNS 请求可能不会通过代理,从而导致 DNS 泄漏,并使 DNS 请求转到审查 DNS 服务器。要检查是否存在泄漏,请转到https://ipleak.net/。
要修复使用 Firefox 代理设置时出现的问题,请确保选中“使用 SOCKS v5 时代理 DNS”。
如果你想全部程序在 Windows 上使用代理 DNS,可能会有点困难。这个答案建议运行您自己的 DNS 服务器,通过代理转发您的 DNS 请求。如果有人有更简单的方法,请告诉我,我会更新此答案。
我使用了 macOS 上的系统代理设置,那里似乎没有 DNS 泄漏。
答案3
尝试使用职责范围通过 ssh 隧道,在 TOR 中的代理设置下使用 ssh 隧道
答案4
以下是使用公钥认证通过 sshuttle 传输所有内容(包括 DNS)的方法。
sshuttle --dns -vr <remote username>@<remote IP address> 0/0 --ssh-cmd 'ssh -i <path to private key>'