{"id":80,"date":"2013-03-14T14:05:56","date_gmt":"2013-03-14T13:05:56","guid":{"rendered":"https:\/\/overdespotiet.dk\/blog\/?p=80"},"modified":"2024-06-19T13:35:45","modified_gmt":"2024-06-19T11:35:45","slug":"howto-get-ipv6-in-your-home","status":"publish","type":"post","link":"https:\/\/overdespotiet.dk\/blog\/?p=80","title":{"rendered":"HOWTO: Get IPv6 in your home"},"content":{"rendered":"<p>Since <a href=\"http:\/\/www.internetsociety.org\/ipv6\/archive-2011-world-ipv6-day\" target=\"_blank\" rel=\"noopener\">IPv6 Day<\/a> when I registered for a <a href=\"https:\/\/www.sixxs.net\/signup\/create\/\" target=\"_blank\" rel=\"noopener\">SixXS<\/a> handle, I&#8217;ve wanted to jump on the IPv6 wagon at home. My setup is a DSL line with Telenor as my ISP. Almost needless to say, Telenor does not do native IPv6, so another route had to be taken &#8211; as noted above, SixXS seems a good choice, since they have made arrangements with several transit providers\/colo&#8217;s\/ISPs to provide <a href=\"https:\/\/www.sixxs.net\/pops\/\" target=\"_blank\" rel=\"noopener\">PoP&#8217;s<\/a> (point of presence) whereto mortal users, such as myself, can tunnel IPv6 traffic. <!--more--> Now, SixXS already provide a <a href=\"https:\/\/www.sixxs.net\/faq\/account\/?faq=10steps\" target=\"_blank\" rel=\"noopener\">near foolproof FAQ<\/a> to get IPv6 set up, so I&#8217;ll focus on the steps where I chose wrong and experienced some hiccups.<\/p>\n<h2>My first wrong choice<\/h2>\n<p>SixXS gives you three choices of tunnel type: AYIYA, Heartbeat and static. Since I have a (DHCP) static IP at home, I figured a static tunnel would do. It wouldn&#8217;t. The reason is that for this to work, the router have to forward <a href=\"http:\/\/www.iana.org\/assignments\/protocol-numbers\/protocol-numbers.xml\" target=\"_blank\" rel=\"noopener\">IP protocol 41<\/a> packets, which the Telenor-provided Zyxel 2602 router does not. So that&#8217;s 15 credits lost on a tunnel type change to AYIYA&#8230;<\/p>\n<h2>AYIYA setup<\/h2>\n<p>The AYIYA tunnel type requires the <a href=\"http:\/\/www.sixxs.net\/tools\/aiccu\/\" target=\"_blank\" rel=\"noopener\">AICCU utility<\/a> to be installed on the tunnel endpoint. Since I have an UPS&#8217;ed 24\/7 linux box in the basement, I figured this was a good choice and it being a Debian box, it was just a matter of issuing a<\/p>\n<pre class=\"brush: bash; gutter: false; first-line: 1; highlight: []; html-script: false\">sudo apt-get install aiccu<\/pre>\n<p>after which I needed to insert my SixXS handle and password in <code>\/etc\/aiccu.conf<\/code>. After which&#8230; nothing happened&#8230; I tried fiddling with the parameters, messing with the ipv6 interface manually, adding routes etc. Nothing&#8230;<\/p>\n<h2>My second mistake<\/h2>\n<p>Having had nightmares about dropped ipv6 packets I woke up to find the tunnel up and pinging, as well as a fair latency. My mistake was to assume that the tunnel reprovisioning was instant, I guess&#8230;<\/p>\n<div id=\"attachment_83\" style=\"width: 310px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/overdespotiet.dk\/blog\/wp-content\/uploads\/2013\/03\/www.sixxs_.net_.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-83\" class=\"size-medium wp-image-83\" src=\"https:\/\/overdespotiet.dk\/blog\/wp-content\/uploads\/2013\/03\/www.sixxs_.net_-300x112.png\" alt=\"T118434 weekly latency\" width=\"300\" height=\"112\" srcset=\"https:\/\/overdespotiet.dk\/blog\/wp-content\/uploads\/2013\/03\/www.sixxs_.net_-300x112.png 300w, https:\/\/overdespotiet.dk\/blog\/wp-content\/uploads\/2013\/03\/www.sixxs_.net_.png 497w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-83\" class=\"wp-caption-text\">T118434 latency<\/p><\/div>\n<p>And happily:<\/p>\n<pre class=\"brush: bash; gutter: false; first-line: 1; highlight: []; html-script: false\">localhost:~# ping6 -n -c 4 ipv6.google.com\r\nPING ipv6.google.com(2a00:1450:4010:c04::63) 56 data bytes\r\n64 bytes from 2a00:1450:4010:c04::63: icmp_seq=1 ttl=54 time=52.6 ms\r\n64 bytes from 2a00:1450:4010:c04::63: icmp_seq=2 ttl=54 time=53.0 ms<\/pre>\n<h2>Firewalling IPv6<\/h2>\n<p>Just as with IPv4 one will need to firewall traffic on IPv6, and even more so since every IPv6 enabled computer\/device\/thingy is effectively globally available, due to the lack of NAT&#8217;ing! For now I&#8217;ve gone with a custom modified version of the <a href=\"http:\/\/www.sixxs.net\/wiki\/IPv6_Firewalling#Example_script_for_IPv6_stateful_firewall\" target=\"_blank\" rel=\"noopener\">stateful example found here<\/a> on my linux endpoint, but have a <a href=\"http:\/\/routerboard.com\/RB450G\" target=\"_blank\" rel=\"noopener\">Microtik 450G<\/a> on order to act as a &#8220;real&#8221; firewall (when I get around to setting up a router that allows me to terminate proto 41 traffic).<\/p>\n<h2>Distributing IPv6 on the LAN<\/h2>\n<p>Now my linux box is IPv6 &#8211; just give it a try:<\/p>\n<pre class=\"brush: bash; gutter: false; first-line: 1; highlight: []; html-script: false\">somewhere:~$ dig bystrup.net AAAA\r\n...\r\n;; ANSWER SECTION:\r\nbystrup.net.            14400   IN      AAAA    2001:16d8:dd00:1cd::2<\/pre>\n<p>and<\/p>\n<pre class=\"brush: bash; gutter: false; first-line: 1; highlight: []; html-script: false\">somewhere:~$ ping6 bystrup.net\r\nconnect: Network is unreachable<\/pre>\n<p>(OK, so the external host I tried this from isn&#8217;t IPv6 enabled yet&#8230;) To enable IPv6 on the rest of my LAN, an IPv6 subnet is needed &#8211; luckily I have that from SixXS as default (it&#8217;s a \/64 subnet, which should be just fine for most people, but SixXS will provide a \/48 subnet on request). The next step is <em>&#8220;DHCP for IPv6&#8221;<\/em> which is handled by the <a href=\"http:\/\/www.litech.org\/radvd\/\" target=\"_blank\" rel=\"noopener\">Router Advertisement Daemon<\/a>. It&#8217;s easily available on Debian as <code>sudo apt-get install radvd<\/code>. Once installed, edit <code>\/etc\/radvd.conf<\/code> as follows:<\/p>\n<pre class=\"brush: text; gutter: false; first-line: 1; highlight: []; html-script: false\">interface eth0 { \r\n    ...\r\n};<\/pre>\n<p>Alas, this is still on the TODO list, since I simply couldn&#8217;t get it to work with the default \/64 routed subnet from SixXS. Relevant links to explore are <a href=\"http:\/\/www.sixxs.net\/wiki\/Installing_a_Subnet\">Installing a subnet<\/a> and <a href=\"http:\/\/www.sixxs.net\/faq\/connectivity\/?faq=usingsubnet&amp;os=linux.host\">How do I give connectivity to other hosts on my subnet<\/a> in the SixXS FAQ<\/p>\n<p><!--\n\n\n<pre class=\"brush: text; gutter: false; first-line: 1; highlight: []; html-script: false\">interface eth0 { \r\n    AdvSendAdvert on;\r\n    MinRtrAdvInterval 3;\r\n    MaxRtrAdvInterval 10;\r\n\r\n    #prefix 2001:16d8:dd00:1cd::\/64 {\r\n    prefix fda0:9733:c0fd::\/48 {\r\n        AdvOnLink on;\r\n        AdvAutonomous on;\r\n        AdvRouterAddr on;\r\n\r\n        # After testing, can be set to 14400\r\n        AdvPreferredLifetime 30;\r\n        # After testing, can be set to 86400\r\n        AdvValidLifetime 30;\r\n    };\r\n};<\/pre>\n\n\n--><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Since IPv6 Day when I registered for a SixXS handle, I&#8217;ve wanted to jump on the IPv6 wagon at home. My setup is a DSL line with Telenor as my ISP. Almost needless to say, Telenor does not do native &hellip; <a href=\"https:\/\/overdespotiet.dk\/blog\/?p=80\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19,18],"tags":[25,23,24,27,26],"class_list":["post-80","post","type-post","status-publish","format-standard","hentry","category-ipv6","category-networking","tag-ayiya","tag-ipv6-2","tag-sixxs","tag-subnet","tag-tunnel"],"_links":{"self":[{"href":"https:\/\/overdespotiet.dk\/blog\/index.php?rest_route=\/wp\/v2\/posts\/80","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/overdespotiet.dk\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/overdespotiet.dk\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/overdespotiet.dk\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/overdespotiet.dk\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=80"}],"version-history":[{"count":19,"href":"https:\/\/overdespotiet.dk\/blog\/index.php?rest_route=\/wp\/v2\/posts\/80\/revisions"}],"predecessor-version":[{"id":247,"href":"https:\/\/overdespotiet.dk\/blog\/index.php?rest_route=\/wp\/v2\/posts\/80\/revisions\/247"}],"wp:attachment":[{"href":"https:\/\/overdespotiet.dk\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=80"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/overdespotiet.dk\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=80"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/overdespotiet.dk\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=80"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}