注明:以下內容來自於我對這篇博客的理解 來自於大佬:FromScratch
https://www.cnblogs.com/justart/p/7944256.html
好不容易找到了篇好文章,非常感謝
估計是先入為主的原因導致我還是以思科交換機的方式理解Linux上的vlan(雖然我之前玩的是銳捷的設備)
我的測試環境是兩台電腦
GE60 (Kali) 使用KVM虛擬兩台虛擬機(archlinux)
GE62 (archlinux)使用KVM虛擬兩台虛擬機(archlinux)
網絡管理軟件都用的NetworkManager和iptables
一台5口非網管二層交換機(貌似還不支持自動翻轉,害得我又重新做交叉線去了,網線越來越短了。。。)
以一台電腦為例(因為兩台電腦配置過程一樣,額 可能起名不一樣 無所謂啦)
首先我有個物理網卡,接口名eth0
我要把它當二層交換機用 我自己的電腦也要上網的啊 那么就虛擬個網卡然后接到上面
1、new一個虛擬網卡(網橋)
nmcli con add type bridge con-name br0 ifname br0
2、new一個以太網接口做交換機用,並把剛new的虛擬網卡綁上去,這里的接口用物理網卡的接口eth0
nmcli con add type bridge-slave con-name switcher ifname eth0 master br0
我的交換機接的路由器,這個交換機貌似不支持自動翻轉,用直通線我eth0也能獲到路由器分到的IP,而且因為這倆mac地址一樣
獲取到的IP也是一樣的 於是 不能上網了 換了交叉線就好了(貌似把ipv4.method設置成disabled就可以了。。。)
我要吐槽:電信光貓給的網線就是垃圾(聯通你也是)插上之后連接速度居然10M/s 本以為是水晶頭有問題 鉸開一看簡直就是三類線 顏色我都分不清 而且根本不纏繞 橙白綠白棕白藍白都一個色 我淘寶買倆網卡讓店家給我送根線 店家還給我送個超五的線 那線粗的 要是長些雙股做秋千都沒問題
其實這里虛擬機就可以通過br0直接連到路由器那里了 不過這里沒有划分vlan 所以繼續
按照NetworkManager的操作順序 其實也是先划lan然后再划v
3、new倆個虛擬網卡(網橋)給虛擬機用(我覺得這是倆vlan交換機)
參照他的博客是用的vconfig和brctl創建的網橋和vlan,然后我重啟之后都木有了。。。
於是按照brctl的創建結果用NetworkManager創建 這樣就能存下來了
nmcli con add type bridge con-name brvlan10 ifname brvlan10 ipv4.method disabled ipv6.method link-local
nmcli con add type bridge con-name brvlan20 ifname brvlan20 ipv4.method disabled ipv6.method link-local
我也不知道為啥ipv6要搞成這個 brctl的創建結果就是這 我也就這么寫了
4、new一個vlan並划給剛創建的虛擬網卡用 vlan10 和 vlan20
con-name咋寫都行;dev我選的是我的物理網卡;id后面跟vlan-id;master后面跟綁在哪個網卡上;
nmcli con add type vlan con-name eth0.10 dev eth0 id 10 master brvlan10
nmcli con add type vlan con-name eth0.20 dev eth0 id 20 master brvlan20
弄完之后就會出現倆個新設備eth0.10 eth0.20 然后我想起了路由器的虛擬接口和單臂路由
感覺這兩步就相當於
int f0/0.1
encapsulation dot1Q 10
這個感覺 總想往上配ip啊 還想no shut一下 emmm...
5、看看都啟動了沒有
nmcli con show
NetworkManager最大的好處就是通過顏色可以看到當前連接的活動狀態
綠色表示連接已建立
黃色表示正在獲取地址
白色表示連接已斷開
之前沒設置ipv4.method為disabled 於是連接黃了一會就白了 根本up不起來
這里只用看四個 brvlan10 brvlan20 eth0.10 eth0.20 其他的不用管。。。
額 我還是說一下把
docker0和docker_gwbridge是安裝docker的時候它自己創建的 前者是容器上網用的 后者是docker集群用的 我沒有集群 但也懶得管
switcher是虛擬交換機,就是把網卡當交換機用了,電腦上網就用虛擬出來的br0,ip要配在br0上
vroute0和vroute1是我虛擬出來的倆網卡,給虛擬機用,前者是nat出去,后者是本機網絡
不用kvm創建網絡是因為它會改我的防火牆策略,每次開機都要恢復一次(弄得現在養成習慣了,開機先恢復防火牆策略)
vnet0和vnet1是虛擬機的接口
另一台電腦也是相同的配置
一共四台虛擬機
GE60上 arch70(brvlan10:192.168.0.2) arch71(brvlan20:192.168.0.3)
GE62上 arch66(brvlan10:192.168.0.4) arch67(brvlan20:192.168.0.5)
這個網絡沒有網關
實驗結果
arch70和arch66是互通的
arch71和arch67是互通的
arch70和arch71不通
arch66和arch67不通
如果設置了防火牆要注意把brvlan10和brvlan20放通
這是iptables的配置
注意是filter表 nat表不用管 額 nat表里面貌似沒有forward鏈。。。
-A FORWARD -i brvlan10 -j ACCEPT
-A FORWARD -o brvlan10 -j ACCEPT
-A FORWARD -i brvlan20 -j ACCEPT
-A FORWARD -o brvlan20 -j ACCEPT
KVM開虛擬機貌似就是把網卡加到網橋里了
brctl addif brvlan10 vnet0
brctl addif brvlan20 vnet1
這個感覺就像
int f0/1
switchport access vlan 10