LINUX.ORG.RU
ФорумAdmin

[LXC] Как запустить Linux Сontainers через NAT

 


0

0

Пробую сейчас в тестовом режиме использовать несколько виртуалок на базе 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).

★★★

>LXC управляется руками и через утилиты lxc-* (т.е. без libvirt)

Почему?

nnz ★★★★
()

ну в br0 у вас воткнут eth0, следовательно сюда не повесить dhcpd, тем более что у вас там сеть другая же...
далаете еще один бридж, вешаете на него эти виртуалки и dhcpd...
ну и натите как вам угодно...

r0mik
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.