LXC misafirleri için harici IP adresleri nasıl yapılandırılır?


18

Ben Ubuntu 12.04 LXC özelliklerini keşfetmek ve gerçekten böyle bir ağ kurmak istiyorum:

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

Sadece misafirlerin LAN'a tam erişime sahip olduğu ve istemcilerden görülebileceği bir "düz" ağ istiyorum. Burada açıklandığı gibi libvirt / KVM ile ağ oluşturmaya alışkınım: http://libvirt.org/formatdomain.html#elementsNICSBridge

Ana bilgisayarda:

# /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

İlk misafir için 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

Görünüşe göre 192.168.56.201 dış dünya için görünmez, bu benim istediğim şey değil. Görünüşe göre bunlardan birini yapmak zorundayım:

1) Toplantı sahibi ve misafir için manuel olarak yönlendirme ayarlama

2) Bir şey hokey yapın ... önceden ana bilgisayarda sanal arayüzler oluşturun ve misafirleri bunları kullanacak şekilde yapılandırın lxc.network.type=phys. Bunun gerçekten işe yarayıp yaramayacağını bilmiyorum.

Ubuntu'ya odaklandım, ancak RHEL / Fedora için cevaplar da faydalı olacaktır ....


1
Takip: br0'yi karışık moda ayarladım ve şimdi istediğimi yapıyor gibi görünüyor. Sanırım bu standart bir uygulamadır, ancak okuduğum birçok LXC öğreticisinin hiçbirinde yer almıyordu. Herhangi bir geri bildirim almam durumunda bu soruyu bir süre açık bırakacağım ...
twblamer

Yaklaşık olarak aynısını yaptım (biraz daha manuel kurulum hariç): köprüye (ana bilgisayarda) veth eklemek için her lxc yapılandırmasında netup komut dosyası, her kapta manuel IP kurulumu, ayarlamak için her kapta ek komut dosyası / arabirim up yönlendirme (ana bilgisayarda ip4 iletimi ile). Ancak, gördüğüm kadarıyla, her iki çözüm de konteynerin hemen hemen her şeye kendi IP adresini ayarlayabileceği anlamına geliyor (ve ayrıca ana bilgisayarın bir arayüzüne bir köprüye eklenmesi biraz rahatsız edici). Bu yüzden bazı geri bildirimler / çözümlerle de ilgileniyorum.
HoverHell

Yanıtlar:


13

Bu hemen hemen doğrudur, ancak böyle bir çizgiyi kaçırsanız da:

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

Debian üzerinde çalışan bir LXC konuk var. İlk olarak, ana köprüyü (kolay yol) ayarladınız /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

Sizin durumunuzda, onu aradınız br0ve ben de aradım wan. Köprü istediğiniz herhangi bir şey olarak adlandırılabilir. Önce bu çalışmayı elde edersiniz - başarısız olursa araştırın (ör.)brctl

Ardından LXC yapılandırmanız bu köprüye katılmak üzere ayarlanır:

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'in belirttiği gibi, kökte kapsayıcı olan biri IP adresini değiştirebilir. Evet. Bu bir köprü (diğer bir deyişle Ethernet anahtarı). Bunu önlemek istiyorsanız, ana bilgisayarda güvenlik duvarı kurallarını kullanabilirsiniz - en azından benim durumumda, paketlerin ana bilgisayarın iptables üzerinden geçmesi gerekir.


10
Herkese teşekkürler. Biraz üzücü, ama ben sadece geri döndüm, bunu google aracılığıyla buldum ve orijinal asker olduğumu unuttum ...
twblamer

2
@derobert: bunun o zaman mevcut olduğundan emin değilim, ama autoaynı zamanda lxc.network.ipv4.gatewayveth-arayüzünün bağlandığı köprünün IP'si için geçerli bir değer ve benim görüşüme göre varsayılan.
0xC0000022L

Köprü arayüzü kendi IP adresini gerektiriyor mu? Eğer wan_phyinternet baktığından o Birazdan, benim LXC misafir yapılandırmak edeceği diğer kamu IPv4 adresleri ile aynı alt olmak zorunda, çünkü o zaman köprü IP henüz başka bir geçerli kamu IPv4 adresi olması gerekir? Ama bu oldukça savurgan görünüyor. askubuntu.com/a/884293/394569 bir köprü adresi yapılandırmanın kesinlikle gerekli olmadığını önermektedir.
josch

@josch Bu örnekte, wan_phy'nin bir IP'si yok, bunun yerine köprüde. "Ana bilgisayar" harici bir IP olmasını istemiyorsanız, yine de, bir IP ihtiyacı şüpheli.
derobert

6

LXC'ye tam olarak giremedim,

ama bazı web sitelerim için internet hizmetleri sağlayan lan kendi statik ip ile birden fazla kapsayıcılar kurulum var ...

Belki bu sizin için ne istediğinize yardımcı olabilir.

Birden fazla konteyner çalıştırıyorum,

HOST MACHINE I Her Konteynır ve Ana Makineyi Ekleyerek Ana Makinenin Dosyasını Düzenledim: vi / etc / hosts

lxc host machine:   192.168.1.100
container1:   192.168.1.101
container2:     192.168.1.102
container3:   192.168.56.102
container4:   192.166.56.103

kaydettikten sonra ...

Yine, ana makinede ağı ve köprüyü şu şekilde ayarlıyorum:

# /etc/network/interfaces
auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0
        **address** 192.168.1.100
        netmask 255.255.255.0
        **network 192.168.1.1**
        **broadcast** 192.168.1.100
        gateway 192.168.1.1
        dns-nameservers 8.8.8.8 8.8.4.4

ağın üstünde benim yönlendirici ip, lan için. (dahili) adres ve yayın , daha sonra internet erişimi, web sunucuları, ftp vb.Için bir VHOST kullandığım ana makine, dahili ip.

LXC KONTEYNERLER 1-4 İÇİN BEN AYARLI YAPILANDIRIR:

LXC 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.1.101**

şimdi Konteyner 1 IP = 192.168.1.101

i orada kendi statik ip var ek kaplar için tekrarlayın ..

konteyner 1-4'te,

ana bilgisayardan giriş yapın:

lxc-console -n CONTAINERNAME,

& her konteyner ağını statik, eth0 olarak ayarladım:

auto eth0
iface eth0 inet static
        address 192.168.1.101
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.1.101
        gateway 192.168.1.1
        dns-nameservers 8.8.8.8 8.8.4.4

HER KONTEYNER KENDİ IP, (yerel) LAN'DA MEVCUTTUR. U PUTTY KULLANARINI TEST ETMEK İÇİN BİREYSEL YEREL IP HERKES YAPABİLİRSİNİZ!

Bundan sonra im oldukça u konteyner ip / yük dengeleyiciler / proxy / vb için vhost sonra, internet üzerinden onları çalıştırmak için nasıl anlamanız gerekir.

Belki bu kurulum yine de yardımcı olabilir.


LXC kapsayıcı yapılandırmasında IP ve ağ geçidi vb. Yapılandırırsanız, kapsayıcı içinde bunu tekrarlamanız gerekmez. Bunun yerine ifacestanza manual(değil staticveya dhcp) olarak ayarlayın. up, down, dns-nameserversVb hala vb Debian'daki kullanılabilir
0xC0000022L

1

Henüz LXC ile oynamadım, ancak bu makale size yardımcı olmalı: Ethernet köprüleri kullanarak ağ yapılandırması (Yöntem 2'yi kontrol edin).

Yapılandırma hakkında bazı ipuçları vermek için (br0'nin doğru şekilde yapılandırıldığını varsayalım):

  1. Kullanarak bir çift veth cihazı oluşturmanız gerekir ip link add type veth
  2. Önceki komut 2 sanal arabirim oluşturdu: veth0 ve veth1
  3. Şimdi veth0 sanal arabirimini köprüye ekleyin: brctl addif br0 veth0
  4. lxc kabuğunuza şunu yazın: ns_exec -nm -- /bin/bash
  5. Şimdi diğer sanal eğer lxc kabuğunun ağ ad alanına ayarlamalıyız: ip link set veth1 netns PID_OF_LXC_SHELL
  6. Şimdi lxc kabuğundaki veth1'i istediğiniz IP adresine (örneğin 192.168.56.201) yapılandırarak ayarlamanız gerekir.

Bunu hiç test etmedin mi? Muhtemelen ödülü alacaksın, ama cevabın bana hiç yardımcı olmuyor ve OP ile tam olarak aynı kuruluma sahibim.
Jonas G. Drange

Size nasıl daha fazla yardımcı olabilirim? Cevabımda hiçbir işe yaramayan bir adım var mıydı yoksa bunları yaptınız mı ve sorunu çözmedi mi? Hayır, cevabımda söylediğim gibi, LXC benim yapılacak şeyler listemde, ama henüz gerçek testlere başlamadım.
Huygens
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.