Ubuntu
如何為 LXC 訪客配置外部 IP 地址?
我正在探索 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。