Machen Sie LXC-Container mit IPv6 direkt zugänglich

Machen Sie LXC-Container mit IPv6 direkt zugänglich

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.

verwandte Informationen