运行OpenWrt系统的单网口设备,例如某些电视盒子,开发板,小主机,可以通过用交换机划分vlan的方式划出两个虚拟局域网,再分别设置成WAN和LAN,就可以当做主路由了。硬路由内部也是这个原理,硬路由的CPU只有一个网卡,连接在交换机芯片上,通过设置vlan隔离广播域即可区分WAN和LAN。
设置交换机
选择一台能划分vlan的交换机,这里使用缩水星 SG105 Pro为例。
先设置交换机的ip地址,推荐设置为路由器LAN网段下的一个ip。这一步是可选的。
然后要在交换机上设置两个vlan。此交换机为5口交换机,1口划分到WAN里,345口划分到LAN里,2口作为trunk口连接软路由。
vlan划分
直接来到vlan设置下的802.1Q vlan设置,在vlan使能选项上,点击启用,再点击应用。
此时系统会创建一个默认的vlan,不用管它。
先创建一个LAN口的vlan,vlan id为10。untagged端口选345,tagged端口选2,非成员端口选1。填好之后点添加/编辑。
再创建一个WAN口的vlan,vlan id为11。untagged端口选1,tagged端口选2,非成员端口选345。设置完成后应该是这样的:
设置PVID
打开802.1Q PVID设置,将端口1的PVID设为11,将端口345的PVID设为10。当没有加vlan标签的数据帧进入端口时,交换机会给数据帧打上对应的vlan id。
配置完成后,点击配置保存。此时,交换机已经配置好了,放在一边就行。
设置软路由
准备一台运行OpenWrt的软路由,以下用斐讯N1演示。
电脑连接交换机的3口,软路由连接交换机的4口,手动设置电脑网卡ip,确保电脑网卡ip与软路由的ip在同一ip段内且不重复。
系统安装完成,初次开机后,系统会自动添加一个LAN接口。如果有第二张网卡,系统就会添加一个WAN口,显然,这里是没有第二张网卡的。
点击网络LAN的修改键,转到物理设置。
如果不使用WiFi,可以取消勾选桥接接口,可以降低那么一点点CPU负载。
在接口选项上,取消勾选以太网适配器eth0,这里的eth0是机器上物理网卡的名称。选上自定义接口,输入eth0.10,代表使用eth0网卡上的vlan 10。
配置完成后点击保存。不要点击保存&应用,否则路由器的网络会发生改变,导致与路由器失联。
LAN口的配置就到这里,接下来要新建WAN接口和WAN6接口,其中WAN6接口是可选的,不使用IPv6就不用创建了。
在接口页面,点击新建接口。接口名称填WAN,接口的协议按自己的需要选择。拨号上网的选PPPoE,其余情况可以选DHCP。接口选择自定义接口,eth0.11。
点击提交,会转到接口的配置页面,点击防火墙设置,区域选择wan。然后点击保存,不要点保存&应用。
创建WAN6接口,这一步是可选的。在接口页面新建一个接口,物理接口和WAN接口一样,协议选择DHCPv6客户端。
配置防火墙,选择wan区域。配置好后点保存。
回到接口页面,配置完成应该是这样的:
点击网页下面的保存&应用,应用所有配置。这时将软路由直接连接交换机的2口,即可获取ip地址。
root@PhicommN1:~# ifconfig
br-lan Link encap:Ethernet HWaddr FC:7C:02:87:78:C3
inet addr:10.0.11.1 Bcast:10.0.11.255 Mask:255.255.255.0
inet6 addr: 2xxx:xxxx:xxxx::1/62 Scope:Global
inet6 addr: fe80::fe7c:2ff:fe87:78c3/64 Scope:Link
inet6 addr: fdf5:4538:ce3d::1/60 Scope:Global
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:129441 errors:0 dropped:0 overruns:0 frame:0
TX packets:202647 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:64613947 (61.6 MiB) TX bytes:220551227 (210.3 MiB)
docker0 Link encap:Ethernet HWaddr 02:42:35:48:B9:C1
inet addr:172.17.0.1 Bcast:172.17.255.255 Mask:255.255.0.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
eth0 Link encap:Ethernet HWaddr FC:7C:02:87:78:C3
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:341128 errors:0 dropped:1 overruns:0 frame:0
TX packets:339438 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:305424645 (291.2 MiB) TX bytes:288211120 (274.8 MiB)
Interrupt:20
eth0.10 Link encap:Ethernet HWaddr FC:7C:02:87:78:C3
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:124375 errors:0 dropped:5 overruns:0 frame:0
TX packets:197307 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:64100865 (61.1 MiB) TX bytes:218673875 (208.5 MiB)
eth0.11 Link encap:Ethernet HWaddr FC:7C:02:87:78:C3
inet addr:10.0.1.199 Bcast:10.0.1.255 Mask:255.255.255.0
inet6 addr: 2xxx:xxxx:xxxx:xxxx:fe7c:2ff:fe87:78c3/64 Scope:Global
inet6 addr: 2xxx:xxxx:xxxx:xxxx::a2e/128 Scope:Global
inet6 addr: fe80::fe7c:2ff:fe87:78c3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:183209 errors:0 dropped:5 overruns:0 frame:0
TX packets:136708 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:233183849 (222.3 MiB) TX bytes:66323279 (63.2 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:439 errors:0 dropped:0 overruns:0 frame:0
TX packets:439 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:31221 (30.4 KiB) TX bytes:31221 (30.4 KiB)
wlan0 Link encap:Ethernet HWaddr 02:E0:AE:75:92:8A
inet6 addr: fe80::e0:aeff:fe75:928a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:5013 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:2025478 (1.9 MiB)