如何让FreeRouter V2支持ShadowSocks

其实这个问题从FreeRouter V2发布一开始就有人在问了,但是我觉得这个问题是在太简单了,如果你都能搞定VPN模式的部署,ShadowSocks模式只应该更容易才对。前段时间发现浙江联通好像封了PPTP协议(真操蛋,竟然在整个协议层封掉),迫于无奈我也买了个ShadowSocks账号来放在路由上用,这里只简单的讲一些有用的和需要注意的问题。

1.Shadow Socks For Openwrt下载地址在这里:https://github.com/shadowsocks/openwrt-shadowsocks

2.对应的Luci App在这里:https://github.com/aa65535/openwrt-dist-luci

3.安装后可以直接在luci-app上设置账号,按服务商给你的填写就没什么问题。另外,有些服务商会提供config.json文件,不过格式不一定对,因为可能是给windows客户端准备的,所以要修改一下。

4.如果要做打包固件,可以在这里找到这些插件的repository:http://openwrt-dist.sourceforge.net/,然后添加到openwrt image builder的repositories.conf文件里就行了。

5.考虑到一些鸡生蛋和蛋生鸡的麻烦,你也可以下载好*.ipk文件后,直接放在OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64/packages/base这样的路径下面,就不用添加repository了,也不用在build的时候从repository抓取这些文件。

以上其实都是辅助性的废话,重点来了。ShadowSocks for openwrt默认启动了1080端口上的透明代理,你可以把这个当Socks代理用,所以在FreeRouter V2的基础上你要做的事情有:

1.删除PPTP的支持文件,或者简单点,删除PPTP接口,因为PPTP ip-up.d下有些脚本会捣乱。

2.修改/etc/firewall.user文件,原来的代码是:

注释掉后加上,或者修改为:

下面这个问题很重要!

shadowsocks libev spec 版for openwrt默认还启动了一个ss-rules命令,这个命令的作用就是设置代理规则,默认使用chnroute作为忽略列表。就是说除了chnroute中的国内IP,shadowsocks会默认的把所有IP都走代理,这样倒是覆盖面广,但缺点也很明显:

1.浪费流量,而且有些网站走代理速度还不如直连。

2.国内IP列表其实还是要更新,虽然更新得比较少。

3.你会发现你的国外VPN全都连不上了,哇哈哈哈,通过ShadowSocks透明代理再连VPN确实是个很奇怪的逻辑。

处理的方法有两种:

1.干掉ss-rules。vi打开/etc/init.d/shadowsocks文件,大概在103行的位置,找到“start_rules”,加个井号注释掉,重启shadowsocks就行了。这样shadowsocks不管你怎么设置,都不会做任何代理设置(其实就是添加了防火墙规则)。

2.如果觉得上面的方式太粗暴了,因为如果忽然你哪天想开一下全局SS,你会发现改了也没用,因为规则都被废了,可以文雅一点的去修改忽略IP列表。新建一个/etc/shadowsocks/all.list文件,写入以下内容:

然后把SS的忽略列表设置成这个文件就行了。

其实写0.0.0.0/0效果是一样的,但是执行的时候会提示说这个IP地址不符合CIDR规范(但不影响执行),哥是一个见不得warning的人,所以才分两段写了。

当然,更简单的做法是改用shadowsocks libev原生版,这个默认只启动ss-local的socks代理,你也可以修改/etc/init.d/shadowsocks文件改成启动透明代理并启动DNS转发,如下:

我看sf上很多人都下的是shadowsocks libev spec版,一方面是spec版本默认就使用chnroute的做法很省事,因为不需要自己额外添加任何规则就可以直接用了,另外可能很多人被官方的for openwrt优化迷惑了,反正我是没感觉有什么特别的,因为代码都是一份,优化可能就是指默认添加了chnroute规则,同时砍掉了ss-local。

另外对于DNS污染的问题,ShadowSocks默认会把8.8.4.4转发到路由器的5300端口上,这就成了一个干净的DNS服务器,可以为需要翻墙的域名单独指定使用这个DNS,例如:

如果ShadowSocks挂了,这个DNS就不可用,但Dnsmasq并不知道,还是继续查询这个DNS,所以结果是被封的域名无法解析但不会被污染。

原文:http://www.lifetyper.com/2015/04/shadowsocks-support-for-freerouter-v2.html

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s