Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung |
linux:radvd [09.07.2024 15:58. ] – [Musterkonfiguration GUA via SLAAC und ULA via DHCPv6] django | linux:radvd [10.07.2024 18:40. ] (aktuell) – [RA — Router Advertisement (ICMPv6 type 134)] django |
---|
| |
=== RA — Router Advertisement (ICMPv6 type 134) === | === RA — Router Advertisement (ICMPv6 type 134) === |
**Router Advertisment Nachrichten** werden vom Server entweder regelmässig an alle Clients im Netz oder ebnen speziell auf An Anfrage durch einen Client versandt. Es handelt sich also im ersten Fall um eine ICMPv6-Nachricht, die an die All-Nodes-Multicast-Adresse (ff02::1) oder eben als Unicast-Nachricht an einen bestimmten Host gesendet wird. | **Router Advertisment Nachrichten** werden vom Server entweder regelmässig an alle Clients im Netz oder ebnen speziell auf An Anfrage durch einen Client versandt. Es handelt sich also im ersten Fall um eine ICMPv6-Nachricht, die an die All-Nodes-Multicast-Adresse (ff02::1) oder eben als Unicast-Nachricht an einen bestimmten Host gesendet wird.e |
* Ein Router verwenden diese RA-Nachrichten, um seine Anwesenheit, Netzwerkparameter und weitere Konfigurationsoptionen für Hosts bekannt zu geben. | * Ein Router verwenden diese RA-Nachrichten, um seine Anwesenheit, Netzwerkparameter und weitere Konfigurationsoptionen für Hosts bekannt zu geben. |
* Hosts verwerten diese RA-Nachrichten, um daraus z.B. den Default-Router, den bzw. die Netzwerk-Präfixe, die Link-MTU oder ob z.B. ein DHCPv6-Server im Netz verfügbar ist, sowie weitere relevante Netzwerkinformationen abzuleiten. \\ Ist ein DHCPv6-Server verfügbar ist, wird dies durch zwei Flags in der Router-Ankündigung angezeigt. Diese Flags sind das Konfigurationsflag für die verwaltete Adresse und das andere Konfigurationsflag. Das M-Bit und das O-Bit werden verwendet, um diese Flaggen zu setzen. Das M-Bit zeigt an, dass DHCPv6-Dienste für Adress- und Konfigurationseinstellungen verfügbar sind. Das O-Bit zeigt an, ob andere Konfigurationsparameter als die IP-Adresse über den DHCPv6-Dienst verfügbar sind. RAs bestehen also aus bestimmten Flags und Optionen (Präfix, MTU, DNS, SLLA - Src Link-Layer Address). Die wichtigsten Optionen sind hierbei: | * Hosts verwerten diese RA-Nachrichten, um daraus z.B. den Default-Router, den bzw. die Netzwerk-Präfixe, die Link-MTU oder ob z.B. ein DHCPv6-Server im Netz verfügbar ist, sowie weitere relevante Netzwerkinformationen abzuleiten. \\ Ist ein DHCPv6-Server verfügbar ist, wird dies durch zwei Flags in der Router-Ankündigung angezeigt. Diese Flags sind das Konfigurationsflag für die verwaltete Adresse und das andere Konfigurationsflag. Das M-Bit und das O-Bit werden verwendet, um diese Flaggen zu setzen. Das M-Bit zeigt an, dass DHCPv6-Dienste für Adress- und Konfigurationseinstellungen verfügbar sind. Das O-Bit zeigt an, ob andere Konfigurationsparameter als die IP-Adresse über den DHCPv6-Dienst verfügbar sind. RAs bestehen also aus bestimmten Flags und Optionen (Präfix, MTU, DNS, SLLA - Src Link-Layer Address). Die wichtigsten Optionen sind hierbei: |
* **Home-Agent H-Flag**: Dieses Flag wird verwendet, um anzuzeigen, dass es sich bei dem beworbenen Präfix um ein Heimnetzwerk-Präfix handelt, insbesondere für Mobile IPv6, dass sie also somit als Home Agent für Mobile IPv6 fungieren und Dienste für mobile Knoten bereitstellen können. | * **Home-Agent H-Flag**: Dieses Flag wird verwendet, um anzuzeigen, dass es sich bei dem beworbenen Präfix um ein Heimnetzwerk-Präfix handelt, insbesondere für Mobile IPv6, dass sie also somit als Home Agent für Mobile IPv6 fungieren und Dienste für mobile Knoten bereitstellen können. |
* **On-link L-Flag**: Ist dieses Flag gesetzt, wird definiert dass ein bestimmtes Präfix als "on-link" betrachtet wird, d.h. dass Hosts Adressen innerhalb dieses Präfixes verwenden können, um direkt mit anderen Hosts auf demselben Link zu kommunizieren. Ist das L-Flag nicht gesetzt, müssen Hosts einen Router verwenden um Hosts in diesem Präfix erreichen zu können. | * **On-link L-Flag**: Ist dieses Flag gesetzt, wird definiert dass ein bestimmtes Präfix als "on-link" betrachtet wird, d.h. dass Hosts Adressen innerhalb dieses Präfixes verwenden können, um direkt mit anderen Hosts auf demselben Link zu kommunizieren. Ist das L-Flag nicht gesetzt, müssen Hosts einen Router verwenden um Hosts in diesem Präfix erreichen zu können. |
* **Managed M-Flag** : Eine '1' bedeutet, dass die Adresse durch stateful DHCPv6 bereitgestellt wird. | * **Managed M-Flag** : Eine '1' bedeutet, dass die Adresse durch Stateful DHCPv6 bereitgestellt wird. |
* **Other O-Flag** : Eine '1' bedeutet, dass die Adresse von Stateless DHCPv6 bereitgestellt wird, was für die Bereitstellung von Optionen nützlich ist, wenn der Client SLAAC-StatelessAddress Autoconfiguration durchführt. | * **Other O-Flag** : Eine '1' bedeutet, dass die Adresse von Stateless DHCPv6 bereitgestellt wird, was für die Bereitstellung von Optionen nützlich ist, wenn der Client SLAAC-StatelessAddress Autoconfiguration durchführt. |
* **Router-Präferenz (Prf)**: Der Wert in diesem Feld steht für die Präferenzstufe des Routers, der die RA-Nachricht sendet. So wird z.B. darüber ermittelt ob das Gateway als Standardgateway fungieren soll. Das Prf-Feld kann drei Werte annehmen: Hoch (0x00), Mittel (0x40) oder Niedrig (0x80). Router mit einem höheren Präferenzwert werden gegenüber Routern mit niedrigeren Werten bevorzugt. | * **Router-Präferenz (Prf)**: Der Wert in diesem Feld steht für die Präferenzstufe des Routers, der die RA-Nachricht sendet. So wird z.B. darüber ermittelt ob das Gateway als Standardgateway fungieren soll. Das Prf-Feld kann drei Werte annehmen: Hoch (0x00), Mittel (0x40) oder Niedrig (0x80). Router mit einem höheren Präferenzwert werden gegenüber Routern mit niedrigeren Werten bevorzugt. |
- **[[#slaac_-_ipv6_stateless_address_auto-configuration|Konfigurationsbeispiel: SLAAC - IPv6 Stateless Address Auto-configuration]]** | - **[[#slaac_-_ipv6_stateless_address_auto-configuration|Konfigurationsbeispiel: SLAAC - IPv6 Stateless Address Auto-configuration]]** |
- **[[#router_advertisement_icmpv6-nachrichten_fuer_stateful_dhcpv6|Konfigurationsbeispiel: DHCPv6 - stateless und stateful]]** | - **[[#router_advertisement_icmpv6-nachrichten_fuer_stateful_dhcpv6|Konfigurationsbeispiel: DHCPv6 - stateless und stateful]]** |
- **[[#musterkonfiguration|Musterkonfiguration für GUA via SLAAC und statischen festen ULA mit Hilfe von DHCPv6]]** FIXME //..coming soon..// FIXME | - **[[#musterkonfiguration_gua_via_slaac_und_ula_via_dhcpv6|Musterkonfiguration für GUA via SLAAC und statischen festen ULA mit Hilfe von DHCPv6]]** |
</WRAP> | </WRAP> |
| |
</WRAP> | </WRAP> |
| |
Warum ist das nun so? Ganz einfach, weil am Client-Renchner noch keine Privacy Extension ausgewählt wurde. Werfen wir einen Blick in die betreffende Konfigurationsdatei **''/etc/sysctl.d/10-ipv6-privacy.conf''**. | Warum ist das nun so? Ganz einfach, weil am Client-Rechner noch keine Privacy Extension ausgewählt wurde. Werfen wir einen Blick in die betreffende Konfigurationsdatei **''/etc/sysctl.d/10-ipv6-privacy.conf''**. |
# vim /etc/sysctl.d/10-ipv6-privacy.conf | # vim /etc/sysctl.d/10-ipv6-privacy.conf |
<file bash /etc/sysctl.d/10-ipv6-privacy.conf># Django : manual on 2024-06-27 | <file bash /etc/sysctl.d/10-ipv6-privacy.conf># Django : manual on 2024-06-27 |
| |
==== Musterkonfiguration GUA via SLAAC und ULA via DHCPv6 ==== | ==== Musterkonfiguration GUA via SLAAC und ULA via DHCPv6 ==== |
| === Grundüberlegungen === |
In den beiden vorgenannten Konfigurationsbeispielen **[[#konfigurationsbeispiel_fuer_slaac|Konfigurationsbeispiel für SLAAC]]** und **[[#konfigurationsbeispiel_dhcpv6|Konfigurationsbeispiel DHCPv6]]** haben wir gesehen, dass wir mit den **''M''**- und **''A''**-Flag steuern können, wie ein Client, wenn er sich mit unserem Netzwerk verbindet, zu einer oder mehreren IP-v6-Adressen kommen kann. Auch da Thema **[[#slaac_und_privacy_extension_-_konfiguration_der_arch_linux_clients|SLAAC und Privacy Extension]]** bei de Konfiguration der (Arch Linux) Clients haben wir uns im Detail vorgenommen. | In den beiden vorgenannten Konfigurationsbeispielen **[[#konfigurationsbeispiel_fuer_slaac|Konfigurationsbeispiel für SLAAC]]** und **[[#konfigurationsbeispiel_dhcpv6|Konfigurationsbeispiel DHCPv6]]** haben wir gesehen, dass wir mit den **''M''**- und **''A''**-Flag steuern können, wie ein Client, wenn er sich mit unserem Netzwerk verbindet, zu einer oder mehreren IP-v6-Adressen kommen kann. Auch da Thema **[[#slaac_und_privacy_extension_-_konfiguration_der_arch_linux_clients|SLAAC und Privacy Extension]]** bei de Konfiguration der (Arch Linux) Clients haben wir uns im Detail vorgenommen. |
| |
O.K. das **''O''**-Flag macht uns keine Sorgen, das setzen wir ja immer auf **''on''**. Das **A-Flag** wird über die Konfigurationsoption **''AdvAutonomous''** entweder auf **''on''** bei **SLAAC** gesetzt und auf **''off''** **bei DHCPv6**. Da diese Option im jeweiligen Prefix-Abschnitt in der Konfigurationsdatei **''radvd.conf''** definiert wird, ist das auch keine allzu grosse Herausforderung. O.K. was bleibt übrig? Richtig, das **''M''**-Flag, welches bei **SLAAC** mit der Konfigurationsoption **''AdvManagedFlag''** auf **''off''** gesetzt werden muss und bei **DHCPv6** eben auf **''on''**. Tja aber leider ist die Konfigurationsoption **''AdvManagedFlag''** **__global__** in der Konfigurationsdatei **''radvd.conf''**, sie kann also nur **__1x__** definiert werden und leider nicht **__2-mal__** wie wir es eigentlich bräuchten! | O.K. das **''O''**-Flag macht uns keine Sorgen, das setzen wir ja immer auf **''on''**. Das **A-Flag** wird über die Konfigurationsoption **''AdvAutonomous''** entweder auf **''on''** bei **SLAAC** gesetzt und auf **''off''** **bei DHCPv6**. Da diese Option im jeweiligen Prefix-Abschnitt in der Konfigurationsdatei **''radvd.conf''** definiert wird, ist das auch keine allzu grosse Herausforderung. O.K. was bleibt übrig? Richtig, das **''M''**-Flag, welches bei **SLAAC** mit der Konfigurationsoption **''AdvManagedFlag''** auf **''off''** gesetzt werden muss und bei **DHCPv6** eben auf **''on''**. Tja aber leider ist die Konfigurationsoption **''AdvManagedFlag''** **__global__** in der Konfigurationsdatei **''radvd.conf''**, sie kann also nur **__1x__** definiert werden und leider nicht **__2-mal__** wie wir es eigentlich bräuchten! |
</WRAP> | </WRAP> |
| |
| === radvd Konfiguration === |
Wie wir aber dennoch eine funktionierende Konfiguration des **radvd** hierzu hinbekommen werden wir uns nun ansehen. **SPOILER**: Ja die Konfiguration läuft wirklich uns wurde in fast Tagelangen nein Nächtelangen **[[https://de.wikipedia.org/wiki/Versuch_und_Irrtum|triel-and-error]]** Runden mehrfach validiert1 In unserem Konfigurationsbeispiel gehen wir von folgenden Rahmenbedingungen aus: | Wie wir aber dennoch eine funktionierende Konfiguration des **radvd** hierzu hinbekommen werden wir uns nun ansehen. **SPOILER**: Ja die Konfiguration läuft wirklich uns wurde in fast Tagelangen nein Nächtelangen **[[https://de.wikipedia.org/wiki/Versuch_und_Irrtum|triel-and-error]]** Runden mehrfach validiert1 In unserem Konfigurationsbeispiel gehen wir von folgenden Rahmenbedingungen aus: |
| |
# radvd -cC /etc/radvd.conf | # radvd -cC /etc/radvd.conf |
| |
[Jun 28 17:38:26] radvd (1284): config file, /etc/radvd.conf, syntax ok | [Jul 09 17:59:05] radvd (1264): config file, /etc/radvd.conf, syntax ok |
| |
Nun starten wir unseren **radvd** Daemon. | Nun starten wir unseren **radvd** Daemon. |
# journalctl -fu radvd | # journalctl -fu radvd |
| |
Jun 28 17:42:47 vml000110 systemd[1]: Started IPv6 Router Advertisement Daemon. | <code>Jul 09 18:00:37 vml000110 systemd[1]: Started IPv6 Router Advertisement Daemon. |
Jun 28 17:42:47 vml000110 radvd[1317]: [Jun 28 17:42:47] radvd (1317): version 2.19 started | Jul 09 18:00:37 vml000110 radvd[1296]: [Jul 09 18:00:37] radvd (1296): version 2.19 started</code> |
| Bei Bedarf können wir natürlich auch den Status unseres Daemons jederzeit abfragen. |
Bei Beadrf können wir natürlich auch den Status unseres Daemons jederzeit abfragen. | |
# systemctl status radvd.service | # systemctl status radvd.service |
| |
<font style="color: rgb(29, 180, 29)"><b>●</b></font> radvd.service - IPv6 Router Advertisement Daemon | <font style="color: rgb(29, 180, 29)"><b>●</b></font> radvd.service - IPv6 Router Advertisement Daemon |
Loaded: loaded (/usr/lib/systemd/system/radvd.service; </font><font style="color: rgb(29, 180, 29)"><b>disabled</b></font>; preset: <font style="color: rgb(201, 214, 95)"><b>disabled</b></font>) | Loaded: loaded (/usr/lib/systemd/system/radvd.service; </font><font style="color: rgb(29, 180, 29)"><b>disabled</b></font>; preset: <font style="color: rgb(201, 214, 95)"><b>disabled</b></font>) |
Active:<font style="color: rgb(29, 180, 29)"><b>active (running)</b></font> since Fri 2024-06-28 17:42:47 CEST; 11min ago | Active:<font style="color: rgb(29, 180, 29)"><b>active (running)</b></font> since Tue 2024-07-09 18:00:37 CEST; 1min 19s ago |
Invocation: 3d6734874ec54a44b3e94fa6cbebee0a | Invocation: bc40f348d21e45bf83b5976494e7fe39 |
Main PID: 1317 (radvd) | Main PID: 1296 (radvd) |
Tasks: 2 (limit: 9510) | Tasks: 2 (limit: 9510) |
Memory: 380K (peak: 1.5M) | Memory: 368K (peak: 1.5M) |
CPU: 15ms | CPU: 13ms |
CGroup: /system.slice/radvd.service | CGroup: /system.slice/radvd.service |
├─1317 /usr/bin/radvd --nodaemon | ├─1296 /usr/bin/radvd --nodaemon |
└─1318 /usr/bin/radvd --nodaemon | └─1297 /usr/bin/radvd --nodaemon |
| |
Jun 28 17:42:47 vml000110 systemd[1]: Started IPv6 Router Advertisement Daemon. | Jul 09 18:00:37 vml000110 systemd[1]: Started IPv6 Router Advertisement Daemon. |
Jun 28 17:42:47 vml000110 radvd[1317]: [Jun 28 17:42:47] radvd (1317): version 2.19 started</font></pre> | Jul 09 18:00:37 vml000110 radvd[1296]: [Jul 09 18:00:37] radvd (1296): version 2.19 started</font></pre> |
</html> | </html> |
| |
| |
Nun prüfen wir, ob unser **radvd** auch die richtigen Router Advertisement ICMPv6 Nachrichten ins Netz schickt. Hier bieten sich zwei mögliche Varianten an: | Nun prüfen wir, ob unser **radvd** auch die richtigen Router Advertisement ICMPv6 Nachrichten ins Netz schickt. Hier bieten sich zwei mögliche Varianten an: |
- Mit dem Programm **''radvdump''** aus dem Paket **radvd**. Hierzu starten wir dias besagte Binary auf einem unserer Clients im lokalen Netzwerk-Segment dieses Binary. <code> # radvdump</code><code># | - Mit dem Programm **''radvdump''** aus dem Paket **radvd**. Hierzu starten wir dias besagte Binary auf einem unserer Clients im lokalen Netzwerk-Segment dieses Binary. <code> # radvdump</code><code># |
# radvd configuration generated by radvdump 2.18 | # radvd configuration generated by radvdump 2.18 |
# based on Router Advertisement from fe80::10:ff:fe10:110 | # based on Router Advertisement from fe80::10:ff:fe10:110 |
# received by interface enp0s25 | # received by interface enp0s25 |
# | # |
| |
interface enp0s25 | interface enp0s25 |
{ | { |
AdvSendAdvert on; | AdvSendAdvert on; |
# Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump | # Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump |
AdvManagedFlag off; | AdvManagedFlag on; |
AdvOtherConfigFlag on; | AdvOtherConfigFlag on; |
AdvReachableTime 0; | AdvReachableTime 0; |
AdvRetransTimer 0; | AdvRetransTimer 0; |
AdvCurHopLimit 64; | AdvCurHopLimit 64; |
AdvDefaultLifetime 1800; | AdvDefaultLifetime 1800; |
AdvHomeAgentFlag off; | AdvHomeAgentFlag off; |
AdvDefaultPreference medium; | AdvDefaultPreference medium; |
AdvSourceLLAddress on; | AdvSourceLLAddress on; |
| |
prefix 2001:a:bcd:1234::/64 | prefix 2001:a:bcd:1234::/64 |
{ | { |
AdvValidLifetime 5400; | AdvValidLifetime 5400; |
AdvPreferredLifetime 2700; | AdvPreferredLifetime 2700; |
AdvOnLink on; | AdvOnLink on; |
AdvAutonomous on; | AdvAutonomous on; |
AdvRouterAddr off; | AdvRouterAddr off; |
}; # End of prefix definition | }; # End of prefix definition |
| |
| |
prefix fdb6:cb48:9d77::/64 | prefix fdb6:cb48:9d77::/64 |
{ | { |
AdvValidLifetime 5400; | AdvValidLifetime 5400; |
AdvPreferredLifetime 2700; | AdvPreferredLifetime 2700; |
AdvOnLink on; | AdvOnLink on; |
AdvAutonomous on; | AdvAutonomous off; |
AdvRouterAddr off; | AdvRouterAddr off; |
}; # End of prefix definition | }; # End of prefix definition |
| |
| |
route 2001:a:bcd:1234::/64 | route 2001:a:bcd:1234::/64 |
{ | { |
AdvRoutePreference medium; | AdvRoutePreference medium; |
AdvRouteLifetime 1800; | AdvRouteLifetime 1800; |
}; # End of route definition | }; # End of route definition |
| |
| |
route fdb6:cb48:9d77::/64 | route fdb6:cb48:9d77::/64 |
{ | { |
AdvRoutePreference medium; | AdvRoutePreference medium; |
AdvRouteLifetime 1800; | AdvRouteLifetime 1800; |
}; # End of route definition | }; # End of route definition |
| |
}; # End of interface definition</code> In regelmäßigen Abständen tauchen also diese RA-Meldungen auf. | }; # End of interface definition</code> In regelmäßigen Abständen tauchen also diese RA-Meldungen auf. |
- Mit Hilfe von **''tcpdump''** können wir auch die RA-Meldungen mitschneiden und darstellen, in nachfolgenden Beispiel ist der Name des Netzwerkinterfaces **''enp0s15''**.<code> # tcpdump -vi enp0s25 "icmp6[icmp6type] == icmp6-routeradvert"</code><code>tcpdump: listening on enp0s25, link-type EN10MB (Ethernet), snapshot length 262144 bytes | - Mit Hilfe von **''tcpdump''** können wir auch die RA-Meldungen mitschneiden und darstellen, in nachfolgenden Beispiel ist der Name des Netzwerkinterfaces **''enp0s15''**.<code> # tcpdump -vi enp0s25 "icmp6[icmp6type] == icmp6-routeradvert"</code><code>tcpdump: listening on enp0s25, link-type EN10MB (Ethernet), snapshot length 262144 bytes |
18:09:46.840357 IP6 (flowlabel 0xc155a, hlim 255, next-header ICMPv6 (58) payload length: 136) _gateway > nitrop | 18:08:04.399616 IP6 (flowlabel 0x37bf6, hlim 255, next-header ICMPv6 (58) payload length: 136) _gateway > nitropad: [icmp6 sum ok] ICMP6, router adver |
hop limit 64, Flags [other stateful], pref medium, router lifetime 1800s, reachable time 0ms, retrans timer 0m | hop limit 64, Flags [managed, other stateful], pref medium, router lifetime 1800s, reachable time 0ms, retrans timer 0ms |
prefix info option (3), length 32 (4): 2001:a:bcd:1234::/64, Flags [onlink, auto], valid time 5400s, pref. t | prefix info option (3), length 32 (4): 2003:a:e0d:7607::/64, Flags [onlink, auto], valid time 5400s, pref. time 2700s |
prefix info option (3), length 32 (4): fdb6:cb48:9d77::/64, Flags [onlink, auto], valid time 5400s, pref. ti | prefix info option (3), length 32 (4): fdb6:cb48:9d77::/64, Flags [onlink], valid time 5400s, pref. time 2700s |
route info option (24), length 24 (3): 2001:a:bcd:1234::/64, pref=medium, lifetime=1800s | route info option (24), length 24 (3): 2003:a:e0d:7607::/64, pref=medium, lifetime=1800s |
route info option (24), length 24 (3): fdb6:cb48:9d77::/64, pref=medium, lifetime=1800s | route info option (24), length 24 (3): fdb6:cb48:9d77::/64, pref=medium, lifetime=1800s |
source link-address option (1), length 8 (1): 52:54:00:41:11:02 | source link-address option (1), length 8 (1): 52:54:00:41:11:02 |
0 packets dropped by kernel | 0 packets dropped by kernel |
</code> | </code> |
<WRAP center round tip 60%> | |
Verbindet sich nun ein Client mit dem Netzwerk, handelt dieser eigenständig seine IPv6-Adressen, wie unter **[[#was_ist_slaac_und_wie_funktioniert_es|Was ist SLAAC und wie funktioniert es]]** beschrieben, aus. | |
Der **radvd** protokolliert dies aber **__nicht__** im **journald**, da diese von der Adressgenerierung und erfolgreichen **DOD** nicht weiß!</WRAP> | |
| |
FIXME | |
| |
| === kea-dhcp6 Konfiguration === |
| Wir brauchen jetzt natürlich für die statischen **ULA** noch eine passende Konfigurationsdatei. Wir greifen nun kurz dem Kapitel **[[linux:kea|DHCPv4/v6-Server mit DHCP ISC Kea unter Arch Linux einrichten und nutzen]]** vor und werfen einen kurzen Blick auf die unkommentierte Konfigurationsdatei **''/etc/kea/kea-dhcp6.conf''** des **kea-dhcp6**-Daemon. Im besagten [[linux:kea|Kapitel]] werden wir uns noch mit dem **[[|DHCP ISC Kea]]** ähnlich detailliert auseinander setzen wir hier in diesem Kapitel **[[#dokuwiki__top|Router Advertisements mit radvd unter Arch Linux einrichten und nutzen]]**! |
| |
| # vim /etc/kea/kea-dhcp6.conf |
| ++++ Beispielkonfigurationsdatei ohne Kommentare | |
| <code>{ |
| "Dhcp6": { |
| "valid-lifetime": 4000, |
| "renew-timer": 1000, |
| "rebind-timer": 2000, |
| "preferred-lifetime": 3000, |
| "control-socket": { |
| "socket-type": "unix", |
| "socket-name": "/var/lib/kea/kea6-ctrl-socket" |
| }, |
| "interfaces-config": { |
| "interfaces": [ |
| "eth1" |
| ] |
| }, |
| "lease-database": { |
| "type": "memfile", |
| "persist": true, |
| "name": "/var/lib/kea/kea-leases6.csv", |
| "lfc-interval": 1800, |
| "max-row-errors": 100 |
| }, |
| "expired-leases-processing": { |
| "reclaim-timer-wait-time": 10, |
| "flush-reclaimed-timer-wait-time": 25, |
| "hold-reclaimed-time": 3600, |
| "max-reclaim-leases": 100, |
| "max-reclaim-time": 250, |
| "unwarned-reclaim-cycles": 5 |
| }, |
| "option-data": [ |
| { |
| "name": "dns-servers", |
| "data": "fdb6:cb48:9d77:10:0:10:110" |
| }, |
| { |
| "name": "domain-search", |
| "data": "intra.nausch.org" |
| } |
| ], |
| "subnet6": [ |
| { |
| "interface": "eth1", |
| "id": 857665, |
| "subnet": "fdb6:cb48:9d77::/64", |
| "pools": [ |
| { |
| "pool": "fdb6:cb48:9d77:10:0:10:300/120" |
| } |
| ], |
| "option-data": [ |
| { |
| "name": "dns-servers", |
| "data": "fdb6:cb48:9d77:10:0:10:110" |
| } |
| ], |
| "reservations": [ |
| { |
| "duid": "00:04:28:b0:df:3d:fd:11:6b:62:82:5c:14:95:dc:27:97:98", |
| "ip-addresses": [ "fdb6:cb48:9d77:10:0:10:73" ] |
| }, |
| { |
| "duid": "00:04:80:6f:6d:f5:a6:44:99:a4:3f:9f:09:7c:69:8d:e8:d2", |
| "ip-addresses": [ "fdb6:cb48:9d77:10:0:10:74" ] |
| } |
| ] |
| } |
| ], |
| "loggers": [ |
| { |
| "name": "kea-dhcp6", |
| "output_options": [ |
| { |
| "output": "/var/log/kea-dhcp6.log", |
| "maxsize": 1048576, |
| "maxver": 8 |
| } |
| ], |
| "severity": "DEBUG", |
| "debuglevel": 99 |
| } |
| ] |
| } |
| } |
| </code> |
| ++++ |
| |
| === IP-Adresse am Client === |
| Fragen wir die IP-Adresse des Netzwerkinterfaces ab sehen wir: |
| django@nitropad:~$ ip addr show enp0s25 |
| <code>2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 |
| link/ether 3c:97:0e:18:e4:dd brd ff:ff:ff:ff:ff:ff |
| inet 10.0.10.73/24 brd 10.0.10.255 scope global dynamic noprefixroute enp0s25 |
| valid_lft 3594sec preferred_lft 3594sec |
| inet6 fdb6:cb48:9d77:10:0:10:73/128 scope global dynamic noprefixroute |
| valid_lft 3995sec preferred_lft 2995sec |
| inet6 2001:a:bcd:1234:c79d:9c68:ff37:3f53/64 scope global temporary dynamic |
| valid_lft 5395sec preferred_lft 2695sec |
| inet6 2001:a:bcd:1234:2688:fdb0:775:c02c/64 scope global dynamic mngtmpaddr noprefixroute |
| valid_lft 5395sec preferred_lft 2695sec |
| inet6 fe80::e9a6:bb03:1544:b000/64 scope link noprefixroute |
| valid_lft forever preferred_lft forever</code> |
| |
| <WRAP center round tip 80%> |
| Wir haben neben der **IPv4** Adresse **''10.0.10.73''** und der vom Client-System generierten **LLA** **''fe80::e9a6:bb03:1544:b000/64''** mit ***''scope link noprefixroute''** noch drei weitere IPv6-Adressen erhalten. Das wäre zum einen die statische feste **ULA** **''fdb6:cb48:9d77:10:0:10:73/128''** mit **''scope global dynamic noprefixrout''** noch eine stabile dynamische IPv6 Adresse **''2001:a:bcd:1234:2688:fdb0:775:c02c/64''** mit **''scope global dynamic mngtmpaddr''** und eine temporäre "privacy" IPv6 Adresse **''2001:a:bcd:1234:c79d:9c68:ff37:3f53/64''** mit **''scope global temporary dynamic''**. Erstere ist für eingehende Verbindungen und letztere ist für ausgehende Verbindungen und wird alle gemäß der RA-Option **''AdvPreferredLifetime 2700''** alle 45 Minuten neu ausgewürfelt. |
| </WRAP> |
===== Orchestrierung - Installation und Konfiguration des radvd mit Hilfe von Ansible ===== | ===== Orchestrierung - Installation und Konfiguration des radvd mit Hilfe von Ansible ===== |
==== Aufgabenstellung ==== | ==== Aufgabenstellung ==== |