LXC konteyneri için Genel IP Adresi


26

Tamam, LXC konteynerlerinde nasıl ağ kurulacağını bilmek istiyorum. Diğer web sitelerinden aldığınız belirsiz bilgilerin değil, aynı zamanda onları çalıştırma konusunda gerçek bir başlangıç ​​kılavuzumuz değildir. Çoğu örnek temelde insanların test yapması için kurulduğundan, bir konuda bir hizmet çalıştırmak istiyorum ... örneğin web sunucusu.

Ubuntu 12.04 LTS kullanıyorum ve LXC yüklü. Bir konteyner yapabilir, başlatabilir ve durdurabilirim. Sunucumun açık bir IP adresi var ve açık bir IP alabilmesi için bir konteynerin nasıl kurulacağını bilmek istiyorum. Mevcut konteynerimden bir köprü var gibi gözüktüğü için, konteynerlere çalışmaları için halka açık bir DHCP aralığı vermem veya elle konteynerime statik bir IP adresi atamam gerekecek gibi görünüyor.

Konteynere statik olarak bir IP atamak istersem, bunu nasıl yaparım? Ana bilgisayardaki köprü yapılandırmamda herhangi bir değişiklik yapmam gerekir mi? MACVLAN seçeneğiyle yapmak gerçekten daha mı iyi?

Herhangi bir yardım takdir edilecektir.


LXC'ye aşina değilim, ancak tipik olarak isp'niz yalnızca size bir genel IP adresi verecek. Birden fazla statik ips içeren bir paketiniz var mı?
wlraider70

Genel kullanım IP'leri tek kullanım durumu değildir, yük dengeleyici konteynerlerimize 2 genel IP atanmasını istiyoruz, ancak çeşitli diğer hizmetlere adanmış özel LAN IP'leri istiyoruz. Bu şekilde, eğer kapları farklı bir donanım üzerinde hareket ettirirsek, IP'yi taşımak kadar kolaydır (DNS, kullandığımız bileşenlerin bazıları için bu konuda çalışmaz)
David Parks

Yanıtlar:


23

Yaklaşımım, sunucunuzun tek bir NIC'ye sahip olduğunu ve bu NIC'yi ana bilgisayar ve LXC misafirleri arasında paylaşmanız gerektiğini varsayar. Bu bir köprü kullanmayı gerektirir. Köprü sahibi ve yönetir eth0. Ana bilgisayar şimdi br0yerine kendi ağını yapılandırıyor eth0. LXC misafirleri köprüye bağlanmak için yapılandırılmıştır.

  1. Ana bilgisayarda sudo apt-get install bridge-utils.

  2. Ana bilgisayarda, eth0bir köprü ile değiştirin :

    Bu tehlikeli. Bunu yanlış anlayınca, sunucunuz kilitlenebilir. Yerel bir oturum açmayı etkinleştirdiğinizden ve yerel konsol erişiminin çalıştığından emin olun, böylece herhangi bir sorun yaşarsanız bu değişikliği geri alabilirsiniz.

    İçinde /etc/network/interfaces:

    1. Değiştir auto eth0ile auto br0.
    2. Değiştir:

      iface eth0 inet dhcp
      

      ile:

      iface br0 inet dhcp
          bridge_ports eth0
      

      Statik bir ağ yapılandırmanız olsaydı, değiştirirsiniz:

      iface eth0 inet static
          address ...
          netmask ...
          gateway ...
          etc.
      

      ile:

      iface br0 inet static
          bridge_ports eth0
          address ...
          netmask ...
          gateway ...
          etc.
      

      Sadece değiştirirken eth0için br0ve ekleme bridge_ports eth0satırı.

    3. Ana bilgisayarı yeniden başlatın. Bunu yerel olarak yapıyorsanız, sudo ifdown eth0başlamadan önce koşmak ve sudo ifup br0sonra da yapmak gerekir. Köprünün ortaya çıkması biraz zaman alabilir, bu yüzden her şeyin kaybolduğunu varsaymadan önce yeniden başlattıktan beş dakika sonra verin.

  3. Verilen bir LXC kabını ortak bir IP’ye taşımak için:

    1. Kabı durdur.
    2. Ev sahibi, düzenleme üzerinde ve değişim için ./var/lib/lxc/container_name/configlxc.network.linkbr0
    3. Ana bilgisayarda, genel IP'nizi normalde olduğu gibi düzenleyin ve yapılandırın (gerektiği gibi DHCP veya statik bir yapılandırma). Arayüzün hala kabın bakış açısından çağrıldığını unutmayın ./var/lib/lxc/container_name/rootfs/etc/network/interfaceseth0
    4. Kabı yeniden başlatın.
  4. Yeni LXC kapları, düzenleme için varsayılan değiştirmek için /etc/lxc/default.confkonak ve değişime lxc.network.linkkarşı br0.

  5. Eğer hiç LXC sağlanan NAT köprü gerekmiyorsa sonra konak düzenlemeyle ilgili, (yani. Bütün Kaysayıcılar yeni köprü yerine kullanacak) /etc/default/lxcve değişim USE_LXC_BRIDGEiçin "false"konak kaçak ardından ve sudo service lxc restart.


Teşekkürler! Etrafta bir sürü benzer soru var. Ancak, bu cevap nihayet işleri yürütmeme yardımcı oldu.
Mausy5043

1

Robie, bu cevabı gönderdiğin için çok teşekkür ederim, saçımı dışarı çıkmaya çalışıyorum ve bu işe yarayan tek yöntem oldu!

Diğer yöneticilerin talimatlarını açıklığa kavuşturmak için çözmem gereken birkaç şeyden bahsetmem gerektiğini düşündüm.

Ev sahibimin misafir üzerinde eth0 'a atanmış birden fazla statik ip takma adı vardı, örneğin:

iface eth0:1 inet static
  address 5.5.5.5
  netmask 255.255.255.5
  gateway 5.5.5.1
etc.

Şimdi br0'ı aynı şekilde ayarlamak istemiyoruz, sadece yukarıda belirtilen Robie gibi takma adları olmayan bir IP istiyoruz.

Öyleyse diyelim ki 5.5.5.5 konteyner debian8'e atanmalıdır.

Düzenle /var/lib/lxc/debian8/etc/network/interfacesve ekle:

iface eth0 inet static 
      address 5.5.5.5
      netmask 255.255.255.5
      gateway 5.5.5.1
    etc.

Ardından bu komutu verin: route add default gw <gateway-ip, in my case 5.5.5.1>

Bundan sonra, kabı yeniden başlatın ve her şey sonunda işe yaramalı! :)


1

Aynı problemi yaşadım ve bu çözüme sahibim (hızlı ve kirli).

server: eth0 = 10.1.0.77/24
server: lxdbr0 (lxd bridge) = 10.255.255.77/24

container: eth0 = 10.255.255.100/24 (same network as lxdbr0)
container: eth0:0 = 194.99.99.99/28  (public ip address on eth0 alias)

Sunucuda: route add -host 194.99.99.99 gw 10.255.255.100 dev lxdbr0

Ayrıca, gerekirse akış yukarı yönlendiricilere rota ekleyin.

Muhtemelen, en iyi çözüm değil ama büyük çaba gerektirmez! Şerefe.

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.