给TP-LINK WR941N v5路由器刷OpenWrt并配置Shadowsocks自动翻Qiang的过程。v5及以前版本的还没有缩水太厉害,还是4M ROM + 32MB RAM,因此可以刷英文版本的WR941ND(英文版本多了个D)的OpenWrt固件。
需要注意的几点:
1,/tmp目录空间最大,不论是路由固件还是任何软件包,都应该先拷贝到/tmp目录再进行安装;
2,在安装shadowsocks-libev-polarssl软件包的过程中,路由器需要连网,以安装其它依赖软件包;
3,OpenWrt官网下载固件的时候,不要选择snapshots分支的软件包,它属于开发版本,非常不稳定
1,更新固件
根据OpenWrt官网提供的建议,这里提供2种升级固件的方式,可以任选一种
sysupgrade: sysupgrade -v /tmp/[specified firmware].bin OR mtd: mtd -r write /tmp/[specified firmware].bin firmware
刷全新固件
本文中,因为需要连网安装依赖包,故当成了二级路由器(网段设置成了192.168.3.x),避免跟上级路由(192.168.1.x)冲突。
cd /tmp wget http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/openwrt-15.05-ar71xx-generic-tl-wr941nd-v4-squashfs-factory.bin mtd -r write /tmp/openwrt-15.05-ar71xx-generic-tl-wr941nd-v4-squashfs-factory.bin firmware #完成以后路由器会自动重启 #重启以后可以用telnet或者SSH登陆,用户名为root,密码一般为空或者root #如果SSH密码为空,那么SSH会不停弹出输入密码的窗口,可以先使用telnet进去修改SSH密码 #初始化网络 vim /etc/config/network #将lan的ipaddr修改为192.168.3.1 reboot
2,安装shadowsocks
#安装shadowsocks-libev-polarssl版本 cd /tmp opkg update #安装下面的ipk文件会联网安装其它ipk,因此需要先update一下列表 wget http://sourceforge.net/projects/openwrt-dist/files/shadowsocks-libev/2.4.1-6f44d53/ar71xx/shadowsocks-libev-polarssl_2.4.1-1_ar71xx.ipk #这一步很重要,如果提示有依赖包没有装,先运行opkg update下载软件列表 #然后再安装这个.ipk,它会自动运行opkg instal xxx安装依赖包 opkg install /tmp/shadowsocks-libev-polarssl_2.4.1-1_ar71xx.ipk vim /etc/shadowsocks.json #输入server端的信息 #配置DNS指向127.0.0.1的7913端口 mkdir /etc/dnsmasq.d echo "conf-dir=/etc/dnsmasq.d" >> /etc/dnsmasq.conf echo "server=/#/127.0.0.1#7913" > /etc/dnsmasq.d/gfwlist.conf 配置shadowsocks初始化脚本 vim /usr/bin/shadowsocks #文件内容如下
#!/bin/sh # Create new chain iptables -t nat -N SHADOWSOCKS # Ignore your shadowsocks server's addresses # It's very IMPORTANT, just be careful. iptables -t nat -A SHADOWSOCKS -d XX.XX.XX.XX -j RETURN # Ignore LANs and any other addresses you'd like to bypass the proxy # See Wikipedia and RFC5735 for full list of reserved networks. # See ashi009/bestroutetb for a highly optimized CHN route list. 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 # Anything else should be redirected to shadowsocks's local port iptables -t nat -A SHADOWSOCKS -p tcp -j REDIRECT --to-ports 1080 # Apply the rules iptables -t nat -A PREROUTING -p tcp -j SHADOWSOCKS
chmod +x /usr/bin/shadowsocks vim /etc/init.d/shadowsocks #修改其中的start stop函数如下
注意下面的ss-redir -b 0.0.0.0 -c /etc/shadowsocks.json这一行,网上有部分教程因为缺少了-b参数,导致SS只监听在127.0.0.1的IP上,导致最后连不上网。
start() { echo "conf-dir=/etc/dnsmasq.d" >> /etc/dnsmasq.conf /etc/init.d/dnsmasq restart service_start /usr/bin/ss-redir -b 0.0.0.0 -c /etc/shadowsocks.json service_start /usr/bin/ss-tunnel -c /etc/shadowsocks.json -l 7913 -L 8.8.8.8:53 -u /usr/bin/shadowsocks } stop() { sed -i '/conf-dir=\/etc\/dnsmasq.d/d' /etc/dnsmasq.conf /etc/init.d/dnsmasq restart service_stop /usr/bin/ss-redir service_stop /usr/bin/ss-tunnel /etc/init.d/firewall restart }
下面的就不多解释了,enable是使开机自启。
/etc/init.d/dnsmasq restart /etc/init.d/dnsmasq enable /etc/init.d/shadowsocks enable /etc/init.d/shadowsocks stop /etc/init.d/shadowsocks start
参考文章:
配置OpenWrt路由器智能自动翻Qiang