Ubuntu

如何為 LXC 訪客配置外部 IP 地址?

  • January 15, 2020

我正在探索 Ubuntu 12.04 中的 LXC 功能,我真的很想建立一個這樣的網路:

client1:   192.168.56.101/24
lxc-host:  192.168.56.102/24
guest1     192.168.56.201/24
guest2     192.168.56.202/24
guest3     192.166.56.203/24

我只想要一個“平面”網路,客人可以完全訪問 LAN,並且可以從客戶端看到。我習慣於使用 libvirt/KVM 橋接網路,如下所述:http: //libvirt.org/formatdomain.html#elementsNICSBridge

在主機上:

# /etc/network/interfaces
auto br0
iface br0 inet static
   address 192.168.56.102
   netmask 255.255.255.0
   broadcast 192.168.56.255
   bridge_ports eth1

第一位客人的 lxc.conf:

# /var/lib/lxc/guest1/config:
lxc.network.type=veth
lxc.network.link=br0
lxc.network.flags=up
lxc.network.hwaddr=00:16:3e:13:48:4e
lxc.network.ipv4=192.168.56.201/24

看起來 192.168.56.201 對外界來說是不可見的,這不是我想要的。似乎我必須做以下事情之一:

1)在host和guest上手動設置路由

2)做點小事……提前在主機上創建虛擬介面,並配置來賓使用它們lxc.network.type=phys。我不知道這是否真的有效。

我專注於 Ubuntu,但 RHEL/Fedora 的答案也會很有用……

這是非常正確的——儘管你缺少這樣的一行:

lxc.network.ipv4.gateway = X.X.X.X

我有一個在 Debian 上執行的 LXC 來賓。首先,您在以下位置設置主機橋(簡單的方法)/etc/network/interfaces

auto wan
iface wan inet static
       address 72.X.X.X
       netmask 255.255.255.0
       gateway 72.X.X.1
       bridge_ports wan_phy    # this line is important.
       bridge_stp off
       bridge_fd 2
       bridge_maxwait 20

在您的情況下,您已經呼叫了它br0,而我已經呼叫了它wan。這座橋可以叫任何你想要的名字。你首先讓它工作——如果它失敗了,用(例如,)進行調查brctl

然後您的 LXC 配置設置為加入該網橋:

lxc.utsname = FOO
lxc.network.type = veth
lxc.network.link = wan                  # remember, this is what I call my bridge
lxc.network.flags = up
lxc.network.name = v-wan                # optional, I believe
lxc.network.ipv4 = 72.X.X.Y/24          # different IP than the host
lxc.network.ipv4.gateway = 72.X.X.1     # same as on the host

正如 HoverHell 所指出的,在容器中擁有 root 權限的人可以更改 IP 地址。是的。它是一個網橋(又名乙太網交換機)。如果你想防止這種情況發生,你可以在主機上使用防火牆規則——至少在我的情況下,數據包需要通過主機的 iptables。

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