Wie konfiguriere ich radvd, dhcpd6, routing und / 64 subnet basierend auf dem vom DHCPv6-PD-Server delegierten Präfix?

10

Mein ISP hat gerade den IPv4 / IPv6-Dual-Stack-Dienst gestartet. Um eine Verbindung zum IPv4 / IPv6-Internet herzustellen, verwenden fast alle Benutzer normalerweise ein vom ISP geleastes CPE. Ich möchte jedoch meinen Linux-Router anstelle eines solchen CPE verwenden, da mein Router so viele Rollen hat (viele iptables-Regeln und 3 Ethernet-Schnittstellen, http-Reverse-Proxy, http-Cache, Memcached, SMTP / Pop-Server und DNS-Proxy). Ich möchte, dass es sich um einen IPv4 / IPv6-Dual-Stack-Router handelt.

Mein Router

  • CentOS6.0 i686
  • eth0 für WAN
  • eth1,2 für LAN
  • ISC dhcp (Version 4.1.1) installiert von "# yum install dhcp" aus CentOS-Updates Repo
  • radvd (Version 1.6) installiert von "# yum install radvd" von CentOS-base repo
  • [BEARBEITEN] Der Grund, warum ich ISC dhclient verwende, besteht darin, dass mein Router eine DHCPv6-Option 16 (Vendor-Klasse) in seinen Anforderungs- und Anforderungsnachrichten senden muss, um eine herstellerspezifische Informationsoption zu erhalten, die einige ISP-spezifische Informationen enthält ( SIP-Telefonnummer, Firmware-Serveradresse). Ich weiß, wie man Option 16 in ISC dhclient setzt, aber ich weiß es nicht in WIDE-dhcpv6. Und ich kann solche Einstellungen wie "id-assoc" in ISC dhclient nicht finden.

Mein Ziel

  • Das Präfix / 48 wird an den DHCPv6-PD-Client (DHCPv6 Prefix Delegation) (dhclient) auf eth0 delegiert.
  • Eine IPv6-Standardroute wird auf ISP festgelegt. Ich muss die verbindungslokale Adresse des DHCPv6-Servers des ISP als Standardroute betrachten.
  • Ein / 64-Subnetz und eine globale Adresse (die sich im delegierten Präfix befinden) werden jedem LAN-I / F (eth1 / eth2) zugewiesen.
  • radvd auf eth1 und eth2 kündigt RA basierend auf dem zugewiesenen / 64-Subnetz an.
  • dhcpd6 auf eth1 und eth2 kündigt zusätzliche Netzwerkinformationen (Nameserver, Domain-Suchliste und SIP-Server-Adressen) an, die vom DHCPv6-Server des ISP empfangen werden.

Meine aktuelle Konfiguration

/ etc / sysconfig / network

NETWORKING=yes
HOSTNAME=xxx.yyy.zzz

# Enable IPv6 routing and stop accept_ra/autoconf.
IPV6FORWARDING=yes

/ etc / sysconfig / network-scripts / ifcfg-eth0

DEVICE="eth0"
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=none

# Enable DHCPv6-PD client.
DHCPV6C=yes
DHCPV6C_OPTIONS="-P -cf /etc/dhcp/dhclient6.conf"

# Disable make_resolv_conf function in /sbin/dhclient-script.
PEERDNS=no

/etc/dhcp/dhclient6.conf

script "/sbin/dhclient-script";
interface "eth0" {
        send dhcp6.reconf-accept;
        also request dhcp6.vendor-opts, dhcp6.sip-servers-names, dhcp6.sip-servers-addresses, dhcp6.sntp-servers;
}

Ergebnis

Nach "# service network restart" scheint der DHCPv6-PD-Client erfolgreich beendet zu werden.

lease6 {
  interface "eth0";
  ia-pd xx:xx:xx:xx {
    starts 1312464004;
    renew 7200;
    rebind 10800;
    iaprefix 24xx:xxxx:xxxx::/48 {
      starts 1312464004;
      preferred-life 12600;
      max-life 14400;
    }
  }
  option dhcp6.client-id xx:xx:xx:xx:xx:xx:xx:xx:xx:xx;
  option dhcp6.server-id xx:xx:xx:xx:xx:xx:xx:xx:xx:xx;
  option dhcp6.reconf-accept ;
  option dhcp6.sip-servers-addresses 24xx:xxxx:xxxx:xxxx::1;
  option dhcp6.name-servers 24xx:xxxx:xxxx:xxxx::3,24xx:xxxx:xxxx:b::3;
  option dhcp6.domain-search "xxx.jp.", "yyy.jp.";
  option dhcp6.sntp-servers 24xx:xxxx:xxxx:xxxx::a,24xx:xxxx:xxxx:b::b;
}

Frage

DHCPv6-PD-Client wurde erfolgreich delegiert / 48-Präfix erfolgreich. Aber danach

  • Wie lege ich eine IPv6-Standardroute in der Routing-Tabelle des Routers fest?
  • Wie ordne ich jedem LAN-I / F (eth1 und eth2) basierend auf dem delegierten Präfix eine globale IPv6-Adresse und ein / 64-Subnetz zu?
  • Wie kann radvd ausgelöst werden, um RA auf jeder LAN-E / A (eth1 und eth2) anzukündigen?
  • Wie kann der DHCPv6-Server (dhcpd6) auf jeder LAN-E / A ausgelöst werden, um zusätzliche Netzwerkinformationen (Nameserver, Domain-Suchliste und SIP-Server-Adressen) anzukündigen, die vom DHCPv6-Server des ISP empfangen wurden?

Meine Vermutung

Laut "$ man dhclient" und "$ man dhclient-script" scheint dhclient-script zum Konfigurieren solcher Einstellungen verwendet zu werden und bietet einige Hooks. Aber jetzt tut es nichts für den DHCPv6-PD-Client.

Ja, ich muss möglicherweise einige Skripte schreiben, die für meine DHCPv6-PD-Umgebung geeignet sind, obwohl ich mit IPv6-Netzwerkkonfigurationen nicht vertraut bin. Hat mich jemand über die obigen Einstellungen in dhclient-script informiert? [EDIT] Ich möchte das praktische Dhclient-Skript kennenlernen.

Und ich mache mir Sorgen, einige besondere Überlegungen sollten angestellt werden. Da beispielsweise jede IPv6-Adresse eine bevorzugte / gültige Lebensdauer hat, muss ich beim Zuweisen einer globalen IPv6-Adresse zu einer LAN-Schnittstelle basierend auf dem delegierten Präfix nicht nur eine IPv6-Adresse zuweisen, sondern auch deren Lebensdauer, die aus der delegierten Adresse abgeleitet werden muss bevorzugte / gültige Lebensdauer des Präfixes?

Außerdem müssen Radvd- und DHCPv6-Server auf LAN-Schnittstellen möglicherweise neu konfiguriert werden, wenn eine Neukonfiguration von DHCPv6 erfolgt. Welcher Haken sollte verwendet werden?

[BEARBEITEN] Wie werden bei einer Neukonfiguration von DHCPv6 sowohl neue als auch veraltete Informationen angekündigt? radvd automatisch ankündigen, dass das vorherige Präfix veraltet ist? DHCPv6-Server meldet automatisch, dass die vorherigen Nameserver veraltet sind?

Takaomag
quelle

Antworten:

4

Ich kenne die Antwort auf Ihre Frage nicht, möchte Sie jedoch nur davor warnen, die DHCP-Serveradresse als Standardrouter zu verwenden. Wenn das funktioniert, ist es Zufall ... In IPv6 wird die Standardroute von RAs und nicht von DHCP übertragen.

Sie müssen die Weiterleitung aktivieren, RAs akzeptieren und RSs senden. Ein Problem hierbei ist, dass der in Centos6 enthaltene Kernel dies nicht zulässt. Wenn die Weiterleitung aktiviert ist, ist das Akzeptieren von RAs und das Senden von RS deaktiviert. Es sollte jedoch einen CentosPlus-Kernel mit den entsprechenden Patches geben. Siehe den Thread / die Nachricht der Mailingliste unter http://lists.centos.org/pipermail/centos/2011-April/thread.html#109756

Die relevanten Einstellungen für sysctl.conf sind:

net.ipv6.conf.all.forwarding=1
net.ipv6.conf.eth0.accept_ra=2
net.ipv6.conf.eth0.accept_ra_defrtr=1
net.ipv6.conf.eth0.router_solicitations=1
Sander Steffann
quelle
2
Eigentlich möchten Sie, dass accept_ra 2 ist (accept, auch wenn das Routing aktiviert ist). Andernfalls ignoriert der Kernel dies auf einem Router.
Kyle Butt
2
  • Eine IPv6-Standardroute sollte von Ihrer Standard-Internetverbindung (Upstream-Internetverbindung) eingerichtet werden, bevor Sie DHCPv6 PD verwenden, um die zusätzlichen Subnetze abzurufen. Sie haben nicht erwähnt, wie Sie sich tatsächlich stromaufwärts verbinden, daher kann ich Ihnen dort nicht helfen.
  • Ich verwende den WIDE DHCPv6-Client anstelle von ISC, daher weiß ich nicht, wie ich das speziell machen soll, aber ich gehe davon aus, dass ISC etwas hat, das dieser WIDE-Konfigurationsoption entspricht:

    id-assoc pd {
        prefix-interface eth0 {
            sla-id 1;
            sla-len 4;
        };
    };
    

    Grundsätzlich teilen Sie dem DHCP-Client mit, wie Subnetze internen Schnittstellen zugewiesen werden sollen. In der obigen Konfiguration heißt es: "Ich erhalte 4 an mich delegierte Präfixbits ( sla-len 4), nehme das erste verfügbare Subnetz ( sla-id 1) und weise es eth0( prefix-interface eth0) zu.

  • Richten Sie radvd mit den entsprechenden Zeilengruppen ein interface(es gibt gute Beispiele in der radvd.confManpage, von denen aus Sie arbeiten können), und es funktioniert einfach.
  • Ich kann dir dort nicht helfen. Abgesehen vom Testen verwende ich keinen DHCPv6-Dienst (ich erhalte alle meine DHCP-Informationen von meinem DHCP-Server).
womble
quelle
Danke für deine Antwort. 1. Um eine Upstream-Verbindung herzustellen, müssen Sie lediglich ein Ethernet-Kabel an ein FTTH GE-PON anschließen. Derzeit gibt es keine Möglichkeit, die Standard-IPv6-Route über DHCPv6 anzugeben. Ich muss die verbindungslokale Adresse des DHCPv6-Servers als Standardroute betrachten.
Takaomag
2. Obwohl ich nicht erwähnt habe, ist der Grund, warum ich ISC dhclient verwende, dass mein Router eine DHCPv6-Option 16 (Vendor-Klasse) in seinen Anforderungs- und Anforderungsnachrichten senden muss, um eine herstellerspezifische Informationsoption zu erhalten, die einige enthält ISP-spezifische Informationen (SIP-Telefonnummer, Firmware-Serveradresse). Ich weiß, wie man Option 16 in ISC dhclient setzt, aber ich weiß es nicht in WIDE-dhcpv6. Und ich kann solche Einstellungen wie "id-assoc" in ISC dhclient nicht finden.
Takaomag
2
3,4. Ich kann möglicherweise einige schlechte Skripte schreiben, um radvd.conf und dhcpd6.conf basierend auf Informationen (Präfix usw.) vom DHCPv6-Server zu erstellen. Aber wie kann man bei einer Neukonfiguration von DHCPv6 sowohl neue als auch veraltete Informationen ankündigen? radvd automatisch ankündigen, dass das vorherige Präfix veraltet ist? DHCPv6-Server meldet automatisch, dass die vorherigen Nameserver veraltet sind?
Takaomag
Jedenfalls möchte ich das praktische Dhclient-Skript kennenlernen.
Takaomag
Fügen Sie nicht alle diese Informationen in Kommentaren zu einer Antwort hinzu. füge es deiner Frage hinzu .
womble
-1

Wombie hat die gleiche Antwort gegeben, die ich zum Einrichten von Radv und Routing verwenden würde. Inet6 wurde für die Selbstkonfiguration entwickelt, ohne dass ein DHCP-Server erforderlich ist.

Ich verwende DHCPv6 nicht, da es von radvd und zeroconf verarbeitet werden kann. radvd kann so konfiguriert werden, dass Nameserver bereitgestellt werden, und Server können über /etc/resolv.conf angekündigt werden. Neue Versionen von radvd haben auch verteilte Suchlisten implementiert.

Ich habe avahi-daemon so konfiguriert, dass Namensdienste und Server an Clients verteilt werden. Sie benötigen Clients, die in der Lage sind, die Serviceerkennung durchzuführen. Ich habe die Serviceerkennung nicht viel getestet, da ich ein Dual-Stack-Netzwerk auf der ganzen Linie betreibe.

BillThor
quelle
Selbst wenn ich einen DHCPv6-Server oder radvd verwende, muss ich einige Skripte schreiben, um dhcpd6.conf oder radvd.conf dynamisch basierend auf Informationen (Präfix usw.) vom DHCPv6-Server zu erstellen. Aber wie kann man bei einer Neukonfiguration von DHCPv6 sowohl neue als auch veraltete Informationen an LAN-Hosts weiterleiten? Wenn ich eine neue dhcpd6.conf oder radvd.conf dynamisch nur auf der Grundlage neuer Informationen vom DHCPv6-Server erstelle, gibt radvd automatisch bekannt, dass das vorherige Präfix veraltet ist. DHCPv6-Server meldet automatisch, dass die vorherigen Nameserver veraltet sind?
Takaomag
radvd kann das Präfix :: / 64 verwenden, um seine Adressen automatisch von der Schnittstelle abzurufen. Sie müssen die Konfiguration nicht neu schreiben. DNS-Server und Suchliste sollten statische Daten sein. Die automatische IPv6-Konfiguration ist für die Migration von Adressen ausgelegt. Ich weiß nicht, wie gut Ihr ISP den Übergang unterstützt. Ich habe mir DHCPv6 nicht angesehen.
BillThor