因此,我使用公共 WiFi 网络,该网络会屏蔽 YouTube 等网站以节省带宽。我假设路由器正在监控所有流量并拒绝发送到其黑名单上的所有请求。为了解决这个问题,我尝试使用 SSH 隧道,这样我就可以与远程服务器建立加密连接,并且 Web 请求将从远程服务器发出。因此,我连接的路由器不应该知道我发送的数据包是什么。
我之前在其他网络上尝试过这种方法,过滤了 YouTube 等网站的流量,效果很好。不知何故,这个路由器仍然能够阻止网站。我通过验证 IP 地址来检查我的流量是否确实通过远程服务器,所以我知道我没有弄乱设置或忘记将浏览器指向正确的端口。我尝试通过两个独立的服务器路由流量,一个使用密码验证,另一个仅使用密钥,两种情况下流量都会被过滤。
如果我发送至远程服务器和从远程服务器接收的数据包都是加密的,路由器怎么知道我正在尝试访问 YouTube?路由器是不是在对我进行中间人攻击?我检查了服务器的指纹,发现跟平常一样,但也许路由器可以伪造指纹?
我只是想了解路由器是如何做到这一点的。
答案1
就像@user2675345 所说的那样,如果您的浏览器有 DNS 代理设置,您应该检查它。
按照以下步骤在 Firefox 中通过代理启用 DNS 查找:
about:config
在地址栏中输入- 搜索
proxy
- 设置
network.proxy.socks_remote_dns
true
我自己曾经是 Chrome 用户,但当我注意到 DNS 查找不使用代理设置时,我转而使用 Firefox。那是很久以前的事了,现在应该已经修复了这错误报告。
答案2
总结:这是一次 DNS 泄漏。感谢 @user2675345 的举报!
这是我访问被阻止的网站时看到的页面:
我首先尝试 ping 几个网站,发现它们的 IP 地址相同。如下图所示:
youtube.com 和 metacafe.com 均被屏蔽,176.12.107.179
其 IP 为。不出所料,在浏览器中导航到此 IP 会出现上面显示的“请求的站点被屏蔽”页面。另一方面,ping www.google.com 会得到指向 Google 的合法 IP。
因此 URL 被映射到了错误的 IP。我使用 dig 检查了 DNS 条目并确认了这一点。
确实,youtube.com 的 DNS 条目具有176.12.107.179
其 IP。
然后我使用 Wireshark 检查 DNS 请求,发现请求不是来自我通过 SSH 进入的服务器的 IP,而是来自我的本地 IP 地址。
尽管我使用的是 SSH 隧道,但我的 DNS 请求并没有通过隧道。而且,它们似乎要发送到同一网络上的 IP 地址。因此,看起来公交车上的路由器充当了 DNS 服务器,并向黑名单上的网站发出了错误的 DNS 答案。
这是一个非常严重的漏洞。窃听者不仅可以看到我要访问的所有网站,而且控制路由器/DNS 服务器的人还可以轻松地将我路由到恶意版本的 YouTube,而不是“请求的站点被阻止”页面。而与此同时,我认为我的流量都是通过 SSH 隧道进行的,我是完全安全的。