Shadowsocks + GfwList 实现 OpenWRT / LEDE 路由器自动翻墙

shadowsocks 服务器合租招募

本站发布的三种 shadowsocks 在 openwrt 上的自动翻墙方案:

1、Shadowsocks + ChnRoute 实现 OpenWRT / LEDE 路由器自动翻墙
2、Shadowsocks + Redsocks 实现 OpenWRT 路由器自动翻墙 (停止更新)
3、Shadowsocks + GfwList 实现 OpenWRT / LEDE 路由器自动翻墙

 

本方案依靠GFWList,List中的域名站点走代理,不在List中的域名不走代理,根据域名判断。然而其实本质上依然是根据IP判断是否代理IP走代理,dnsmasq-full可以将解析域名得到的IP加到一个ipset中,利用这个ipset来判断走不走代理。实际是完成了gfwlist(域名列表)到dnsmasq的ipset规则再到IP地址的转换。同样,本方案依然可以搭配ChinaDNS搭配使用,也可以使用ss-tunnel,或者是自己的DNS服务器。

本方案的优点明确,只有被墙的站点才走代理,但是gfwlist并不能100%涵盖被墙站点,而且有些国外站点直连速度远不如走代理,特别是你代理服务器速度较快,希望通过代理加速国外访问时,此方案就不是那么好用了。请酌情选择你所使用的方案。

本人作为一名普通使用者,水平有限,且文章也缺乏校审,肯定有错误存在,也有很多能改进的地方,如有意见或建议,请留言指出,万分感谢! 如果使用时遇到问题也欢迎留言,本人如果有空都会回复。

一、安装

OpenWRT CC 15.05.1 及更早版本安装步骤
LEDE 安装步骤
二、配置

1、配置 /etc/shadowsocks.json ,格式如下:

新建文件: /etc/init.d/shadowsocks :

修改文件权限:

然后启动shadowsocks,并设置开机运行:

2、配置dnsmasq和ipset

2.1. 将如下规则加入自定义防火墙规则中(最后的1080是shadowsocks的本地端口 酌情修改):

 

2.2. 修改dnsmasq配置:

OPENWRT:

修改 /etc/dnsmasq.conf,在最后加入 conf-dir=/etc/dnsmasq.d

LEDE:

执行:

如果返回值为 uci: Entry not found 或者其他非  /etc/dnsmasq.d 的值,则执行:

2.3 添加gfwlist和China-List配置文件:

新建并进入目录  /etc/dnsmasq.d ,下载 dnsmasq_gfwlist_ipset.conf 后放入该目录。

自动生成配置文件的脚本,本人放在这里:https://github.com/cokebar/gfwlist2dnsmasq

你可能需要自行修改这个文件,格式如下:

下面详细说一下DNS的方案,有三种:

方案一:

在代理服务器上搭建DNS服务来解析国外网站,可用dnsmasq或者pdnsd,监听非53端口。

比如说DNS服务器IP是:3.4.5.6,端口是5050,那么使用替换功能将 /etc/dnsmasq.d/dnsmasq_list.conf 里面的 127.0.0.1#5353 全部替换成 3.4.5.6#5050 即可。

最后重启路由器即可。

方案二:

使用ss-tunnel转发UDP的DNS请求,修改 /etc/init.d/shadowsocks 文件,如需修改上游DNS,请修改 DNS=8.8.8.8:53 字段,本地端口修改 TUNNEL_PORT=5353 :

最后重启路由器即可。

方案三:(废弃,不要使用,请使用方案二。如果方案二有问题,请使用TCP方案,参考:TCP 方式查询解决 DNS 污染问题

方案三

PS1:发现有不少人之前用过chnroute方案,然后改成gfwlist方案,此时记得把忽略解析文件的勾选去掉并把原来的设置填回去:

problem1

PS2:默认只有连接路由的设备翻了墙,为了让路由器自身也能够翻墙(如使用路由器获取gfwlist更新dnsmasq_list.conf时候,gfwlist的URL是被墙站点,此时需要路由器自身也要翻墙)做出如下配置,先在自定义防火墙规则中额外加一条:

然后再WAN口配置中如图所示,将DNS手动指定为127.0.0.1:

ss222

 

最后在DHCP/DNS设置中将你的ISP的DNS填入(或者使用114DNS等公共DNS)

dnsmasq_localdns

 


参考文章:https//kyonli.com/p/18

429 条评论

  1. 引用: Shadowsocks + ChnRoute 实现 OpenWRT 路由器自动翻墙

  2. 引用: Shadowsocks + Redsocks 实现 OpenWRT 路由器自动翻墙

  3. 引用: 玩转 Shadowsocks 本博客文章合集目录 - 飞羽博客

  4. kylinxms 回复

    gfwlist.conf有问题啊,连google.com都没有

    1. cokebar 文章作者 回复

      确实有点问题 有些域名没生成过来 我会换一个自动生成的脚本 感谢提醒

    2. cokebar 文章作者 回复

      改了一下 貌似也就google.com和blogspot.com的一些域名漏掉了 现已添加

      1. kylin 回复

        非常感谢,其实还有ntdtv.com,这个是新唐人,有各种被夸大的土共黑幕

  5. ltns 回复

    似乎DNS方案二所有的DNS查询都从ss-tunnel走?

    而DNS方案三的话似乎防dns污染效果不是绝对可靠,不知道是否可以像文章1“Shadowsocks + ChnRoute 实现..” 里的DNS方案二那样使用 chinadns + ss的udp转发?

  6. ltns 回复

    我搞错了,DNS方案二不需要chinadns的配合,DNS查询也可以自动分流的。

    因为我原先用的是文章1“Shadowsocks + ChnRoute 实现..” 的翻wall方案,现在改用文章3的“Shadowsocks + GfwList ”,那么原先的DHCP and DNS页面里的 DNS forwardings(127.0.0.1#5353)要改回默认DNS ip,否则DNS查询都从ss-tunnel走了。谢谢lz的教程

    1. cokebar 文章作者 回复

      是的这篇除过方案三,其他是无需ChinaDNS的。方案多了也容易混

  7. Zixiong 回复

    请问有没办法实行白名单,也就是符合某个list的走直接连接,其他的全部走ss?

    1. cokebar 文章作者 回复

      Chinalist当然可以啊,改下iptables就行了啊,match-set改成!就行了

  8. Zixiong 回复

    这个服务生成的白名单就不错,https://www.pandafan.org/pac/index.html

  9. Halry 回复

    千呼万唤始出来。不过我也已经打算用redsocks直接redirect到家里的服务器(里面已经有cow和ss,性能更好:)),再从服务器出来出wan口,这样可行吗?redsocks里面怎么让特定ip不走redsocks?

  10. nick 回复

    非常感谢!已经成功飞跃,但是facebook和youtube转到了其他网站,twitter隐私设置错误,google是正常,请问是哪里有问题呢

    1. nick 回复

      手机上都是正常的

    2. cokebar 文章作者 回复

      PC机DNS污染

1 2 3 4 5 16 17

发表评论

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

请输入验证码 * 请输入正确的验证码