za povevzavo v medmrežje uporabljam storitve ponudnika t-2, ki že poldrugo desetletje obljublja celotivo implementacijo ipv6.
kot omenjeno prej, ponudnik še vedno ni pravilno uvedel podpore za ipv6.
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.
doslej se je moj naslov sicer že spremenil, ker operater desetletje po njihovi prvi implementaciji ipv6 nov internetni protokol podpira le preizkusno.
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.
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.
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
.
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
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