Hallo,
ich brauche mal (Nach-)Hilfe in Sachen Routing mit IPv6.
Rechner A hängt am Internet und arbeitet als Firewall und Proxy-Server. Dazu hat er zwei LAN-Ports. eth0 hat vom Provider eine IPv4-Adresse und einen IPv6-Block ( /64) erhalten. eth1 als interner Anschluss macht auf 172.16.0.1/16 den IPv4-Verkehr mit Masquerading.
Rechner B kommt ins Internet mit IPv4. Allerdings gibt es ständig Meldungen, dass er per IPv6-Adresse, die er per Namensauflösung erhält, nichts erreicht. Rechner B soll also auch per IPv6 ins Internet, eventuell mit einer der Adressen aus dem zugewiesenen IPv6-Block.
Wie sage ich Rechner A, dass er - bestimmte Adressen aus dem IPv6-Block auf Port eth1 weiter reichen kann und - er diese Adressen entsprechend routet
Vielen Dank für Eure Ideen
Reiner
Reiner Klaproth r.klaproth@online.de (Fr 26 Jan 2018 20:46:03 CET):
Rechner A hängt am Internet und arbeitet als Firewall und Proxy-Server. Dazu hat er zwei LAN-Ports. eth0 hat vom Provider eine IPv4-Adresse und einen IPv6-Block ( /64) erhalten.
Diesen IPv6 /64 hat er vermutlich auf der Außenseite. Auch wenn es da nur ein kleines Transfernetz ist.
Soweit ich IPv6 verstanden habe (bin mir nicht sicher, ob ich das wirklich habe, gibt es ja erst seit 20 Jahren), könnte Dir Dein Anbieter eigentlich ein /48 (manche sind geizig und geben Dir nur ein /56) geben, das sie über die IPv6-Adresse Deiner Außenseite routen wollen. Dann kannst Du Dir da eine /64 Scheibe rausschneiden und nach innen weiterreichen (radvd wäre Dein Freund).
Sicher kannst Du auch irgendwie mogeln und Dir aus dem vorhanden /64 was nehmen, aber ich glaube, daß das nicht Sinn von IPv6 ist. Auch könntest Du es mit IPv6-NAT versuchen, aber eigentlich auch das ist nicht Sinn von IPv6.
Die Gegenseite Deiner Außenseite wird davon ausgehen, daß das komplette /64 zwischen ihr und Dir liegt, also ggf. die IPv6-Entsprechung von Arp-Requests (Neighbourhood Detection oder so) versuchen, wenn eine der Adressen angesprochen wird.
Rechner B kommt ins Internet mit IPv4. Allerdings gibt es ständig Meldungen, dass er per IPv6-Adresse, die er per Namensauflösung erhält, nichts erreicht. Rechner B soll also auch per IPv6 ins Internet, eventuell mit einer der Adressen aus dem zugewiesenen IPv6-Block.
Wie sage ich Rechner A, dass er
- bestimmte Adressen aus dem IPv6-Block auf Port eth1 weiter reichen kann
und
- er diese Adressen entsprechend routet
Ich weiß jetzt nicht, wie da Stand der Technik ist, ob A also etwas aus dem Block nehmen kann, das dann nach innen announced und gleichzeitig „Proxy Arp“ auf der Außenseite dafür macht.
Rechner A hängt am Internet und arbeitet als Firewall und Proxy-Server. Dazu hat er zwei LAN-Ports. eth0 hat vom Provider eine IPv4-Adresse und einen IPv6-Block ( /64) erhalten.
Diesen IPv6 /64 hat er vermutlich auf der Außenseite. Auch wenn es da nur ein kleines Transfernetz ist.
Ich vermute hier eine Unschärfe in des OP Formulierung. Bei allen Providern, die ich bisher mit IPv6 sah, bekommt der Router eine IPv6 UND ein Subnetz. Meine Antworten bezogen sich dann auf die "Verteilung" der Subnetzdaten.
das sie über die IPv6-Adresse Deiner Außenseite routen wollen. Dann kannst Du Dir da eine /64 Scheibe rausschneiden und nach innen weiterreichen (radvd wäre Dein Freund).
...
Die Gegenseite Deiner Außenseite wird davon ausgehen, daß das komplette /64 zwischen ihr und Dir liegt, also ggf. die IPv6-Entsprechung von Arp-Requests (Neighbourhood Detection oder so) versuchen, wenn eine der Adressen angesprochen wird.
Warum sollte dann letztere Aussage zum 64er Netz nicht auch für das vorher erwähnte 48er oder 56er gelten? Wenn man aus dem dem einen Netz was schneidet und damit ARP und Co. aus dem Tritt bringt, warum dann nicht aus dem anderen?
Wenn man tatsächlich einen Proxy für NDP betreiben müsste, sollte das folgendermaßen gehen:
sysctl -w net.ipv6.conf.all.proxy_ndp=1 ip -6 neigh add proxy IPv6:of:routers:internal:side::interface dev ethX
Ronny Seffner ronny@seffner.de (Sa 27 Jan 2018 10:48:21 CET):
Rechner A hängt am Internet und arbeitet als Firewall und Proxy-Server. Dazu hat er zwei LAN-Ports. eth0 hat vom Provider eine IPv4-Adresse und einen IPv6-Block ( /64) erhalten.
Diesen IPv6 /64 hat er vermutlich auf der Außenseite. Auch wenn es da nur ein kleines Transfernetz ist.
Ich vermute hier eine Unschärfe in des OP Formulierung. Bei allen Providern, die ich bisher mit IPv6 sah, bekommt der Router eine IPv6 UND ein Subnetz. Meine Antworten bezogen sich dann auf die "Verteilung" der Subnetzdaten.
das sie über die IPv6-Adresse Deiner Außenseite routen wollen. Dann kannst Du Dir da eine /64 Scheibe rausschneiden und nach innen weiterreichen (radvd wäre Dein Freund).
...
Die Gegenseite Deiner Außenseite wird davon ausgehen, daß das komplette /64 zwischen ihr und Dir liegt, also ggf. die IPv6-Entsprechung von Arp-Requests (Neighbourhood Detection oder so) versuchen, wenn eine der Adressen angesprochen wird.
Warum sollte dann letztere Aussage zum 64er Netz nicht auch für das vorher erwähnte 48er oder 56er gelten?
Ich meine, diese /48 oder /56 sind so auf der Seite des Providers eingerichtet, daß er davon ausgeht, es über Deinen Router routen zu können. Er wird also für Adressen des /48 keine ND durchführen, sondern diese geradwegs zu Deinem Router schicken.
Wenn man aus dem dem einen Netz was schneidet und damit ARP und Co. aus dem Tritt bringt, warum dann nicht aus dem anderen?
s.o. Weil ich davon ausgehe:
provider ------------------- router --------------------- HOME 2001:db8:47:11::/64 2001:db8:8:15::/48
In des Providers Routing-Tabelle vermute ich
2001:db8:8:15::/48 via 2001:db8:47:11:<router-id>
Wenn man tatsächlich einen Proxy für NDP betreiben müsste, sollte das folgendermaßen gehen:
sysctl -w net.ipv6.conf.all.proxy_ndp=1 ip -6 neigh add proxy IPv6:of:routers:internal:side::interface dev ethX
Aha. Kannte ich nicht. Danke.
Hallo,
erst mal vielen Dank für den Hinweis mit radvd . Der sollte wirklich mein Problem lösen, allerdings muss ich mich noch genauer mit der Konfiguration beschäftigen.
Am 26.01.2018 um 23:46 schrieb Heiko Schlittermann:
Reiner Klaproth r.klaproth@online.de (Fr 26 Jan 2018 20:46:03 CET):
Rechner A hängt am Internet und arbeitet als Firewall und Proxy-Server. Dazu hat er zwei LAN-Ports. eth0 hat vom Provider eine IPv4-Adresse und einen IPv6-Block ( /64) erhalten.
Diesen IPv6 /64 hat er vermutlich auf der Außenseite. Auch wenn es da nur ein kleines Transfernetz ist.
Richtig. Das Segment bekomme ich jeweils vom Provider (Telekom, 1und1 bzw. Kabel Deutschland aka Vodafone). Mal über das DSL-Protokoll, mal per Fritz!Box, mal per DHCP vom Kabel-Router.
Richtig ist auch: Telekom gibt mir eine /48, die anderen eine /64. Da es nur wenige einzelne Rechner B sind, reicht es aus.
Sicher kannst Du auch irgendwie mogeln und Dir aus dem vorhanden /64 was nehmen, aber ich glaube, daß das nicht Sinn von IPv6 ist. Auch könntest Du es mit IPv6-NAT versuchen, aber eigentlich auch das ist nicht Sinn von IPv6.
Das scheint aber der radvd zu machen. In der radvd.conf wird eth1 (internes Netz) eine IPv6 gegeben, die in der Beschreibung als "lokales Routing" beschrieben wird. Per DHCPD6 wird aus diesem Segment wieder eine IPv6 vergeben. Dieses Netz scheint radvd zu maskieren. Den Rest teste ich in den nächsten Tagen.
Vielen Dank Reiner
Hi,
On Friday, 26 January 2018 20:46:03 CET Reiner Klaproth wrote:
ich brauche mal (Nach-)Hilfe in Sachen Routing mit IPv6.
Rechner A hängt am Internet und arbeitet als Firewall und Proxy-Server. Dazu hat er zwei LAN-Ports. eth0 hat vom Provider eine IPv4-Adresse und einen IPv6-Block ( /64) erhalten. eth1 als interner Anschluss macht auf 172.16.0.1/16 den IPv4-Verkehr mit Masquerading.
Ich nehme an dass das übliche Router Advertising bzw. DHCPv6 dafür benutzt wurde. Wie genau kam das Prefix bei Dir an? RA oder DHCP?
Rechner B kommt ins Internet mit IPv4. Allerdings gibt es ständig Meldungen, dass er per IPv6-Adresse, die er per Namensauflösung erhält, nichts erreicht. Rechner B soll also auch per IPv6 ins Internet, eventuell mit einer der Adressen aus dem zugewiesenen IPv6-Block.
Wie sage ich Rechner A, dass er
- bestimmte Adressen aus dem IPv6-Block auf Port eth1 weiter reichen
kann und
- er diese Adressen entsprechend routet
Normalerweise passiert folgendes beim Aufbau einer Verbindung für Router:
1) es läuft das Autoconfiguration Protokoll:
1a) das Interface (eth0) erzeugt sich eine Link-Local Adresse (fe80::***) aus seiner MAC (Ethernet) oder per Protokoll-Mechanismus (PPP)
1b) es fragt auf dem Link ob es diese Adresse schon gibt, falls sich jemand meldet wird eine neue Adresse erzeugt und es geht von vorn los (RFC4861)
1c) das Interface (eth0) fragt auf seiner Leitung ob es irgendwo einen Router gibt (RFC4862)
1d) der Router antwortet mit einem Router Advertisement, dieses enthält die Link-Local Adresse des Routers und die Prefix-Länge (FE80::**.../64), je nach Konfiguration des Routers kann es auch das öffentliche Prefix (/64) des Link enthalten
1e) das Interface setzt seine Default Route (bei IPv6 haben potentiell alle Interfaces eine Default-Route) auf den Router
1f) falls ein (oder mehrere) öffentliches Prefix kam konfiguriert es auch seine öffentliche IP Adresse und prüft diese per Neighbor Discovery
Hinweis: Prefixe die per RA verteilt werden dürfen NUR auf diesem Link benutzt werden! (Man kann mogeln aber wird nicht glücklich dabei.)
2) es passiert eine Prefix-Delegation per DHCPv6:
2a) der DHCPv6 Client auf dem Interface fragt einem DHCP Server auf dem Link
2b) falls es einen Server gibt verteilt dieser eine optionale statische Adresse und eine Prefix Delegation (RFC3633)
2c) die statische Adresse wird dem Interface zugewiesen (auf Linux darf ein Interface bis zu 16 Adressen gleichzeitig haben)
2d) das Prefix wird (normalerweise per Shell-Script) in den RAdvD der anderen Interfaces einkonfiguriert und dann verteilt (optional können Teile davon an weitere DHCP-Server und Subnetze verteilt werden)
2e) alle anderen Rechner holen sich das Prefix von Deinem RAdvD und konfigurieren sich selbst
Ich nehme also mal ganz stark an dass Du hier über das Prefix aus dem Router Advertisement redest, das ist für Deinen externen Link bestimmt. Du brauchst zusätzlich noch eine DHCP-PD für das interne Netz.
Konrad
lug-dd@mailman.schlittermann.de