IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    TP-LINK WR941N路由器刷OpenWrt + Shadowsocks

    bear发表于 2015-11-11 14:06:33
    love 0

    给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



沪ICP备19023445号-2号
友情链接