
IPv6 krok za krokem (3)
Ve druhém díle jsme si naší síť připojili do
IPv6 Internetu a s napjatým očekáváním provedli první IPv6 ping.
Samozřejmě nám všechno na první pokus fungovalo, takže na sebe můžeme
být hrdí. V dešním díle si ukážeme, jak o naší nezměrné šikovnosti dát
vědět celému světu.
DNS
Při zprovozňování DNS nás čeká několik úkolů:
- Překlad jména na adresu.
- Zpětný překlad adresy na jméno.
- Vlastní provoz DNS přes IPv6.
Budu tiše předpokládat, že máte nakonfigurován alespoň jeden veřejně
přístupný DNS server (nejlépe bind řady 9.x) a že máte
zaregistrovánu alespoň jednu doménu (třeba mojedomena.cz),
kterou tento server obhospodařuje. Pokud tomu tak není, nejdříve vás odkážu na
DNS HowTo.
Samozřejmě, že zatím vše funguje pouze pro IPv4. Ale to se záhy změní.
Překlad jména na adresu
Tohle je nejjednodušší úkol. Jak jistě víte, k překladu doménového jména (FQDN - Fully Qualified Domain Name) na IPv4 adresu slouží
takzvané A-záznamy. V konfiguračním souboru pro zónu mojedomena.cz může jít třeba o takovýto zápis:
www IN A 60.70.80.90
Aby náš webserver byl přístupný i přes IPv6, potřebujeme pro něj
zvytvořit i AAAA-záznam. Třeba takhle:
www IN A 60.70.80.90
IN AAAA 3ffe:ffff:1234::baf
To je všechno. Jednoduché, že? Od nynějška budou IPv6 klienti na dotaz po adrese www.mojedomena.cz dostávat IPv6 adresu.
Zpětný překlad adresy na jméno
Pro tento typ dotazů se vžil název reverse lookup. V DNS se pro konfiguraci vztahu adresa->FQDN používá tzv.
PTR-záznam, a to jak pro IPv4 tak pro IPv6 adresy. Asi víte, že pokud chcete přeložit adresu 60.70.80.90 zpět na
jméno, musíte se nameserveru ve skutečnosti zeptat na PTR-záznam pro doménové jméno 90.80.70.60.in-addr.arpa.
Tázaný nameserver se koukne do své tabulky pro zónu 80.70.60.in-addr.arpa. a najde tam:
90 IN PTR www.mojedomena.cz.
Protože je rád, že pro vás našel odpověď a že to navíc šlo tak hladce,
hned vám hrdě oznámí výsledek.
Pro IPv6 je postup velmi podobný, ale přecejenom o malinko
složitější.
Jednak není úplně jisté ve které top-level doméně hledat odpověď:
Může to být buď v ip6.int., kde se nacházejí reverzní záznamy
pro adresy z rozsahu 6bone, nebo v ip6.arpa., kde se pro
změnu nacházejí adresy produkční. V minulosti bylo vše pod
doménou ip6.int., v budoucnosti by se i 6bone adresy
(pokud do té doby zcela nezaniknou) měly přesunout pod doménu
ip6.arpa.. V současnosti je bohužel realitou tento schizofrenní
stav.
Druhý problém je v zápisu IPv6 adres pro použití v reverzních
dotazech. Adresy se zapisují "odzadu", stejně jako v případě IPv4
adres, a to po jednotlivých půlbajtech (nibbles), vyjádřených
hexadecimální číslicí. Jednotlivé půlbajty jsou odděleny tečkou a na
rozdíl od "normálního" zápisu adres není možné žádnou část vynechat.
Z výše uvedeného plyne, že formát reverzního dotazu pro adresu
3ffe:ffff:1234::baf bude v tzv. nibble-formátu:
f.a.b.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.4.3.2.1.f.f.f.f.e.f.f.3.ip6.int.
Nyní tedy naučme náš nameserver odpovídat na tento dotaz.
Nejdříve musíme zajistit, aby se k nám dotazy vůbec dostaly. Musíme
tedy požádat tunnel brokera (obvykle skrz webové rozhraní), aby
delegoval zónu 4.3.2.1.f.f.f.f.e.f.f.3.ip6.int., která odpovídá
našemu prefixu 3ffe:ffff:1234::/48, na náš nameserver.
Dále musíme pro tuto zónu vytvořit záznam v konfiguračním souboru
named.conf:
zone "4.3.2.1.f.f.f.f.e.f.f.3.ip6.int" {
type master;
file "rev.ip6.3ffe-ffff-1234";
};
A nakonec vytvoříme soubor rev.ip6.3ffe-ffff-1234 s vlastním obsahem zóny:
@ IN SOA [...]
@ IN NS ns.mojedomena.cz.
f.a.b.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR www.mojedomena.cz.
Protože převádět IPv6 adresy do nibble formátu ručně není moc
praktické, existuje pro usnadnění několik utilitek, případně
webové rozhraní.
Další podrobnosti o podpoře IPv6 v DNS se můžete dočíst v
RFC 1886.
V některých dokumentech se ještě můžete dočíst o tzv. bitlabels
- odlišném formátu zápisu jak dopředných tak reverzních odkazů s
využitím A6 a DNAME-záznamů. Podrobnosti popisuje
například
RFC 3363
(Representing IPv6 Addresses in DNS). S tímto typem DNS záznamů se
experimentovalo v průběhu zhruba posledních tří let než bylo koncem
minulého roku definitivně oznámeno, že tudy cesta nevede. Bitlabels
poskytovaly některé zajímavé vlastnosti například pro
multihomed networks, tedy pro sítě, které používají více než
jeden globální prefix. Bohužel konfigurace těchto záznamů nebyla právě
jednoduchá a navíc se ukázalo, že v určitých případech může dojít k
nedefinovaným výsledkům, k přetěžování nameserverů a k dalším
nechtěným důsledkům. Podrobnosti můžete najít například
zde (The case against
A6 and DNAME). V současnosti by se tedy bitlabels již neměly používat.
Provoz DNS přes IPv6
Veškeré dotazování na IPv6 záznamy může samozřejmě probíhat jak přes
IPv4 tak přes IPv6 spojení. Stejně tak nameserver přístupný pouze přes
IPv6 protokol může bez potíží poskytovat klasické A-záznamy.
Protokol přenosu paketů je zcela nezávislý na jejich obsahu.
Ale aby byla naše konfigurace kompletní, naučíme nás DNS server
komunikovat přes IPv6. Pokud pro DNS používáme software
Bind 9.x,
je řešení jednoduché. Do souboru named.conf do sekce
options doplníme direktivu listen-on-v6:
options {
// [ ... ostatní konfigurační volby ]
listen-on-v6 port 53 { any; };
};
Po restartu procesu named bychom měli být schopni s
nameserverem komunikovat přes IPv6 adresu:
$ dig aaaa www.mojedomena.cz @::1
;; QUESTION SECTION:
;www.mojedomena.cz. IN AAAA
;; ANSWER SECTION:
www.mojedomena.cz. 3600 IN AAAA 3ffe:ffff:1234::baf
;; Query time: 188 msec
;; SERVER: ::1#53(::1)
Na posledním řádku vidíme, že se se serverem opravdu bavíme šestkovým
protokolem.
Tímto je základní konfigurace DNS hotova. Nyní můžete přidávat další
domény, subdomény (třeba ipv6.mojedomena.cz) a záznamy pro další
počítače. A aby nám to DNS k něčemu bylo, nakonfigurujeme si nyní pár
služeb.
Secure Shell - SSH
V této kapitole předpokládám, že používáte
OpenSSH rozumně nové verze.
Server - zde je situace celkem triviální: je potřeba změnit jedinou
řádku v konfiguračním souboru sshd_config (obvykle je umístěn v
/etc/ssh) a restartovat daemona:
# původní řádku ...
# ListenAddress 0.0.0.0
# ... změnit na:
ListenAddress ::
Čtyřtečka, tedy dvě dvojtečky za sebou, v Linuxu znamená "jakákoliv
IPv6 nebo IPv4 adresa". To je rozdíl oproti BSD systémům, kde je řádek
se čtyřtečkou chápán jako striktní "poslouchej na IPv6 socketu". Pokud
byste v BSD chtěli přijímat jak IPv4 tak IPv6 spojení, musíte
odkomentovat i řádek ListenAddress 0.0.0.0.
Přemluvit SSH klienta ke komunikaci přes IPv6 je ještě jednodušší - stačí
volba -6 na příkazové řádce. U novějších verzí dokonce ani tato
volba není potřeba - SSH klient se o IPv6 spojení bude snažit
automaticky. Přihlašování na server pak může vypadat třeba takhle:
$ ssh www.mojedomena.cz
The authenticity of host 'www.mojedomena.cz (3ffe:ffff:1234::baf)' \
can't be established.
RSA key fingerprint is 3e:75:...:6b:e1.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added
'www.mojedomena.cz,3ffe:ffff:1234::baf' (RSA) to the list of known \
hosts.
user@www:~$
Apache
Nové verze webserveru Apache 2.0.x
jsou na IPv6 provoz připraveny. Pokud svého Apache kompilujete ručně
na systému, který obsahuje všechny potřebné hlavičkové soubory a
knihovny, tak to konfigurační program pozná a všechno správně nastaví.
Předpokládejme tedy, že se kompilace a instalace povedla a čeká nás to
nejdůležitější - konfigurace. Jako vždy budu i zde předpokládat, že
umíte nastavit Apache pro IPv4 provoz.
Všechny změny se budou odehrávat v konfiguračním souboru
httpd.conf. Nejprve zajistíme, aby server poslouchal na IPv6
socketu. Stejně jako v případě SSH nám k tomu poslouží "čtyřtečka":
Listen [::]:80
Budeme tedy čekat na příchozí IPv4/IPv6 spojení na standardním portu
80. Zatím doba nepokročila natolik, aby se vyplatilo mít IPv6-only
web, takže musíme upravit svou stávající konfiguraci, aby uměla oba
protokoly. Jediná změna se týká hlavičky VirtualHost:
<VirtualHost [3ffe:ffff:1234::baf]:80 60.70.80.90:80>
ServerName www.mojedomena.cz
[...]
</VirtualHost>
Teď stačí proces webserveru restartovat a zkusit se připojit nějakým
browserem, který umí IPv6. Vhodným kandidátem pro textovou konzoli je
Elinks. Že jsme se skutečně
připojili přes IPv6 si zkontrolujeme v logu:
3ffe:ffff:1234::210:40ff:feb1:b2b3 - - [01/Jan/2003:00:00:00 +0100] \
"GET / HTTP/1.1" 200 1024
Závěr
A jsme na konci - řekli jsme si něco málo teorie, máme konektivitu,
chráníme se firewallem, nakonfigurovali jsme si DNS a funguje nám web.
Takže nastavujte, experimentujte, zkoumejte. A nedivte se, jestli za
půl roku bude něco trochu jinak - s IPv6 člověk nikdy neví ;-)
Další části seriálu:
|