IPv6 best practices

  • Hallo Community,


    ich habe mir einen RS 1000 gemietet und möchte mir auf dem Server ein paar IPv6 Adresse einrichten.

    Meine Fragen zu sind:


    • Wie viele IPv6 Adressen kann ich auf eth0 packen?
    • Pro IPv6 ein eigenes virtuelles Interface erstellen, also eth0:1, eth0:2, usw.. ?
    • Wie kann ich die Netzwerk Konfiguration neu laden, ohne den Server neu starten zu müssen ? (systemctl restart networking schlägt fehl)


    Habe meine /etc/network/interfaces Konfiguration so angefangen:



    Sobald ich diese Änderungen mittels systemctl restart networking quasi neu laden möchte, bekomme ich folgende Fehler:



    Wo liegt nun mein Problem begraben?


    Danke und Grüße,

    Lukas

  • Also, wenn du es unbedingt machen musst, würde ich es mit solchen Aliasen versuchen:

    Code
    auto ens3:1
    iface ens3:1 inet6 static
          address 2a03:4000:1:2:3::1
          netmask 64
          gateway fe80::1

    Allerdings würde ich dir von den virtuellen IPs abraten.

    Ich hatte gerade erst massiv Probleme, weil die Virtualisierungssoftware beim Standardtreiber nicht mit 2 "einfachen" IPv4 Adressen zurecht kam. Da gab's auf einmal Packet Loss und Verbindungsabbrüche...

  • Also, wenn du es unbedingt machen musst, würde ich es mit solchen Aliasen versuchen:

    Code
    auto ens3:1
    iface ens3:1 inet6 static
          address 2a03:4000:1:2:3::1
          netmask 64
          gateway fe80::1

    Allerdings würde ich dir von den virtuellen IPs abraten.

    Ich hatte gerade erst massiv Probleme, weil die Virtualisierungssoftware beim Standardtreiber nicht mit 2 "einfachen" IPv4 Adressen zurecht kam. Da gab's auf einmal Packet Loss und Verbindungsabbrüche...

    Es ist nur die Frage, ob es sich empfiehlt so zu verfahren. Wenn es zu Problemem führen kann, dann lasse ich definitiv die Finger von :)

  • 1. Wie viele IPv6 Adressen kann ich auf eth0 packen?

    Keine Ahnung, wieviel brauchst du denn? 1999 sind kein Problem. Hab ich unter Ubuntu 19.04 soeben getestet.


    2. Pro IPv6 ein eigenes virtuelles Interface erstellen, also eth0:1, eth0:2, usw.. ?

    Das würde ich nicht empfehlen, wenn es nicht unbedingt nötig ist. Ich habe das vor zwei oder drei Jahren zum letzten Mal unter Debian gemacht und hatte mir später im Zusammenhang mit Virtualisierungen nur Stress eingefangen.


    3. Wie kann ich die Netzwerk Konfiguration neu laden, ohne den Server neu starten zu müssen ? (systemctl restart networking schlägt fehl)

    Auch dazu kann ich jetzt im Detail nicht viel sagen. Ich hatte das Problem (meistens) auch. Solange die zugewiesenen Adressen nicht wieder gelöscht werden (z.B. down ip -6 addr del ...) können sie auch nicht wieder hinzugefügt werden.


    Ich arbeite seit Ubuntu 18.04 nur noch mit Netplan. Da Netplan nicht alles unterstützt was ich benötigte, war die Lernkrurve zwar steil, aber es hat sich gelohnt. Im Allgemeinen sind meine Konfiguration jetzt viel einfacher geworden und besser zu verstehen.

  • Das Codewort, um sicherzustellen, dass ein Host nicht versehentlich eine der Adressen als Absender nutzt, die er nicht nutzen soll, lautet Deprecated Address. (ip -6 a a [...] preferred_lft 0)

  • Das Codewort, um sicherzustellen, dass ein Host nicht versehentlich eine der Adressen als Absender nutzt, die er nicht nutzen soll, lautet Deprecated Address. (ip -6 a a [...] preferred_lft 0)

    Gut, dass du das erwähnt hast. Vergess ich auch immer wieder.

  • Das Codewort, um sicherzustellen, dass ein Host nicht versehentlich eine der Adressen als Absender nutzt, die er nicht nutzen soll, lautet Deprecated Address. (ip -6 a a [...] preferred_lft 0)

    Also am besten hinter jeder IPv6 das "preferred_lft 0" hängen?

  • Ich mach die primäre Absender etwas anders:

    Code
    post-up ip -6 route change default via {{ network.gateway }} dev {{ network.iface }} src {{ addr | ipv6('address') }}


    Bzgl. der Frage, wie viele IPs an Interface: Bei IPv6 so viel du willst, es nur irgendwann nicht effizient. Man kann aber auch auf ganze Präfixe lauschen - es ist nur nicht ganz trivial. Zusätzlich zu den erwähnten Dingen im Artikel muss man bei netcup beachten, dass das erste IPv6-Netz "geswitched" und nicht geroutet ist, d.h., dass man dem Router via Neighbor Discovery Protocol mitteilen muss, dass es diese Adresse gibt…

    https://blog.cloudflare.com/how-we-built-spectrum/

    https://blog.widodh.nl/2016/04…et-to-your-linux-machine/

  • Ich mach die primäre Absender etwas anders:

    Code
    post-up ip -6 route change default via {{ network.gateway }} dev {{ network.iface }} src {{ addr | ipv6('address') }}


    Bzgl. der Frage, wie viele IPs an Interface: Bei IPv6 so viel du willst, es nur irgendwann nicht effizient. Man kann aber auch auf ganze Präfixe lauschen - es ist nur nicht ganz trivial. Zusätzlich zu den erwähnten Dingen im Artikel muss man bei netcup beachten, dass das erste IPv6-Netz "geswitched" und nicht geroutet ist, d.h., dass man dem Router via Neighbor Discovery Protocol mitteilen muss, dass es diese Adresse gibt…

    https://blog.cloudflare.com/how-we-built-spectrum/

    https://blog.widodh.nl/2016/04…et-to-your-linux-machine/

    Dein Befehl, den du da gepostet hast, den trägst du in deine /etc/network/interfaces ein? Kannst du mir bitte ein vollständiges Beispiel posten?


    Danke und Grüße,

    Lukas

  • Code: /etc/sysctl.conf
    net.ipv6.conf.all.accept_ra=0
    net.ipv6.conf.eth-extern.accept_ra=0
    Code: /etc/udev/rules.d/70-persistent-net.rules
    SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="b6:db:d5:c8:3c:b1", NAME="eth-extern"


    resultiert in


    Code: ip -6 route
    2a03:4000:6:x::/64 dev eth-extern proto kernel metric 256  pref medium
    fe80::/64 dev eth-extern proto kernel metric 256  pref medium
    default via fe80::1 dev eth-extern src 2a03:4000:6:x::1 metric 1024  pref medium
  • Das mit der Source-Adresse in der Route allein ist vielleicht nicht der Weisheit letzter Schluss, denn dann antwortet der Host immer nur von der, oder? Policy Routing (auf die /128) wäre da vielleicht die sauberste der Lösungen, wenn Probleme auftauchen.

  • Der Effekt ist in meinen Anwendungsszenarien analog zu preferred lifetime auf 0 zu setzen. Wenn nicht explizit eine Absenderadresse gesetzt ist, wird beim Nutzen der entsprechen Route diese Adresse genutzt.

    the source address to prefer when sending to the destinations covered by the route prefix.

    Man muss nur verstehen, dass man dort mit einen anderen Mechanismus arbeitet.


    Und nein - der Server antwortet z.B. auf ICMP(v6) Echo Requests nicht immer mit dieser Adresse; ich muss aber gestehen, dass ich erst noch mal nachlesen müsste, mit welcher Priorität das den Source Address Selection Prozess genau beeinflusst.


    Ehrlich gesagt grübel ich gerade auch, wieso ich eigentlich diesen Weg gewählt habe… (und woher ich den initial habe).