IPv6 funktioniert nur nach dem Ping des Standard-Gateways.

7

Wir haben jetzt 2013 und ich dachte, es ist längst überfällig, IPv6 auf meinem Server zu aktivieren. Aber leider hatte ich einige Probleme. Um ehrlich zu sein, habe ich nur wenig Erfahrung mit IPv6. Ich hoffe, Sie können mir bei meinem "kleinen" Problem helfen.

Eine kleine Bemerkung: Die folgenden Adressen sind verschleiert, es ist nicht das, was ich in meinen Konfigurationen verwendet habe;)

Ich führe einen Debian-Squeeze (Debian 2.6.32-46) aus und habe von meinem Provider einen / 64-IPv6-Block erhalten: 2a01: 4f8: a0: aaaa :: / 64

Daher habe ich die Datei / etc / network / interfaces wie folgt geändert (was auch von meinem Provider empfohlen wird):

# Loopback device:
auto lo
iface lo inet loopback

# device: eth0
auto  eth0
iface eth0 inet static
  address   85.10.xxx.zz
  broadcast 85.10.xxx.yy
  netmask   255.255.255.224
  gateway   85.10.xxx.1


iface eth0 inet6 static
  # Main IPv6 Address of the server
  address 2a01:4f8:a0:aaaa::2
  netmask 64
  gateway fe80::1


auto eth0:1
iface eth0:1 inet static
        address 85.10.xxxx.uu
        netmask 255.255.255.224

# default route to access subnet
up route add -net 85.10.xxx.0 netmask 255.255.255.224 gw 85.10.xxx.1 eth0

Nach einem Neustart (ich bin faul und wollte nicht alles mit routeoder hinzufügen ip) sieht meine eth0- Schnittstelle folgendermaßen aus:

eth0      < first line removed >  
          inet addr:85.10.xxx.zz  Bcast:85.10.xxx.yy  Mask:255.255.255.224
          inet6 addr: 2a01:4f8:a0:aaaa::2/64 Scope:Global
          inet6 addr: fe80::bbbb:cccc:dddd:eeee/64 Scope:Link <--- from MAC address
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24133 errors:0 dropped:0 overruns:0 frame:0
          TX packets:21712 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3464246 (3.3 MiB)  TX bytes:5776451 (5.5 MiB)
          Interrupt:25 Base address:0x2000 

und die Routen ip -6 routesehen so aus:

2a01:4f8:a0:aaaa::/64 dev eth0  metric 1024  mtu 1500 advmss 1440 hoplimit 4294967295
fe80::/64 dev eth0  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 4294967295
fe80::/64 dev vboxnet0  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 4294967295
default via fe80::1 dev eth0  metric 1024  mtu 1500 advmss 1440 hoplimit 4294967295

Mein Problem ist nun, dass mein IPv6 nicht richtig funktioniert. Wenn ich versuche, eine IPv6-Adresse zu pingen, z. B. ping6 ipv6.google.com. Ich erhalte: "Ziel nicht erreichbar: Adresse nicht erreichbar"

Welches sieht so aus in tcpdump -i eth0 ip6:

00:29:05.386500 IP6 2a01:4f8:a0:aaaa::2 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has fe80::1, length 32
00:29:05.390869 IP6 2a01:4f8:a0:bbbb::1 > 2a01:4f8:a0:aaaa::2: ICMP6, neighbor advertisement, tgt is fe80::1, length 32

2a01: 4f8: a0: bbbb :: 1 ist übrigens. als mein Gateway aufgeführt (an der Online-Administratorkonsole meines Providers).

Ich denke, der Grund für all dies ist der fehlende NDP-Eintrag / die fehlende MAC-Adresse von fe80 :: 1 . Weil ip -6 neighgibt mir:

fe80::1 dev eth0  router FAILED 

Ich denke schon, wenn ich das tue: ping6 -I eth0 fe80::1Ich bekomme eine richtige Echoantwort und die gewünschte Mac-Adresse für meine fe80 :: 1- Adresse sowie einen perfekt funktionierenden IPv6-Stack:

$ip -6 neigh
fe80::1 dev eth0 lladdr ll:mm:nn:oo:pp:qq router REACHABLE

Hier ist auch wieder der Dump von tcpdump -i eth0 ip6:

00:30:37.555702 IP6 fe80::bbbb:cccc:dddd:eeee > fe80::1: ICMP6, echo request, seq 1, length 64
00:30:37.560219 IP6 fe80::1 > fe80::bbbb:cccc:dddd:eeee: ICMP6, echo reply, seq 1, length 64

(wieder: fe80 :: bbbb: cccc: dddd: eeee ist meine linklokale Adresse, abgeleitet von der MAC-Adresse)

Ab diesem Zeitpunkt kann ich IPv6 verwenden: Ich kann Ping6-Websites verwenden, über IPv6 eine Verbindung zu Diensten herstellen oder über IPS6 über SSH sogar eine Verbindung zu meinem Server herstellen.

Also, was mache ich hier falsch? Ich habe viel Zeit damit verbracht, herauszufinden, wie man das "behebt". Ich wette, es kann mit zwei Befehlen gelöst werden. Dies ist übrigens das erste Mal, dass ich mich mit IPv6 auf einem Server beschäftige. Also bitte vergib mir meine Unerfahrenheit. Übrigens. Ich habe auch versucht, einige sysctl net.ipv6. * -Flaggen zu ändern, aber ohne Erfolg. Wenn es für die Lösung notwendig ist, kann ich meine Konfiguration auch hier posten.

Jeder Hinweis ist mehr als willkommen!

Vielen Dank im Voraus!


quelle

Antworten:

8

Ich habe das ganze Problem heute, ein paar Wochen später, noch einmal versucht. Und was soll ich sagen, ich habe es behoben. Kann mir bitte jemand erklären, warum das Hinzufügen eines IPv6-Loopbacks mein Problem behoben hat? Folgendes habe ich meiner Datei / etc / network / interfaces hinzugefügt :

iface lo inet6 loopback

Ich habe keine Ahnung, warum ich vergessen habe, es überhaupt hinzuzufügen! ^^ Vielen Dank für Ihre Antworten!


quelle
Weil Debian verrückt ist, weil er das nicht schon drin hat?
Michael Hampton
Die Datei wurde von hetzner zur Verfügung gestellt: "### Hetzner Online AG - installimage" Aber es ist definitiv meine Schuld, sie überhaupt nicht zu sehen: D.
Seltsame Dinge passieren, wenn die Loopback-Schnittstelle nicht konfiguriert ist. Wir können dies zur Liste hinzufügen, nehme ich an ... :)
Michael Hampton
1

Ich schaue auf den Teil Ihrer Frage, in dem Sie sagen:

Mein Problem ist nun, dass mein IPv6 nicht richtig funktioniert. Wenn ich versuche, eine IPv6-Adresse zu pingen, z. B. ping6 ipv6.google.com. Ich erhalte: "Ziel nicht erreichbar: Adresse nicht erreichbar"

Was in tcpdump -i eth0 ip6 so aussieht:

00:29:05.386500 IP6 2a01:4f8:a0:aaaa::2 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has fe80::1, length 32 00:29:05.390869 IP6
2a01:4f8:a0:bbbb::1 > 2a01:4f8:a0:aaaa::2: ICMP6, neighbor advertisement, tgt is fe80::1, length 32

Das ist merkwürdig. Ihr System sendet eine korrekte (soweit ich aus Ihrem tcpdump ersehen kann) Nachbarwerbung und der Router sendet eine korrekte (erneut AFAICT) Nachbarwerbung zurück. Dies würde auf ein Problem auf Ihrem lokalen Computer hinweisen.

Führen Sie auf diesem Computer eine Firewall durch? Die ICMPv6-Filterung unterscheidet sich stark von der ICMP-Filterung. Viel mehr Teile der IPv6-Kommunikation benötigen ordnungsgemäß funktionierendes ICMPv6. Wenn Sie zu viel oder falsch filtern, treten Probleme genau so auf, wie Sie sie jetzt sehen.

Wenn Sie weitere Informationen wünschen, schauen Sie sich bitte RFC 4890 an .

Sander Steffann
quelle
Danke für Ihre Antwort. Am Anfang lief überhaupt keine Firewall. Später habe ich ip6tables aktiviert und eingefügt: -A INPUT -p ipv6-icmp -j ACCEPT. Aber keiner dieser Ansätze hat funktioniert. Es ist keine andere Firewall konfiguriert. Nur Shorewall, die nur für IPv4 gilt, da Shorewall6 IPv6 behandelt. Und es macht überhaupt keinen Sinn, weil es nach dem Pining von fe80 :: 1 wie ein Zauber wirkt. Wenn ich ein Paket mit ping6 -I eth0 fe80 :: 1 an fe80 :: 1 sende, werden in tcpdump andere Pakete angezeigt, dh eine Nachbaranfrage von meiner lokalen Linkadresse und nicht die globale, wie bereits erwähnt.
Die Verwendung von link-local für Nachrichten zur Nachbarwerbung ist vollkommen in Ordnung und kein Grund zur Sorge. Etwas lässt Ihren Computer bestimmte eingehende ICMPv6-Nachrichten ignorieren ... Könnte ein Kernel-Fehler sein, könnte etwas anderes sein ...
Sander Steffann
0

Versuchen Sie stattdessen, eine der tatsächlichen Adressen des Routers als Standard-Gateway zu verwenden fe80::1.

Michael Hampton
quelle
Welches wäre die IP-Adresse des Gateways: 2a01: 4f8: a0: bbbb :: 1. Das habe ich schon versucht. Das funktioniert leider auch nicht.
Bist du dir da sicher? Das ist in einem anderen Subnetz als Ihre IP-Adresse.
Michael Hampton
Du meinst, wenn ich mir über die Adresse sicher bin? Ich weiß, was du meinst, aber das habe ich von meinem Provider bekommen. Nur zum Spaß versuche ich das gleiche Netzwerk mit :: 1. Ich weiß nicht, warum ich das noch nicht versucht habe.
UPDATE: 2a01: 4f8: a0: aaaa :: 1 (dasselbe Subnetz) funktioniert ebenfalls nicht.
2
Oh ja, wenn es Hetzner ist, sind alle Wetten geschlossen; Sie machen so viele seltsame Dinge, dass Sie sie am besten sortieren lassen.
Michael Hampton
-1

Ihr Gateway für IPv6 sollte sich im selben Subnetz befinden

iface eth0 inet6 static
  # Main IPv6 Address of the server
  address 2a01:4f8:a0:aaaa::2
  netmask 64
  gateway fe80::1

So etwas wie 2a01: 4f8: a0: aaaa :: 1 Dies ist in der Router- oder VLAN-Konfiguration festgelegt. Bitte überprüfen Sie, was Sie in Ihrem Router haben. eine Probe:

interface GigabitEthernet0/0/1.201
 encapsulation dot1Q 201
 ipv6 address 2A00:7XXX:100::1/48
!
Cem Karaca
quelle
3
Das ist nicht richtig. Während sich die Gateway-Adresse im Allgemeinen im selben Subnetz befindet, ist dies für IPv6 nicht erforderlich.
Gerät
-1

Der Punkt ist, dass IPv6 ICMPv6 verwendet, um den Verbindungsstatus zu überprüfen, im Gegensatz zu IPv4, wo ARP diesen Zweck erfüllt. Deshalb funktioniert nach dem Pingen alles. Passen Sie Ihre Firewall-Regeln an:

ip6tables -A INPUT -p icmpv6 -j ACCEPT
Denis Scherbakov
quelle
1
Ich bin mir nicht sicher, ob dies etwas zu Sander Stefanns bestehender Antwort beiträgt, und aus den Kommentaren dazu wissen wir, dass es das Problem des OP nicht behoben hat.
MadHatter