{"id":624,"date":"2018-02-13T01:43:50","date_gmt":"2018-02-13T00:43:50","guid":{"rendered":"http:\/\/www.instruyete.org\/?p=624"},"modified":"2020-03-29T14:56:32","modified_gmt":"2020-03-29T12:56:32","slug":"ipv6-ula-adressen-auf-dual-boot-rechnern","status":"publish","type":"post","link":"https:\/\/www.instruyete.org\/?p=624","title":{"rendered":"IPv6 ULA Adressen auf Dual-Boot Rechnern"},"content":{"rendered":"<p>Der Verbrauch aller verf\u00fcgbaren IPv4 Adressen zwingt allm\u00e4hlich die ISPs (Internet Service Provider) den Kunden nicht mehr exklusiv eine IPv4 Adresse &#8211; weder dauerhaft noch tempor\u00e4r &#8211; zur Verf\u00fcgung zu stellen. Stattdessen wird der begrenzte IPv4 Adressraum mit <strong>NAT<\/strong> (Network Adress Translation) <strong>auf ISP-Level<\/strong> erweitert &#8211; das sog. <em>Carrier Grade NAT<\/em>.<br \/>\nF\u00fcr den Kunden bedeutet dies, dass er nicht mehr \u00fcber eine stabile IPv4 Adresse verf\u00fcgt, sondern nur noch \u00fcber eine stabile &#8211; wenn auch sich tempor\u00e4r \u00e4ndernde &#8211; IPv6 Adresse. Der Zugriff auf IPv4-only Webdienste erfolgt \u00fcblicherweise mit <strong>DS-Lite Tunnels<\/strong> in denen IPv4 Adressen in IPv6 Tunnel bis zum Provider gelangen, der dann mittels Carrier Grade NAT dem Paket eine momentan verf\u00fcgbare \u00f6ffentliche IPv4 Adresse zuweist und eine Zuordnungstabelle f\u00fchrt, um den Response dem urspr\u00fcnglichen Anfrager zur\u00fcckzuleiten.<\/p>\n<p>Auf Kundenseite impliziert dieses Verfahren den Einsatz von IPv6 &#8211; mindestens auf Router-Level. Wobei durch <em>Router-Propagation<\/em> auch jeder Client hinter dem Router eine \u00f6ffentliche IPv6 Adresse erhalten kann und performante IPv6 Verbindungen &#8211; ohne NAT und Zuordnungstabellen &#8211; aufbauen kann.<br \/>\nDie Entscheidung, ob der Zugriff auf eine URL mit IPv4 oder IPv6 erfolgt, trifft das Betriebssystem, vorausgesetzt der <em>hostname<\/em> l\u00e4sst sich durch den verantwortlichen Nameserver in eine IPv4 und IPv6 Adresse aufl\u00f6sen. Da dies aber immer h\u00e4ufiger der Fall ist, steigen auch die IPv6 Anfragen durch alle Netzwerke&#8230;.<\/p>\n<p>&#8230;was der Grund f\u00fcr mich war auch im privaten Netzwerk durch den lokalen Nameserver alle hosts auf IPv6 aufzul\u00f6sen. Da die <strong>GUA<\/strong> (Global Unicast Address) sich aber t\u00e4glich \u00e4ndert und ich zudem im privaten Netzwerk auch nur private (also nicht geroutete) Adressen verwenden will, trage ich dort die stabilen <strong>ULAs<\/strong> (Unique Local Address) ein, die eben nicht \u00fcber eine Gateway Grenze geroutet werden.<br \/>\nDiese Adressen bestehen aus einem standardisierten 8bit Prefix (fd00::\/8), gefolgt von einer Global+Subnet ID, die im Normalfall im Router eingestellt wird und durch diesen propagiert (Router Advertisement) wird. Die folgende Grafik zeigt den Aufbau der GLAs und ULAs<\/p>\n<p><a href=\"http:\/\/www.instruyete.org\/wp-content\/uploads\/2018\/02\/IPv6_Schaubilder.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-626\" src=\"http:\/\/www.instruyete.org\/wp-content\/uploads\/2018\/02\/IPv6_Schaubilder.png\" alt=\"Zeigt GLA und ULA\" width=\"968\" height=\"483\" \/><\/a><\/p>\n<p>Die niederwertigen 64bits werden lokal durch <strong>EUI-64 <\/strong>(Extended Unique Identifier) eingestellt &#8211; auch bekannt als <em>Interface ID<\/em>. Dies passiert \u00fcberlicherweise mittels <strong>SLAAC<\/strong> (Stateless Address Autoconfiguration). Die EUI-64 besteht in der einfachsten Form aus einer MAC-Adresse (48bit) erweitert durch ein mittiges Einsetzen von 0xfffe. Dadurch entstehen permanente IPv6 Adressen &#8211; im Falle der ULA sogar dauerhaft permanent, da sich der Prefix &#8211; bestehend aus Global ID + Subnet ID &#8211; nicht \u00e4ndert. Flankiert werden diese permanenten Adressen durch die <em>Privacy Extensions for Stateless Address Autoconfiguration in IPv6<\/em> gem\u00e4\u00df <strong>RFC4941<\/strong>. Diese erzeugen einen zuf\u00e4lligen Adressbestandteil auf der Interface ID und die damit gewonnen <strong>zus\u00e4tzlichen tempor\u00e4ren IPv6 Adressen<\/strong> k\u00f6nnen f\u00fcr ausgehende Verbindungen genutzt werden um eine vergr\u00f6\u00dferte Privatsph\u00e4re zu erhalten.<\/p>\n<p>Bis zu diesem Punkt ist aus Administrationssicht alles in Ordnung. Schwierig wurde es mit der Einf\u00fchrung des <strong>RFC7217<\/strong> <em>A Method for Generating Semantically Opaque Interface Identifiers with IPv6 Stateless Address Autoconfiguration (SLAAC)<\/em>. Dieser sieht vor, die stabilen IPv6 Adressen im Bereich der EUI-64 Interface ID nicht mehr aufgrund der MAC ID zu generieren. An sich w\u00e4re das nicht schlimm, da die Adressen ja immer noch stabil sind und daher in eine DNS Konfiguration eingetragen werden k\u00f6nnen. Schwierig wird es aber wenn eine IPv6 Adresse eines Client-Netzwerkports auf einem Dual-Boot Rechner pl\u00f6tzlich anders lautet, da bspw. Linux und macOS den RFC7217 anwenden und auf unterschiedliche IPv6 Adressen kommen. Das l\u00e4sst sich in einer DNS Konfiguration nicht mehr abbilden, es sei denn man vergibt auf dem Dual-Boot Rechner unterschiedliche Hostnamen (und IPv4 Adressen), wobei dann auf OSI-Level 2 eine ARP Adresse auf unterschiedliche IPv6 Adressen verzweigt, was ev. bei einem Switch zu Problemen f\u00fchrt.<\/p>\n<p>Abhilfe schafft hier, <strong>auf Betriebssystemebene die Anwendung der RFC7217 zu verhindern<\/strong>, was bei genauerer Betrachtung die Privatsph\u00e4re nicht wesentlich beintr\u00e4chtigt, da die tempor\u00e4ren Adressen gem\u00e4\u00df RFC4941 immer noch existieren und dar\u00fcber hinaus der Footprint eines Anwenders durch viele andere Erkennungsmerkmale gewonnen werden kann (oder bspw. durch <em>uBlock Origin<\/em> verhindert werden kann).<br \/>\nDies Abschaltung der RFC7217 Implementationen wird mit folgenden Kommandos erreicht (Quelle: <a title=\"IPv6 im JuNet\" href=\"https:\/\/www.fz-juelich.de\/SharedDocs\/Downloads\/IAS\/JSC\/DE\/tki\/tki-0412.pdf?__blob=publicationFile\">https:\/\/www.fz-juelich.de\/SharedDocs\/Downloads\/IAS\/JSC\/DE\/tki\/tki-0412.pdf?__blob=publicationFile<\/a>)<\/p>\n<ul>\n<li><strong>auf Linux<\/strong> (<em>ohne Network Manager<\/em>, bspw. Ubuntu 14.04)\n<p>in <strong>\/etc\/sysctl.conf<\/strong> folgendes eintragen (falls eth0 tats\u00e4chlich das richtige interface ist)<br \/>\n<code><br \/>\nnet.ipv6.conf.eth0.use_tempaddr = 0<br \/>\n<\/code><\/li>\n<li><strong>auf Linux<\/strong> (<em>mit Network Manager<\/em>, bspw. Ubuntu 16.04)\n<p><code>user@host&gt; nmcli conn show<\/code><br \/>\n(zeigt die verf\u00fcgbaren Netzwerknamen an &#8211; hier den richtigen heraussuchen, bspw. &#8218;Wired connection 1&#8216;)<br \/>\n<code>user@host&gt; nmcli conn edit 'Wired connection 1'<br \/>\nnmcli&gt; save<br \/>\nnmcli&gt; set ipv6.addr-gen-mode eui64<br \/>\nnmcli&gt; set  ipv6.ip6-privacy    0<br \/>\nnmcli&gt; save<br \/>\nnmcli&gt; quit<\/code><\/li>\n<li><strong>auf macOS:<\/strong><br \/>\n<code><br \/>\n$ echo net.inet6.send.opmode=0 &gt;&gt; \/etc\/sysctl.conf<br \/>\n$ reboot<br \/>\n<\/code><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Der Verbrauch aller verf\u00fcgbaren IPv4 Adressen zwingt allm\u00e4hlich die ISPs (Internet Service Provider) den Kunden nicht mehr exklusiv eine IPv4 Adresse &#8211; weder dauerhaft noch tempor\u00e4r &#8211; zur Verf\u00fcgung zu stellen. Stattdessen wird der begrenzte IPv4 Adressraum mit NAT (Network Adress Translation) auf ISP-Level erweitert &#8211; das sog. Carrier Grade NAT. F\u00fcr den Kunden bedeutet &hellip; <a href=\"https:\/\/www.instruyete.org\/?p=624\" class=\"more-link\"><span class=\"screen-reader-text\">IPv6 ULA Adressen auf Dual-Boot Rechnern<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[31],"class_list":["post-624","post","type-post","status-publish","format-standard","hentry","category-allgemein","tag-ipv6"],"_links":{"self":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/posts\/624","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=624"}],"version-history":[{"count":2,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/posts\/624\/revisions"}],"predecessor-version":[{"id":808,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/posts\/624\/revisions\/808"}],"wp:attachment":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=624"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=624"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=624"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}