IPVLAN (Internet Protocol Virtual Local Area Network) 和 Macvlan 類似,都是從一個 Host 接口虛擬出多個虛擬網卡接口。一個重要的區別就是,Ipvlan 所有的虛擬接口都擁有相同的 Mac 地址,並且不同的 IP 地址。
因為所有虛擬接口都要共用 Mac 地址,因此有些需要注意的地方:
Ipvlan 有兩種不同的模式,分別是 L2(Layer 2, 資料連結層) 和 L3(Layer 3, 網路層),一個父接口只能選擇一種模式,所有父接口之下的子接口都使用這個模式,不能混用模式。
Ipvlan L2 模式和 Macvlan bridge 模式工作方式很相似,父接口作為交換器來轉發子接口的數據。同一個網路的子接口可以通過父接口來轉發數據,而如果想發送到其他網路,封包則會通過父接口的路由轉發出去。
L3 模式下 Ipvlan 類似路由器的功能,他在各個虛擬網路和主機網路之間進行不同網路封包的路由轉發工作。只要父接口相同,即使 VM 或 Container 不在同一個網路,也可以互相通訊,因為 ipvlan 會在中間做封包轉發工作。
L3 模式下的虛擬接口不會接收到廣播的封包,所有網路的封包都會發給父接口,所有的 ARP (Address Resolution Protocol, 位址解析協定)都是在父接口完成的。外部網路預設情況下是不知道 Ipvlan 虛擬出來的網路,如果不在外部路由器上設定好對應的路由規則,Ipvlan 的網路是不能被外部直接訪問的。
Ipvlan 和 Macvlan 兩個虛擬網路模型提供的功能看起來相似,那什麼情況下需要使用 Ipvlan 模式?
Macvlan 的問題: