Wie bereits in früheren Antworten erwähnt, besteht eine Lösung für dieses Problem darin, einen Macvlan-Netzwerkadapter auf dem Host hinzuzufügen. Ich hatte jedoch das Gefühl, dass die manuelle Neuverdrahtung der Routen zum Macvlan-Adapter etwas schwierig war, zumal ich IPv6-Unterstützung wünschte und manuell festgelegte Routen zu einem Problem werden könnte, wenn sich das Präfix ändert. Hier ist meine Konfiguration, bei der der Kernel die Kontrolle über die Routing-Tabelle behält:
(Die spezielle Konfiguration hier ist Debian- und Upstart-spezifisch, aber die grundlegenden Schritte sollten auf jedem GNU / Linux funktionieren.)
Erstellen des Macvlan-Adapters beim Booten
Zunächst müssen Sie eine MAC-Adresse für Ihren Adapter auswählen. Möglicherweise können Sie nur einen zufälligen verwenden, aber ich schlage vor, Sie erstellen manuell einen Macvlan-Adapter und verwenden dessen MAC. Auf diese Weise verpflichtet sich der MAC zu eventuell vorhandenen Konventionen.
Das Festlegen eines festen MAC ist ratsam, da andernfalls beispielsweise ein DHCP-Server Ihren Computer nach einem Neustart nicht erkennen und ihm dieselbe IP-Adresse wie zuvor zuweisen kann.
Erstellen Sie also einen Adapter und suchen Sie den MAC:
root@host:~# ip link add link eth0 macvlan0 type macvlan mode bridge
root@host:~# ip addr show dev macvlan0
#: macvlan0@eth0: mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1
link/ether 12:34:56:78:90:ab brd ff:ff:ff:ff:ff:ff
...
Die hervorgehobene Hexadezimalzahl ist Ihre MAC-Adresse.
Jetzt erstellen Sie ein Init-Skript, das ausgeführt werden muss, bevor das Netzwerk initialisiert wird, um den Macvlan-Adapter bei jedem Start zu erstellen. Der Befehl dazu lautet:
ip link add link eth0 address <MACADDRESS> macvlan0 type macvlan mode bridge
Ein Beispiel für ein Upstart-Init-Skript für diesen Zweck wäre:
start on starting networking
script
ip link add link eth0 address <MACADDRESS> macvlan0 type macvlan mode bridge
end script
Setzen Sie dies einfach in z /etc/init/macvlan.conf
.
Einrichten der Netzwerkkonfiguration
In /etc/network/interfaces
, stellen Sie Ihren physischen Netzwerkadapter auf manuell (aber es Auto verlassen) und bewegen ihre vorherige Konfiguration ( in der Regel DHCP oder eine statische IP - Adresse) wird an Ihren macvlan Adapter. Z.B:
auto eth0
iface eth0 inet manual
auto macvlan0
iface macvlan0 inet dhcp
Deaktivieren von IPv6 für den physischen Adapter
Schließlich möchten Sie nicht, dass der physische Adapter eine IP-Adresse erhält. Bei IPv4 verhindert das manuelle Einstellen des Adapters, dass er eine Adresse erhält. Ich habe jedoch keine Konfiguration gefunden, die den Kernel daran hindert, eine IPv6-Adresse für / dem Adapter abzurufen / zuzuweisen. In diesem Fall werden auch Routen für sie hinzugefügt, was zu Problemen führen kann. Der beste Weg scheint also zu sein, IPv6 für den physischen Adapter zu deaktivieren. Sie können dies tun, indem Sie die Zeile hinzufügen
net.ipv6.conf.eth0.disable_ipv6=1
zu /etc/sysctl.conf
, indem Sie eine Datei /etc/sysctl.d/
mit dieser Zeile erstellen oder hinzufügen
sysctl -w net.ipv6.conf.eth0.disable_ipv6=1
zu Ihrem Init-Skript.
Wenn Sie Ihren Computer jetzt neu starten, sollte die Kommunikation vom Host zum Gast sowohl mit IPv4 als auch mit IPv6 funktionieren.
Beachten Sie, dass Ihr Host möglicherweise auch nach einem Neustart über das Netzwerk nicht mehr erreichbar ist, wenn Sie beim Einrichten einen Fehler machen. Tun Sie dies nur, wenn Sie physischen Zugriff auf die Maschine haben oder andere Sicherheitsvorkehrungen getroffen wurden, um potenzielle Probleme zu beheben.