Statik IP'li köprülü LXC kapsayıcıları ayarlama


15

Her biri kendi genel statik IP ile bir ana bilgisayarda birden çok LXC kapsayıcılar kurmaya çalışıyorum.

Ev sahibim en son Ubuntu'yu çalıştırıyor. Eth0 adında tek bir ağ arabirimine sahiptir. Statik IP'ler internetten pinglenebilir ve eth0: 210, eth0: 211 olarak adlandırılır ... İki nokta üst üste işaretinden sonraki sayılar adreslerin en az önemli baytlarıdır. Bu arabirimlere ek olarak, ana bilgisayarın genel IP'sinde br0 kurulumu var. Ayrıca lo, veth2LPP9A ve lxcbr0 arayüzleri de vardır. Lxcbr0 özel bir IP adresine sahiptir.

Ana bilgisayar / etc / network / arabirimleri şöyle görünür:

auto br0
iface br0 inet static
        bridge_ports eth0
        bridge_fd 0
        [...]

Şimdiye kadar eth0'i barındırmak için Bridging LXC konteynırları da dahil olmak üzere çeşitli çevrimiçi kaynaklar kullandım, böylece bunu ayarlamama yardımcı olacak genel bir IP'ye sahip olabilirler .

Kabın yapılandırma dosyasında şunlar bulunur:

lxc.network.type = veth
lxc.network.link = br0

Sorunlara neden olduğundan statik lxc.network.ipv4 yapılandırmasını bu dosyadan kaldırdım. Bu yapılandırmayla lxc-ls --fancy'yi çalıştırdığımda, çıkışta aynı ortak IP'yi iki kez görecektim. Ayrıca, kabın / etc / network / arabirimlerinin alt ağ yapılandırmasıyla uğraşacaktır.

Kabın arayüzler dosyasından bahsetmişken, biraz şuna benziyor:

auto eth0
iface eth0 inet static
        address [...]
        netmask 255.255.255.255
        #gateway [...]
        dns-nameservers 8.8.8.8

        post-up route add [...] dev eth0
        post-up route add default gw [...]
        post-down route del [...] dev eth0
        post-down route del default gw [...]

Ben ağ geçidi yorum ve bu dosyaya yol ekleme komutları eklemek zorunda kaldı. Aksi takdirde, kabın açılması birkaç dakika sürebilir.

Ana bilgisayardaki / proc / sys / net / bridge / bridge-nf- * dosyalarının tümü 0 olarak ayarlanır. / Proc / sys / net / ipv4 / ip_forward değeri 1'dir.

Sorun, kapsayıcı "route -n" olması gerektiği gibi görünse de, ben konteyner dışarı ping olamaz. SSKutucunun IP'sinin ne olması gerektiğine beni ev sahibine bağlar.

EDIT: Kapsayıcı statik IP ana bilgisayardan kaldırmak yardımcı oldu, ama şimdi yeni bir hata alıyorum. Kapsayıcıyı ana bilgisayardan pinglemeye çalışmanız Yeni nexthop'un Yönlendir HostFrom'u ile sonuçlanır. Paketler tekrar tekrar ağ geçidinden ana bilgisayara gidiyor. Ana bilgisayardan bir traceroute çalıştırmak, ilk durağın ağ geçidinde olduğunu gösterir. Sonra diğer tüm yollar * * *. Kapsayıcı çevrimiçi olup olmadığına bakılmaksızın aynı sorunu alıyorum.

Yanıtlar:


17

Aslında sen yapabilirsiniz adresi ve ağ geçidini ayarlamak içinde ev sahibi anahtar kelime kullanarak hiç bir arayüze dokunmamaya kabı ve yapılandırmak manual.

Bunu konukların içine yerleştirin /etc/network/interfaces:

auto eth0
iface eth0 inet manual

Ayrıca, arayüzü ayarlamak için kabın yapılandırma dosyasına bırakın:

lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = lxc-bridge-nat
lxc.network.ipv4 = 192.168.100.16/24
lxc.network.ipv4.gateway = auto

Konuk, BIOS zaten arayüzü kurmuş gibi davranacak ve sadece kullanacaktır.

Özellikle keşfet lxc.network.ipv4.gateway.


Teşekkür! Bu benim hayatımı kurtardı ... konteynırım her zaman yeni bir dhcp adresi almaya çalışırdı ... konteynerin (statik) içinde sabit bir değere ayarlanması konteynerin artık önyükleme yapmamasına neden oldu!
Dominik Dorn

Ana bilgisayar askıya alınır ve devam ettirilirse bunun iyi çalışmadığını unutmayın. Lxc tahsis edilen ip adresiyle devam eder, ancak ana bilgisayar artık bir ip adresine sahip olmadığını düşünmektedir. Ben dxmasq lxc-net için yapılandırmak ve orada sabit bir adres dağıtmak daha iyi bulduk.
HRJ

@HRJ - Sadece 'yap' demek yerine yorumunuza "nasıl" yazmalı veya referansa bağlantı vermelisiniz. Bu teknik bir sitedir ve gerçekten kullanışlı bir şey söylemelisiniz.
Ian Macintosh

2
Bunu yapmak için doğru yer, hem / etc / default / lxc'de aralığınızı ayarlayabileceğiniz (bkz. LXC_DHCP_RANGE) hem de /etc/dnsmasq.d-available/lxc içinde dnsmasq dokümanlar veya manpage'e göre görünüyor
Ian Macintosh


4

Köprüleme yaptığınızdan, IP adreslerini ana bilgisayarda değil, yalnızca kapsayıcıda ayarlamanız gerekir . Ana bilgisayarın yalnızca kendi IP adresleri olmalıdır .


2

Sadece geçen gün Ubuntu 14.04 ile yaptım. Basit. /etc/network/interfacesKapsayıcı içindeki dosyayı düzenlemeniz ve bunu ayarlamanız yeterlidir:

auto eth0
iface eth0 inet static
 address $IP
 netmask $NETMASK
 gateway $GW
 dns-nameservers $DNS

Her değişkeni istenen değerle değiştirin.

Sen YAPMAYIN başka bir şey yapmak zorunda!

Not: Bazı satırlardan önceki boşluğa dikkat edin. Zorunludur.


Bu benim konteyner artık (ubuntu 14.04 sunucusu) önyükleme değil sonuçlandı .. sebastianwagner gelen cevap benim için çalışıyor.
Dominik Dorn

2

Bulduğum en hızlı yol ve en hızlı şekilde lxc profilleri kullanmak

lxc profile list - listeye sahip olduğunuz tüm profillere komut verin Sonra

lxc profile copy default minecraft(bu yeni profilinizin adıdır)

Sonra lxc profile edit minecraft

Bu ortaya çıkacak

devices:
  eth0:
    ipv4.address: 192.168.1.114/24  - add this line and enter any ip address you like
    name: eth0
    nictype: macvlan - this is my setting
    parent: enp0s25
    type: nic
  root:
    path: /
    pool: lxc_zfs
    type: disk
name: mine
used_by:

sonra kaydet

sonra profili LXC konteynerinize şu şekilde atayın

lxc profile assign YOUR_CONTAINER_NAME YOUR_NEW_PROFILE_NAME

ardından kapsayıcıyı yeniden başlatın ve yeni ip adresiniz bu kapsayıcıya ayarlandı


1

@Enrique Moreno Tent'in cevabını takip ettikten sonra lxc konteynerlerimi doğru bir şekilde kurabilirim, bu yüzden diğer öğeleri nasıl kuracağınızı bilmiyorsanız daha ayrıntılı olarak ne yapacağımı açıklayacağım.

1. LXC konteynerinize lxc-attachkomut aracılığıyla erişin

Komut:

$ lxc-attach -n YOUR-CONTAINER-NAME

2. ile mevcut yapılandırmalarınızı görün ifconfig

komuta

root@mycontainer:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.3.160  netmask 255.255.255.0  broadcast 10.0.3.255
        inet6 fe80::216:3eff:fec9:2fa0  prefixlen 64  scopeid 0x20<link>
        ether 00:16:3e:c9:2f:a0  txqueuelen 1000  (Ethernet)
        RX packets 62  bytes 7142 (7.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 60  bytes 9788 (9.7 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 20285  bytes 175021803 (175.0 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 20285  bytes 175021803 (175.0 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

`

3. Adres, ağ maskesi ve ağ geçidini alma

ifconfigYukarıdaki komutun sonucunu görünce şunu görüyoruz:

Adres istediğiniz adrestir, 10.0.3.166 olarak değiştirebilirsiniz.

Netmask orada: 255.255.255.0

Ağ Geçidi : Yayın adresini kullandığınız ağ geçidi için 10.0.3.255

Yukarıda görebileceğiniz gibi, şu anda misafirinizi (kapsayıcıyı) doldurmak için ihtiyacınız olan tüm bilgilere sahipsiniz /etc/network/interfaces.

4. dns-nameserversDeğer almak.

Komutu verin:

cat /etc/resolv.conf

Ama belki iyi Google DNS, ASRE kullanıyor 8.8.8.8ve8.8.4.4

5. /etc/network/interfacesKONTEYNER İÇİ Düzenleme

auto eth0 iface eth0 inet static address 10.0.3.166 netmask 255.255.255.0 gateway 10.0.3.255 dns-nameservers 8.8.8.8


ifconfigile değiştirilmiştir ip adaha yeni debian / ubuntu sürümlerinde linuxconfig.org/...
rvazquezglez
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.