Пробую сейчас в тестовом режиме использовать несколько виртуалок на базе Linux Containers. На хост-машине есть бридж br0 и все виртулаки с интернет-адресами через этот бридж работают нормально. Сейчас свободные IP-адреса заканчиваются, а нужно запустить еще много виртуалок, поэтому возникает естественное желание - запустить часть за NAT'ом с праватными адресами (в основном для менеджмента через SSH).
Но с NAT'ом что совсем не выходит. Самое ужасное мало доков и я досих пор плохо представляю как это сделать, куда вешать dhcp и как он будет работать с существующем бриджем я тоже не очень понимаю.
LXC управляется руками и через утилиты lxc-* (т.е. без libvirt). Пример рабочего конфига c прямым адресом:
lxc.utsname = virtname
lxc.tty = 1
lxc.pts = 1024
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.hwaddr = 00:16:3e:2e:df:ce
lxc.network.ipv4 = 1.2.3.4
lxc.network.name = eth0
lxc.cgroup.cpuset.cpus = 0,1
lxc.cgroup.cpu.shares = 1234
lxc.cgroup.devices.deny = a # Deny all access to devices
lxc.cgroup.devices.allow = c 1:3 rwm # dev/null
lxc.cgroup.devices.allow = c 1:5 rwm # dev/zero
lxc.cgroup.devices.allow = c 1:9 rwm # dev/urandom
lxc.cgroup.devices.allow = c 1:8 rwm # dev/random
lxc.cgroup.devices.allow = c 5:1 rwm # dev/console
lxc.cgroup.devices.allow = c 5:0 rwm # dev/tty
lxc.cgroup.devices.allow = c 4:0 rwm # dev/tty0
lxc.cgroup.devices.allow = c 136:* rwm # dev/pts/*
lxc.cgroup.devices.allow = c 5:2 rwm # dev/pts/ptmx
lxc.mount = /var/lib/lxc/virtname/fstab
lxc.rootfs = /var/lib/lxc/virtname/rootfs
Вывод ifconfig на хосте:
br0 Link encap:Ethernet HWaddr 00:30:48:c3:79:98
inet addr:4.3.2.1 Bcast:4.3.2.255 Mask:255.255.240.0
inet6 addr: fe80::230:48ff:fec3:7998/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:337085 errors:0 dropped:0 overruns:0 frame:0
TX packets:3334 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:16243749 (15.4 MiB) TX bytes:1550946 (1.4 MiB)
eth0 Link encap:Ethernet HWaddr 00:30:48:c3:79:98
inet6 addr: fe80::230:48ff:fec3:7998/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:349644 errors:0 dropped:0 overruns:0 frame:0
TX packets:3850 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:22178941 (21.1 MiB) TX bytes:1641595 (1.5 MiB)
Memory:da020000-da040000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:3 errors:0 dropped:0 overruns:0 frame:0
TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:270 (270.0 B) TX bytes:270 (270.0 B)
veth1ZuetI Link encap:Ethernet HWaddr 66:5d:a1:f5:6d:22
inet6 addr: fe80::645d:a1ff:fef5:6d22/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:141 errors:0 dropped:0 overruns:0 frame:0
TX packets:96066 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:21743 (21.2 KiB) TX bytes:4711271 (4.4 MiB)
На хосте стоит дистрибутив Debian, ядро из тестинга 2.6.32-3-amd64, тулсет тоже из тестинга. В качестве окружения для виртуальных машин используются темплейты от OpenVZ (а точнее Ubuntu Server 9.10, debian-minimal).