1. 程式人生 > 實用技巧 >單網絡卡 openwrt 路由模擬

單網絡卡 openwrt 路由模擬

關鍵字

vlan openwrt 單臂路由

一直以來都認為路由要至少是雙網絡卡,因為至少要有lan/wan。最近看了單臂路由的介紹,自己在虛擬機器測試了一把。發現確實可行!

測試環境

Manjaro Linux 主機
qemu openwrt 虛擬機器環境(openwrt 韌體可以在官方下載)

host 主機配置

這裡因為是模擬,所以在宿主機上要做一些配置。 實際使用的單臂路由,這路由的網絡卡介面下一定是一個支援vlan的交換機,只需要配置交換機即可。
這裡僅給出本次測試的host修改,單臂路由的交換機配置原理一樣。

網橋配置

因為虛擬機器選擇的是NAT 網路,所以需要做如下配置

➜  ip link add link vnet1 name vnet1_11 type vlan id 11
➜  ip link add link vnet1 name vnet1_10 type vlan id 10
➜  brctl delif virbr0 vnet1
➜  brctl addif virbr0 vnet1_11
➜  brctl show                 
bridge name	bridge id		STP enabled	interfaces
docker0		8000.0242f80d773e	no		
virbr0		8000.5254008e3f49	yes		virbr0-nic
							vnet0
							vnet1_11
➜  ip link set dev vnet1_11 up
➜  ip link set dev vnet1_10 up

這裡操作原理是: 因為即將配置的路由器wan 口是vlan 11,所以這裡需要建立vlan 子介面支援vlanid 11。
vlan 10 的子網絡卡,這裡假裝是路由下的裝置。

openwrt 配置

參考連結:
下面擷取修改的部分: /etc/config/network, 新增部分很容易理解,沒加註釋。

config interface 'lan'
#     option type 'bridge'
      option ifname 'vlan10'
      option proto 'static'
      option ipaddr '192.168.10.1'
      option netmask '255.255.255.0'

config interface 'wan'
      option ifname 'vlan11'
      option proto 'dhcp'

config device
      option type '8021q'
      option ifname 'eth0'
      option via '10'
      option name 'vlan10'

config device
      option type '8021q'
      option ifname 'eth0'
      option via '11'
      option name 'vlan11'

修改完重啟network,使修改生效service network restart

測試

在wan 口做dhcp

wireshark抓取dhcp 時候網絡卡報文

抓包目的是解釋為什麼要在host 建立vlan 子網絡卡。如上圖,在vnet1 上openwrt wan 口發來的報文是包含vlan tag的,而qemu 虛擬網橋是不認識vlan 報文的,經過子網絡卡後會剝離掉vlan 頭,將二層轉為乙太網報文。只有這樣openwrt wan 的dhcp 報文才能到qemu 網橋,整個dhcp 過程才會成功。
這時候可以嘗試ping 對端都是ok的。

ping:host->openwrt

ping:openwrt->host

在lan側做dhcp


lan側ok