Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
shadowsocks on openwrt

配置 shadowsocks

架设好 shadowsocks 服务端,在路由器上安装 shadowsocks 客户端,并配置 /etc/config/shadowsocks.json ,假设本地监听端口为 1080 。启动 shadowsocks

/etc/init.d/shadowsocks start

配置 privoxy

安装 privoxy openwrt 版。

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/ . 

意思是将请求转发给我们用 shadowsocks 开启的 socks5 代理,后面的规则让本地和局域网不经过代理直连。

至于 privoxy 的 *.action 和 *.filters 配置这里就不做了,因为后面我们用 PAC 做自动代理。启动 privoxy

/etc/init.d/privoxy start

自动分发 PAC 文件

生成 PAC 文件,这里我直接下载了曲径的 pac 文件修改了代理地址为路由器上的地址,即 192.168.1.1:8118 ,保存为 proxy.pac 并 scp 到路由器上。我的路由装了 luci 所以我就直接把 proxy.pac 放到 /www 目录中,这样 PAC 的地址就是 http://192.168.1.1/proxy.pac

这里利用 WPAD 协议自动分发 PAC。修改 /etc/config/dhcpconfig dnsmasq 选项下面增加配置

list dhcp_option '252,http://192.168.1.1/proxy.pac'

保存,重启 dnsmasq。 /etc/init.d/dnsmasq restart

设备配置

  • OS X - Network Preferences 里面配置 Proxies 为 Auto Proxy Discovery
  • Windows - Internet Explorer 连接、局域网设置为自动检测代理
  • iOS - 热点代理设置为自动,地址留空
  • Android/Windows Phone - 手动填写 http 代理地址吧。。。

感觉 Apple 的 iOS/OS X 系统这些细节做的非常好,真是方便。

lbp0200 commented Nov 5, 2014

我现在也是这样做的,想把pac的功能放进privoxy里,貌似不行,在找替代品,有个程序可以实现,可惜是go写的,不知道怎么安装到路由器里

Akagi201 commented Mar 7, 2015

@lbp0200 哪个程序?

lbp0200 commented Mar 26, 2015

哈哈,刚才找资料,又跑到这里来了,貌似更新了,good,非常好用。

houzi- commented Apr 13, 2015

使用WPAD协议对Android不兼容!出现OpenWrt的WiFi Android手机连不上!这是为什么?不知道作者遇到过没?

yangcin commented Nov 3, 2015

如二级路由设置为172.16,是不是这个也得加在 /etc/privoxy/config 里?

Firxiao commented Mar 5, 2016

"配置 privoxy “ 这一步可以省略
只需在proxy.pac中直接将var proxy 改为你路由器的的地址+ss客户端监听即可 如下:

var proxy = "SOCKS5 192.168.1.1:1080; SOCKS 192.168.1.1:1080; DIRECT;";

Rabbit52 commented May 2, 2016

15.05.1 下测试要重启路由器后才能分发成功,只重启 dnsmasq 不行。另外 pac 在 ios 上能代理浏览器,不能代理某些客户端,比如说 twitter,楼主有研究吗?

Rabbit52 commented May 2, 2016

应该是不支持 spdy 协议的原因

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment