ipv6 :: anton luka šijanec

ipv6

spisal 31. decembra 2022, dopolnil 22. aprila 2023, nazadnje uredil 26. maja 2023

za povevzavo v medmrežje uporabljam storitve ponudnika t-2, ki že poldrugo desetletje obljublja celotivo implementacijo ipv6.

implementacija

pomankljivosti

kot omenjeno prej, ponudnik še vedno ni pravilno uvedel podpore za ipv6.

zanimivosti

ker je v ipv6 naslovu celih 16 bajtov in od operaterja dobim celih 9 bajtov za nastavitev na poljubno vrednost, lahko ipv6 naslov nastavim na svoj elektronski naslov. tedaj bo vsak poslan paket vseboval moj poštni naslov v ascii kodiranju, kar lepo v ipv6 naslovu. če naslov 2a01:261:ee4:4845:4c4f:4034:412e:5349 prevedemo v ascii znake, dobimo *a�HELO@4A.SI! tukaj mi pride prav, da se zadnji bajt omrežne predpone konča s H, tako lahko navidezno podaljšam elektronski naslov na celih 10 bajtov. slika ipv6 paketa v programu wireshark doslej se je moj naslov sicer že spremenil, ker operater desetletje po njihovi prvi implementaciji ipv6 nov internetni protokol podpira le preizkusno.

dinamična posodobitev zapisov

kot sem že omenil, moj operater po več kot 15 letih, odkar razpolaga z ipv6 naslovi, še vedno ni strankam omogočil statičnih predpon, zato je treba za dosego zadostne ipv6 ekstaze žal še vedno dinamično urejati imenske zapise za računalnike. za imenski strežnik uporabljam bind9 in tam sem ustvaril eno dinamično dns območje rfc2136.sijanec.eu., kjer lahko z nsupdate(1) urejam zapise.

zone "rfc2136.sijanec.eu" {
        type master;
        file "/var/lib/bind/db.rfc2136.sijanec.eu";
        key-directory "/etc/bind/keys";
        auto-dnssec maintain;
        inline-signing yes;
        update-policy {
                grant ddns-key.rfc2136.sijanec.eu. subdomain rfc2136.sijanec.eu. ANY;
        };
};

simetrični ključ generiramo z ddns-confgen > keyfile.conf, dobljeno datoteko pa vgradimo v named.conf in jo shranimo tudi na vse računalnike, kjer želimo izvajati dinamične dns posodobitve. v praksi za dosego večje varnosti naredimo več ključev za vsako napravo posebej.

posodobitev zapisov s programom ddclient

program ddclient teče na napravah samih in vsake toliko časa preveri njihov IP naslov. če se zamenja glede na prejšnjo vrednost, bo z nsupdate izvedel posodobitev imenskega zapisa.

v datoteki /etc/rfc2136.conf je shranjen ključ za posodobitev zapisov.

konfiguracija net-dns/ddclient za gentoo

# /etc/ddclient.conf
# rc-service ddclient start
# rc-update add ddclient default
daemon=300
syslog=yes
mail=root
mail-failure=root
use=cmd, cmd=/usr/local/bin/inet6.sh
protocol=nsupdate
server=ns1.sijanec.org
login=/usr/bin/nsupdate
password='/etc/rfc2136.conf'
ttl=1
zone=rfc2136.sijanec.eu
b.rfc2136.sijanec.eu

na gentoo sem imel težave z branjem ipv6 naslova direktno iz mrežne kartice (usev6=if), zato program pridobi ipv6 naslov tako, da kliče namenski skript /usr/local/bin/inet6.sh.

konfiguracija ddclient za debian

# /etc/ddclient.conf
# service ddclient start
# systemctl enable ddclient
protocol=nsupdate \
usev6=if, if=enp9s0 \
server=ns1.sijanec.org \
login=/usr/bin/nsupdate \
password='/etc/rfc2136.conf' \
ttl=1 \
zone=rfc2136.sijanec.eu \
ass.rfc2136.sijanec.eu

star, od maja 2023 neuporabljen način dinamičnega dns

tega načina posodobitve ne priporočam, pri meni je povzročil veliko težav. rajši uporabi namenski program za dinamično posodobitev DNS zapisov, kot recimo ddclient.

gentoo distribucija uporablja netifrc za konfiguracijo omrežnih vmesnikov. konfiguracija naprave, ki se poveže v ipv6 in v dns objavi svoj naslov, izgleda na mojih gentoo napravah takole:

# /etc/conf.d/net
dns_domain_lo="sijanec.eu"
nis_domain_lo="sijanec.eu"
config_enp9s0="dhcp"
config_wlp12s0="dhcp"
token=::3
postup () {
        sysctl net.ipv6.conf.$IFACE.accept_ra=1
        ip token set $token dev $IFACE
        p=`ip a s dev $IFACE | grep global | grep inet6 | sed 's/^\s*//' | while read a;                 do grep $token <<<$a > /dev/null && echo $a && break; done`
        [ x"$p" = x ] && p=`ip a s dev $IFACE | grep global | grep inet6 | sed 's/^\s*//                 ' | head -n1` 
	i=`cut -d' ' -f2 <<<"$p" | cut -d/ -f1`
	nsupdate -k /etc/rfc2136.conf << EOF
	server ns1.sijanec.eu
	update delete `hostname`.rfc2136.sijanec.eu. AAAA
	update add `hostname`.rfc2136.sijanec.eu. 1 AAAA $i
	send
EOF
        return 0
}

na debianu z networkmanager pa se zadevo uredi drugače, za shranjevanje tokena:

sudo nmcli connection modify domači\ nat ipv6.addr-gen-mode eui64
sudo nmcli connection modify domači\ nat ipv6.token ::4

... in za izdelavo ddns dodamo skript, ki ga pokliče /etc/NetworkManager/dispatcher.d/01-ifupdown ob primernih trenutkih. tu je uporabljenih kar nekaj hackov; kot prvo nimamo na voljo imena omrežne kartice in kot drugo se začuda ta skript izvede, preden zares dobimo ipv6 naslov, kar mi ni povsem jasno, zato počakam 1 sekundo, kar v teoriji upočasni dobršen del sisema in zna voditi do težav:

#!/bin/bash
# /etc/network/if-up.d/rfc2136
if [ x$1 = x ]
then
        sleep 1
        $0 delayed
else
	p=`ip a | grep global | grep inet6 | sed 's/^\s*//' | while read a; do grep ::4 <<<$a > /dev/null && echo $a && break; done`
	[ x"$p" = x ] && p=`ip a s | grep global | grep inet6 | sed 's/^\s*//' | head -n1`
	i=`cut -d' ' -f2 <<<"$p" | cut -d/ -f1`
	nsupdate -k /etc/rfc2136.conf << EOF
	server ns1.sijanec.eu
	update delete `hostname`.rfc2136.sijanec.eu. AAAA
	update add `hostname`.rfc2136.sijanec.eu. 1 AAAA $i
	send
EOF

fi