Crmgo Blog

úvod

úvod

Prevence úniku IPv6 V našich experimentech budeme používat globální IPv6 adresy z rozsahu určeného pro použití na Internetu. V dnešní době, kdy poskytovatelé nepodporují a neudělují IPv6 adresy svým zákazníkům, by tyto experimenty neměly způsobit žádné problémy. Nicméně pro jistotu,…

úvod

Zamezení úniku IPv6

Při našich experimentech budeme používat globální IPv6 adresy z rozsahu určeného pro použití v Internetu. V současné době, kdy poskytovatelé nepodporují a neudělují IPv6 adresy svým zákazníkům, by tyto experimenty neměly způsobit žádné problémy. Pro jistotu však na vašem routeru zablokujte propouštění IPv6 paketů ven. Pokud váš router běží na Linuxu, můžete celý IPv6 provoz zablokovat následujícími příkazy:

1
2
3
# ip6tables -P OUTPUT DROP
# ip6tables -p INPUT DROP
# ip6tables -p FORWARD DROP
Přiřazení globálních IPv6 adres

Adresy link-local, které jsme použili v první článku, jsou v použití poměrně omezené. V reálném světě budeme potřebovat globální unicastové adresy. Mezi takové adresy patří adresy z oblasti 2000::/3. Zvědavci mohou vědět, že adresy z oblasti 2001:0DB8::/32 jsou určeny pro použití v experimentech, takže ty budeme používat my. Přiřaďme skutečnou IPv6 adresu síťovému rozhraní eth0:

1
# ip -6 addr add 2001:0db8::1/64 dev eth0
Všimněte si: /64 není CIDR notace, ale počet bitů prefixu. Následující diagram pomůže pochopit, o co jde:

1
2
3
2001:db8:0000:0000:0000:0000:0000:0001
_____________|____|___________________
Network ID Subnet Interface ID
Network ID je definován poskytovatelem, když přiděluje blok IPv6 adres. Vy můžete spravovat hodnoty Subnet a Interface ID. V našem případě je tedy 64 bitů vyhrazeno pro Network ID + Subnet a 64 bitů pro Interface ID. Pamatujte, že v IPv4 bylo pro celou adresu vyhrazeno 32 bitů, takže vám tento velký blok adres bude stačit na velmi dlouhou dobu!

Nyní můžete pingovat rozhraní v rámci lokálního systému pomocí přiřazené IPv6 adresy. Zde pro ukázku zadávám dlouhou IPv6 adresu v plném formátu, abyste viděli, jak ji program ping6 automaticky zkrátí:

1
2
3
$ ping6 2001:db8:0:0:0:0:0:1
PING 2001:db8:0:0:0:0:0:1(2001:db8::1) 56 data bytes
64 bytes from 2001:db8::1: icmp_seq=1 ttl=64 time=0.043 ms
Ping z jiného hostitele však neprojde, protože k tomu, stejně jako u IPv4, budeme potřebovat router.

Přidávání adres

Můžete přidávat libovolný počet adres rozhraním vašich systémů. Stačí počítat v šestnáctkové soustavě po pořádku: 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, 10, 11 atd., čímž získáte nové adresy:

1
2
3
4
5
6
7
8
2001:db8::1
2001:db8::2
2001:db8::3
...
2001:db8::18
2001:db8::19
2001:db8::1a
2001:db8::1b
Směrování

Samozřejmě musí váš router podporovat IPv6. Pokud je vaším routerem systém Linux, můžete směrování povolit následujícím příkazem:

1
# sysctl -w net.ipv6.conf.all.forwarding=1
Kontrolu, zda je směrování IPv6 povoleno, provedete příkazem:

1
2
# cat /proc/sys/net/ipv6/conf/eth0/forwarding
1
„1“ znamená, že je vše v pořádku a směrování IP verze 6 je ve vašem zařízení povoleno. Nyní nainstalujte radvd – router advertiser daemon a do jeho konfiguračního souboru /etc/radvd.conf umístěte následující obsah, případně změňte název rozhraní eth0:

1
2
3
4
5
6
7
interface eth0
{
AdvSendAdvert on;
prefix 2001:db8::/64
{
};
};
Nyní přidejte IPv6 adresu rozhraní vašeho routeru:

1
# ip address add 2001:db8::1a/64 dev eth0
Zkontrolujte, zda se vše podařilo podle plánu, pomocí příkazů

1
2
3
$ ifconfig eth0 | grep inet6
inet6 addr: 2001:db8::1a/64 Scope:Global
inet6 addr: fe80::20e:2eff:feb9:cbad/64 Scope:Link

1
2
3
$ ip -6 route show
2001:db8::/64 dev eth0 metric 1024 mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth0 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 0
A nyní můžete spustit radvd:

1
# /etc/init.d/radvd start
Nyní byste měli bez problémů pingovat rozhraní vašeho routeru. Všimněte si, že v případě globální adresy, na rozdíl od link-local, nemusíte uvádět název rozhraní:

1
2
3
$ ping6 2001:0db8::1a
PING 2001:db8::1a(2001:db8::1a) 56 data bytes
64 bytes from 2001:db8::1a: icmp_seq=1 ttl=64 time=1.73 ms
Všechny počítače nacházející se ve stejném switchi jako router by nyní měly automaticky získat adresy z rozsahu 2001:0db8::/64. Chcete-li do tabulek směrování vašich hostitelů přidat výchozí router, použijte příkaz:

1
# ip -6 route add default via 2001:db8::1a
Můžete se vyhnout ručnímu přidávání této položky do tabulek směrování hostitelů mírným rozšířením konfigurace vašeho radvd:

1
2
3
4
5
6
7
8
9
10
11
12
13
interface eth0
{
AdvSendAdvert on;

prefix 2001:db8::/64
{
AdvOnLink on;
AdvAutonomous on;
};
route ::/0
{
};
}
Nyní v tabulkách směrování IPv6 vašich hostitelů uvidíte následující:

1
2
3
4
$ ip -6 route show
...
default via 2001:db8::1a dev eth0 metric 1024 mtu 1500 advmss 1440 hoplimit 0
...
Co dělat, pokud nechcete, aby radvd přiděloval IPv6 adresy každému v vaší síti? Do konfiguračního souboru démona zadejte link-local adresy těch stanic, kterým chcete přidělovat adresu, a požadavky od ostatních budou jednoduše ignorovány:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
interface eth0
{
AdvSendAdvert on;

prefix 2001:db8::/64
{
AdvOnLink on;
AdvAutonomous on;
};
route ::/0
{
};

clients
{
fe80::20d:b9ff:fe05:25b4;
fe80::20b:6aff:feef:7e8d;
fe80::221:97ff:feed:ef01;
};
};
Kalkulačka IPv6 adres

Pochopení binární aritmetiky je velmi důležité pro pochopení principů adresování v IP. Ruční výpočty adres mohou být poměrně únavné a často vedou k chybám. Proč tyto výpočty nenechat na počítači? Existuje mnoho online nástrojů pro tento účel, vyberte si ten, který se vám líbí! Většina distribucí také nabízí v repozitářích utilitu ipv6calc, která se hodí pro lokální použití.

DNS služby

Obecně řečeno, konfigurace DNS pro IPv6 je téma na poměrně rozsáhlý článek, ale doufám, že některé zde popsané body vám poskytnou potřebný směr.

Myšlenka ležící v základu automatické konfigurace síťových rozhraní IPv6 (link-local adresy a router advertisements) má za cíl zbavit vás nutnosti udržovat DHCP server, stále však musíte udržovat DNS server, aby hostitelé mohli provádět převod jmen na IP adresy a zpět. BIND9 již podporuje IPv6, ale jako vždy v případě BINDu budete muset trochu zapracovat a upravit několik konfiguračních souborů, které jsou umístěny na různých místech. V jiných DNS demonech by bylo zapotřebí méně úsilí, ale žádný z nich zatím plně nepodporuje IPv6. Pokud vás zajímá téma konfigurace IPv6 v BINDu, můžete se obrátit na dokumentaci BINDu.

V předchozím článku jsme se zabývali možností použití starého dobrého /etc/hosts. Jako alternativu můžete použít Dnsmasq, který je mým oblíbeným nástrojem pro organizaci DNS v lokálních sítích. Podporuje IPv6-DNS a TFTP, ale nemá DHCP, což mu neumožňuje být univerzálním řešením. Dnsmasq zpřístupňuje obsah /etc/hosts přes síť pomocí DNS protokolu. Nejprve nakonfigurujte IPv6 rozhraní vašich hostitelů tak, aby používala statické adresy, a poté umístěte přiřazení adres k jménům do souboru /etc/hosts vašeho Dnsmasq serveru a restartujte démona Dnsmasq. Dále nainstalujte rdnssd – daemon pro vyhledávání rekurzivních DNS serverů na stejném hostiteli, kde máte nainstalovaný radvd, a přidejte do konfiguračního souboru /etc/radvd.conf řádek, který určuje adresu vašeho Dnsmasq serveru:

1
RDNSS 2001:0db8::1b
Restartujte radvd. Projekty radvd a rdnssd jsou ve vývoji, takže není vyloučeno, že můžete narazit na nějaké problémy, i když na mých Debian systémech fungují bez problémů.

Poznámka: příspěvek mohl vzniknout s pomocí AI a lidskou redakcí. Odpovědný: Dmytro Lomaka, Kaltenkirchen.