关于路由
路由(routing)就是通过互联的网络把信息从源地址传输到目的地址的活动。路由发生在OSI网络参考模型中的第三层即网路层。
上面是维基百科中的定义,在我的理解中,路由就是一个分配网络的中间站。之前我一直以为路由是一种单独的设备,后来才发现路由也相当于一台“计算机”,只不过大部分路由配置也就只能用来分发网络罢了(也就是说,一般的电脑都可以用来改造成路由器)。既然是一台“小巧的计算机”,那么我就可以装系统,装软件了吧?的确如此,只不过由于路由器的配置相对较低,因此和自己用的电脑还是有区别的。
我也只是前天才开始接触路由器,因为装了校园网,想用Wifi。根据朋友推荐,我买了联想的Newifi Y1S这款路由器,一开始玩什么都不懂,于是才有了这几篇折腾了几天的博客。这是系列的第一篇,也是我一开始搞的东西,使用校园网Wifi。
[2019.9.11](距离写这篇文章已经过去快两年了,时间真是无情??)Openwrt 的可玩性非常高,还可以现学现用《计算机网络》,感兴趣的同学可以深入学习下,比如 Openwrt 的工作原理,启动加载顺序,UCI,模块编写,包编写这些,可以最大程度地提升学习体验。
刷入 Breed
Breed是一个路由器用的Bootloader(Bootloader 意思为引导加载器,即为用于加载操作系统的程序。它是一大类此类功能程序的统称。现在的 BIOS、UEFI、GRUB、RedBoot、U-Boot、CFE等都是 Bootloader),如果玩过安卓的大概就知道这是什么了,装它的目的是为了下一步刷入固件(ROM)。刷入Breed的步骤如下:
[2019.9.11] Breed 的网站好像打不开了,大家可以去论坛找找安装包
-
在下载Breed下载对应路由器的Breed,比如我的Y1S,就下载如图所示的:

-
因为路由器原生的bootloader没有DHCP服务,没法通过浏览器直接访问,因此需要到控制面板->网络连接里面,设置网卡IP为192.168.1.3,子网掩码默认,如图所示:

- 然后把路由的LAN口和电脑用网线接起来,按住路由的RESET键,然后插上电源,当你看到usb和wifi信号灯不停闪烁时,就可以放开RESET键了。这时打开浏览器,输入192.168.1.1,一切正常的话你会看到如下界面:

- 选择刚刚下载的 Breed,点击恢复后,等路由重启完成后拔掉电源。至此 Breed 就安装完成了。
刷入Lede Openwrt 18.06.4
LEDE(Linux Embedded Development Environment,Linux嵌入式开发环境)项目是一个基于OpenWrt的Linux操作系统。是由OpenWrt原核心成员开发的。安装方法如下:
LEDE 和 Openwrt 又合并了。。。这大概就是所谓的分久必合?Openwrt 18.06.4 是目前最新的版本,其中 Linux 内核版本是 4.14.131,如果路由器不支持的话可以看看其他版本。
- 在 下载Openwrt 这里,根据自己路由器 CPU 芯片系列找对应文件里的安装文件。我的 Y1S 在 ramips/mt7620 下面:
[2019.9.11] 关于如何寻找自己的固件,一般如果是 TP-LINK 的路由器,基本都在 ar71xx 下面,然后其中的大部分又在 tiny 下面,如果是联发科的芯片,那就是 ramips/mt7620 或者 ramips/mt7621 了。固件一般有两个版本 factory 或者 sysupgrade,前者适合第一次刷入 Openwrt 的时候用,后者属于在 Openwrt 的基础上刷机的时候用。

[2019.9.11] 然后在下载列表的最下面,有两个特别好用的东西 imageBuilder 和 SDK,使用 imageBuilder 可以很方便地定制自己的专属固件,提前把自己路由器的配置、需要安装的软件都放进去编译成固件,除了非常方便,而且把要用的软件直接编译到固件里面能节省很多闪存空间;SDK的话,则是用来交叉编译需要用到的软件包(即 ipk),比如下文提到的“gdut-drcom”软件包,如果自己的路由器的软件架构不是 mipsel_24kc,则没法用使用我提供的 ipk 安装包,那么便需要自己编译,编译的具体方法下面再说。(BTW,在路由器中输入 opkg print-architecture 就可以看到自己路由器的应用架构了)

- 上面刷入 Breed 的时候更改了网卡的IP,现在改回自动获取。接着同样的操作,按住 RESET,连接电源,等电源指示灯开始以橙/蓝闪烁时,松开 RESET,进浏览器,输入
192.168.1.1,这时就进入了 Breed,在左栏选择 固件更新,在右边选择刚刚下载的 Openwrt 固件:

- 安装完成后会自动重启,这时可以不断刷新浏览器,直到 Openwrt 的管理界面显示出来。
安装 gdut-drcom
经过上一步安装完 Openwrt 后,就可以通过 192.168.1.1 访问管理界面,在里面安装好 gdut-drcom 就可以连接校园网了,步骤如下:
-
先下载 gdut-drcom 1.6.8-3 软件包,提取码: p4w9
-
接着下载 WinSCP 用来上传文件到路由器上,提取码: cdjb
-
打开 WinSCP,然后如图所示输入(此处的密码是在网页登录 Openwrt 后设置的登录密码):

- 连接上之后把下载好的 gdut-drcom 拖放到右边,为了方便重命名为 drcom.ipk,接着打开右上角的终端窗口,如图所示,输入
opkg install drcom.ipk,等待命令执行结束后,关闭所有窗口即可。

- 把校园网网线接到 WAN 口上,接着到 Openwrt 的管理界面,在网络下找到刚安装的客户端,然后进入,按图所示配置,最后保存/应用,刷新之后就可以无忧无虑地用 WIFI 上网啦

[2019.9.11] 图中的接口名称填写自己路由 WAN 口的接口,可以在如图所示的地方找到:

编译 gdut-drcom
[2019.9.11] 首先感谢 chenhaowen01 师兄编写的心跳包验证程序,上面链接给出的是我自己汉化并编译的版本,软件架构是 mipsel_24kc,其他架构需要自己编译,具体编译方法如下:
- 首先准备一个 Linux 系统,建议在 VMware 安装一个虚拟机,Mac 用户可以无视,直接用终端就行了
- 安装好编译需要用到的依赖,以我 Debian 为例:
sudo apt install build-essential libncurses5-dev gawk git libssl-dev gettext zlib1g-dev swig unzip time - 然后把上面提到的,对应自己路由器 CPU 架构的
sdk下载好并解压

- 下载 gdut-drcom-for-openwrt,提取码: kq73
- 解压后的 gdut-drcom 文件,复制到 SDK 的
package目录下面

- 打开终端输入
make package/gdut-drcom/compile V=s,在弹出的配置界面的Network中把 gdut-drcom 勾选上

- 等编译完成后即可在
bin文件夹下面找到生成的 ipk 文件
防用户代理检测
[2019.9.11] 去年差不多这个时候,学校机房更新了一个检测机制,一旦同一个端口连接的数量超过了 2 台,网络就会断开,10 分钟后恢复,导致同学们叫苦不迭。好在经过大家的一番探索之后,发现该检测机制实际上是检测流量数据包的用户代理(User-Agent)信息来判断是否超过两台设备,UA 中包含了操作系统版本等信息,而 HTTP 协议没有对这些信息加密,因此别人可以从这里看到这个数据包发自电脑还是安卓/苹果手机,因此便有了现在的解决方案:修改本地所有设备的 HTTP 数据包的 UA,使之统一为一条,这样服务器就检测不出来了。具体操作方法如下:
- 首先在路由器中安装 privoxy:在“系统->软件包”界面,先点击刷新列表,刷新完成后在“下载并安装软件包”那里输入
luci-app-privoxy然后点击确认进行安装,安装完成后刷新页面,即可在“服务”下面看到装好的 privoxy(需要中文的,再安装luci-i18n-privoxy-zh-cn即可) - 进入 privoxy,按图所示进行配置:



* 配置好并保存后,在浏览器中输入:http://config.privoxy.org/edit-actions-list?f=0,如果打不开,请重启路由器多测试几次。然后点击 Edit 按钮。在Action 那一列中,hide-user-agent 改选为 Enable,在右侧 User Agent string to send 框中填写以下内容:
(Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36,然后点击 Submit 提交即可


- 最后还需要修改一下防火墙规则:在“网络->防火墙->Custom Rules”下面填入如下所示的内容,然后点击“重启防火墙”即可
iptables -t nat -N http_ua_drop
iptables -t nat -I PREROUTING -p tcp --dport 80 -j http_ua_drop
iptables -t nat -A http_ua_drop -d 0.0.0.0/8 -j RETURN
iptables -t nat -A http_ua_drop -d 127.0.0.0/8 -j RETURN
iptables -t nat -A http_ua_drop -d 192.168.0.0/16 -j RETURN
iptables -t nat -A http_ua_drop -p tcp -j REDIRECT --to-port 8118
接下来还有两点注意事项:
-
由于 UA 都被统一了,会导致手机部分应用出现问题,现已知的比如移动端的 Bilibili,解决方法如下:
在最后一条防火墙规则的前面添加一句:iptables -t nat -A http_ua_drop -s 你的手机的IP地址 -j RETURN,至于如何查看自己手机的 IP 地址,可以在“状态->总览->已分配的 DHCP 租约”里面找到 -
由于来自本地网络的所有 HTTP 流量都转发到了 privoxy,久而久之网络会变得很卡(大概是软件的缓存?),重启路由器即可解决,为了方便可以添加一个计划任务,在“系统->计划任务”里面填写
40 4 * * * reboot后提交即可,这句命令的意思是每天凌晨 4:40 重启路由器
所有东西都搞定之后重启路由器,就大功告成了
本文记录了一位作者初次接触路由器并配置校园网Wi-Fi的过程,包括刷入Breed和Lede Openwrt 18.06.4,安装gdut-drcom客户端以连接校园网,以及如何防止用户代理检测导致的网络断开问题。通过编译自定义固件和使用privoxy修改UA,实现了多设备共享校园网稳定上网。

4911

被折叠的 条评论
为什么被折叠?



