我在中国,使用 ssh 隧道通过代理连接到服务器。它对大多数本来会被屏蔽的网站都很有效(例如 Google、Gmail 和一些新闻网站)。
但是,即使隧道中的其他功能都正常,Facebook、Google+ 和 Twitter 也经常无法访问(连接中断)。这是什么原因造成的?
由于我绝对确定我的代理所在位置的页面没有被屏蔽,我能想到的最可能的情况是 Facebook 和 Google+ 屏蔽了通过代理的访问,或者中国仍然可以检测到通过隧道访问的页面/服务器。这两种可能性对我来说仍然不太可能,第一种是因为我认为 Facebook 或 Google 不会检测到我是否通过代理连接,第二种是因为我认为所有到代理的流量都会被加密,任何审查机构都无法识别这些网站,我错了吗?
如果需要,我很乐意提供有关我的设置的详细信息,但实际上我认为与 ssh 配置无关,这种行为很奇怪。我很感激任何提示。
答案1
如果您的 DNS 请求也没有经过隧道传输,中国可能就有机会在此进行干预。
答案2
感谢一位朋友的想法,我发现了我的问题所在,因此对于其他遇到类似问题并且已经怀疑 ssh 隧道的人,我将在这里报告它并再次坚定对 ssh 隧道的信心:
DNS 缓存是一个问题。
如果对 Facebook 等网站的请求是在由中国控制的服务器上查询的,中国会以错误的 IP 做出回应。如果在没有任何隧道的情况下访问 Facebook,DNS 查找将通过中国进行,错误的 IP 会存储在 DNS 缓存中。之后通过隧道访问 Facebook 时仍会使用此缓存,因此即使连接是安全的,目的地也是错误的。
解决方案是不要使用由中国控制的 DNS 服务器,如果使用,请刷新 DNS 缓存。在 Windows 上,可以通过以管理员身份打开命令提示符并运行 ipconfig /flushdns 来完成此操作