Saya sedang menjelajahi fitur LXC di Ubuntu 12.04 dan saya benar-benar ingin menyiapkan jaringan seperti ini:
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
Saya hanya ingin jaringan "datar" di mana para tamu memiliki akses penuh ke LAN dan terlihat dari klien. Saya terbiasa menjembatani jaringan dengan libvirt/KVM, seperti yang dijelaskan di sini:http://libvirt.org/formatdomain.html#elementsNICSBridge
Di host:
# /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 untuk tamu pertama:
# /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
Sepertinya 192.168.56.201 tidak terlihat oleh dunia luar, bukan itu yang saya inginkan. Sepertinya saya harus melakukan salah satu dari ini:
1) Secara manual mengatur perutean pada host dan tamu
2) Lakukan sesuatu tipuan… buat antarmuka virtual pada host sebelumnya, dan konfigurasikan para tamu untuk menggunakannya lxc.network.type=phys
. Saya tidak tahu apakah itu akan berhasil.
Saya fokus pada Ubuntu, tetapi jawaban untuk RHEL/Fedora juga akan berguna….
Jawaban yang Diterima:
Ini cukup benar—meskipun Anda melewatkan baris seperti ini:
lxc.network.ipv4.gateway = X.X.X.X
Saya memiliki tamu LXC yang berjalan di Debian. Pertama, Anda menyiapkan jembatan host (cara mudah), di /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
Dalam kasus Anda, Anda menyebutnya br0
, dan saya menyebutnya wan
. Jembatan dapat disebut apa pun yang Anda inginkan. Anda membuat ini berfungsi terlebih dahulu—jika gagal, selidiki dengan (mis.,) brctl
Kemudian konfigurasi LXC Anda diatur untuk bergabung dengan jembatan itu:
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
Seperti yang dicatat HoverHell, seseorang dengan root di wadah dapat mengubah alamat IP. Ya. Ini adalah jembatan (alias sakelar Ethernet). Jika Anda ingin mencegahnya, Anda dapat menggunakan aturan firewall di host—setidaknya dalam kasus saya, paket harus melalui iptables host.