OpenVPN mit IPv6 auf VPS

  • Ich bin aktuell dabei einen OpenVPN auf einem vServer bei netcup aufzusetzen. Leider funktioniert die native IPv6 Unterstützung nicht.

    Ich möchte folgendes erreichen:


    Alle Clients haben die IPv6-Adresse des VPS, sodass ich SSH bei anderen Server auf die IPv4 und IPv6 des VPN beschränken kann.


    Meine Server.conf



    Ich kann mich ohne Problem mit dem OpenVPN-Server verbinden und über die IPv4 des Servers auf das Internet zugreifen. IPv6 (die Haupt-IP des Servers) wird mir zwar zugewiesen, aber ich bekomme darüber kein Netz.

  • Das ist klar. Du bekommst ja auch nicht die public IPv4 Adresse des Servers zugewiesen, sondern eine des VPN Subnets. Diese wird dann über NAT auf deine public IPv4 umgesetzt. Deshalb hast du Internetzugriff über IPv4.

    So ist das für IPv6 jedoch nicht vorgesehen: jeder Client hat nach außen eine eigene IPV6.

    Du kannst dir entweder ein zusätzliches IPv6 Subnet bestellen und daraus die Client IPs zuweisen, oder du nutzt einen NDP Proxy (sowas haben auch einige hier bei sich laufen). Andere Möglichkeit wäre ein ULA Subnet für deine Clients zu verwenden und den Traffic zu deinem Server intern über ein VLAN zu routen.

    In allen Szenarien hätte jedoch jeder deiner Clients eine eigene IPv6, sodass du dem gesamten IPv6 Subnet den Zugriff erlauben musst.

  • Ich habe die Frage noch nicht wirklich verstanden.

    Zunächst einmal darf ich die Dokumentation verlinken und nachfragen, ob es sich um OpenVPN 2.4.x oder 2.3.x handelt?

    https://openvpn.net/community-…e-manual-for-openvpn-2-4/


    Die oben erwähnte Zeile „server-ipv6 IPV6_Des_VPS::/64“ würde laut Doku folgende Dinge tun:

    –server-ipv6 ipv6addr/bitsconvenience-function to enable a number of IPv6 related options at once, namely –ifconfig-ipv6, –ifconfig-ipv6-pool and –push tun-ipv6 Is only accepted if “–mode server” or “–server” is set. Pushing of the –tun-ipv6directive is done for older clients which require an explicit “–tun-ipv6” in their configuration.


    An diesem Punkt fürchte ich, dass der Fehler liegt. Du bekommst von Netcup das Hostnetz 2001:DB8:aaaa:bbbb::/64 zugewiesen. Das ist nicht nur „eine Adresse“ sondern eben ein Netz. Dieses Netz liegt an der LAN-Schnittstelle Deines VPS an.

    Um daraus weitere Bereiche zu vergeben (Subnetting), müsstest Du dem Server einen Teilbereich daraus zuweisen.

    Ich glaube aber, dass das überflüssig wäre, da IPv6 auch über Linklokale Adressen kommunizieren kann. Ein Push-Route und ein ifconfig-ipv6-pool müsste genügen. Der Pool muss kleiner sein als das /64 (d.h. etwa /72, /80, /96 oder so). In der Schnelle habe ich das nicht nachgeprüft, ich hoffe, ich liege richtig.

  • Das ist klar. Du bekommst ja auch nicht die public IPv4 Adresse des Servers zugewiesen, sondern eine des VPN Subnets. Diese wird dann über NAT auf deine public IPv4 umgesetzt. Deshalb hast du Internetzugriff über IPv4.

    So ist das für IPv6 jedoch nicht vorgesehen: jeder Client hat nach außen eine eigene IPV6.

    Du kannst dir entweder ein zusätzliches IPv6 Subnet bestellen und daraus die Client IPs zuweisen, oder du nutzt einen NDP Proxy (sowas haben auch einige hier bei sich laufen). Andere Möglichkeit wäre ein ULA Subnet für deine Clients zu verwenden und den Traffic zu deinem Server intern über ein VLAN zu routen.

    In allen Szenarien hätte jedoch jeder deiner Clients eine eigene IPv6, sodass du dem gesamten IPv6 Subnet den Zugriff erlauben musst.

    OpenVPN 2.4.X. Ich bedanke mich soweit :=)