XX-Net 简介

XX-Net 继承于 Goagent,实用之处在于它集成了自动扫描与检测可用的 GGC(Google Global Cache) IP 段功能,让基于 GAE 的翻墙方案得以长期稳定的坚持下去。项目主页:https://github.com/XX-net/XX-Net

XX-Net的安全性

先下结论:XX-Net 不能用于匿名,但可以保证数据传输的安全。

下面详述:

  1. 由于免费 GAE 应用无法使用 socket 接口,基于 GAE 的翻墙代理都要导入根证书,从而在本地完成对 https 流量的劫持、解密与转发,XX-Net 也不例外。由于 XX-Net 在首次启动时是在本地随机生成自签发证书的,只要这个唯一的本地证书不泄露,就不存在证书被盗用,进而遭受中间人攻击的风险。所以,如果有分享自用的 XX-Net 软件包给朋友使用的需求,请记得删除data/gae_proxy目录下的CA.crt根证书和certs目录。
  2. XX-Net 本地客户端到 GAE 服务器的连接,默认检查扫描到 Goolge IP 的 https 证书,这是防蜜罐节点和墙的中间人攻击。所以,客户端到 GAE 服务器的连接是安全可靠的。
  3. GAE 服务器到目标网站的连接,默认没用开启对 https 证书的检查,因为墙无法干扰到。为了加强安全性,可以手动开启:
    定位到 XX-Net 所在目录下的
    gae_proxy/local/gae_handler.py
    文件,搜索
    kwargs['validate'] = 0
    将值改为= 1即可。
    测试:开启服务端证书验证后,通过 XX-Net 代理访问
    https://goagent-cert-test.bamsoftware.com/
    返回报错信息:
    SSLCertificateError('Invalid and/or missing SSL certificate for URL: https://goagent-cert-test.bamsoftware.com/',), should validate=0 ?
    这样一来,GAE服务器到目标网站的连接也可以确保安全。
  4. 关于匿名与隐私的问题,参见项目说明文档:
    https://github.com/XX-net/XX-Net/wiki/Anonymity-and-Security
    总之,如果传输、浏览特别敏感的信息,请使用 Tor,并学习如何匿名。而普通用户,只需要部署自己的 appid,且 appid 命名不要与现有网名相关,这就足够了。

扫描高速 GGC IP 段

XX-Net 保证其高可用性的核心技术就是扫描 GGC IP 段并维护动态的可用IP连接池。所以,指定的待扫描 GGC IP 段的质量就决定了 GAE 代理访问的速度。于是,问题的关键在于:如何发现高速稳定的 GGC IP 段。

  • 工具:checkiptools,项目主页:https://github.com/xyuanmu/checkiptools

  • 过程:

    1. 找寻目标国家,最好是与中国的国际出口线路有海底光缆直连的。比如台湾,日本,韩国,马来西亚。具体可以参考这个网站:http://www.submarinecablemap.com/
    2. 在 checkiptools 目录下,获取目标国家的全部 IPv4 地址段:
    1
    wget -O- 'https://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | grep ipv4 | grep KR | awk -F\| '{ printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > googleip.txt

    这个例子中,grep KR用到了韩国的 ISO 标准国家代码KR,所有的 ISO 标准国家代码参见 Wiki:https://zh.wikipedia.org/wiki/ISO_3166-1

    1. 开始扫描。Windows 下,直接双击运行checkip.bat,扫描目标国家的所有IP段,确认其是否为 GGC 服务器。扫描超时参数可以通过修改python/checkip.py文件里
    1
    2
    g_conntimeout = 5
    g_handshaketimeout = 7

    的值来自定义,单位为s,其他参数可参考代码注释自行调整。

    1. 提取有效IP段。Windows下直接双击运行!ptools.bat,按照提示操作,选 2:提取 ip_tmpok.txt 中有效IP的IP段, 并生成 ip_output.txt,并设定延迟过滤阈值,如400ms
    2. 将生成的 ip_output.txt 文件内容复制并在 XX-Net 的 Web 设置页面提交。待 XX-Net 扫描一段时间后,访问 Youtube 测速。如果确实高速稳定,则保留这些 GGC IP 段。
  • PS:如果手头有 VPS 的,可以在 VPS 上开个300线程暴力扫描,再将得到的 GGC IP 段在本地网络用 checkiptools 检查一遍,得到靠谱的高速 GGC IP 段。