額外的網橋介面會自動添加
我在
eth0
and之間建立了一個網橋br0
,該網橋工作正常,但有時,由於未知的原因和情況,我不斷將這些 vethXXXXXX 介面添加到網橋中。發生這種情況時,我的 LXC 實例無法與 Internet 通信。當我跑步時
brctl delif br0 vethNbUtXk && brctl delif br0 vethYqTf0F
,一切都好起來了。知道這些奇怪的界面是從哪裡來的嗎?
root@ubuntuserver:/var/lib/lxc# brctl show bridge name bridge id STP enabled interfaces br0 8000.080027ca5f7a no eth0 vethNbUtXk vethYqTf0F lxcbr0 8000.000000000000 no virbr0 8000.000000000000 yes
創建這些奇怪的 vethXXXXXX 適配器之一時的 ifconfig 範例
vethPBkvAC Link encap:Ethernet HWaddr fe:14:5c:cb:62:d6 inet6 addr: fe80::fc14:5cff:fecb:62d6/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3194 errors:0 dropped:0 overruns:0 frame:0 TX packets:3214 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:309019 (309.0 KB) TX bytes:311213 (311.2 KB)
這可能會有所啟發:虛擬乙太網設備。可能會給你這樣的東西:
/var/lib/lxc/
確定你在with下沒有一些配置lxc.network.type = veth
?grep -r 'veth' /var/lib/lxc/
對於未來的讀者,我給我的一些同事寫了這封電子郵件,他們正在與我一起配置 LXC 並找出橋接。
好吧,我今天大部分時間都花在 LXC 的網路上,現在事情變得清晰了很多,所以我想我會傳遞我學到的東西。
首先是一些定義,所以我們知道我們在看什麼(我並沒有真正理解像 br0 或 virbr0 這樣的橋和像 eth0 這樣的介面之間的區別,而且我絕對不知道這些介面
vethILNaLo
的用途是什麼)。橋
網橋在 ifconfig 中顯示為介面,但網橋除了連接 2 個其他網路之外什麼都不做,它本身不是網路介面。您可以使用 來查看和更改網橋
brctl show
,並在 /etc/networking/interfaces 中永久配置它們。橋最好被認為是一個開關。
我們看到的橋樑範例:
- br0
- lxcbr0
- 病毒0
網路介面
介面實際上分配給單個主機,單個介面不能分配給多個主機。主機向介面發送和接收網路流量。它選擇的介面取決於路由表,
route
會向您顯示這一點。我們需要橋接的原因是 eth0 物理連接到主機作業系統,也不能連接到容器或其他虛擬機。
我們看到的物理介面範例:
- eth0
- vethILNaLo
關於第二個的一些註釋:vethILNaLo
- 這是為每個啟動的 LXC 容器創建的物理介面,它附加到容器並在容器內部顯示為 eth0
- 每次您
lxc.network.type=veth
在 LXC 配置文件中定義時,它都會創建另一個這些物理介面並將其附加到容器中,您可以使用lxc.network.name = eth0
設置容器內部介面的名稱(通常使用預設的 eth0、eth1 等)- 創建此介面時,它沒有連接任何東西,就像根本沒有插入一樣
使用網橋將 vethILNaLo 連接到網路
請記住,網橋就像基於軟體的交換機。如果您將兩個介面插入其中,它們的連接方式與交換機連接物理電腦的方式相同。
在
/etc/network/interfaces
我們定義和創建 br0 時,我們基本上定義了一個開關。在同一個文件中,我們還將 eth0 連接到我們的“交換機”br0:iface br0 inet static bridge_ports eth0
在 LXC 配置文件中,我們將容器物理介面連接到同一個開關:
lxc.network.type=veth lxc.network.link=br0
/etc/network/interfaces
在電腦啟動時設置(這是有道理的,主機 eth0 介面應始終連接到我們的“交換機”),LXC 負責為我們的 LXC 容器創建物理埠並將其插入名為 br0 的“交換機” (網橋和交換機之間的區別非常小,因此出於此目的,可以將它們視為相同,交換機僅比網橋智能一點)。lxcbr0 和 virbr0 是什麼?
lxcbr0 和 virbr0 都是由 LXC 自動添加的,它們都是相同的(virbr0 是為向後兼容而保留的舊版本,lxcbr0 是較新的,但它們的作用完全相同)。這兩個網橋(又名“交換機”)還提供 NAT/路由功能。因此,如果您將虛擬機連接到這些網橋,就像將其連接到路由器一樣。
由於我們不需要另一個路由器(我們所有的 LXC 容器在網路上都有自己的 IP),我已經從建構文件中的主機作業系統中刪除了這兩個未使用的網橋