翻X应该是每个天朝人必备技能。废话不多说,在路由器上部署shadowsocks可以方便的让连接到路由的所有设备统一翻X,尤其适用于iphone和ipad设备——它们不越狱的话几乎没有办法实现智能翻。
网上有很多相关教程,大多数是由shadowsocks + chinadns + iptable 或者之类的方案,但是我在跟着大神们的设置的时候不知是出了什么问题,总是连接不稳定,时常连正常的网也上不去。我想可能是路由的性有限,把翻X和智能分流的工作都放在路由上会让它过载之类的,但是我也是个菜鸟,没有去深究到底是哪一步出现问题。
总之我后来找到了一个方案:路由器上运行shadowsocks,然后自动分发pac文件让每个客户端自己运行智能分流。这样的话负载就分布到了每个设备上,路由只要运行shadowsocks就好,而且由于pac文件放在路由器上,所以更新起来各终端也会自动更新。下面我讲一下具体实现细节。
第一步
装shadowsocks。从这里下载ipk安装包(好像被墙了?无法下载的同学我在文末打包一份放到百度盘里大家自行下载)放到路由器的/tmp文件夹里,然后
cd /tmp
opkg update
opkg install [shadowsocks文件名]
安装的同时如果有依赖包没有装的话会自动装上。这一步应该很简单,大家如果遇到问题百度一下应该都能轻松解决。装好了之后配置文件应该在/etc/shadowsocks.json,我习惯有ftp文件管理来修改它,打开之后内容如下:
{
"server”:”这里填帐号ip”,
"server_port”:”远程端口”,
"local_port”:”本地端口,我一般填1080”,
"password”:”密码”,
"timeout":"600",
"method": “加密方式 “
}
换成你自己的就ok 了,然后让它开机启动:
/etc/init.d/shadowsocks enable
手动运行:
ss-local -c /etc/shadowsocks.json
此时,第一步已经完成,这个时候你用chrome把代理调成192.168.1.1:1080就应该可以科学上网了。
第二步
把socks代理转成http代理。为什么要转?因为iphone好像不能使用socks代理(后来发现实是默认就支持的,这一步可以跳过),我们需要安装一个名为 privoxy 的包,很简单:
opkg install privoxy
完成!完成后我们要修改 /etc/privoxy/config ,假设监听端口为默认的 8118 。修改 listen-address 为 0.0.0.0:8118,其它默认,在文件结尾添加如下配置
forward-socks5 / 127.0.0.1:1080 .
forward 192.168.*.*/ .
forward 10.*.*.*/ .
forward 127.*.*.*/ .
forward localhost/ .
启动 privoxy
/etc/init.d/privoxy start
/etc/init.d/privoxy enable
第二步完成!
第三步
由路由把PAC文件自动发给各下家。首先你得有个PAC文件(废话),把PAC文件里的proxy信息改成 socks5 192.168.1.1:1080或者PROXY 192.168.1.1:8118,前者是shadowsocks的scoks5代理端口,后者是privoxy的http代理方式端口。如果有不会改的同学我同样也把这个文件打包放到文章尾,自己下载后注意把var httpProxy 这一行改成你自己的信息。
然后把pac文件重命名为proxy.pac(其实随便你叫什么名都行,下面记得自己改成你的名字就好了),放到路由的/www文件夹下,我们利用 WPAD 协议自动分发 PAC。
修改 /etc/config/dhcp 在 config dnsmasq 选项下面增加配置
list dhcp_option '252,http://192.168.1.1/proxy.pac'
保存,重启 dnsmasq。
/etc/init.d/dnsmasq restart
然后,设置一下权限,让其他机器可以访问这个文件,
cd /www
chmod +x proxy.pac
至此,在路由器上所有的操作已完成。
第四步
各终端的配置(mac,iphone,ipad,pc)。 水果家的设备很简单,iOS只要在wifi设置的详细界面里把http代理选为『自动』地址为空就可以了。mac的话在『网络设置』-『高级』-『代理』里设置为自动发现代理。完成。 pc的话麻烦一点,在ie的 连接、局域网设置为自动检测代理。 安卓的话—-没有用守安卓机,自己去找找应该也有相关设置。
好吧,所有的步骤都完成了。你们要的文件都打包在此:dropbox