Setup ShadowSocks on OpenWrt via Luci

相对于其它科学上网工具, shadowsocks使用socks5传输数据, 协议特征不明显, 并且使用分散化服务, 被封锁的概率较小.

在OpenWrt路由器上运行shadowsocks客户端后, 局域网中所有设备不需要进行任何设置, 就可以达到科学上网的目的.

因为sock5只支持传输TCP协议, 所以需要把DNS解析(UDP协议), 通过特殊隧道进行转发.

Install Packages

# ssh root@192.168.31.1
$ opkg update
$ opkg install shadowsocks-libev luci-app-shadowsocks-libev

$ echo '/etc/ignore.list' >> /etc/sysupgrade.conf
$ wget -qO- http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest | awk -F '|' '$2=="CN" && $3=="ipv4" {printf "%s/%s\n", $4, 32-log($5)/log(2)}' > /etc/ignore.list

Services ▷ ShadowSocks-libev

Server Address: x.x.x.x  
Server Port: 8388  
Password: ******  
Ignore List: /etc/ignore.list  
UDP Relay: Enabled  
UDP Forward: 5300 => 8.8.8.8:53  

UDP Relay is for PREROUTING, not for OUTPUT.

/etc/ignore.list (约7500行)

1.0.1.0/24  
1.0.2.0/23  
1.0.8.0/21  
1.0.32.0/19  
1.1.0.0/24  
1.1.2.0/23  
1.1.4.0/22  
1.1.8.0/24  
1.1.9.0/24  
1.1.10.0/23  

/etc/config/dhcp

config dnsmasq  
        option noresolv '1'
        list server '127.0.0.1#5300'