<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/.
Documentazione