OnWorks Linux- und Windows-Online-WorkStations

Logo

Kostenloses Online-Hosting für WorkStations

<Zurück | Inhalte | Weiter>

6.4. Networking


Standardmäßig erstellt LXC für jeden Container einen privaten Netzwerk-Namespace, der einen Layer-2-Netzwerk-Stack enthält. Container stellen normalerweise eine Verbindung zur Außenwelt her, indem entweder eine physische Netzwerkkarte oder ein Veth-Tunnel-Endpunkt in den Container geleitet wird. LXC erstellt beim Host-Start eine NAT-Brücke, lxcbr0. Mit der Standardkonfiguration erstellte Container verfügen über eine Veth-NIC, wobei das entfernte Ende an die lxcbr0-Brücke angeschlossen ist. Eine Netzwerkkarte kann jeweils nur in einem Namespace vorhanden sein, sodass eine an den Container übergebene physische Netzwerkkarte auf dem Host nicht verwendet werden kann.


Es ist möglich, einen Container ohne einen privaten Netzwerk-Namespace zu erstellen. In diesem Fall hat der Container wie jede andere Anwendung Zugriff auf das Host-Netzwerk. Beachten Sie, dass dies besonders gefährlich ist, wenn

Container führt eine Distribution mit Upstart aus, wie Ubuntu, da Programme, die mit Init kommunizieren, wie z Schließung, kommuniziert über den abstrakten Unix-Domänen-Socket mit dem Emporkömmling des Hosts und fährt den Host herunter.


Um Containern auf lxcbr0 eine dauerhafte IP-Adresse basierend auf dem Domänennamen zu geben, können Sie Einträge darin schreiben /etc/lxc/dnsmasq.conf mögen:


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


Wenn der Container öffentlich zugänglich sein soll, gibt es mehrere Möglichkeiten, dies zu erreichen. Eine davon ist die Verwendung

iptables, um beispielsweise Host-Ports an den Container weiterzuleiten


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

--to-destination 10.0.3.100:587


Eine andere besteht darin, die Netzwerkschnittstellen des Hosts zu überbrücken (siehe Kapitel „Netzwerkkonfiguration“ im Ubuntu Server-Handbuch, Abschnitt 1.4, „Bridging“ [S. 46]). Geben Sie dann beispielsweise anstelle von lxcbr0 die Bridge des Hosts in der Containerkonfigurationsdatei an


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


Schließlich können Sie LXC bitten, Macvlan für die NIC des Containers zu verwenden. Beachten Sie, dass dies Einschränkungen hat und es je nach Konfiguration möglicherweise nicht möglich ist, dass der Container mit dem Host selbst kommuniziert. Daher werden die beiden anderen Optionen bevorzugt und häufiger verwendet.


Es gibt mehrere Möglichkeiten, die IP-Adresse für einen Container zu ermitteln. Erstens können Sie verwenden lxc-ls --fancy Dadurch werden die IP-Adressen für alle laufenden Container gedruckt, oder lxc-info -i -H -n C1 Dadurch wird die IP-Adresse von C1 gedruckt. Wenn dnsmasq auf dem Host installiert ist, können Sie auch einen Eintrag hinzufügen /etc/dnsmasq.conf folgendermaßen


server=/lxc/10.0.3.1


Danach löst dnsmasq C1.lxc lokal auf, sodass Sie Folgendes tun können:


ping C1 ssh C1


Weitere Informationen finden Sie auf der Manpage lxc.conf sowie in den Beispielnetzwerkkonfigurationen weiter unten /usr/share/doc/lxc/examples/.


Top OS Cloud Computing bei OnWorks: