我是如何在天津大学上网的

前言

刚刚来到天大的时候, 第一次接触有 IPv6 的网络, 以前就听说过教育网但没接触过. IPv6 是教育网提供的, 而且很多高校都接入了教育网. IPv6 最吸引人的是它的流量免费, 而且上网限制不多. IPv4 流量收费, 开始的计费方式因为一直没用忘记了, 在最近一次调价(降价)后的计费的策略是每月 5G 免费流量, 可以叠加流量包 ¥2/1GB, 感觉挺贵的, 而且计量的方式很不方便.

TJUNET Price

每个月光更新软件估计就有 5G 了吧. 有免费的 IPv6 为什么还要付费买流量. 这篇文章记录一下我来天大后的免费上网策略, 应该也适合其他教育网用户.

需求

需求的程度依次递减

  1. 免费上网
  2. 科学上网
  3. 全平台
  4. 不依赖校内服务器

第一, 免费上网就是就是折腾这些的力量来源, 刚需. 第二, 不能科学上网的网络对我来说就是没网. 第三, 目前在用 iOS / Android / Win / macOS, 全平台是必须的. 第四, 下面的方法有的会依赖一台学校里的服务器, 对于没有条件的当然不是一个好策略.

开工

服务器

基本方法都是将所有流量转换成 IPv6 流量, 所以必须依靠一台同时具有 IPv6 和 IPv4 访问权限的主机. 免费的服务可以使用 Google App Engine, 付费的就是各种 VPS 主机了. 阿里云没 IPv6 而且带宽低, 否掉. 国内主机都可以排除掉, 因为选择了外国主机, 就同时兼备免费上网和科学上网了.

免费的 GoAgent

以前使用过好几年 GoAgent 了, 免费稳定, 怀念至今, 但它不是死掉了么? 那是因为在 IPv4 环境下可用 IP 都被 BAN 掉了, IPv6 环境下只要稍作调整就可以继续使用, 使用 GoAgent 刚好也能解决 Win / macOS 多平台的问题.

GoAgent 中修改本地配置 proxy.ini. gae 中开启 IPv6: ipv6 = 1, 找到 Google 的 v6 地址在 iplist 中的 google_ipv6 填入. 就可以享受快速稳定的免流量网络了.

proxy.ini 中:

[gae]
ipv6 = 1
[iplist]
google_ipv6 = IPv6 地址

对 iOS / Android 移动平台, iOS 好像没 GoAgent 软件, Android 下有软件, 但我的 Android 还不能获取 v6 地址, 暂时没试. 只能曲线救国, 在校内一台电脑上运行 GoAgent, 并通过 Privoxy 开启 HTTP 代理服务器来分发网络, Privoxy 怎样配置, 后面会讲到.

Shadowsocks

Shadowsocks 的混淆能力比较强, 使用的很普及, 用 IPv6 网络上 Shadowsocks 服务器就中转掉所有流量也是个好办法. 搭建 Shadowsocks 服务器可以参见我写的 SS搭建. 需要注意配置文件 shadowsocks.jsonserver 的值应该为 ::, 这样才可以用服务器的 IPv6 地址连接 SS, 网上查的很多配置都没注意 IPv6 环境.

{
    "server": "::",
    "local_address": "127.0.0.1",
    "local_port":1080,
    "port_password":{
         "10001": "pass1",
         "20001": "pass2"
    },
    "timeout":300,
    "method": "chacha20",
    "fast_open": false
}

VPN

使用 IPv6 地址连接 VPN 服务器也是一个好办法, 不过我目前搭建的 VPN 只能在 Win 下使用. iOS / macOS 提示出错, 而使用 v4 地址却能正确连接, 原因不明.

VPN 方法全局流量都走服务器, 所以优缺参半:

优点:

缺点:

VPN 对我来说还挺常用的, 在下载机以外的设备上使用很省心.

本地配置

Win 平台使用 Proxifier 将代理设置为全局

配置 Proxy Servers

Proxy Servers

配置 Proxification Rules

校内的和 IPv6 连接直连, 其余走代理.

Proxification Rules

正常使用应用商店和 Win10 App 还要使用 Fiddler 软件, 效果并不好. 如果不使用 Win10 App, 这种方法在 Win 下很完美了.

使用 Privoxy 搭建代理服务器

如果使用 GoAgent 和 Shadowsocks, 为了方便 iOS / Android 平台的使用, 需要在校内搭建一台代理服务器, 这里搭建的是一个 HTTP 代理服务器, 任何设备都原生支持这种代理方式.

Win 下的 SS 自带了局域网分发网络的功能, 这里使用的是 privoxy, 版本 3.0.23. config.txt 更改如下:

listen-address 0.0.0.0:1234      # 改为自己想要的端口号, 因为服务器不是静态IP, IP 就设置成 0.0.0.0:1234 了, [::]:1234 应该也可以.
forward        / .               # 转发所有通信(/)到所有目标(.)
forward-socks5 / 127.0.0.1:1080  # 转发所有通信到 SS 代理服务器上.

三行搞定, 端口 1234 需要在防火墙中设置为允许.

完成这些步骤, 就可以把 IP 和端口告诉自己的好朋友和妹子们, 通过这个 HTTP 代理就能免费上网了!

iOS / macOS 平台使用 Surge

全局使用代理

iOS 10 支持 IPv6 后, iOS 不需要依赖校内服务器就可以上网了. 需要搭配使用一个 “网络调试” 神器 Surge. 作者又发布了 Surge for Mac, 配置通用, 所以 iOS / macOS 平台下使用 Surge 的方法也通用.

其他高校的 v6 站直连, *6.edu.cn 填到 skip-proxy 中代理处理. 其他规则也很好写.

配置规则

[Rule]
IP-CIDR,202.113.0.0/16,DIRECT     # 校内 IP
DOMAIN-SUFFIX,twt.edu.cn,DIRECT   # 直接访问校内网站
DOMAIN-SUFFIX,tju.edu.cn,DIRECT   # 直接访问校内网站
FINAL,Proxy                       # 所有请求走代理服务器

macOS 命令行使用代理可以用 ProxyChains, 也可以用傻瓜模式的 Proxifier. 配置和 Windows 平台下的 Proxifier 一样.

配置 Proxy Servers

Proxy Servers

配置 Proxification Rules

校内的和 IPv6 连接直连, 其余都走代理.

Proxification Rules

iOS / macOS 平台使用 Surge 进阶

既然使用了 Surge, 一定好好折腾一下, 不然浪费了这么强大的工具.

配置的目标是可以自动切换上网方式, 只要打开 Surge, 任何网络环境都可以上网:

这里以两台 SS 服务器为例.

配置服务器

添加两台服务器的 v4 和 v6 的访问方式:

[Proxy]
server1.ss.v4 = custom,v4_IP,10001,chacha20,pass1,http://surge.pm/ss.module
server1.ss.v6 = custom,v6_IP,10001,chacha20,pass1,http://surge.pm/ss.module
server2.ss.v4 = custom,v4_IP,10001,chacha20,pass1,http://surge.pm/ss.module
server2.ss.v6 = custom,v6_IP,10001,chacha20,pass1,http://surge.pm/ss.module

配置规则

[Rule]
DOMAIN-SUFFIX,t66y.com,Proxy         # 一直走代理的连接
DOMAIN-SUFFIX,ad.sina.com.cn,REJECT  # 拒绝的连接
GEOIP,CN,GEO CN                      # 国内连接
FINAL,Proxy                          # 其余所有连接

正常访问的外国网站也会走代理, 就当加速了…

配置代理服务器组

ss.url-test.v4 为 v4 环境下挑选一个最快服务器, ss.url-test.v6 为 v6 环境下挑选一个最快服务器.

Proxy 代理方式设置为根据 ssid 切换, 默认为 v4 环境, 移动数据网络下 cellular 当然也走 v4, 校园网 tjuwlan 要走 v6 服务器, 还可以设置其他一些特定的 ssid.

GEO CN 代理方式也根据 ssid 切换, 默认 v4 环境直连, v6 环境下走 v6 代理服务器.

[Proxy Group]
ss.url-test.v4 = url-test, server1.ss.v4, server2.ss.v4, url = http://www.google.com/generate_204
ss.url-test.v6 = url-test, server1.ss.v6, server2.ss.v4, url = http://www.google.com/generate_204
Proxy = ssid, default = ss.url-test.v4, cellular = ss.url-test.v4, "tjuwlan" = ss.url-test.v6, "实验室宽带 AP" = ss.url-test.v4
GEO CN = ssid, default = DIRECT, cellular = DIRECT, "tjuwlan" = ss.url-test.v6, "实验室宽带 AP" = DIRECT

Surge 这点最好, iOS / macOS 平台配置完就可以应付各种网络环境.

iOS 支持 IPv6 后, 搭配 Surge 可以独立免费上网. 我的 Android 仍然只有本地链路地址, 暂时无解, 只能依靠一台校内服务器.

目前的解决方案

哈哈, 至今从没买过学校的流量包!