Ubuntu

額外的網橋介面會自動添加

  • December 31, 2016

我在eth0and之間建立了一個網橋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),我已經從建構文件中的主機作業系統中刪除了這兩個未使用的網橋

引用自:https://unix.stackexchange.com/questions/70399