Wie richte ich einen LXC-Gast so ein, dass er eine DHCP-Adresse erhält, damit ich in meinem Netzwerk darauf zugreifen kann?

15

Ich richte LXC ein mit:

lxc-create -t ubuntu -n lxcguest1

Ich kann jedoch nicht über mein LAN auf Dienste zugreifen, die darauf ausgeführt werden. Es scheint NAT zu sein. Wie richte ich es so ein, dass ich darauf zugreifen kann (wahrscheinlich muss es die DHCP-Adresse von meinem Linksys-Router erhalten)?

Vielen Dank.

Benjamin Bryan
quelle
Mögliches Duplikat von askubuntu.com/questions/256304/…
Uhr

Antworten:

5

Ich habe mich gerade selbst mit diesem Thema befasst. Grundsätzlich müssen Sie eine Bridge einrichten und Ihre Netzwerkkarte und den Container daran binden. Hier ist der Artikel, dem ich gefolgt bin:

http://bj0z.wordpress.com/2011/08/19/howto-build-a-base-lxc-container-in-ubuntu-11-04/

Klingt so, als ob Sie wie ich eher die Bridge-Lösung als die NAT-Lösung benötigen. Ich habe auch das Standard-LXC-Bridge-Setup deaktiviert (welches NAT'ed ist). Bearbeiten Sie dazu einfach die Datei: /etc/default/lxcund wechseln Sie USE_LXC_BRIDGE="TRUE"zu USE_LXC_BRIDGE="FALSE"und starten Sie neu.

user108168
quelle
1
Ich bin ein wenig verwirrt von dieser Lösung: Sie besagt, dass er eine Brücke einrichten muss, und dann, dass die Lösung darin besteht, die Standardbrückenkonfiguration zu deaktivieren. Sicherlich muss er einen Brückenaufbau einschalten. Die zweite Sache, bei der ich Hilfe brauche, ist, dass der Benutzer sagt, dass das Bridge-Setup NATed ist. Sicherlich ist es entweder Bridged (also befinden sich die Container im selben Netzwerk wie der Host) oder NATed (in einem anderen Netzwerk und erfordern Routing). Mein Verständnis ist, dass sich diese gegenseitig ausschließen?
John Little
1
Mit den aktuellen Versionen ist dies jetzt alles ungültig. / etc / default / lx * ist komplett weg.
Spyderdyne
5

Mein Setup auf Ubuntu 14.04.1 LTS (Trusty Tahr) Hosts

Zum /etc/network/interfacesHost hinzufügen

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 0.0.0.0

auto br0
iface br0 inet dhcp
    bridge_ports eth0

(Neustart nach Änderungen)

Und auf die Container-Konfigurationsdateien ( /var/lib/lxc/containername/config) habe ich gesetztlxc.network.link = br0

Damit erhält der Container wie der Host öffentliche IP-Adressen vom DHCP-Server.

Epeli
quelle
@ JonathanY. Das br0 sollte erscheinen, nachdem es zu / etc / network / interfaces hinzugefügt wurde, wie in der Antwort angegeben. Möglicherweise müssen Sie einen Neustart durchführen.
Epeli
3
Vielen Dank. Was mir fehlte, war, dass ich etwas hinzufügen musste <username> veth br0 2 , /etc/lxc/lxc-usernetum es br0mit nicht privilegierten Containern zu verwenden.
Jonathan Y.
2

Ich habe die Standardeinstellungen von Ubuntu LXC verwendet und meinen Router so konfiguriert, dass der gesamte Datenverkehr auf 10.0.3.xxx an den Ubuntu-Computer gesendet wird. Auf einem DD-WRT-fähigen Router sehen die Einstellungen ungefähr so ​​aus wie in der Abbildung unten. Ersetzen Sie 192.168.1.137durch die IP des Computers, auf dem LXC ausgeführt wird. Andere Router sollten über ähnliche Optionen zum Einrichten einer statischen Route verfügen (hier finden Sie Anweisungen zur statischen Route für Linksys ).

DD-WRT-Einstellungen für das statische Routing zu LXC

Dies hat nichts mit dem Problem zu tun, aber ich habe auch den DNSMasq-Dienst verwendet, um einen Hostnamen auf die IP-Adresse des LXC-Containers zu verweisen. Auf diese Weise kann ich von http://gitlab/überall im Netzwerk auf den Container zugreifen . Meiner Meinung nach ist es viel einfacher, einen Hostnamen für den Zugriff auf einen Container zu verwenden, als sich die IP-Adresse zu merken.

DD-WRT DNSMasq-Einstellungen

Drittanbieter
quelle
1
Netter Ansatz - versuchen Sie es. Daumen hoch! Das Hinzufügen einer statischen Route funktioniert - und der Router selbst kann Container-Maschinen anpingen! Bei vielen vom Internetdienstanbieter bereitgestellten Routern funktioniert die Portweiterleitung jedoch nicht, weil: Error code: 4937 The IP address is not in the same subnet with LAN IP address. Please input another one. (Der Router hat das Subnetz 192.168.xx, während LXD / LXC sich im Subnetz 10.0.xx befindet.)
stamster
1
Ja, Ihr Router muss eine Subnetzmaske akzeptieren, damit meine Lösung funktioniert. Ich kaufe gerne einen Router und füge eine After-Market-Firmware hinzu , um verrückte Konfigurationen zu ermöglichen :-p
Thirdender
1
Ich benutze MikroTik sowohl zu Hause als auch im Büro, aber dies war für eine Einrichtung gedacht, bei der ein einfacher Router von ISP geliefert wurde. Deine Idee ist also sehr einfach und doch sehr effektiv - KISS-Prinzip :) Ich mag es und werde es mit Sicherheit verwenden, da ich nicht verstehe, wie diese Container, für die sie noch keine Lösung haben, sie der Außenwelt auszusetzen.
Stempel