Workstation online OnWorks Linux e Windows

Logo

Hosting online gratuito per workstation

<Precedenti | Contenuti | Succ.>

6.4. Networking


Per impostazione predefinita, LXC crea uno spazio dei nomi di rete privato per ogni contenitore, che include uno stack di rete di livello 2. I container di solito si connettono al mondo esterno facendo passare una NIC fisica o un endpoint del tunnel veth nel container. LXC crea un bridge NAT, lxcbr0, all'avvio dell'host. I container creati utilizzando la configurazione predefinita avranno una veth NIC con l'estremità remota collegata al bridge lxcbr0. Una NIC può esistere solo in uno spazio dei nomi alla volta, quindi una NIC fisica passata nel contenitore non è utilizzabile sull'host.


È possibile creare un contenitore senza uno spazio dei nomi di rete privato. In questo caso, il contenitore avrà accesso alla rete host come qualsiasi altra applicazione. Si noti che questo è particolarmente pericoloso se il

container sta eseguendo una distribuzione con upstart, come Ubuntu, poiché i programmi che parlano con init, come chiusura, parlerà tramite il socket di dominio Unix astratto al parvenu dell'host e spegnerà l'host.


Per fornire ai contenitori su lxcbr0 un indirizzo IP persistente basato sul nome di dominio, puoi scrivere voci su /etc/lxc/dnsmasq.conf piace:


host dhcp=lxcmail,10.0.3.100 host dhcp=ttrss,10.0.3.101


Se è desiderabile che il contenitore sia accessibile pubblicamente, ci sono alcuni modi per farlo. Uno è da usare

iptables per inoltrare le porte host al contenitore, ad esempio


iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 587 -j DNAT \

--a-destinazione 10.0.3.100:587


Un altro è quello di collegare le interfacce di rete dell'host (consultare il capitolo Configurazione di rete della Guida del server Ubuntu, Sezione 1.4, «Bridging» [p. 46]). Quindi, specifica il bridge dell'host nel file di configurazione del contenitore al posto di lxcbr0, ad esempio


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


Infine, puoi chiedere a LXC di utilizzare macvlan per la NIC del contenitore. Si noti che questo ha dei limiti e, a seconda della configurazione, potrebbe non consentire al contenitore di comunicare con l'host stesso. Pertanto le altre due opzioni sono preferite e più comunemente utilizzate.


Esistono diversi modi per determinare l'indirizzo IP di un contenitore. Per prima cosa puoi usare lxc-ls --fantasia che stamperà gli indirizzi IP per tutti i contenitori in esecuzione, oppure lxc-info -i -H -n C1 che stamperà l'indirizzo IP di C1. Se dnsmasq è installato sull'host, puoi anche aggiungere una voce a /etc/dnsmasq.conf come segue


server=/lxc/10.0.3.1


dopodiché dnsmasq risolverà C1.lxc localmente, in modo che tu possa fare:


eseguire il ping C1 ssh C1


Per ulteriori informazioni, vedere la manpage lxc.conf e le configurazioni di rete di esempio in /usr/ condividi/doc/lxc/esempi/.


Il miglior sistema operativo cloud computing su OnWorks: