dyndns ipv6
Florian Lohoff
f at zz.de
Sat Apr 19 19:32:28 CEST 2025
Hola,
lange mail mit viel Erklärungen zu v6 :) v6 ist einfach toll
und löst so viele Themen die man mit v4 hatte - Aber es ist
eben anders.
On Thu, Apr 17, 2025 at 02:05:56PM +0200, Hans-Joachim Hoetger wrote:
>Ich habe gefunden, dass der Prefix
>fd5c:1d4f:d0e3:0:d65c:b2b8:1881:9f/66 vom avahi-daemon
>vergeben wird. Der ist dann wohl nicht geeignet um ihn in
>den dyndns zu schreiben. Ebenso die lo Adresse (fe8::). Es
>bleiben die beiden 2a02 Adressen. Ich habe festgestellt,
>dass ich tatsächlich beide melden kann und der Rechner ist
>erreichbar. Kann mich mal jemand beraten? Warum habe ich
>überhaupt zwei Prefixe? Würdet Ihr immer die mit dem
>längeren Prefix melden? Die sichere Lösung ist bestimmt,
>wenn ich mir in einer Datei merke, welche Adresse ich
>gemeldet habe und die dann so lange nehme, wie sie gültig
>ist. (-> /var/cache/inadyn/) Oder ist es vielleicht sogar
>sicherer, sofort die neue Adresse zu nehmen, wenn ein neuer
>Prefix zur Verfügung steht?
fe80::/16 sind "Link Local" Addresses - das was unter
v4 169.154.x.y sind.
Anders als unter v4 sind Link Locals unter v6 essentiell. Ohne link
locals funktioniert unter v6 kein ARP aka "Neighbour Discovery" das
im v6 als Multicast implementiert ist (v4 ARP ist L2 Broadcast)
D.h. was dein interface macht ist als erstes nach dem Hochfahren aus
der MAC Addresse und dem fe80::/16 prefix eine IP Addresse zu bauen.
Anders als bei v4 wird ja bei v6 einfach aus der MAC Addresse eine IPv6
Addresse gebaut und dann einfach DAD (Duplicate Address Detection)
gemacht.
Wenn du dann eine v6 link local address hast könntest du DHCPv6 machen.
Normalerweise wird aber einfach SLAAC (StateLess Address
AutoConfiguration) gemacht. SLAAC funktioniert in dem a) Der client
ein "Router Solicititation" ICMP paket mit seiner v6 Link Local address
schickt. Auf den SLAAC Router Solicit Antworten dann alle Router mit
ihren Prefixen und noch so ein bisschen anderes Gemüse oder b) Dein client
warte bis der regular Router Solicit kommt.
Der Prefix MUSS bei Broadcast Medien (Ethernet, Wifi, Token Ring) ein /64 sein.
Wenn du diesen Prefix bekommst baut dein IPv6 Stack im Kernel aus dem v6 Prefix
und der MAC Addresse die komplette v6 Addresse zusammen.
So - nun haben wir eine fe80::/16 und eine Global address.
Dann kann es noch dazu kommen das du eine ULA (Unique Local Address)
bekommst. ULA ist das was bei v4 RFC1918 aka
192.168.0.0/10.0.0.0/172.16.0.0 etc waren. ULA werden per definition
nicht im Internet geroutet, aber die kannst und solltest du benutzen
wenn du bei dir zuhause z.b. einen NFS server mountest. DENN - Die
Global address verändert sich ja ggfs nach jedem Router Reconnect. Die
ULA nicht. Der ULA Addressspace ist fc00::/7 also z.b. fd12:f00:ba7::.
Damit hast du dann auf deinem Interface
1. Eine Link Local aus fe80::/16
2. Eine ULA Addresse aus fc00::/7
3. Eine Global Addresse
Bis hier her war NUR die ULA optional. So - Jetzt könntest du
theoretisch noch die v6 Privacy Extensions einschalten. Wenn du das
machst erzeugt dein Kernel alle X Minuten eine dynamische und zufällig
Addresse. Diese wird für dann ALLE ausgehenden Verbindungen benutzt.
Damit tauchst du auf der Gegenseite Permanent mit neuen Addressen auf.
Alte Addressen bleiben auf dem Interface mit alle sockets zu sind. D.h.
es kann dir passieren das du da so 5-10 temporäre addressen auf dem
Interface hast. Diese Addressen kann man alle anhand ihres scopes
unterscheiden.
So - Den MAC Address teil deine link local, ULA oder global address wird
mit dem verfahren EUI64 erzeugt:
flo at p5:~$ ipv6calc --mac_to_eui64 8c:8c:aa:86:4f:40
8e8c:aaff:fe86:4f40
Hier mal auf meinem Rechner aktuell:
flo at p5:~$ ip -6 addr show dev enp2s0f0
2: enp2s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
inet6 2a00:4841:1740:800:ba32:7770:f45c:a9ce/64 scope global temporary dynamic
valid_lft 6676sec preferred_lft 3076sec
Das ist eine privacy extension ip address (temporary) im global address scope
inet6 2a00:4841:1740:800:8e8c:aaff:fe86:4f40/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 6676sec preferred_lft 3076sec
Das ist eine dynamic address aus SLAAC - global scope
inet6 fd11:f10:f10:2:fec8:6fa6:8bed:38b3/64 scope global temporary dynamic
valid_lft 6676sec preferred_lft 3076sec
ULA address mit privacy extension
inet6 fd11:f10:f10:2:8e8c:aaff:fe86:4f40/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 6676sec preferred_lft 3076sec
ULA via SLAAC configuriert
inet6 fe80::8e8c:aaff:fe86:4f40/64 scope link noprefixroute
valid_lft forever preferred_lft forever
Link local für ARP aka Neighbour Discovery, IGMP aka MLD.
So - für ausgehende Verbindungen wird von oben nach unten gearbeitet wenn du nichts besonderes
angibst.
D.h. Ausgehende verbindungen würden hier mit 2a00:4841:1740:800:ba32:7770:f45c:a9ce/64
rausgehen. Eingehend gehen alle.
flo at p5:~$ ip -6 addr show dev enp2s0f0
2: enp2s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
inet6 2a00:4841:1740:800:ba32:7770:f45c:a9ce/64 scope global temporary dynamic
valid_lft 7101sec preferred_lft 3501sec
inet6 2a00:4841:1740:800:8e8c:aaff:fe86:4f40/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 7101sec preferred_lft 3501sec
inet6 fd11:f10:f10:2:fec8:6fa6:8bed:38b3/64 scope global temporary dynamic
valid_lft 7101sec preferred_lft 3501sec
inet6 fd11:f10:f10:2:8e8c:aaff:fe86:4f40/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 7101sec preferred_lft 3501sec
inet6 fe80::8e8c:aaff:fe86:4f40/64 scope link noprefixroute
valid_lft forever preferred_lft forever
SO - wenn du jetzt die addresse für v6 haben willst dann nimmst du die die permanent ist,
und eben im global scope.
Also aus dem hier die erste:
flo at p5:~$ ip -6 addr show scope global dev enp2s0f0 dynamic mngtmpaddr
2: enp2s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
inet6 2a00:4841:1740:800:8e8c:aaff:fe86:4f40/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 6977sec preferred_lft 3377sec
inet6 fd11:f10:f10:2:8e8c:aaff:fe86:4f40/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 6977sec preferred_lft 3377sec
Hier die variante ohne groß zu parsen - ip als json output und dann mit
jq selektieren:
flo at p5:~$ ip -j -6 addr show scope global dev enp2s0f0 dynamic mngtmpaddr | jq -r .[0].addr_info[1].local
2a00:4841:1740:800:8e8c:aaff:fe86:4f40
Flo
--
Florian Lohoff f at zz.de
Any sufficiently advanced technology is indistinguishable from magic.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lug-owl.de/pipermail/linux/attachments/20250419/6c7caedb/attachment.sig>
More information about the Linux
mailing list