Published on 2003-2-24 at linuxzone.cz

IPv6 krok za krokem - 3

Michal Ludvig <michal@logix.cz> (c) 2003

V minulé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ů:

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 ::, 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í ;-)


IPv6 krok za krokem: [ 1 ] [ 2 ] [ 3 ]
[ Všechny články ] [ Domácí stránka ]
 

Place for your feedback...
No messages entered so far.