问题
发现firefox浏览器代理设置成socks5后,查看ip是成功了,但是谷歌等海外的还是无法正常访问。
原因
主要原因是socks5连接虽然是成功了,但是dns还是走国内的,国内的dns解析都被污染了导致没法正常访问
解决
把设置里的 使用SOCKS v5 时代理DNS查询
知其然,知其所以然
既然是dns被污染了,dns 的ip是设置在我们电脑,为什么这个勾选上就知道走socks5服务器的dns呢?
翻了下sokcs5的协议有个 AdreesType 为0x03的类型,实际上就是用来请求域名的。 所以实际不是把 dns的请求包发给Socks5服务器,而是发了个特殊的命令。
我们抓包看下socks5的连接请求
DNS代理请求后面会带了域名
对比下没有DNS代理的包, 看后面跟着是IP +端口, 由于dns污染返回的是错的ip。 socks5去访问这个 错的ip当然是不通了