Kategória: Debian Linux

Zmenené: 6. február 2011

Debian a IPv6

Neviem presne od ktorej verzie jadra, ale súčasné jadro v Debiane (2.6.30) už nemá podporu Internetového protokolu verzie 6 (IPv6) skompilovanú ako modul, a tak riešenia pomocou blacklist nefungujú. To však našťastie neznamená, že sa IPv6 vypnúť nedá, len to treba urobiť inak.

IPv6 je reakciou na míňanie sa voľných verejných IP adries. Tento problém je známy už dávno a jeho riešenie je na svete tiež už niekoľko rokov. Tomuto riešeniu sa vraví IPv6, ale nebolo by Slovensko Slovenskom, keby to tu fungovalo. Realita je taká aká je, čiže mnohí poskytovatelia internetu sa s poskytovaním pripojenia k netu týmto protokolom neponáhľajú. V Debiane je podpora IPv6 zahrnutá už dávno (dokonca aj vo Windows). Donedávna bola táto podpora skompilovaná ako modul, a tak sa dalo relatívne jednoducho zariadiť jeho nenačítanie, a teda vypnutie.

Prečo ho vypínať? Nie preto, že by to bolo niečo zlé. Naopak, IPv6 prináša mnoho nových a dobrých vecí, ale za istých okolností môže spôsobovať problémy. Tými okolnosťami je najmä realita, keď sieť okolo Vás IPv6 nepodporuje, čo môže komunikáciu s okolím spomaliť, napríklad pri DNS (čo mi robí Opera). Opera najprv požiada o preklad mena na IPv6 adresu (záznam AAAA), lenže nedostane odpoveď, pretože IPv6. Tak preklad mena na adresu čaká na timeout a potom požiada o IPv4 adresu, a všetko začne fungovať tak ako má. Ale to spomalenie pri prvom pokuse o preklad môže byť citeľné, až nepríjemné.

Používatelia napr. FireFoxu už nejakú dobu majú možnosť vypnúť IPv6 v konfigurácii, a tak sa týchto ľudí tento problém netýka. V Opere som podobné nastavenie nenašiel, tak musím vypínať podporu IPv6 v jadre. Priamym zakompilovaním IPv6 do jadra prestal blacklist fungovať, a tak som musel hľadať riešenie iné.

Zakázanie IPv6 v jadre

Prvým riešením je kompletné zakázanie podpory protokolu IP verzie 6. Postará sa o to parameter jadra, ktorý je jadru predávaný pri štarte. A čo je pre to treba urobiť? Pridať parameter ipv6.disable=1 do svojho zavádzača.

GRUB

Ak používate grub (nie grub2, ktorý je teraz v Debiane predvolený), otvorte súbor /boot/grub/menu.lst a nájdite v ňom riadok s premennou defoptions:

# defoptions=vga=791 splash quiet

V riadku je dôležitý len názov premennej, reťazec vga=791 splash quiet je už moje nastavenie a u iných sa môže líšiť. Mriežka na začiatku má špeciálny význam (ono to je pre grub komentár, ale update-grub ho spracováva), preto ho treba nechať. Takže nájdime tento riadok a pridajme do neho spomínaný parameter ipv6.disable=1, takže výsledok môže vyzerať takto:

# defoptions=ipv6.disable=1 vga=791 splash quiet

Po uložení zmien ostáva spustiť príkaz update-grub, ktorý sa postará o správne vygenerovanie menu, takže pri ďalšom štarte už budú mať všetky jadrá (nie však v single režime) tento parameter pripojený a po ich načítaní bude podpora IPv6 vypnutá.

GRUB2

Pre tých, ktorí používajú novú generáciu grub, je potrebné upraviť súbor /etc/default/grub, do ktorého stačí pridať rovnaký parameter, takže nájdite si v tomto súbore riadok s premennou GRUB_CMDLINE_LINUX_DEFAULT, do ktorej stačí pridať spomínaný parameter. V mojom prípade výsledný riadok vyzerá takto:

GRUB_CMDLINE_LINUX_DEFAULT="quiet ipv6.disable=1"

Po úprave konfiguračného súboru treba znova vygenerovať konfiguráciu grub:

update-grub

V prípade, že chcete vypnúť IPv6 i pre záchranný režim (single), stačí tento parameter pridať aj do premennej GRUB_CMDLINE_LINUX.

Pozor ale, ak máte aj nejaké staršie, či vlastné jadro, nemusí tomuto parametru rozumieť!!!

Démony

Niektoré systémové démony prichádzajú v Debiane s konfiguráciou, ktorá predpokladá povolené IP verzie 6. Príkladom môže byť poštový server Exim, ktorý sa po vypnutí IPv6 nerozbehne s hlásením paniclog /var/log/exim4/paniclog has non-zero size. Je potrebné upraviť súbor /etc/exim4/update-exim4.conf.conf, kde je v premennej dc_local_interfaces aj hodnota ::1 a túto zmazať:

dc_local_interfaces='127.0.0.1'

…a exim sa opäť rozbehne, teda po zmazaní spomínaného paniclog .

Zakázanie IPv6 na rozhraniach

Druhou možnosťou je zakázanie nastavenia (a používania) IPv6. Týmto spôsobom ostane podpora v jadre zapnutá, len nebude používaná. Postará sa o to príkaz:

sysctl -w net.ipv6.conf.all.disable_ipv6=1

Samozrejme, po jeho použití ostávajú niektoré problémy otvorené, a to najmä ten, že po reštarte bude IPv6 zase povolený. Aby teda zmena bola trvalá, stačí vytvoriť súbor, povedzme ipv6.conf v adresári /etc/sysctl.d/ s obsahom:

#disable IPv6
net.ipv6.conf.all.disable_ipv6=1

K dispozícii sú aj ďalšie možnosti, ktoré sa postarajú o zakázanie autokonfigurácie rozhrania, či o vypnutie IPv6 len pre dané rozhranie:

  • net.ipv6.conf.all.autoconf
  • net.ipv6.conf.meno_rozhrania.autoconf
  • net.ipv6.conf.default.disable_ipv6
  • net.ipv6.conf.meno_rozhrania.disable_ipv6

Ostáva nám pevne veriť, že to nepotrvá dlho, kým bude možné IPv6 skutočne používať (a kupovať nové modemy a smerovače)…