Všechno funguje a nemusíme se o to starat, povídal náš procesní Chobůtek a popíjel si v klidu pivíka ve své kanceláři s lebkou. Přestože to myslel ironicky, je to často pravda, tedy pokud se někam nasadí chytré technologie pro automatizaci postavené na Linuxu. Všechno s nimi běží jak má, ovšem pokud to někdy selže, bývá pak divoko. Když třeba doma vypadne wifi, svět se úplně nezastaví. Když ale najednou vypadne roaming na čtyřech hektarech, to už dovede nahnat trochu adrenalinu.
Ale co by to bylo za život bez překvapení. Žít si tak trochu na hraně znamená mít nasazenou testing nebo dokonce unstable verzi distribuce v produkčním prostředí. Zrovna Debian testing má tu výhodu, že stačí prostě nastavit automatické apt a víceméně to bude udržovat jak stabilitu, tak nový software. Jenže čas od času si vývojáři nějakého programu řeknou, že je čas na nové, kompletně olajkované vydání nové verze, a že zpětná kompatibilita je moc mainstream, tak se pro jistotu totálně změní syntaxe konfiguračních souborů.
Tak trochu se dalo čekat, že tu s námi freeradius 2 nebude navěky, ale upgrade na verzi 3.0 přišel náhle a jeho sáhodlouhý changelog pochmurně svítil na vystajlovaném monochromatickém fullscreen terminálu jako studená sprcha a připomínal cosi mezi beznadějí a změtí podivných čmáranic a klikyháků. Byli jsme rázem offline. Totálně. Nejvtipnější je, že takové změny přijdou vždycky v těch nejnevhodnějších časových momentech, jsou tedy očividnými monumenty stvořenými v časové tísni.
Po troše hledání se dá zjistit uchlácholení, že migrace freeradius 2 na 3 není zase tak zlá a že většina nastavení vypadá stejně. Což je sice trochu pravda, ale je potřeba to číst řádek po řádku a rozpoznávat drobné nuance a podtržítka a slovíčka, co nic neznamenají. Asi nejdůležitější změnou je tady modularita. Ono je to nakonec hrozně moderní, takže si serverový program zvlášť definuje globální konfiguraci, dostupné a aktivní moduly a možné a aktivní virtuální hosty.
Základní jednotka, radiusd.conf, se prakticky stará jen o nastavení cest a následnou inkluzi dílčích konfigurací modulů, hostů a politik. To je v Debianu standardně zahrnuto a není potřeba se tím znepokojovat. Aktivní moduly v mods-enabled nejsou zase ničím jiným než prachobyčejnským seznamem symlinků do palety všech možností, jen ty možnosti nejsou v tomto případě binární, ale jsou to jednotlivé konfiguráky, které mají zase svoje subkonfigurace v mods-config. Chápeme tu paranoiu? Asi ajo, Jupiter, tak pojďme začít, ty čipero.
Protože není v první řadě ve výchozím stavu aktivní SQL, tedy freeradius nesosá nic z databáze, můžeme začít vytvořením symlinku pro sql v mods-enabled a hned se pustíme do úprav. V části sql se zase jako obvykle definuje konkrétní ovladač, který má pro MySQL tvar rlm_sql_mysql. Na tom by nebylo nic divného, jen je potřeba ještě, pro rány boží, nepřehlédnout extra položku dialect, která je ve výchozím stavu z nějakého psychodůvodu nastavená na sqlite, a tedy případné úpravy, zvlášť jsou-li potřeba divoké specifické MySQL operace, nebude jakože úplně korektně pracovat. Do obvyklého sledu nastavení položek connection stringu by mělo postačit jen vyměnit heslo a pokud se neměnila nijak výrazně struktura, lze ponechat i názvy tabulek. Jako další jsou read_groups a read_profiles, ve výchozím nastavené na yes, což je v pořádku, a úplně ke konci teprve seznam APček, tabulka nas, aktivovaná pomocí read_clients a definovaná pomocí client_table. Kdo si povšiml podtržítek, musí mít v očích už teď trní a trhat si vlasy hrůzou, jelikož migrace není zas tak pozvolná, jak by se asi chtělo. Specifická konfigurace v mods-config pak už spoléhá na nastavení dialektu, které není úplně zřejmé. Sem lze většinu konfigurace překopírovat ze starší verze, a to především schema (i když de facto k ničemu není, když máme živou databázi) a hlavně jednotlivá queries. Názvy proměnných zůstaly zaplaťpandu stejné a oddělení souborů je tu jen pro přehlednost.
Daleko větší legrace nastává s fungováním virtuálního hosta, ponechme default. Kromě běžných nastavení a směrování pro SQL s mínusky se tu explicitně předpokládá definovaná ověřovací metoda. Jestliže jsme měli u všech klientů z důvodů kompatibility a filosofie WRT-radauth nastavený dříve výchozí Auth-Type jako Local, tak se při zkoušení bez modifikace setkáme s velmi tvrdým rejectem a nebude úplně jasné, proč tomu tak je. Trocha debugování napoví, že je tahle metoda ve výchozím stavu neznámá. Protože nás ale tlačí čas, jelikož je už hodně pozdě v noci po koncertě a ráno už už svítá a očekávají nás čumáčkové, vytvoříme v sekci authenticate navzdory všemu varování, že by se to nikdy a za žádných okolností dělat nemělo, novou položku Auth-Type Local { … }. Otázkou na zamyšlení je, co do ní. WRT nám pošle MAC, my MAC ověříme a na jejím základě rozhodujeme - tedy ověřování je vždycky lokální, bez něj se neobejdeme - vyplývá z toho jediná možnost, je-li klient skutečně lokální, tj. vyplnil správně PSK, odpovíme jako ok a zbytek necháme na zvážení výstupu ze SQL modulu. Je jasné, že tohle není úplně to nejlepší řešení, ale uspokojení z něj je maximální a rychlé.
Zábavný bonus je, že pokud na úrovni databáze definujeme nějakou pokročilou hierarchii, o které freeradius nepotřebuje vědět, dostaneme okamžitě po tlamě, bude-li jakýkoliv záznam vzniklý v průběhu času špatně zavedený, tedy špatně přiřazený do své primární skupiny. Tím se nabízí spoustu motivace na domatlání webového rozhraní pro tyto operace, ale to až zase někdy, až konečně po sněhu jarem naprší a zahřmí se a na nebi se rozsvítí hvězdy a komety, za rohem každá potvora nakonec zmizí a Stázina se konečně dostane Kubovi za ženu.