感言:之前写的的一篇Tomato-ARM部署s-s兲朝上网(ARM也会随之更新),由于自己的失误,因为shibby版本的ARM和Mips是有稍微的区别,我以为是通用的,导致很多同学按照上面的帖子配置出现一些奇怪的错误,特写此篇来弥补一下!
之前的一篇:Tomato-ARM部署s-s兲朝上网
配置环境:- |
| 系统 | Tomato shibby(1.28.0000 -130 K26ARM USB AIO-64K)此方案在Mips平台的路由器通用! | SS账号 | | 测试路由器 | NETGEAR R6300V1、NETGEAR WNDR4500 V2、LINKSYS E3000 (机器性能好的,体验会比较好) | 依赖插件 | ss-redir、ss-tunnel、ss-local、ss-server | 依赖文件 | gfwlist.conf、run.sh、entware-install.sh、china-dns for mips、 load_modules.sh、check_chain.sh
| 配置过程1.开启jffs和配置路由器联网
Administration >> JFFS

勾选上Enable,因为初次开启,所以先要Format/Erase格式化一下,然后才save,最后重启一下机器 2.挂载/jffs到/opt 方法一
telnet 192.168.1.1 - root@unknown:/tmp/home/root# cd /jffs
- root@unknown:/jffs# mkdir opt
- root@unknown:/jffs# cd ../
- root@unknown:/# mount -o bind /jffs/opt /opt
复制代码方法二
如果tomato shibby固件没有jffs,挂载U盘!
注意!分区在此处就不做过多的操作了,根据自己的情况进行分区,我们以默认一个分区进行操作,插入路由器USB口之前,U盘要先格式化一遍,这样避免出现诡异的错误!
- root@unknown:/# fdisk -l /dev/sda #查看U盘分区
- root@unknown:/#
- Disk /dev/sda: 15.9 GB, 15931539456 bytes
- 255 heads, 63 sectors/track, 1936 cylinders
- Units = cylinders of 16065 * 512 = 8225280 bytes
- Device Boot Start End Blocks Id System
- /dev/sda1 1 1937 15558112+ c Win95 FAT32 (LBA)
- root@unknown:/# umount /dev/sda1 #卸载挂载分区,如果命令卸载不了直接web界面点击umount
- root@unknown:/# mkfs.ext3 /dev/sda1 #格式化该分区为ext3/4文件系统格式
复制代码
格式化完成后再到 USB and NAS >> USB Support 点击Mount(红色方框部分)
绿色方框部分是挂载到的路径/tmp/mnt/sdb1,为了安装entware方便,我们需要把它再次挂载到/opt目录:- root@unknown:/# mount -o -bind /tmp/mnt/sdb1 /opt
复制代码为了方便开机后自动挂载,在 USB and NAS >> USB Support >> Run after mounting 输入mount -o -bind /tmp/mnt/sdb1 /opt 3.安装entware_arm源
注意!这里这个源是MIPS的不是ARM的,ARM源如下:
entware-arm - root@unknown:/# cd /optroot@unknown:/# wget -O - <a href="http://entware.wl500g.info/binaries/mipselsf/installer/entware_install.sh" target="_blank">http://entware.wl500g.info/binar ... /entware_install.sh</a> | sh
复制代码4.安装配置s-s-libev
由于大家反应entware源里面的s-s-libev_2.2.1有问题,所以下面我提供自己用的2.1.4版本给大家下载安装,如果安装能正常翻越,建议用最新版,我也不知懂啊这是不是个别现象! 自己编译修复了s-s-libev_2.2.2的问题,文章后面提供2.2.2版本的下载链接! - */用winscp上传到/tmp目录/*
- root@unknown:/# cd /tmp
- root@unknown:/# opkg install s-s-libev_2.2.2-1_entware.ipk
- root@unknown:/# vi /opt/etc/s-s.json
- root@unknown:/#
- {
- "server":"127.0.0.1",
- "server_port":443,
- "local_address":"0.0.0.0",
- "local_port":1080,
- "password":"123456789",
- "timeout":60,
- "method":"rc4-md5"
- }
- :wq!
复制代码
5.测试s-s本地代理 - root@unknown:/# /opt/etc/init.d/S22s-s start
复制代码6.配置自动挂载脚本
加入自动启动init选项,Administration >> Scripts >> init选项写入 mount -o bind /jffs/opt /opt 7.配置透明代理和UDP转发脚本并加入自动启动选项 ss-redir透明代理 - root@unknown:/tmp/home/root# vi /opt/etc/init.d/S22s-s
- #!/bin/sh
- ENABLED=yes
- PROCS=ss-local ****《《《《《《
- ARGS="-c /opt/etc/s-s.json"
- PREARGS=""
- DESC=$PROCS
- PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- . /opt/etc/init.d/rc.func
复制代码改为 - #!/bin/sh
- ENABLED=yes
- PROCS=ss-redir ****《《《《《《
- ARGS="-c /opt/etc/s-s.json"
- PREARGS=""
- DESC=$PROCS
- PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- . /opt/etc/init.d/rc.func
复制代码(可选)UDP转发脚本 ss-tunnel init启动脚本 - root@unknown:/tmp/home/root# cd /opt/etc/init.d/
- root@unknown:/tmp/home/root# vi S23ss-tunnel
- #!/bin/sh
- ENABLED=yes
- PROCS=ss-tunnel
- ARGS="-c /opt/etc/s-s.json -b 0.0.0.0 -l 5300 -L 8.8.8.8:53 -u"
- PREARGS=""
- DESC=$PROCS
- PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- . /opt/etc/init.d/rc.func
- :wq!
- root@unknown:/opt/etc/init.d# chmod 755 S23ss-tunnel -R
复制代码ss-redir、ss-tunnel开机启动脚本
run.sh - #!/bin/sh
- # Copyright (C) 2015 OpenWrt.org
- /opt/etc/init.d/S22s-s start
- # 如果你选择A方案,请去掉注释
- #/opt/etc/init.d/S23ss-tunnel start
复制代码注意!如果你是挂载到U盘里面的,请别写进init选项
加入自动启动init选项,Administration >> Scripts >> init选项写入/jffs/run.sh 8.配置dnsmasq配合UDP转发和DNS解析(二选一)
Advanced >> DHCP/DNS >> DHCP / DNS Server (LAN) >> Dnsmasq
Custom configuration 依次在框内写入 - no-poll #轮训dns解析
- no-resolv #不使用/etc/resolv.conf来进行上游dns服务器解析
- all-servers #查询最快的DNS解析(根据自己的情况进行配置)
- server=127.0.0.1#5353 #china-dns本地监控端口
- conf-dir=/jffs/dnsmasq.d #用来自定义某些网站的DNS解析
复制代码A.配合UDP转发防污染编辑gfwlist.conf文件
9.china-dns防污染 配置 china-dns init 脚本
a.下载文章后面提供的 china-dns for mips
b.解压出来后把 china-dns 目录放到 /jffs ,再把 /bin 文件夹下的 china-dns 文件移动到/opt/bin 或者 /jffs/opt/bin 目录(就是entware源的安装目录)
c.再赋予 /opt/bin 下 china-dns 可执行权限 china-dns启动脚本run_cndns.sh
A.不开启UDP转发 china-dns init 脚本:
S24china-dns - #!/bin/sh
- ENABLED=yes
- PROCS=china-dns
- ARGS="-b 127.0.0.1 -p 5353 -c /jffs/china-dns/share/chnroute.txt -s 114.114.114.114,208.67.222.222:443,8.8.8.8" # 一个本地的DNS,一个国外的DNS,国外后面可以加入备用DNS
- PREARGS=""
- DESC=$PROCS
- PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- . /opt/etc/init.d/rc.func
复制代码B.开启UDP转发 china-dns init 脚本:
S24china-dns - #!/bin/sh
- ENABLED=yes
- PROCS=china-dns
- ARGS="-b 127.0.0.1 -p 5353 -c /jffs/china-dns/share/chnroute.txt -s 114.114.114.114,127.0.0.1:5300" # 一个本地的DNS,一个国外的DNS,国外后面可以加入备用DNS
- PREARGS=""
- DESC=$PROCS
- PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- . /opt/etc/init.d/rc.func
复制代码
加入run.sh开机自启动脚本
接步骤.7的ss-redir、ss-tunnel开机启动脚本
- #!/bin/sh
- # Copyright (C) 2015 OpenWrt.org
- /opt/etc/init.d/S22s-s start
- #/opt/etc/init.d/S23ss-tunnel start #UDP转发启用
- /opt/etc/init.d/S24china-dns start
复制代码注意!这两种方案二选一,如果选择A方案,下载gfwlist.zip;如果选择方案B,还是要下载gfwlist.zip
10.配置防火墙策略(具有jffs)
说明!前几次更新都是利用gfwlist来通过dnsmasq解析出来IP加入到ipset集合中,但这次更新直接用chnroutes来导入中国IP段来判断。 加入防火墙自启动firewall选项,Administration >> Scripts >> Firewall
加载chnroutes脚本配置
ipsetadd.sh - #!/bin/sh
- # Copyright (C) 2015 OpenWrt.org
- _input=/jffs/chnroute.txt
- IPS=/usr/sbin/ipset
- ipset -N gfwlist nethash
- egrep -v "^#|^[ DISCUZ_CODE_15 ]quot; $_input | while IFS= read -r ip
- do
- $IPS -A gfwlist $ip
- done
复制代码加载防火墙规则脚本配置
iptables.sh - #!/bin/sh
- # Copyright (C) 2007-2012 OpenWrt.org
- # create a new chain named s-s
- iptables -t nat -N s-s
- # Ignore your s-s server's addresses
- # It's very IMPORTANT, just be careful
- iptables -t nat -A s-s -d 0.0.0.0/8 -j RETURN
- iptables -t nat -A s-s -d 10.0.0.0/8 -j RETURN
- iptables -t nat -A s-s -d 127.0.0.0/8 -j RETURN
- iptables -t nat -A s-s -d 169.254.0.0/16 -j RETURN
- iptables -t nat -A s-s -d 172.16.0.0/12 -j RETURN
- iptables -t nat -A s-s -d 192.168.0.0/16 -j RETURN
- iptables -t nat -A s-s -d 224.0.0.0/4 -j RETURN
- iptables -t nat -A s-s -d 240.0.0.0/4 -j RETURN
- iptables -t nat -A s-s -d 157.7.109.114 -j RETURN
- iptables -t nat -A s-s -p tcp -m set --set gfwlist dst -j RETURN
- # Anything else should be redirected to s-s's local port
- iptables -t nat -A s-s -p tcp -j REDIRECT --to-ports 1080
- # Apply rules and specify ss-redir to take a specific port
- iptables -t nat -I PREROUTING -p tcp -m multiport --dports 22,80,443 -j s-s
复制代码加入开机自启动run.sh脚本 - #!/bin/sh
- # Copyright (C) 2015 OpenWrt.org
- # 启动ss-redir透明代理
- /opt/etc/init.d/S22s-s start
- # 启动UDP转发
- #/opt/etc/init.d/S23ss-tunnel start
- /opt/etc/init.d/S24china-dns start
- # 加载chnroutes
- /jffs/ipsetadd.sh
- # 加载iptables rules
- /jffs/iptables.sh
- #/jffs/china-dns/run_cndns.sh
复制代码注意!如果你是挂载到U盘里面的,请别写入init选项,继续看下面关于挂载U盘配置方法
加入自动启动init选项,Administration >> Scripts >> init选项写入/jffs/run.sh
注意!如果是挂载U盘和Tomato shibby k26系列的,请配置运行该脚本,不用去写入firewall选项
Tomato shibby k26系列 用以下两个脚本
A.ipset kernel加载脚本
load_modlues.sh - #!/bin/sh
- # Copyright (C) 2015 OpenWrt.org
- #
- # Load ipset netfilter kernel modules and kernel modules
- insmod ipt_REDIRECT
- insmod ipt_set
- insmod ip_set_iphash
- insmod ip_set
复制代码B.自动判断和检测加载防火墙策略、ipset kernel脚本
注意!如果你是挂载U盘的,请你根据自己的情况改变脚本的运行路径
check_chain.sh - #!/bin/sh
- # a v p n check script
- # HOUZI[http://www.router008.com]
- LOGTIME=$(date "+%Y-%m-%d %H:%M:%S")
- CHAIN=`iptables -t nat --list | grep -i gfwlist`
- if [ -z "$CHAIN" ]
- then
- # 加载模块脚本
- sh /opt/load_modules.sh
- # 运行透明代理、DNS转发、china-dns、加载chnroutes、加载iptables rules
- sh /opt/run.sh
- echo 'chain has finished loading at ['$LOGTIME'].' >> /tmp/load_chain.log 2>&1
- else
- echo 'no problem at ['$LOGTIME'].' >> /tmp/load_chain.log 2>&1
- fi
复制代码加入计划任务启动
Administration >> Scheduler >> Custom 1 框内填入/opt/check_chain.sh IP列表可以通过dnsmasq来自动生成;dnsmasq可以将解析域名得到的IP加到一个ipset中,利用这个ipset来判断走不走代理。完成了gfwlist.conf到dnsmasq的ipset规则再到IP地址的转换。
11.重启 所有配置完成后重启,来看看效果吧!
更新概要1. 2015.6.19 更新s-s-libev_2.2.2最新版,并修复了2.2.1版本以上不能在TT下运行的BUG
2. 2015.6.21 增添Tomato shibby K26系列固件的配置方法;重新编译china-dns不能在该平台使用的问题
3. 2015.6.25 用china-dns代替dnsmasq来解析和防污染
4. 2015.6.26 加入chiaDNS init脚本
5. 2015.6.27 gfwlist方案换成加载chnroutes判断(跟OpenWRT+s-s-libev-spec+ChinaNDS实现方式一样)
|