Impostazione di contenitori LXC in ponti con IP statici

Sto cercando di impostare più contenitori LXC su un host, ognuno con IP statici pubblici propri.

Il mio host sta eseguendo l'ultimo Ubuntu. Ha un'unica interface di networking denominata eth0. Gli IP statici sono pingibili da Internet e sono denominati eth0: 210, eth0: 211 … I numbers dopo il colon sono il byte less significativo degli indirizzi. Oltre a queste interfacce, ho installato br0 sul IP pubblico dell'host. Ci sono anche le interfacce lo, veth2LPP9A e lxcbr0. Il lxcbr0 ha l'indirizzo di un IP privato.

  • Trasferimenti di file di networking molto lenti
  • 1.73 Gbps al meglio su un'istanza Amazon EC2 10 Gigabit?
  • Come posso get BIND e Microsoft DNS a lavorare bene insieme?
  • Che contatori wmi può indicare l'esaurimento della port
  • Che tipo di router mi serve?
  • È sicuro assumere che due host sulla stessa networking / 24 appartengano allo stesso numero AS?
  • L'host / etc / network / interfaces è simile a:

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

    Finora ho usato varie fonti online, tra cui i contenitori LXC di ponti per ospitare eth0 in modo che possano avere un IP pubblico per aiutarti a impostare questo.

    Il file di configuration del contenitore ha:

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

    Ho rimosso la configuration statica di lxc.network.ipv4 da questo file poiché provoca problemi. Quando ho eseguito lxc-ls – fanciulla con questa configuration, vedrò lo stesso IP pubblico due volte nell'output. Inoltre, sarebbe confuso con la configuration subnet delle connessioni / etc / network / interfaces del contenitore.

    Parlando del file di interfacce del contenitore, sembra un po 'come:

     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 [...] 

    Ho dovuto commentare il gateway e aggiungere il command route add a questo file. Altrimenti, il contenitore richiederebbe minuti per avviare.

    I file / proc / sys / net / bridge / bridge-nf- * sull'host sono impostati a 0. Il valore / proc / sys / net / ipv4 / ip_forward è 1.

    Il problema è che, anche se il "route -n" del contenitore sembra opportuno, non posso pingare dal contenitore. SSHing a quello che dovrebbe essere l'IP del contenitore, mi collega all'host.

    EDIT: Rimuovendo l'IP statico del contenitore dall'host ha aiutato, ma adesso sto ottenendo un nuovo errore. Tentare di pingare il contenitore dal server di host riceve Redirect HostFrom, Nuovo nexthop. I pacchetti stanno andando solo dal gateway all'host, ripetutamente. L'esecuzione di un traceroute dall'host mostra che la prima fermata è al gateway. Poi tutte le altre vie sono * * *. Ottengo lo stesso problema se il contenitore è in linea o no.

  • Errore Ubuntu LXC 14.04
  • Configurazione del contenitore con ponti e valli (solo server?)
  • Perché utilizzare lxc invece di chroot?
  • Corretto modo di movimentazione dei contenitori LXC su btrfs
  • controllo lxc della width di banda usando tc
  • Eseguire i contenitori linux (lxc) su ubuntu per isolare i processi server web (ruby / thin)
  • 4 Solutions collect form web for “Impostazione di contenitori LXC in ponti con IP statici”

    Infatti è ansible impostare l'indirizzo e il gateway dall'interno dell'host e configurare il contenitore per non toccare affatto l'interface utilizzando il manual parole chiave.

    Inserisci questo all'interno degli ospiti /etc/network/interfaces :

     auto eth0 iface eth0 inet manual 

    Lasciarlo anche al file di configuration del contenitore per impostare l'interface:

     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 

    L'ospite si comporterà come se il BIOS abbia già impostato l'interface e lo utilizzi.

    Specialmente esplorare lxc.network.ipv4.gateway .

    Dato che state ponte, è necessario impostare gli indirizzi IP solo nel contenitore e non sull'host. L'host dovrebbe avere solo un proprio indirizzo IP.

    L'ho fatto l'altro giorno con Ubuntu 14.04. È semplice. Devi solo modificare il /etc/network/interfaces all'interno del tuo contenitore e impostare questo:

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

    Sostituire each variabile con il valore desiderato.

    NON devi fare nient'altro!

    PS: Notare lo spazio prima di alcune righe. È obbligatorio.

    Potrei impostare correttamente i miei contenitori lxc dopo aver seguito la risposta di @Enrique Moreno Tent, quindi spiegherò cosa fare in più per non sapere come impostare gli altri elementi.

    1. Accedere al contenitore LXC tramite il command lxc-attach

    Comando:

    $ lxc-attach -n YOUR-CONTAINER-NAME

    2. Vedere le configurazioni correnti con ifconfig

    Comando

     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. Ottenere indirizzo, netmask e gateway

    Vedendo il risultato del command ifconfig , vediamo:

    Indirizzo è l'indirizzo desiderato, è ansible modificarlo in 10.0.3.166.

    Netmask è presente: 255.255.255.0

    Gateway : Per il gateway che utilizzi l'indirizzo broadcast con qui è 10.0.3.255

    Come potete vedere in precedenza, attualmente hai tutte le informazioni necessarie per riempire i guest (container) /etc/network/interfaces .

    4. Ottenere il valore dei dns-nameservers .

    Emettere il command:

    cat /etc/resolv.conf

    Ma forse è meglio utilizzare il DNS di Google, che asre 8.8.8.8 e 8.8.4.4

    5. Modifica /etc/network/interfaces INSERIRE IL CONTENITORE

    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

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.