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?
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:
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 eseth0
(prefix-interface eth0
) zu.interface
(es gibt gute Beispiele in derradvd.conf
Manpage, von denen aus Sie arbeiten können), und es funktioniert einfach.quelle
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.
quelle