Total Pageviews

Thursday, 24 July 2014

ToW 使用指南

ToW 的全称是 “Transparent Over the Wall” ,其设计目标是透明化/自动化,理想情
况下客户端用户无需关心哪些网站无法访问, 可直连网站也不会因为使用二级代理而降低访
问速度, 国内网站的 CDN 完全不受影响。

使用 pdnsd 特性防止 DNS 污染
支持 GAE, Shadowsocks 和 Obfuscated SSH,SSH 等代理服务器
使用 gfwlist/whitelist 和 ipset 配合 iptables 处理访问目标, 适应多种情况的无障碍浏览;
感谢 bwq518 把这个方案完美的集成到了 Tomato 固件中。

一.基本原理:
1. 黑名单模式:
系统启动会创建一个叫做 gfwlist 的 ipset 表,当处于 autogfwlist 中的域名被解析
时, 解析出来的 IP 会自动加入 gfwlist 这个表, 然后通过 iptables 加载 gfwlist 这
个 ipset 表,所有被墙网站通过代理访问。
2.白名单模式:
系统启动会创建一个叫做 whitelist 的 ipset 表,当处于 whitelist 中的域名被解析
时,解析出来的 IP 会自动加入 whitelist 这个表,然后通过 iptables 加载
whitelist 这个 ipset 表,所有不在这个表的网站都会通过代理访问。
二. 补充说明:
大部分设置已经在 ToW 设置界面有 * 号标注的注解,请仔细阅读!以下只对没有注解的
一些参数做一些解释。

这里可以选择 Shadowsocks Redir,Shadowsocks Local,混淆 SSH 和 SSH 以及 GAE。
Shadowsocks Redir 也就是 ss-redir ,它直接支持 iptables 的转发,Shadowsocks
local 是
ss-local + redsocks ,这两个模式共用一个 Shadowsocks 账号,使用上并无太大区别,
同时保留的原因是看看哪个方式的吞吐量会更加高;
混淆 SSH 是把普通 SSH 握手加密的一种方式;
GAE 包括 GoAgent 和 WallProxy,其实就是使用他们的 8087 端口做透明转发,目前由
于证书的问题,GAE 模式只能支持 80 端口的 HTTP 站点,HTTPS 不支持。
* 使用 GM 脚本 ViewTube ,把 Youtube 网站视频强制为 HTML5 模式,可以极大的提
高缓冲速度稳定性。
三. 透明代理使用成功的关键因素
1. 客户端 DNS 服务器必须指向路由器 IP 且只有路由器 IP, 这个如果您没有修改过系统
的默认设置,那么就是 OK 的.
2. 请清空一次您的系统 DNS 缓存:
A. Windows 下,运行 CMD ,然后 ipconfig /flushdns
B. MAC OS 下:
Tiger 或更低版本 Mac OS:
sudo lookupd -flushcache
Leopard 和 Snow Leopard:
sudo dscacheutil -flushcache
而到了 Lion、Mountain Lion 和 Mavericks:
sudo killall -HUP mDNSResponder
C. Android 和 iPhone 手机,开启飞行模式,然后关闭飞行模式
3. 确认你的 GAE ,Shadowsocks 或者 SSH 账号有效!
4. 在 Tow 设置界面点击确认后,耐心等待 1 分钟后再尝试。

转载自其官网说明文档

这种方法在路由器里设置来翻墙还是比较不错的, bwq518的 Tomato 固件(貌似只有8M以上的版本才集成的ToW)支持不少路由器,比如价格低廉的磊科Q3/NI360(69元一个)等路由器,刷此固件可以使用Shadowsocks 和SSH等代理实现智能翻墙,当然极路由的ssh插件设置好翻墙也不错.

https://twitter.com/maox/status/422666166436237312
------------------

TOW 是一个安装在 Tomato/OpenWRT 系统上的软件包,安装之后,可以保证连接在这个路由器上的所有客户端透明翻墙。

当前版本:1.1

功能

TOW 的设计目标是透明化/自动化,理想情况下客户端用户无需关心哪些网站无法访问,可直连网站也不会因为使用二级代理而降低访问速度。
  • 使用 pdnsd 特性防止 DNS 污染
  • 支持 GoAgent, SOCKS5, shadowsocks 和 Obfuscated ssh,WebVPN 等代理服务器
  • 使用 gfwlist 和 ipset 配合 iptables 处理被墙网站,仅对被墙网站使用代理

依赖

  • 一台能安装 Tomato 或者 OpenWRT 的路由器
  • Tomato/OpenWRT 内含的 iptables/dnsmasq 必须编译支持 ipset

安装:(均以 Tomato 为例)

准备好 Putty 和 WinSCP 工具;
如果 Flash 空间足够,启用 JFFS ,格式化后,SSH 登陆路由器:
cd /jffs
mkdir opt
mount -o bind /jffs/opt /opt
下载软件: https://github.com/rampageX/TOW/archive/master.zip,用 WinSCP 上传到路由器 tmp 目录,然后执行:
cd /
tar xvzf /tmp/tow-1.0.tar.gz
如果 Flash 空间不够,请挂载 U 盘并且在 U 盘上创建 opt 目录,步骤可 Google,例如:
mount -o bind /mnt/sda1/opt /opt
cd /
unzip /tmp/*.zip
cp /opt/.autorun /mnt/sda1/   ###注意这一步不要漏掉,自启动脚本必须放在挂载点根目录
请确保 U 盘挂载的分区格式为 ext2/ext3/ext4,optware 不能安装运行在 ntfs 格式上!
pdnsd 内置 114 DNS 服务器解析本地域名,如果对速度不满意,可以修改 /opt/etc/pdnsd.conf 文件第 27 行:
 ip = 114.114.114.114,114.114.115.115; 
改为你本地 ISP 的 DNS 服务器地址。
路由器Web界面设置:
1.高级设置-DHCP/DNS-自定义设置:
conf-dir=/opt/etc/dnsmasq/custom/ 
  1. 系统管理-JFFS-挂载后执行:
mount -o bind /jffs/opt /opt 
如果使用 U 盘,则在:USB and NAS-USB 支持-挂载后运行:
mount -o bind /mnt/sda1/opt /opt 
  1. 系统管理-定时重启/连接-自定义(每12小时):
/opt/etc/init.d/S10dnsmasqc 
重启路由器
再次 SSH 登入路由器,运行:
netstat -lnp
应该可以看到 tcp 有 8099 和 7070 端口在监听;tcp/udp 有 5454 在监听;
运行:
iptables -t nat -nvL
应该看到有 REDSOCKS 或者 SHADOWSOCKS 的 Chian 存在。
给出的软件包默认工作在 ShadowSocks redir + 全子网模式,也就是在路由器子网内所有客户端透明翻墙。
请修改: /opt/etc/py/ga/proxy.ini 填入你自己的 GoAgent 账号。
请修改:/opt/etc/shadowsocks.json/opt/etc/shadowsocks_redir.json文件,填入你自己的服务器地址端口和密码,本地监听端口7070/7272不可改!
请修改: /opt/etc/config/*.fire 文件,填入你自己的 ssh_server 和 ss_server 域名;
请修改: /opt/etc/init.d/S27obssh 文件,填入 SSH 登录信息

流程以及文件解析

自启动以及防火墙

关键目录和文件:/opt/.autorun/opt/etc/config
/opt/.autorun 文件利用了 Tomato Optware 的特点:在任何挂载设备根目录下如果存在 .autorun 结尾的文件,则在挂载此设备后执行该文件。.autorun 文件代码:
if [ -f /var/notice/wan ]; then
   for s in /opt/etc/config/*.wanup; do $s; done
   for s in /opt/etc/config/*.fire; do $s; done
fi
表示在 WAN 上线后,运行 /opt/etc/config 下所有以 wanup 和 fire 为后缀的文件。
*.fire 为防火墙脚本,和 Tomato 图形界面中设置防火墙脚本作用是一样的。这个脚本在 TOW 方案中极为重要,可以仔细阅读一下源代码;
*.wanup 为自启动程序列表,所需的主要程序 shadowsocks,redsocks 等都由这个文件调用启动。

DNS 处理

关键目录和文件: /opt/etc/dnsmasq
…待完成…

程序的启动/停止/重启以及监控

关键目录和文件: /opt/etc/init.d 下 S 开头的文件
…待完成…

程序配置文件

关键目录和文件: /opt/etc 以及 /opt/etc/init.d/S27obssh
…待完成…

手动维护 ipset 的 gfwlist 列表

关键文件: /opt/etc/init.d 下 dmadd, dmdel, dmcheck 三个文件

致谢

贡献代码:
  • autogfwlist 维护的黑名单;
  • lantern 维护的黑名单;
  • n0wa11 维护的白名单;
  • panda 维护的白名单;
  • semigodking 修改的 redsocks2;
  • OpenWRT RA-MOD;
  • fqdns/西厢3的 dns 钓鱼脚本;
from https://github.com/rampageX/TOW