{"id":277,"date":"2023-11-20T21:30:04","date_gmt":"2023-11-20T20:30:04","guid":{"rendered":"https:\/\/www.richard-becker.net\/blog\/?p=277"},"modified":"2023-11-20T21:49:02","modified_gmt":"2023-11-20T20:49:02","slug":"glasfaser-und-cgnat-der-weg-ins-heimnetz-ist-gar-nicht-so-leicht","status":"publish","type":"post","link":"https:\/\/www.richard-becker.net\/blog\/2023\/11\/20\/glasfaser-und-cgnat-der-weg-ins-heimnetz-ist-gar-nicht-so-leicht\/","title":{"rendered":"Glasfaser und CGNAT &#8211; Der Weg ins Heimnetz ist gar nicht so leicht&#8230;"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Endlich liegt die Glasfaser-Leitung, das Heimnetz ist mit einer richtig guten Geschwindigkeit ans Internet angebunden. Doch, Moment&#8230; was ist denn da los?! Wenn es dir so geht, wie mir, bist du vielleicht \u00fcberrascht, dass pl\u00f6tzlich deine VPN-Verbindung von anderen Netzwerken nach Hause in dein Heimnetz nicht mehr klappt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Was bittesch\u00f6n ist denn nun CGNAT?!<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tja, gerade eben hast du dich noch \u00fcber deine hohe Geschwindigkeit gefreut und jetzt musst du feststellen: Du teilst dir deine &#8222;\u00f6ffentliche&#8220; <a href=\"https:\/\/de.wikipedia.org\/wiki\/Internet_Protocol\" data-type=\"link\" data-id=\"https:\/\/de.wikipedia.org\/wiki\/Internet_Protocol\" target=\"_blank\" rel=\"noreferrer noopener\">IPv4<\/a>-Adresse mit anderen Kund:innen deines Providers. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das bedeutet: Zwischen deinem Heimnetz und dem \u00f6ffentlichen Internet steckt nicht nur dein eigener Router, sondern noch weitere Ger\u00e4te deines Providers. Und durch die kommst du nicht hindurch (Stichwort: Portfreigabe), denn du kannst zwar Ger\u00e4te hinter deinem Router so freigeben, dass sie von au\u00dferhalb deines Routers erkannt werden k\u00f6nnen, aber au\u00dferhalb deines Routers befindet sich leider nicht das \u00f6ffentliche Internet, sondern weitere Netzwerkschichten deines Providers.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Und was mache ich jetzt? Kann ich VPN jetzt vergessen?!<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die gute Nachricht lautet: Nein, alles wird gut! Voraussichtlich&#8230; Denn was mein Anbieter mir zuteilt sind individuelle <a href=\"https:\/\/de.wikipedia.org\/wiki\/IPv6\" data-type=\"link\" data-id=\"https:\/\/de.wikipedia.org\/wiki\/IPv6\" target=\"_blank\" rel=\"noreferrer noopener\">IPv6-Adressen<\/a>. Und, wenn ich die Idee hinter IPv6 richtig verstanden habe, soll das auch so bleiben. Eine \u00dcbersetzung von Netzwerkadressen (wie bei IPv4 \u00fcblich) soll bei IPv6 im Regelfall nicht stattfinden, sodass wirklich jedes Ger\u00e4t eine eigene IPv6-Adresse bekommt.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"474\" src=\"https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/11\/company-3376859_1280-e1700509617271-1024x474.jpg\" alt=\"\" class=\"wp-image-280\" srcset=\"https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/11\/company-3376859_1280-e1700509617271-1024x474.jpg 1024w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/11\/company-3376859_1280-e1700509617271-300x139.jpg 300w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/11\/company-3376859_1280-e1700509617271-768x356.jpg 768w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/11\/company-3376859_1280-e1700509617271.jpg 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Und wenn dein Router einigerma\u00dfen aktuell und auch noch richtig konfiguriert ist, dann kommt er auch schon mit IPv6 klar und ist dar\u00fcber direkt aus dem Internet erreichbar. Aus allen Netzen, die selbst IPv6 unterst\u00fctzen, kann also eine VPN-Verbindung problemlos aufgebaut werden. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Aber einen Haken gibt&#8217;s, oder?!<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Es gibt wirklich noch einen kleinen Haken, sonst w\u00fcrde sich ja ein Blog-Artikel nicht lohnen! Und der besteht darin, dass dein VPN nur aus Netzen erreichbar ist, die IPv6 unterst\u00fctzen &#8211; und das sind eben noch nicht alle. Heimnetze, die noch nicht entsprechend konfiguriert sind, \u00f6ffentliche WLANs in Restaurants oder Hotels und auch einige berufliche Netzwerke unterst\u00fctzen noch keinen Zugang \u00fcber IPv6. Dann klappt nat\u00fcrlich auch die Verbindung nach Hause nicht.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Rettung hei\u00dft hier: VPS. Ein virtueller privater Server. So etwas kannst du dir anmieten &#8211; mitsamt eigener IPv4-Adresse. Ich zahle f\u00fcr meinen um die 5 Euro im Monat und hoste mir dort gleich noch eine eigene <a href=\"https:\/\/nextcloud.com\/de\/\" data-type=\"link\" data-id=\"https:\/\/nextcloud.com\/de\/\" target=\"_blank\" rel=\"noreferrer noopener\">Nextcloud<\/a> mit 100GB Speicher, \u00fcber die ich viel mehr Kontrolle habe, als \u00fcber vergleichbare Cloud-Dienstleistungen der gro\u00dfen Firmen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00dcber ein paar einfache Kommandozeilenbefehle kannst du Datenverkehr, der \u00fcber einen bestimmten Port deiner IPv4-Adresse ankommt auf eine IPv6-Adresse weiterleiten. Dieser Mechanismus erm\u00f6glicht, dass du dich &#8211; statt gleich mit deinem Router zuhause &#8211; aus IPv4-Netzen eben erst mit deinem VPS verbindest, der den Datenverkehr dann \u00fcber IPv4 tunnelt.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"430\" src=\"https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/09\/network-cable-499792_1280-e1695966192677-1024x430.jpg\" alt=\"\" class=\"wp-image-265\" srcset=\"https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/09\/network-cable-499792_1280-e1695966192677-1024x430.jpg 1024w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/09\/network-cable-499792_1280-e1695966192677-300x126.jpg 300w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/09\/network-cable-499792_1280-e1695966192677-768x322.jpg 768w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/09\/network-cable-499792_1280-e1695966192677.jpg 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Und so geht das dann<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Vorausgesetzt, auf deinem VPS l\u00e4uft Linux, kannst du dann mit dem Befehl &#8222;socat&#8220; verschiedene Tunnel \u00f6ffnen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>socat UDP4-LISTEN:PORT,fork,reuseaddr,su=nobody UDP6:IP-HOSTNAME:PORT<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>socat UDP4-LISTEN:80,fork,reuseaddr,su=nobody UDP6:12345.myfritz.net:80<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">So w\u00e4re der <code>Port 80<\/code> des eigenen Servers weitergeleitet an die Adresse <code>12345.myfritz.net<\/code> (ebenfalls an <code>Port 80<\/code>). Anstatt UDP-Ports weiterzuleiten (<code>UDP4-LISTEN<\/code>) sind auch andere Protokolle (<code>TCP4-LISTEN<\/code>) m\u00f6glich. Eine genaue \u00dcbersicht gibt es <a href=\"https:\/\/www.redhat.com\/sysadmin\/getting-started-socat\" data-type=\"link\" data-id=\"https:\/\/www.redhat.com\/sysadmin\/getting-started-socat\" target=\"_blank\" rel=\"noreferrer noopener\">hier<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Script erstellen und als Service starten<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Damit das Ganze dann auch immer funktioniert &#8211; also zum Beispiel auch nach einem Neustart deines VPS &#8211; legst du dir idealerweise noch ein Shell-Script an und l\u00e4sst es beim Systemstart als Service starten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Shell-Script anlegen und bearbeiten:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/vpstunnel.sh<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das Shell-Script kann beispielsweise so aussehen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash \n# Da das Skript direkt nach dem (Re)Boot ausgefuehrt wird,\n# erst einen Moment warten\nsleep 10s\n# Ggf. vorhandene socat-Instanzen beenden\nkillall socat &amp;\n# Neue socat-Instanz(en) starten\n\/usr\/bin\/socat UDP4-LISTEN:12345,fork,reuseaddr,su=nobody UDP6:123abc456def789ghi.myfritz.net:12345<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Script ausf\u00fchrbar machen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod +x \/etc\/vpstunnel.sh<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Service zum Script erstellen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/lib\/systemd\/system\/vpstunnel.service<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Der Service kann beispielsweise so aussehen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>[Unit]\nDescription=Tunnel ins Heimnetzwerk\n[Service]\nExecStart=\/etc\/vpstunnel.sh\n[Install]\nWantedBy=multi-user.target<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Service starten und aktivieren:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl daemon-reload\nsudo systemctl enable vpstunnel.service\nsudo systemctl start vpstunnel.service<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Fertig! Jetzt startet dein VPS immer automatisch auch deinen eben erstellten Service, der dir einen Tunnel aus einem reinen IPv4-Netzwerk auf die IPv6-Adresse deines Heimnetz-Routers erstellt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Noch ein kleiner Hinweis zum Schluss\u2026<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn es so noch nicht klappt, ist vermutlich eine Firewall auf deinem VPS aktiv. Und das ist auch gut so! Die blockt erst einmal allen Datenverkehr, der nicht bekannt ist. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Du musst also deiner Firewall noch sagen, dass sie deine Ports \u00f6ffnen soll. Wie genau das geht, liest du am besten in der Dokumentation deiner Linux-Distribution nach.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bei Ubuntu nennt sich die Firewall beispielsweise \u201eufw\u201c &#8211; mehr dazu gibt es <a href=\"https:\/\/wiki.ubuntuusers.de\/ufw\/\" target=\"_blank\" rel=\"noreferrer noopener\">hier<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Endlich liegt die Glasfaser-Leitung, das Heimnetz ist mit einer richtig guten Geschwindigkeit ans Internet angebunden.&hellip; <a class=\"read-more-link\" href=\"https:\/\/www.richard-becker.net\/blog\/2023\/11\/20\/glasfaser-und-cgnat-der-weg-ins-heimnetz-ist-gar-nicht-so-leicht\/\">[Weiterlesen]<\/a><\/p>\n","protected":false},"author":2,"featured_media":278,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[24,11,36,39,37,38,8,7,40,26],"class_list":["post-277","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technologie","tag-heimnetzwerk","tag-homeserver","tag-internet","tag-internet-protocol","tag-ipv4","tag-ipv6","tag-selfhosting","tag-technologie","tag-tunnel","tag-vpn"],"_links":{"self":[{"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/posts\/277","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/comments?post=277"}],"version-history":[{"count":4,"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/posts\/277\/revisions"}],"predecessor-version":[{"id":283,"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/posts\/277\/revisions\/283"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/media\/278"}],"wp:attachment":[{"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/media?parent=277"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/categories?post=277"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/tags?post=277"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}