软路由和 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 是否配置成功。

神奇的实训

这次就不打算放具体细节和源代码了,因为这部分貌似不需要我们自己做(如果要的话再说)。

所以怎么说好呢……总的来说,实训的前三天,是充实的,是辛苦的,是新鲜的。这三天最主要的事情就是对照老师给的图,自己在 Altium Designer 中将小车的红外探路这部分的原理图和线路板画出来,并且焊接好电子元件,在第三天验收。

继续阅读神奇的实训

关于 Mac mini 外接 USB 3.0 设备干扰蓝牙工作的问题

这两天遇到了一个令人倍感困扰的问题:我的 Mac mini 在外接 USB 3.0 移动硬盘的时候,会极大地影响蓝牙键鼠的工作,严重时甚至会导致蓝牙设备与 Mac 失去连接;直到断开移动硬盘和 Mac 的连接,蓝牙键鼠才能恢复正常工作。

经过各种尝试,最终确定造成干扰的就是移动硬盘,于是向 Apple 售后询问解决的方法。事实上 Apple 方面也没有什么特别好的解决方案,对方工程师回复我说从 2014 年底开始就陆陆续续有类似的反馈,并且给了我以下这篇文章参考:

启用了蓝牙的键盘和鼠标可能无法一直保持配对或连接状态,或者启用了蓝牙的耳机或扬声器中的音频可能会不连贯。如果某些外置 USB 3.0 设备与 Mac 太接近,则会发生此问题。

简言之,由于 USB 3.0 设备在数据传输时会在 2.4GHz 附近频段产生噪音,若干扰源恰好在 Wi-Fi 或蓝牙天线附近,则会对这一频段的无线传输造成干扰。

最简单的解决办法:

  • 使用高品质的外置设备;
  • 使用 USB 2.0 设备暂代;
  • 使用带屏蔽的延长线,将产生干扰的设备放在远离 Mac 的地方。

继续阅读关于 Mac mini 外接 USB 3.0 设备干扰蓝牙工作的问题