配置OpenWrt的过程就是学习的过程,里面有很多的概念是初学者首次接触的。本文记录了我的学习心得。

硬路由看似有很多网口,但其实只有一张网卡(一个网口),所有的网口都是通过划分VLAN来实现不同的功能。也就是说,其内部就是一个单臂路由器。如下图:

硬路由刷OpenWrt的网络拓扑_硬路由刷OpenWrt后的网拓扑

其中的Switch(交换机)端口的布局依不同的设备而不同。例如上图

硬路由有5个网口。

其中Port 0属于VLAN1,作为WAN口。

Port 1~Port 4属于VLAN 0(默认VLAN),作为LAN口。

再看另一种布局:

硬路由刷OpenWrt的网络拓扑_硬路由刷OpenWrt后的网拓扑_02

VLAN 0是默认VLAN,这意味着如果数据包没有打标签,就被视为VLAN 0的数据包。

打VLAN标签之后,Port5(无此物理接口)与CPU的eth0连接。

如果从某个VLAN的某个端口出去的数据包被打上标记,配置页面会有个“t”,从该口收到的数据包会带着这个标记。如下图:

硬路由刷OpenWrt的网络拓扑_硬路由刷OpenWrt后的网拓扑_03

VLAN10包含LAN2、LAN3、LAN4。如果数据从LAN4出去就打标记,其它端口出去不打标记。LAN ​5通常是CPU或 "内部 "端口,最常见打标记。

带标记的数据包到达某个端口后,会被重定向到数据包中标记VID标识的VLAN去。未标记数据包收到后会定向到默认端口VLAN(通常称为PVID)。要设置默认端口VLAN的话,需要一个单独的switch_port配置。

 801.2q标准文档中描述:VID值0和4095不代表可用VLAN,并且VID 1经常保留给网络管理使用。


虚拟接口:

虚拟网络接口的应用范围非常广泛。最着名的当属“lo”了,基本上每个linux系统都有这个接口。

虚拟网络接口并不真实地从外界接收和发送数据包,而是在系统内部接收和发送数据包,因此虚拟网络接口不需要驱动程序。

 虚拟网络接口和真实存在的网络接口在使用上是一致的。常见的虚拟接口有:

pppoe-wan:他就是常见的拨号宽带上网,需要有ISP提供的用户名密码,连接后方可激此接口!

lo:系统虚拟的环回接口,IP地址是127.0.0.1,利用这个接口可以实现系统内部发送和接收数据。

网络虚拟接口还有eth0:1, eth0.1, vlan2, br0, pppoe-dsl, gre0, sit0 tun0, imq0, teql0等等。它们并不代表真实的硬件设备,而仅仅是“与它们相连接”(否则它们将毫无用处)。虚拟网络接口的发明是为了在配置Linux的操作系统时给系统管理员最大的灵活性。一个虚拟网络接口通常与一个物理网络接口(eth6)或另一个虚拟接口(eth6.9)相关联,抑或是独立的虚拟接口,如环回接口。


虚拟接口的类型:

aliases: eth4:5, eth4:6, ...

IP-aliases 是管理每个接口的多个IP地址/掩码的一种过时的方式。新的工具如iproute2支持每个接口的多个地址/前缀,但为了向后兼容,仍然支持aliases。

VLANs:eth4.0, eth4.1, eth4.3, vlan0, ...

为了将一个二层网络划分为多个虚拟网络而创建VLAN。所有参与的网卡的驱动程序必须支持IEEE 802.1Q,并进行相应配置,该标准可创建多达4096个VLAN。

Stacked VLANs:又被称为IEEE 802.1ad或QinQ。

bridgeds: br0, br-lan

使多个虚拟或物理网络接口像是一个网络接口(与VLAN正好相反)。也可用于VPN和桥接的接口。Linux以太网桥可用于将多个以太网设备连接在一起。这种连接是完全透明的:连接到一个以太网设备的主机可以直接看到连接到其他以太网设备的主机。

br-lan 用于LAN口设备桥接,可以用brctl show查看使用情况。目前路由器普遍将有线LAN口(一般四个)和WIFI无线接口桥接在一起作为统一的LAN。

br-lan = eth0.1 + rai0 + ra0,即将有线LAN口和无线网统一划分为 LAN,便于管理!


tunnel interfaces: pppoe-dsl, pppoa-dsl, tun0, vpn1

用于通过隧道协议发送数据包,如GRE、IPsec PPPoE等。

特殊用途:imq0, teql3

用于改变传出网络数据包的顺序,或传入网络数据包的顺序。

无线操作模式的虚拟接口:wlan0, wlan0_1, ath3, ath_monitor, ...

Linux无线子系统。每个WNIC总是有一个物理网络接口,称为主接口,主接口是不可见的。根据主接口配置的无线操作模式,创建诸如 ad-hoc (IBSS), managed , AP , WDS, mesh point, monitor 这些具有不同属性的无线虚拟网络接口,在默认情况下它们被自动创建。当WNIC驱动程序被加载时,总是会有主接口和至少一个虚拟接口!

两个网络接口也可以被绑定在一起,详情请参见链路聚合通道绑定以及Ubuntu Wiki​。


物理接口:

eth0:一块物理网卡。如上文所言,eth0.1 eth0.2都是其上的VLAN,是虚拟接口。eth是ethernet的缩写,也就是以太网。

此外还有eth0, eth8, radio0, wlan19,这些都是真实存在的网络硬件设备。