路由器连接教育网 IPv6 有问题?用 SSH 隧道苟一苟!

前几篇关于在教育网下使用路由器上网并支持 IPv6 的文章介绍了多种经路由器连接校园网的方法。由于 OpenWRT 软硬件平台的碎片化问题比较严重,往往没有一种较为通用的解决方案。对于 IPv6 来说,最常遇到的问题就是,路由器上可以访问所有 IPv6 资源,但在客户端上,往往只能获得 IPv6 地址却不能访问 IPv6 资源,甚至有时连 IPv6 地址都无法获得。主要原因还是 OpenWRT 原生对 IPv6 的支持还不够完善,暂时还做不到对 IPv6 网络的“开箱即用”。

那么,既然路由器可以访问 IPv6 资源,就表示我们可以用 SSH 建立隧道到路由器,进而访问 IPv6 资源。

在 Linux/macOS 系统下很简单,在终端中输入以下命令:

ssh -D 2333 [email protected]
# 2333、root 和 192.168.1.1 分别为代理端口、路由器管理账号和地址
# 请根据实际情况修改

输入账号密码后不要关闭终端,将网络代理类型设置为 SOCKS5,地址为 127.0.0.1,端口设置为 2333 或自己更改的值,即可。

然后,你就可以访问 IPv6 资源了。

在 Windows 下稍微麻烦一点,需要使用 PuTTY,但也不是很难,具体操作方法自行搜索一下就有。

软路由和 OpenWRT x64 2

首先是关于校园网认证的问题。一开始是想使用 sysuh3c 来进行拨号认证上网的,但是由于路由器的架构是 x64 所以原来的 ar71xx 的包不能直接用,得要自己重新交叉编译一个包。需要注意的是 OpenWRT 的工具链编译出来的包并不能在 LEDE 上直接跑,一定要用 LEDE 自己的工具链才行。本以为编译出来就万事大吉了,但是后来发现程序在一个关键的地方和工具链有不兼容的情况……看了一个星期也不知道该怎么解决,期间也联系过作者 zonyitoo,最后虽然是成功编译出来了但是并不能正常工作,遂放弃。

后来想想,反正这路由器性能这么好,用 Python 又怎样呢,于是就用了 yah3c,两分钟搞定。哦,那就这样吧。

至于 IPv6,目前还是个玄学问题。解决方案有很多种,我基本上都尝试过,但都不完美,容易断流。只要设置好了路由器的 wan6,那么路由器就可以连接上 IPv6 网络了,与后面的设置无关。局域网下的设备在大多数情况下可以获得 IPv6 地址,但是无法连接上 IPv6 网络。到现在为止使用了两种解决方案,其一是自带的 IPv6 相关服务,包括多种不同的配置方案;其二是使用 NDP,同样用了多种不同的配置方案。有少数几种可以使局域网设备短暂连接到 IPv6 网络,但都不能长期稳定使用。所以还是没有找到一个可以长期稳定使用的解决方法。

值得一提的是,利用固件内置的 Aria2 可以将路由器当做下载机,又因为路由器可以稳定连接 IPv6 网络,所以可以到一些 IPv6-only 的 PT 网站下载资源,下载速度可以达到物理极限。

软路由和 OpenWRT x64

寒假期间买了一款工控机,想要将它作为以后学校宿舍使用的主路由器,彻底解决一年多来性能、功能的各项短板。在淘宝上找了很久,最终只找到了现在使用的这款,既有 4 个千兆网口,又有 USB 3.0。各位留心一下也可以找到,裸机(不包括内存、硬盘、无线硬件)价格 700 多元。

之后自己为其添加了内存、mSATA 接口的 SSD 和 mini PCIe 接口的无线网卡。根据现有的使用体验,为软路由添加无线网络支持的意义不是很大。

硬件方面的优势是显而易见的。因为使用的是台式机的架构,所以如果你愿意,甚至可以给它安装桌面级的操作系统。那么由于是作为软路由使用,自然是安装 OpenWRT 最为方便使用。

我安装的是 KoolShare 发布的改进版 LEDE。 LEDE 是一个 OpenWRT 的分支版本。KoolShare 发布的这个版本包含了许多有用的插件,比如广告过滤、各种流量监控管控软件、文件分享、下载器和特殊插件等。安装好后只需要做少量配置即可开始使用。由于此固件基于 OpenWRT,而且是 x86-64 架构,所以大多数 OpenWRT 的插件可以直接拿来用,甚至某些 Linux 应用也可以不另外编译而直接在上面运行。

总之,性能强劲,扩展性好,居家旅行、杀人越货必备。一些具体的设置,比如交叉编译、认证上网、IPv6 等,以后再写文章。

OpenWRT 和校园网 IPv6

前不久中山大学东校区更换了 iNode 客户端的验证方式,部分宿舍的验证方式从异或校验变成了 MD5 校验。sysuh3c 的作者——听说是个已经毕业有些年的大牛校友——没几天就更新了,还有一位在校生大佬也贡献了代码。简直业界良心,膜拜之。

——2016年11月26日


这个学期开始由 SYSU 珠海校区搬迁到了广州大学城校区,上网验证的客户端也从原先的锐捷变成了 iNode(H3C)。原先所使用的锐捷客户端难以在无线路由器上实现拨号,只有淘宝上卖的基于水星洋垃圾的某 link 可以拨号,但是性能低下。于是就用 Mac mini 作为锐捷猫使用,性能虽然还不错,但对 IPv6 的支持很不好,一些局域网应用在这种网络结构下有时候表现不佳。

幸好 H3C 有多种基于 OpenWRT 的第三方拨号插件,比如 YaH3COH3Csysuh3c 等,其中前两者用 Python 实现,后者用 C/C++ 实现。实测前两者在较新版本的 OpenWRT 中稳定性不佳,因此最后采用的是 sysuh3c 来进行拨号认证。采用的路由器是网件 WNDR4300,固件版本是明月新春版,基于 OpenWRT Chaos Calmer 15.05.1 r49208。

首先前往 sysuh3c 的 OpenWRT branch,下载最新的 ar71xx ipk 文件,并 SCP 至路由器的 /root 目录。使用包管理器安装:

opkg install ar71xx.ipk

安装完毕就可以使用以下命令运行(SSH 或 WebShell):

sysuh3c -u NetID -p password -d

用自己的 NetID 和密码替换上面的参数即可。还可将上述命令添加进开机启动项(系统—启动项—本地启动脚本)。

然后配置校园网下的 IPv6。

vi /etc/config/dhcp

修改对应的配置项为:

config dhcp 'lan' 
    option interface 'lan' 
    option start '100' 
    option limit '150' 
    option leasetime '12h' 
    option ra 'hybrid' 
    option dhcpv6 'hybrid' 
    option ndp 'hybrid' 
    option ra_management '1' 

config dhcp 'wan6' 
    option interface 'wan' 
    option dhcpv6 'hybrid' 
    option ra 'hybrid' 
    option ndp 'hybrid' 
    option master '1'

保存后重启路由器,应能看到路由器 lan 口获得了与 wan、wan6 相同的 IPv6 地址,电脑等设备也获得了正确的以 2001 开头的 IPv6 地址。此时应该可以通过 IPv6 上网了。

如果在网络状态中显示 IPv4 有 Internet 访问权限而 IPv6 没有,请尝试手动重启 odhcpd 服务(系统—启动项)。

这里可以测试 IPv6 是否配置成功。