
Zunächst einmal habe ich meinem dedizierten Server eine spezielle IPv6-Adresse zugewiesen, nur 1. Eine ::1/128.AberIch kann eth0 Adressen zuweisen (z. B. ::2/128, ::3/128 usw.).
Jetzt möchte ich LXC-Container auf diesem Server ausführen, aber ich möchte, dass sie erstklassige Bürger sind und eine eigene IPv6-Adresse haben.
LXC mit IPv4 funktioniert einwandfrei. Ich kann einen Container starten und von dort aus die Welt anpingen. Ich habe ein Bridge-Gerät namens lxcbr0
.
Ehrlich gesagt weiß ich nicht, wie ich weitermachen soll. In der spezifischen LXC-Konfiguration, die ich habe ('Präfix' steht für mein zugewiesenes, nun ja, Präfix):
lxc.network.ipv6 = prefix::3/128
lxc.network.ipv6.gateway = prefix::2 # iffy, not sure this is correct
Auf dem Host habe ich sysctl für die Verwendung der Weiterleitung konfiguriert:
net.ipv6.conf.default.forwarding = 1
net.ipv6.conf.eth0.forwarding = 1
Jetzt verliere ich den Überblick. IchdenkenIch muss der Bridge eine IP zuweisen. Ich habe ihr das Präfix::2/128 zugewiesen, das ich in der obigen LXC-Konfiguration verwende. In „Schnittstellen“:
iface lxcbr0 inet6 static
address prefix::2
netmask 128
# use arp proxy? Read that somewhere.
post-up /sbin/ip -6 neigh add proxy prefix::3 dev eth0 #container 1
post-up /sbin/ip -6 neigh add proxy prefix::4 dev eth0 #container 2
Es ist unnötig zu sagen, dass das nicht funktioniert. Ich kann den Container starten und mich anmelden, aber ich kann nichts pingen. Ich kann den Container auch nicht vom Host aus pingen. Ich weiß, dass es da etwas mit dem Routing zu tun hat...?
Einige Ausgaben des aktuellen Status: Host „ip -6 a“:
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 2607:5300:60:714::1/128 scope global
valid_lft forever preferred_lft forever
inet6 fe80::ea40:f2ff:feed:106f/64 scope link
valid_lft forever preferred_lft forever
8: lxcbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
inet6 2607:5300:60:714::2/128 scope global
valid_lft forever preferred_lft forever
inet6 fe80::b07b:e3ff:fe33:22e7/64 scope link
valid_lft forever preferred_lft forever
18: vethPVJQ6M: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 fe80::fcb7:57ff:fe3c:bcd1/64 scope link
valid_lft forever preferred_lft forever
Container „ip -6 a“:
20: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 2607:5300:60:714::3/128 scope global
valid_lft forever preferred_lft forever
inet6 fe80::216:3eff:fe59:679f/64 scope link
valid_lft forever preferred_lft forever
Host „ip -6 r“:
2607:5300:60:714::1 dev eth0 proto kernel metric 256
2607:5300:60:714::2 dev lxcbr0 proto kernel metric 256
2607:5300:60:7ff:ff:ff:ff:ff dev eth0 metric 1024
fe80::/64 dev eth0 proto kernel metric 256
fe80::/64 dev lxcbr0 proto kernel metric 256
fe80::/64 dev vethPVJQ6M proto kernel metric 256
fe80::/64 dev vethWT7OPQ proto kernel metric 256
default via 2607:5300:60:7ff:ff:ff:ff:ff dev eth0 metric 1024
Container „ip -6 r“:
2607:5300:60:714::2 dev eth0 metric 1024
2607:5300:60:714::3 dev eth0 proto kernel metric 256
fe80::/64 dev eth0 proto kernel metric 256
default via 2607:5300:60:714::2 dev eth0 metric 1024
Der Host führt Ubuntu 15.04, LXC Version 1.1.2 aus.
Ich würde mich über einige Hinweise freuen!
Antwort1
Mir scheint, Sie vermischen hier eine Reihe verschiedener Dinge. Erstens bezweifle ich, dass die Netzmaske auf dem Ethernet-Port Ihres Servers tatsächlich /128 ist. Ich vermute, es ist etwas anderes (vielleicht /64) und dass Sie sich in einem gemeinsam genutzten Segment mit einer Reihe anderer Kunden befinden.
Gemessen an der Ausgabe Ihres Befehls „ip -6 a“:
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 2607:5300:60:714::1/128 scope global
valid_lft forever preferred_lft forever
inet6 fe80::ea40:f2ff:feed:106f/64 scope link
valid_lft forever preferred_lft forever
8: lxcbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
inet6 2607:5300:60:714::2/128 scope global
valid_lft forever preferred_lft forever
inet6 fe80::b07b:e3ff:fe33:22e7/64 scope link
valid_lft forever preferred_lft forever
18: vethPVJQ6M: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 fe80::fcb7:57ff:fe3c:bcd1/64 scope link
valid_lft forever preferred_lft forever
Ich würde sagen, dass das /128 auf den Schnittstellen ein Fehler ist. Ihr Präfix scheint 2607:5300:60:714::/64 zu sein (höchstwahrscheinlich).
Vorausgesetzt, das ist richtig, müssen Sie Ihre Schnittstellendatei wie folgt einrichten (fügen Sie bei Bedarf Ihr IPv4 hinzu):
auto lxcbr0
iface lxcbr0 inet6 static
bridge_ports eth0
bridge_fd 0
address 2607:5300:60:714::1
net mask 64
gateway 2607:5300:60:7ff:ff:ff:ff:ff
Hinweis: Es ist nicht klar, wie Sie 2607:5300:60:7ff::/64 erreichen, um zu Ihrem Standard-Gateway zu gelangen. Es wäre sehr hilfreich zu wissen, wie Ihr Anbieter erwartet, dass Sie Ihr Netzwerk konfigurieren, oder einen Blick aus erster Hand in die von ihm bereitgestellte Dokumentation zu werfen. Die beste Vermutung ist, dass sich das Netzwerk 2607:5300:60:714::/64 auf derselben Verbindung befindet wie 2607:5300:60:7ff::/64. Diese 2607:5300:60:7ff::/64 wird für die Infrastruktur des Anbieters verwendet. Es ist unklar, ob Sie die gesamte 2607:5300:60:714:/64 erhalten oder ob diese mit anderen Kunden auf derselben Verbindung geteilt wird.
Vorausgesetzt, Sie können Adressen innerhalb dieses Bereichs frei zuweisen, müssen Sie Ihre Container lediglich mit derselben lxcbr0-Schnittstelle verbinden und die Adresse jedes Containers dieser Bridge-Schnittstelle zuweisen.
Auch hier handelt es sich nur um eine Schätzung auf Grundlage der von Ihnen bereitgestellten Daten. Ohne die tatsächliche Konfiguration Ihres Anbieters zu kennen, ist es unmöglich, eine sichere Aussage zu treffen.