Ich versuche, mehrere LXC-Container auf einem Host mit jeweils eigenen öffentlichen statischen IP-Adressen einzurichten.
Auf meinem Host läuft das neueste Ubuntu. Es hat eine einzige Netzwerkschnittstelle mit dem Namen eth0. Die statischen IP-Adressen können über das Internet gepingt werden und heißen eth0: 210, eth0: 211 ... Die Zahlen nach dem Doppelpunkt sind das niederwertigste Byte der Adressen. Zusätzlich zu diesen Schnittstellen habe ich br0 auf der öffentlichen IP des Hosts eingerichtet. Es gibt auch die Schnittstellen lo, veth2LPP9A und lxcbr0. Das lxcbr0 hat die Adresse einer privaten IP.
Der Host / etc / network / interfaces sieht folgendermaßen aus:
auto br0
iface br0 inet static
bridge_ports eth0
bridge_fd 0
[...]
Bisher habe ich verschiedene Online-Quellen verwendet, einschließlich Bridging LXC-Container, um eth0 zu hosten, damit sie eine öffentliche IP-Adresse haben , die mir beim Einrichten hilft.
Die Konfigurationsdatei des Containers hat:
lxc.network.type = veth
lxc.network.link = br0
Ich habe die statische lxc.network.ipv4-Konfiguration aus dieser Datei entfernt, da sie Probleme verursacht hat. Wenn ich lxc-ls --fancy mit dieser Konfiguration laufen lasse, würde ich die gleiche allgemeine IP zweimal in der Ausgabe sehen. Außerdem würde dies die Subnetzkonfiguration der / etc / network / interfaces des Containers beeinträchtigen.
Apropos Interface-Datei des Containers:
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 [...]
Ich musste das Gateway auskommentieren und die Route hinzufügen, um Befehle zu dieser Datei hinzuzufügen. Andernfalls würde der Container einige Minuten zum Booten benötigen.
Die Dateien / proc / sys / net / bridge / bridge-nf- * auf dem Host sind alle auf 0 gesetzt. Der Wert für / proc / sys / net / ipv4 / ip_forward ist 1.
Das Problem ist, dass ich nicht aus dem Container herauspingen kann, obwohl das "route -n" des Containers so aussieht, wie es sollte. Wenn ich mich an die IP des Containers wende, verbinde ich mich mit dem Host.
BEARBEITEN: Das Entfernen der statischen IP des Containers vom Host hat geholfen, aber jetzt erhalte ich einen neuen Fehler. Der Versuch, den Container vom Host aus zu pingen, führt zu Redirect HostFrom, New nexthop. Die Pakete werden einfach wiederholt vom Gateway zum Host gesendet. Das Ausführen einer Traceroute vom Host aus zeigt, dass sich der erste Stopp am Gateway befindet. Dann sind alle anderen Routen * * *. Ich habe das gleiche Problem, unabhängig davon, ob der Container online ist oder nicht.
quelle
Da Sie überbrücken, müssen Sie die IP - Adressen in den Behälter gesetzt nur , und nicht auf dem Host. Der Host sollte nur seine eigene (n) IP-Adresse (n) haben.
quelle
Ich habe es neulich mit Ubuntu 14.04 gemacht. Es ist einfach. Sie müssen nur die
/etc/network/interfaces
Datei in Ihrem Container bearbeiten und Folgendes festlegen:Ersetzen Sie jede Variable durch den gewünschten Wert.
Sie NICHT haben, etwas anderes zu tun!
PS: Beachten Sie das Leerzeichen vor einigen Zeilen. Es zwingend erforderlich ist.
quelle
Am besten und schnellsten finde ich die lxc-Profile
lxc profile list
- Befehlen Sie der Liste alle Profile, die Sie habenlxc profile copy default minecraft
(Dies ist der Name Ihres neuen Profils)Dann
lxc profile edit minecraft
Das wird kommen
dann speichere es
Weisen Sie das Profil dann wie folgt Ihrem LXC-Container zu
Starten Sie dann einfach den Container neu und Ihre neue IP-Adresse wird auf diesen Container gesetzt
quelle
Nachdem ich die Antwort von @Enrique Moreno Tent befolgt habe, konnte ich meine lxc-Container korrekt einrichten. Falls Sie nicht wissen, wie Sie die anderen Elemente einrichten sollen, werde ich Ihnen im Detail erklären, was zu tun ist.
1. Greifen Sie per
lxc-attach
Befehl auf Ihren LXC-Container zuBefehl:
$ lxc-attach -n YOUR-CONTAINER-NAME
2. Zeigen Sie Ihre aktuellen Konfigurationen mit an
ifconfig
Befehl
`` `
3. Adresse, Netzmaske und Gateway abrufen
Wenn
ifconfig
wir das Ergebnis des obigen Befehls sehen, sehen wir:Adresse ist die gewünschte Adresse. Sie können sie in 10.0.3.166 ändern.
Netzmaske ist da: 255.255.255.0
Gateway : Für das Gateway verwenden Sie die Broadcast- Adresse mit 10.0.3.255
Wie Sie oben sehen können, haben Sie derzeit alle Informationen, die Sie benötigen, um Ihren Gast (Container) zu füllen
/etc/network/interfaces
.4.
dns-nameservers
Wert bekommen.Geben Sie den folgenden Befehl ein:
cat /etc/resolv.conf
Aber vielleicht am besten mit Google DNS, die asre
8.8.8.8
und8.8.4.4
5. Bearbeiten von
/etc/network/interfaces
INNERHALB DES CONTAINERSauto 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
quelle
ifconfig
wurde ersetzt durchip a
in neueren debian / ubuntu-versionen linuxconfig.org/…