翻译

本文另有 英文版本。

最近新买了一台网件的 WNDR4300 路由器,平时用电脑时通过路由器 NAT 上网,但是有时候又会碰到需要直连校园网的情况(例如需要暴露端口的时候,没搞懂端口转发的那个配置界面怎么用),如果每次都从路由器上把网线拔下来就显得太麻烦了。

OpenWRT的VLAN

遇到路由器和电脑同时连接校园网的情况,一般会使用一个交换机,把路由器和电脑都插在交换机上,再把交换机连到墙上的网线插口即可,可惜我并不想再买一个交换机,否则供电用的插孔就不够了。

看了看 OpenWRT 的设置页面,网络菜单下面有一个交换机页面,看样子是可以把路由器当交换机用的。从网上搜了一下相关的介绍,大致知道了这个路由器的内部结构,实际上路由器内除了 CPU 本身之外还有一个交换机芯片,路由器本身只有一个网口,而路由器外面的 1 个 WAN 口和 4 个 LAN 口都是和交换机芯片连在一起的,路由器内部的线路将 CPU 和交换机连在一起。

从交换机页面可以看到每个 VLAN 和每个接口的交点都有一个下拉菜单,可以选择“关联”、“不关联”和“关”。“关联”和“不关联”都表示将这个接口接入到这个 VLAN,只有“关”是不接入这个 VLAN。“关联”和“不关联”区别在于是否在发送的帧中加入 VLAN 的 id。

安装了 OpenWRT 之后,交换机已经被分成了 2 个 VLAN:eth0.1 和 eth0.2,这两个 VLAN 正好对应了路由器的 WAN 和 LAN 两个网络。eth0.1 就对应 VLAN1 这一行,它和端口 1-4 均为不关联,端口 5 和 6 是关,所以这个 VLAN 是路由器的 4 个 LAN 口,而 VLAN2 只有端口 5 是不关联,这个就是路由器的 WAN 口。

这两个 VLAN 的第一列还有一个 CPU,均设为关联,这个就是之前说到的交换机芯片到 CPU 之间的线路。这里设为关联是因为交换机芯片到 CPU 之间只有 1 条线路,如果不在帧中加入 VLAN id 的话,CPU 就分辨不出这是来自哪个网络的帧,造成混乱。

修改VLAN同时连校网

随便从端口 1-4 中选一个,把原有的 VLAN1 改成关,VLAN2 设成不关联,这样这个接口就和 WAN 口处于同一台交换机了。值得注意的是这里的端口 1-4 和路由器后面 4 个口顺序正好是相反的。这个页面里还有一个端口 6,然而我并没有找到这个口对应哪里……

OpenWRT 交换机 VLAN 设置

这些设置也说明了其实路由器的 WAN 口和 LAN 口除了颜色并没有什么区别,只是交换机 VLAN 的划分不同。把墙上的网线插到 WAN 口或者刚改的那个口,另一个口和电脑连在一起,这时电脑就相当于直接接入墙上的插口了。

后续

后来发现自己还是 naive 了,由于三本采用的 L2TP 上网居然只允许一个账号只有一个 IP 在线,电脑一连上 L2TP 路由器转眼就掉了……所以并不能实现同时上网(