NAP6官方旗舰店
搜索
发新帖
午饭无线 推广广告R7800 完胜 华硕路由器NETGEAR Vs ASUS T-Mobile定制版NETGEAR团购
开启左侧

Tomato部署ShadowSocks科学上网(只有被墙才会走VPN代理线路)

[复制链接]
4004 2

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
1.优点明确,只有被墙的站点才走代理,但是GFWList并不能100%涵盖被墙站点。所以要自己添加一些遗漏的被墙网站。
2.缺点, 有些国外站点直连速度远不如走代理,特别是你代理服务器速度较快,希望通过代理加速国外访问时,你需要把这个加入到GFWList里面来达到目的,这个时候显得就不智能了。配置环境:

系统:Tomato shibby(1.28.0000 -129 K26ARM USB AIO-64K)
SS账号:SSH91
测试路由器:NETGEAR R6300V2 (机器性能好的,体验会比较好)
依赖插件:ss-redir、ss-tunnel、ss-local、ss-server
依赖文件:gfwlist.conf、run.sh、load-modules、check_chain、 entware-install_arm.sh

刷Tomato shibby固件:

注意!刷过DD-WRT直刷过去,并且刷完后要双清一下,建议还是要30-30-30,我们直接从原厂固件刷

1.下载Tomato Shibby

我们这里下载最新版本,还有下载还要下载网件.CHK校验包Netgear R-series initial files

2.固定网关
IP为192.168.1.100,子网掩码255.255.255.0

3.刷固件
点击网件固件 高级 >> 管理 >> 路由器升级选项,选入刚才我们下载的tomato-R6300v2-initial.chk

4.再次刷Tomato shibby
大约2分钟左右会重启刷新到Tomato界面,如果没有刷新到Tomato界面,直接在浏览器输入http://192.168.1.1

打开Administration >> upgrade选项。选入刚才我们下载的tomato-R6300v2-ARM--129-AIO-64K.trx

5.双清nvram
再过2分多钟这时候路由器湖进入到Tomato界面
Administration >> Configuration- Restore Default Configuration >> 选择erase all data in Nvram memory(thorough) >> save
路由器会再次重启,这次路由器完全刷好了Tomato

配置过程

1.开启jffs和配置路由器联网
Administration >> JFFS




勾选上Enable,因为初次开启,所以先要Format/Erase格式化一下,然后才save,最后重启一下机器

2.挂载/jffs到/opt
  1. telnet 192.168.1.1root@unknown:/tmp/home/root# cd /jffs
  2. root@unknown:/jffs# mkdir opt root@unknown:/jffs# cd ../
  3. root@unknown:/# mount -o bind /jffs/opt /opt
复制代码
注意!这里这个原始ARM的不是mipsel的,mipsel源如下:
  1. entwareroot@unknown:/# cd /opt
  2. root@unknown:/# wget -O - http://qnapware.zyxmon.org/binaries-armv7/installer/entware_install_arm.sh | sh
复制代码
entware安装成功后显示如下(时间有些长):



4.安装配置shadowsocks-libev
我以为entware不会有shadowsocks之类,所以自己交叉编译个shadowsocks,结果发现entware有,还有shadowVPN,罪过啊啊!这里我们以entware来配置,因为静态编译的配置太麻烦
  1. root@unknown:/# opkg update root@unknown:/# opkg install shadowsocks-libev
  2. root@unknown:/# vi /opt/etc/shadowsocks.json
  3. root@unknown:/#
  4. {
  5. "server":"127.0.0.1",
  6. "server_port":443,
  7. "local":"0.0.0.0",
  8. "local_port":1080,
  9. "password":"123456789",
  10. "timeout":60,
  11. "method":"rc4-md5"
  12. }
  13. :wq!
复制代码
5.测试shadowsocks本地代理
  1. root@unknown:/# /opt/etc/init.d/S22shadowsocks start
复制代码
启动后用chrmoe的Switchchy0mega来测试是否能翻越,如果没问题可以直接进入下一步!

6.配置自动挂载脚本
Administration >> Scripts >> init选项写入
  1. mount -o bind /jffs/opt /opt
复制代码
7.配置透明代理和UDP转发脚本并加入自动启动选项

ss-redir透明代理
  1. root@unknown:/tmp/home/root# vi /opt/etc/init.d/S22shadowsocks
  2. #!/bin/sh
  3. ENABLED=yes
  4. PROCS=ss-local
  5. ARGS="-c /opt/etc/shadowsocks.json"
  6. 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
复制代码
修改为
  1. #!/bin/sh
  2. ENABLED=yes
  3. PROCS=ss-redir
  4. ARGS="-c /opt/etc/shadowsocks.json"
  5. 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
复制代码
加入自动启动init选项 /opt/etc/init.d/S22shadowsocks start

(可选)UDP转发脚本
  1. #!/bin/sh
  2. # Copyright (C) 2015 OpenWrt.org
  3. CONFIG=/opt/etc/shadowsocks.json
  4. /opt/bin/ss-tunnel -c $CONFIG -b 0.0.0.0 -l 5300 -L 8.8.8.8:53 -u
复制代码
加入自动启动init选项 /jffs/run.sh

8.配置dnsmasq配合UDP转发和DNS解析(二选一)
Advanced >> DHCP/DNS >> DHCP / DNS Server (LAN) >> Dnsmasq
Custom configuration 框内写入 conf-dir=/jffs/dnsmasq.d

A.配合UDP转发防污染
  1. root@unknown:/tmp/home/root# cd /jffs
  2. root@unknown:/tmp/home/root# mkdi dnsmasq.d
复制代码
编辑dnsmasq.conf文件
  1. # gfw list ipset rules for dnsmasq
  2. # updated on 2015-05-30 21:22:09
  3. #
  4. server=/.lsxszzg.com/127.0.0.1#5300 #转发到tunnel(UDP转发)的本地 listen port ,注意该本地端口跟UDP转发脚本的端口一定要一致
  5. ipset=/.lsxszzg.com/gfwlist
  6. server=/.altrec.com/127.0.0.1#5300
  7. ipset=/.altrec.com/gfwlist
  8. server=/.azubu.tv/127.0.0.1#5300
  9. ipset=/.azubu.tv/gfwlist
  10. server=/.beeg.com/127.0.0.1#5300
  11. ipset=/.beeg.com/gfwlist
  12. server=/.darpa.mil/127.0.0.1#5300
  13. ipset=/.darpa.mil/gfwlist
  14. server=/.fastpic.ru/127.0.0.1#5300
  15. ipset=/.fastpic.ru/gfwlist
  16. server=/.fxnetworks.com/127.0.0.1#5300
  17. ipset=/.fxnetworks.com/gfwlist
  18. server=/.hulu.com/127.0.0.1#5300
  19. ·······
复制代码
B.指定DNS解析防污染
  1. root@unknown:/tmp/home/root# cd /jffs
  2. root@unknown:/tmp/home/root# mkdi dnsmasq.d
复制代码
编辑dnsmasq.conf文件
  1. # gfw list ipset rules for dnsmasq
  2. # updated on 2015-05-30 21:22:09
  3. #
  4. server=/.lsxszzg.com/208.67.222.222#443
  5. ipset=/.lsxszzg.com/gfwlist
  6. server=/.altrec.com/208.67.222.222#443
  7. ipset=/.altrec.com/gfwlist
  8. server=/.azubu.tv/208.67.222.222#443
  9. ipset=/.azubu.tv/gfwlist
  10. server=/.beeg.com/208.67.222.222#443
  11. ipset=/.beeg.com/gfwlist
  12. server=/.darpa.mil/208.67.222.222#443
  13. ipset=/.darpa.mil/gfwlist
  14. server=/.fastpic.ru/208.67.222.222#443
  15. ipset=/.fastpic.ru/gfwlist
  16. server=/.fxnetworks.com/208.67.222.222#443
  17. ipset=/.fxnetworks.com/gfwlist
  18. server=/.hulu.com/208.67.222.222#443
  19. ·······
复制代码
注意!这两种方案二选一,如果选择A方案那就要配置步骤7的UDP转发脚本,下载gfwlist.zip;如果选择B方案就不用配置UDP转发脚本,下载gfwlist1.zip

9.配置防火墙策略和加载ipset内核模块脚本
  1. #!/bin/sh
  2. # Copyright (C) 2015 OpenWrt.org

  3. # Load ipset netfilter kernel modules and kernel modules
  4. insmod ip_set
  5. insmod ip_set_bitmap_ip
  6. insmod ip_set_bitmap_ipmac
  7. insmod ip_set_bitmap_port
  8. insmod ip_set_hash_ip
  9. insmod ip_set_hash_ipport
  10. insmod ip_set_hash_ipportip
  11. insmod ip_set_hash_ipportnet
  12. insmod ip_set_hash_net
  13. insmod ip_set_hash_netport
  14. insmod ip_set_list_set
  15. insmod xt_set

  16. # Configure firewall forwarding tactics
  17. ipset -N gfwlist iphash
  18. iptables -t nat -A PREROUTING -p tcp -m set --match-set gfwlist dst -j REDIRECT --to-port 1080
  19. iptables -t nat -A OUTPUT -p tcp -m set --match-set gfwlist dst -j REDIRECT --to-port 1080 #注意本地监控端口
复制代码
IP列表可以通过dnsmasq来自动生成;dnsmasq可以将解析域名得到的IP加到一个ipset中,利用这个ipset来判断走不走代理。完成了gfwlist.conf到dnsmasq的ipset规则再到IP地址的转换。

10.配置自动判段加载防火墙策略脚本并加入计划任务
  1. #!/bin/sh
  2. # a VPN check script
  3. # HOUZI<span style="box-sizing: border-box;">[</span>http;//www.router008.com]

  4. LOGTIME=$(date "+%Y-%m-%d %H:%M:%S")
  5. CHAIN=`iptables -t nat --list | grep -i gfwlist`

  6. if <span style="box-sizing: border-box;">[</span> -z "$CHAIN" ]
  7. then
  8.     sh /jffs/load_modules
  9.     echo 'chain has finished loading at <span style="box-sizing: border-box;">[</span>'$LOGTIME'].' >> /tmp/load_chain.log 2>&1

  10. else
  11.     echo 'no problem at <span style="box-sizing: border-box;">[</span>'$LOGTIME'].' >> /tmp/load_chain.log 2>&1
  12. fi
复制代码
加入计划任务启动
Administration >> Scheduler >> Custom 1 框内填入
  1. /jffs/check_chain
复制代码




清理脚本生成的监控记录




11.重启
所有配置完成后重启,来看看效果吧!

check_chain.zip

408 Bytes, 下载次数: 21

gfwlist.zip

26.63 KB, 下载次数: 15

gfwlist1.zip

26.77 KB, 下载次数: 20

load_modules.zip

372 Bytes, 下载次数: 17

run.zip

271 Bytes, 下载次数: 19

精彩评论2

zzzZZZ0129  班长  发表于 2016-5-4 17:10:55 | 显示全部楼层
这个支持ssr了吗?
懂事长  NAP6技术团队  发表于 2016-5-4 18:21:35 | 显示全部楼层
zzzZZZ0129 发表于 2016-5-4 17:10
这个支持ssr了吗?

大哥 仔细阅读啊,都写清楚了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表