主页 > 其他 > DNS域名污染对SS、SSR Openwrt客户端的影响测试

DNS域名污染对SS、SSR Openwrt客户端的影响测试

2016年12月23日 一条评论

【现象】

针对被污染的域名如google,openwrt上的SS客户端可以不受影响,而SSR客户端必须使用UDP转发,通过隧道获取正确的dns后才能访问。

【环境】

SS、SSR客户端的版本号都为2.5.6,配置相同,SSR协议为origin,无混淆(plain);服务器配置不变。

SS源码库:

https://github.com/shadowsocks/shadowsocks-libev

SHA1 ID:d6c377df9c8053b10276dd2dddf9aceda5f1faf5

SSR源码库:

https://github.com/breakwa11/shadowsocks-libev

SHA1 ID:ccecb762b5943769ca10676f8bda478f4d5beb7f

SS for openwrt源码库:

 https://github.com/shadowsocks/openwrt-shadowsocks

SSR for openwrt源码库:

https://github.com/ywb94/openwrt-ssr

 

如下图,本地计算机被污染的google域名地址为59.24.3.173,这是一个随机的垃圾地址:

 

【Openwrt SS客户端测试】

开启Openwrt SS客户端,在计算机上访问google网页,访问成功

本地计算机端口连接成功:

抓包有交互数据:

openwrt上有透明转发的记录:

SSR服务器(兼容SS客户端)上有转发到google的记录(216.58.196.227为正确的google IP地址):

说明SSR服务器根据转发来的数据内容重新进行了域名解析,并用正确的IP地址和google进行了数据交互,而不是单纯的根据收到的目的IP地址进行转发。

 

【Openwrt SSR客户端测试】

开启Openwrt SSR客户端,在计算机上访问google网页,访问超时

 

本地计算机端口连接成功:

openwrt上有透明转发的记录,第3条记录为透明代理收到的请求,第一条记录为透明代理向服务器转发的请求:

SSR服务器上有openwrt连接的记录:

但是SSR服务器直接以被污染的google IP地址(而不是对域名进行重新解析)进行了转发,导致失败:

 

【补充】

将上述测试中的SSR服务端换成SS服务端进行测试,结果一样。

在所有测试环境相同的情况下,替换SS、SSR客户端可执行程序为对方的名称,测试结果和上述一样,SS成功、SSR失败。

【结论】

SS客户端在本地DNS解析被污染的情况下可以在远程服务器重新解析成功,SSR客户端不具备此功能。

在所有配置和环境相同的情况下,有问题的可能是SSR客户端程序,需要修改SSR客户端源码。

【解决】

将SSR源替换为如下即可:

https://github.com/glzjin/shadowsocks-libev

此版本ssr libev的服务端目前还支持部分混淆

传输协议:verify_simple,verify_sha1

混淆插件:http_simple/post,tls1.2_ticket_auth

 

新的SSR for OpenWRT地址不变:

https://github.com/ywb94/openwrt-ssr

 

另:新版SSR官方源已修正这个问题

https://github.com/breakwa11/shadowsocks-libev

SHA1 ID:cd646ce98f0c21d54011d636dabba1fc053fbc0d

评论:1

  1. mYoungs 回复
    2016年12月23日 于 下午10:26

    确实,我的SSR也出现类似的问题,而且win10测试版的SS没法一键配置系统代理,很头疼

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>