安装软件
1 2 3 4 5 6 7 8 9 10
| /usr/sbin/entware-setup.sh
opkg install bind-dig opkg install shadowsocks-libev-ss-redir opkg install shadowsocks-libev-ss-tunnel opkg install libc libssp libev libmbedtls libpcre libpthread libsodium haveged zlib libopenssl opkg install ipset4
//ac66u only opkg install iptables
|
配置ss-redir服务
修改配置文件
vim /opt/etc/init.d/S22shadowsocks
- 将
ss-local
改为ss-redir
- 添加启动参数
-b 0.0.0.0
- 将
ENABLED
值改为 yes
,变成开机启动
修改shadowsocks.json
修改服务器IP,端口,加密码方式。
配置dnsmasq
创建配置文件
vim /jffs/configs/dnsmasq.conf.add
- 添加
conf-dir=/opt/etc/dnsmasq.d
创建目录
mkdir /opt/etc/dnsmasq.d/
- 下载规则文件
1 2
| cd /opt/etc/dnsmasq.d/ curl -O https://cokebar.github.io/gfwlist2dnsmasq/dnsmasq_gfwlist.conf
|
配置ss-tunnel服务
ss-tunnel主要用于解决dns污染的问题,dnsmasq会将解析请求转发到ss-tunnel
创建开机启动脚本
- 转到目录
/jffs/scripts/
- 创建名为比如
start-ss-tunnel.sh
文件,内容如下:
1 2 3
| #!/bin/sh
/opt/bin/ss-tunnel -c /tmp/mnt/onmp/entware/etc/shadowsocks.json -l 5353 -L 8.8.8.8:53 -u > /dev/null 2>&1 &
|
创建service-start
文件
将/jffs/scripts/start-ss-tunnel.sh
加到service-start
中
至此ss-tunnel
就能开机启动了
配置iptables
下载chnroute.txt
1 2
| wget -O- 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | awk -F\| '/CN\|ipv4/ { printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > /jffs/configs/chnroute.txt
|
生成ipset集合
1 2 3 4 5 6 7 8 9 10 11 12
| #!/bin/sh
wget -O- 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | awk -F\| '/CN\|ipv4/ { printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > /jffs/configs/chnroute.txt
ipset -N chnroute nethash
for ip in $(cat '/jffs/configs/chnroute.txt'); do ipset -A chnroute $ip done
ipset --save > /jffs/configs/ipset.conf
|
因为chnroute.txt
文件比较大,生成会比较慢,故将生成的ipset保存到ipset.conf
中,每次启动时从ipset.conf
中导入IP.
启动脚本
SS启动脚本ss-up.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| #!/bin/sh
alias iptables='/opt/sbin/iptables'
ipset -R < /jffs/configs/ipset.conf
# ipset -N chnroute iphash
# for ip in $(cat '/jffs/scripts/chnroute.txt'); do # ipset -A chnroute $ip # done
iptables -t nat -N SHADOWSOCKS iptables -t mangle -N SHADOWSOCKS
# 直连服务器 IP iptables -t nat -A SHADOWSOCKS -d [SS-SERVER-IP]/24 -j RETURN
# 允许连接保留地址 iptables -t nat -A SHADOWSOCKS -d 0.0.0.0/8 -j RETURN iptables -t nat -A SHADOWSOCKS -d 10.0.0.0/8 -j RETURN iptables -t nat -A SHADOWSOCKS -d 127.0.0.0/8 -j RETURN iptables -t nat -A SHADOWSOCKS -d 169.254.0.0/16 -j RETURN iptables -t nat -A SHADOWSOCKS -d 172.16.0.0/12 -j RETURN iptables -t nat -A SHADOWSOCKS -d 192.168.0.0/16 -j RETURN iptables -t nat -A SHADOWSOCKS -d 224.0.0.0/4 -j RETURN iptables -t nat -A SHADOWSOCKS -d 240.0.0.0/4 -j RETURN
# 直连中国 IP iptables -t nat -A SHADOWSOCKS -p tcp -m set --match-set chnroute dst -j RETURN iptables -t nat -A SHADOWSOCKS -p icmp -m set --match-set chnroute dst -j RETURN
# 重定向到 ss-redir 端口 iptables -t nat -A SHADOWSOCKS -p tcp -j REDIRECT --to-ports 1080 iptables -t nat -A SHADOWSOCKS -p udp -j REDIRECT --to-ports 1080 iptables -t nat -A OUTPUT -p tcp -j SHADOWSOCKS
# Apply the rules iptables -t nat -A PREROUTING -p tcp -j SHADOWSOCKS iptables -t mangle -A PREROUTING -j SHADOWSOCKS
|
将其中的SS-SERVER-IP
修改成你的服务器地址
创建post-mount
文件
将ss-up.sh
加入
1 2
| #!/bin/sh /jffs/scripts/ss-up.sh
|
经测试只有将启动脚本加入到post-mount
中对能开机启动,可能的原因是ss-up.sh
中设及到挂载分区的访问。
停止脚本
1 2 3 4 5 6
| #!/bin/sh iptables -t nat -D OUTPUT -p icmp -j SHADOWSOCKS iptables -t nat -D OUTPUT -p tcp -j SHADOWSOCKS iptables -t nat -F SHADOWSOCKS iptables -t nat -X SHADOWSOCKS ipset -X chnroute
|
参考