Category: szívás

Boldog új évet!

Valamelyik népművelő csatornán láttam régebben egy filmet a német tengerészet csúcs hadihajójáról – és arról, hogyan sikerült elsüllyeszteni. Ez jutott eszembe, ahogy a tegnapi éjszaka során folyamatosan süllyedtem én is a letargiába.
A hadihajó a világ egyik legerősebb hajója volt. Tulajdonképpen sebezhetetlennek készült, egy apró hibával. Ha megfelelő szögből belőttek az egyik tatbudi 10 centis ablakán, akkor eltalálhattak valami robbanásveszélyes berendezést, melytől levegőbe röpülhetett a tatfedélzet.
Az egészről film volt. Látszott a viszonylag kicsike angol hajó és a bazi nagy német hadihajó, ahogy szép kényelmesen fordul oldalra, hogy lesorozza a felszínről az angol jószágot. Aztán egyszercsak valamelyik angol belepukkantott egyet a nagyvilágba – és mit ád Isten, a lövedék pont bement a budiablakon, a hajó meg fordulás közben épp a kritikus szögben volt. A következő pillanatban felrobbant a német hajó segge és szép lassan befordult az egész a tengerbe.

Képzeld el, hogy van egy címtárad, meg egy Exchange szervered. Az ügyfelünknek is volt. Aztán január másodikán hajnali négykor a vacak, kifejezetten csak tartalékcélokra szolgáló PIII WS kategóriájú DC2 merevlemeze diszkrét pukkanással elhalt. Dugovics Tituszként magával rántott egy computer objektumot is a címtárból.
Ez még nem olyan nagy tragédia: a DC-t ki kell irtani, újat kell rakni helyette, a computer accountot meg resetelni kell. Mint ahogy Cary W. Shulz – Active Directory MVP – is írja:

There are user account objects just like there are computer account objects. The computer account objects have a secure channel with a Domain Controller. Over this secure channel the workstation and the Domain Controller communicate. In WIN2000 the computer account objects change their secret password every 30 days ( in WINNT 4.0 it was seven days ). Sometimes this secure channel gets flubbed up…for whatever reason. So, based on what I just wrote you can see how this can create a little bit of a problem. So, in order to resolve the problem of the flubbed up secure channel you Microsoft gives us the ability to reset that secure channel.

Illetve később Bizonyos Steve hozzáteszi:

In that scenario I would reset the Computer account first before trying the remove/add to domain. This works for me 99% of the time, the 1% usually require the remove/add method.

Csakhogy… gondolj bele, mi történik akkor, ha a flubbed account pont egy Exchange Server computer accountja – és bejön az 1%, azaz az account reset sem segít.

Hagyok időt végiggondolni.

A fent említett remove/add módszer értelemszerűen nem működik. Pontosabban meg lehet csinálni, de onnantól az Information Store az életben sem fog elindulni.

Az esetet a kollégám kapta tüdőre. Reggeltől estig a tartományt foltozgatta: vacak DC eltávolítása, tartományi replikáció beindítása, kismillió anomália megszűntetése, új DC üzembeállítása, makacs account resetelgetés… nem segített. Este héttől váltottunk, mint a pankrátorok: arénából ki, arénába be, high five.
Mit láttam?

  • Az Exchange szerveren a szolgáltatások leállítva, mert minek fussanak.
  • Az Exchange szerveren a tartományba belépni nem lehet: azt mondja, nincs olyan account.
  • A netdom join azt mondja, hogy már van ilyen account.
  • Amikor elrontom szándékosan a jelszavamat, akkor azt írja, hogy rossz a jelszó. Azaz a DC – és az AD – elérés tökéletes.
  • Amikor kitiltom a computer accountot, akkor azt írja, hogy ki van tiltva. Az AD acélos.
  • Próbaképp egy munkaállomás beléptetése: tökéletes.
  • Az eventlog alapján az account “Access Denied”.
  • Ha everyone full control-t állítok rajta, akkor is.

Brainstorming.

  1. Vegyük ki a tartományból majd tegyük vissza. Hevesen tiltakoztam. (Lásd korábban.)
  2. Promotáljuk DC-vé, majd az account reset után demotáljuk vissza sima szerverré. Újabb heves tiltakozás. (A dcpromo és az Exchange nem férnek meg egy csárdában. Ha ráküldjük egy Exchange szerverre, akkor tönkrevágja az IIS-t meg az asp.net-et, újra kell húzni mindkettőt. És utána belassul, meg össze-vissza működik. De a fekete leves a következő lépés: demotáláskor az IIS és az AD megszűnik egymással kommunikálni. Nem csak a kérdéses szerveren, hanem az egész organizációban. Nem kicsit durva.
  3. Gondolkozzunk. Mi mehetett tönkre? Az AD szépen működik. Az Exchange számítógéphez nem nyúlt senki, az adatbázisok tutira jók. A network, névfeloldások tökéletesek. Ha valami itt elromlott, az csak a computer objektum lehet.
    Hmm… állítsuk vissza. Elméletileg létezik korlátozott hatósugarú autoritatív restore.
  4. Megpróbálkozhatunk egy éles Exchange disaster recovery-vel is. Persze, tudjuk, hogy az Exchange tökéletes, de ha eljátszanánk, hogy ugyanazzal a névvel átraknánk az Exchange szervert egy másik gépre, talán ki tudnánk erőszakolni egy account reset-et.
  5. Persze nem kizárt, hogy az az elkefélt computer account ellenáll ennek az invitálásnak is. Akkor nincs más hátra, csinálunk egy új Exchange szervert más névvel, átmásoljuk rá az adatbázisokat, a felhasználóknál – szerencsére nincs sok – töröljük az Exchange tulajdonságokat, majd létrehozunk mindegyiknek egy új postafiókot, MAPI profilt, a régi Exchange szervert kiradírozzuk, végül egy offline adatbázismatyizóval kiszedjük pst-kbe a régi leveleket és visszalapátoljuk a felhasználók postafiókjába. Elég gusztustalan, de B tervnek megteszi.

Az utolsó három igéretesnek tűnik. Tudjuk, csak a kombinált bérlet a biztos. Ilyen sorrendben pont jó is lesz nekiindulni az éjszakának.
3. pont. Ahhoz bizony kell egy system state mentés is.
– Van? – kérdezem a helyi rendszergazdát.
– Persze – vágja rá.
Aztán nem sokkal később jön a helyesbítő telefon.
– Volt – közli – Azon a merevlemezen tartottuk, amelyik elpukkant.
Feltúrjuk a gépeket, az egyiken végül beleakadtunk egy két évvel ezelőtti systemdrive+systemstate mentésbe. Volt már akkor ez az Exchange szerver? Éppenhogy: 3 hónappal előtte lett telepítve. Nagyon necces. Nézzük csak, hogyan működik Windows 2000 szerveren az autoritatív restore? Aszongya, belépünk Directory Restore módban, visszatöltünk egy komplett systemdrive+systemstate mentést(!), majd ntdsutil-lal kijelöljük, melyik OU-t akarjuk megtartani, utána újraindítjuk a gépet, mely magára rántja az AD-t. Hát… ennek csak egy veszélye van, az, hogy működik. Gondoljunk bele, visszarántunk egy két évvel ezelőtti állapotot. Lehet, hogy akkor még nem is maguktól tekertek a bitek az alaplapon, hanem kis zöld emberkék hurcolászták őket. Aztán a systemstate… az nem csak az AD-t jelenti, hanem rengeteg operációs rendszer szintű adatbázist is. Azzal, hogy visszarántom az AD-t, az összes többi pókhálós cucc ottmarad. Esetleg azt tudom megcsinálni, hogy mielőtt belevágok, csinálok egy másik systemdrive+systemstate mentést, az első autoritatív restore után visszaröffentem a computer account-ot, ezzel megnövelem az UID-jét, majd csinálok egy non-autoritatív restore-t, melyet teljesen felül fog vágni a jó AD és visszakerülnek a rendszerkomponensek is a helyükre.
Ezzel csak két baj van.

  • Egyfelől egyáltalán nem biztos, hogy a két évvel korábbi állapotú DC be fog tudni lépni a tartományba. Meg ugyan nem esküdnék rá, de úgy rémlik, van valami korlát, ameddig felhasználható a mentés.
  • Elég rizikós egy pici tartomány hegesztésekor egy baromi nagy AD-t belengetni, felvállalni az inkonzisztencia kockázatát.
  • Végül azt írja a manuál, hogy egy ilyen restore során egy csomó AD elem by design tönkremegy. Látható is a blue-frame jellegű elvből, hogy mindent visszarak, még akkor is, ha nem kellene, és abba vág majd egy maszkot. Azaz optimáis esetben visszaáll a computer account, de elszállnak a backlist értékek, az FRS replikáció, a RID pool… meg ilyenek.

Jé, ez három…
Ettől függetlenül ezt az utat túl kockázatosnak ítéltem. Ha a DC 2003-as lenne, a mentés pedig 30 napon belüli, akkor esetleg, de így… inkább nem.

Ennyit az egyenes útról. Nézzük a görbéket.

A korábbi disaster recovery cikk sem rossz, de az igazi recept Petrinél található. Mielőtt bármit is csináltunk volna, a helyi rendszergazda a régi Exchange szerver adatbázisait elmentette félre egy másik hardveren, felhúzott egy nagyjából ugyanolyan operációs rendszerű gépet (oprendszer, SP, patch, Windows komponensek – különösen az utóbbi a fontos). Ezután lehúzta a netről a régi szervert, az újnak átírta az IP címét, én a a nevét, közben reseteltem a computer accountot, majd beléptettem az új szervert a tartományba. Áttörtünk. (Mondjuk elsőre elhűlt bennem a vér, mert egy lépésen belül próbáltam átnevezni is meg beléptetni is a gépet, de az éber – akkor már durván 30 órája ébren lévő – helyi rendszergazda szerencsére figyelt… és a második kisérlet már sikerült.)
Innen már simán ment minden, úgy, ahogy Petri bácsi leírta. A végén extra bónuszként az is összejött, hogy egyszerűen visszamásoltam a korábbi adatfájlokat és az IS szó nélkül felmountolta.

Délután fél egy.
Nem sokkal szilveszter után. Mondanom sem kell, hogy a kollégám is, meg én is szabadságon vagyunk.

De így jár, aki az informatikusok bohó szakmáját választja.

ps.
Éppen befejeztem a jegyzőkönyvet – addig kell írni, amíg emlékszem, mi is történt pontosan – amikor csörgött a telefon. A Service Desk szólt, hogy jött egy bejelentés, miszerint megint nem megy a levelezés az ügyfélnél. Sóhaj, enyhe káromkodás, irány vissza. Átnézni a konnektorokat egytől-egyig, tesztlevelek innen-oda, meg vissza… minden működik. Még be sem fejeztem, amikor újból csörgött a telefon. A felhasználó pontosított, azt szerette volna mondani, hogy reggel nem ment a levelezés.
Délután fél öt van.
Köszönjük, az Ön hívása fontos nekünk.

Gotcha!

Elkaptam. Avagy a zombi visszanéz.

Jó két napja az összes agykapacitásomat ez a címlistás balhé kötötte le. Aztán tegnap este fél tizenegykor bevillant a fejembe egy beállító panel. Bakker, tuti, hogy azon rossz adat van! Beléptem az ügyfél rendszerébe, megnéztem – és tényleg. A gyerektartományra vonatkozó RUS olyan GC-re hivatkozott, mely időközben megszűnt. (Miért zombi? Mert elméletileg Exchange2007 organizációban a címlista frissítésében már nem lenne szabad, hogy a RUS szerepet játsszon. Aztán mégis.)
Mindenesetre, anélkül, hogy túlzottan belemennék a részletekbe – úgyis cikk lesz belőle valamilyen formában – ettől még nem lett barátságosabb ez a címlista szétosztás. Csak hogy két rétegét említsem:

  1. A kijelölt Exchange szerver alapértelmezésben naponta egyszer csomagolja bele a GAL pillanatnyi állapotát az Offline Address Book-ba.
  2. A cached módban működő Outlook kliensek alapértelmezésben 24 óránként töltik le az OAB-ot.

Azaz extrém esetben simán összejöhet, hogy az adminisztrátor létrehoz egy postafiókot, de a kliensnél csak 48 óra múlva jelenik meg a címlistában. Döbbenetes. És akkor a többi rétegről, a kiszámíthatatlan RUS stemplizésekről, a hasonlóan kiszámíthatatlan Public Folder replikációról, a kiszámítható, de szintén időt befolyásoló címtárreplikációról még nem is beszéltem. Nagyon ráfért már erre az egész koncepcióra egy ráncfelvarrás – szomorú, hogy az új disztributálás csak Exchange2007/Outlook2007 kombinációban működik.

Az egyiknek sikerül, a másiknak nem

Van olyan, hogy nem csak a politikus, hanem a szoftvergyártó is elk elrontja. De hogy annyira büszke legyen rá, hogy erre a hibára vizsgakérdéseket is hegyezzen ki, az már azért valahol pikáns.

A 70-237-es vizsgáról van szó, ez a neve: PRO: Designing Messaging Solutions with Microsoft Exchange Server 2007.

Nézzük a következő szituációt. (Ne örülj, a kérdés ilyen formában nem szerepel a vizsgán, itt csak az elv a lényeg.)
Van egy működő Exchange 2003 organizációd, benne egy Front-end és egy Back-end szerverrel. Ezt az egészet át szeretnéd slisszantani (transition) egy Exchange2007 organizációba, úgy hogy a végén legyen egy CAS/Mailbox/Hub Transport szervered. Milyen sorrendben tervezed megvalósítani a folyamatot?
Mivel utáljuk a komplikációkat, így egyszerűen azt mondjuk, hogy preparáljuk a címtárat, felhúzzuk a szervert a szükséges funkciókkal, majd átirányítjuk rá az owa.cegnev.hu címet, kiléptetjük a régi Front-end szervert, átmozgatjuk a postafiókokat, replikáljuk a public foldereket és a régi Back-end szervereket meghagyjuk az Sp1-ig. Működni fog? Nagyjából. De megdöbbentő módon, owá-n keresztül nem fogjuk elérni a public foldereket, hiába tartottuk meg a régi szervert is.
Mit ajánl ehelyett a módszer helyett a Microsoft? (Ugye, ezt is kell válaszolni majd a vizsgán.)
Azt, hogy húzzál fel először egy külön CAS szervert (HTR lehet rajta), majd egy másikra tedd a Mailbox/HTR szerepköröket. A többi már ugyanaz, mint az előbb. Azaz amíg nem jön ki az Sp1, addig nem egy, hanem két Exchange2007 szervered legyen – és a CAS ne legyen egy gépen a Mailbox szerepkörrel.

Természetesen ezt meg lehet tanulni. Hány olyan dolog van egyébként is, amit megtanultunk, de nem értünk?
De erre speciel van magyarázat.

Kicsit távolról futunk neki.
Az első sarokpont az, hogy az Exchange2007 Mailbox szerveren lévő public folderek webes protokollon keresztül nem érhetők el. Ezt mondjuk, tudtuk – de nem árt elismételni. (Majd Leonárd az Sp1.) Ezért kell a régi Back-end szerver, a public folderekkel.
Menjünk tovább. Amikor egy webes kérést le kell kezelni, az történhet átirányítással vagy proxyzással. Jelen esetben, amikor bejön a /public alkönyvtárra irányuló kérdés, akkor valaminek át kellene irányítania a kérést a régi Back-end szerverre. Ez az átirányítás nem működik az egyik esetben – és működik a másik esetben.

Merüljünk mélyebbre. Van két dll, a DaveX.dll és az ExProx.dll. Mindkettőben van olyan függvény, amely képes ennek az átirányításnak az elvégzésére. Csakhogy… a DaveX.dll ezt az átirányítást az FQDN alapján végzi. Pontosítok: a belső FQDN alapján. Azaz ül Átlag János felhasználó otthon, bedönget az owá-n, ott azt kapja, hogy menjen tovább az exhange-backend.cegnev.local szerverre – és erre azt mondja az Internet szolgáltatójának DNS szervere, hogy ‘mivan, vazze?’. Ezzel szemben az ExProx.dll sokkal intelligensebb, ő ezt tisztességesen le tudja rendezni, berkeken belül. Igenám, de ha a két dll együtt van jelen, akkor DaveX győz – az a DaveX, aki a Mailbox szerepkörrel települ.
Tehát ha egy gépen van a CAS/Mailbox funkció, akkor DaveX irányít, bele a semmibe. Ha külön van a CAS funkció, akkor ExProx irányít, a jó helyre.

Ennyi volt a mese. Látható, a rendszer két helyen is el lett cseszve. Valószínűleg egyszer majd ki is javítják ezeket a hibákat.
De addig vizsgakérdés lesz a körbedolgozásuk.

Régen szívtam már

Ma egy ISA2004 szervert kellett telepítenem távolról. Nincs ebben semmi különös, csináltam már párszor. Az oprendszert a kollégák már rárakták, nekem csak állítgatnom kellett, illetve a tűzfal szoftvert felugrasztanom. Hiába távolról érem el, a szoftver okos, telepítés során az IP címemet helyből berakja a Remote Administration Group-ba, így gond nélkül végig tudom nyomni a telepítést, sőt a konfigurálást is.

Most viszont valami szellem megzavarhatta a folyamatot – egyszercsak megszűnt az RDP kapcsolat a szerverrel. Olyannyira megszűnt, hogy nem is tudtam visszakapcsolódni. Nem öröm, de itt van az ILO, majd megnézzük, mi van. Semmi. Minden remekül működik a gépen, a telepítés lefutott, a tűzfal működik. Megnéztem, az IP címem bent volt a megfelelő csoportban. Csak éppen továbbra sem értem el a gépet. A távoli hozzáférés engedélyezve volt, szabály nem tiltotta az RDP-t.
Átnéztem az ISA network beállításait, a routing táblát, a hálókártyák IP beállításait – minden rendben volt.
Nosza, nézzük a logot. Igen, ott vigyorgott benne, hogy a szerver lepattintja a 3389-re küldött kéréseimet. Indoklásként csak ennyit mondott:
0xC0040017 FWX_E_TCP_NOT_SYN_PACKET_DROPPED.

Google.

A non-SYN packet was dropped because it was sent by a source that does not have an established connection with the ISA Server computer.

Mivaan? Elolvastam néhányszor, de nem lettem okosabb.

Végül kínomban kipróbáltam, hogy felvettem a csoportba egy másik gépet, majd arról léptem be, terminál kliensből. És innen sikerült, vissza tudtam lépni az eredeti, telepítési sessionba. Ott pedig az ún. ‘Oké’ képernyő fogadott, az a képernyő, ahol az ember nyugtázza, hogy igen, megtörtént a telepítés.
Leokéztam.
Onnantól kezdve be tudtam lépni az eredeti gépemről is.

Hosszú percekig csak néztem magam elé bambán.

Majdnem-Herkules

Igen, ő a Muszáj-Herkules testvére.

Felteszem, mindenki tudásában vannak fehér foltok. Olyan területekre gondolok, melyeket ha máskor nem is, de vizsgára megtanultunk – aztán utána el is felejtettük, mert soha nem volt rá szükségünk. Nekem ilyen terület a biztonsági sablonok molesztálása.

Adott volt a következő feladat: telepítsünk egy egyszerű failover clustert multi ügyfél magyar leányvállalatához. A vasak egyszerű pengeszerverek, oprendszer, IIS (erőforrás lesz belőle az ügyfél alkalmazásában). A gép tartományba beléptetve, lokál admin jogunk van, tartományi admin jog nincs. Jól is néznénk ki.
Mielőtt még felhajigálnánk a clustert (pontosabban beizzítanánk, hiszen a WIndows2003 Enterprise változatban helyből települ), még le kell futtatnunk egy helyi specifikus alkalmazást: ez bekeményíti az operációs rendszert, bekonfigurál egy csomó mindent, felrak ezt-azt. Céges standard, kötelező.
Jöhet végre a cluster. Gyönyörűen fel is települ, majd amikor leokézom az utolsó ablakot, jön egy kövér error. Hogy access denied.
Első alkalommal ijedtemben eltávolítottam a node-ot. (Ami persze nem igazán egyszerű dolog, hiszen grafikus felületről nem látszik semmi. A megoldás: ‘cluster node <nodename> /forcecleanup’) De az újabb, alaposabb konfigurálásnál ugyanezt kaptam. Ráadásul a kollégák szóltak, hogy a cluster tulajdonképpen működik, kívülről elérhető. Csak éppen nem menedzselhető. Zorró, a fantomklászter. Jöttek a szokásos ráolvasások éjfélkor keresztútnál (filemon, regmon, user jogosultságok, gpresult), de nem sok sikerrel. Aztán az ügyfél ötletére ráhúztuk a rendszerre a ’setup security’ biztonsági sablont – és onnantól már a cluster szolgáltatás sem indult el. Viszont amint visszaállítottuk a cluster service account user jogosultságait a setup security sablonban, egyből menedzselhetővé vált a cluster.
Azaz a hardening csinált valamit, amitől elérhetetlenné vált a cluster management GUI – amint visszatettem egy gyengébb sablont, minden ment simán.
Azt hihetnéd, hogy örültünk ennek a megoldásnak. Óriási tévedés. A leánycégnek az égegyadtavilágon semmi ráhatása sincs arra, hogy a magasságos multi anyacégnél a biztonsági részlegen milyen hardening eljárást dolgoznak ki. Sőt, még tájékoztatást sem kapnak, hogy tkp. mi is történik a folyamat során. A maximum, amit ki tudtunk csikarni, az egy mérsékelt érdeklődés volt, és egy igéret, hogy ha kiderítjük, melyik beállítás okozza a hibát, akkor az eredményt felveszik a céges knowledge base-be.

Azaz identifikálni kell, ezerrel.

És itt jön be a képbe a Security Configuration & Analysis segédprogram. A Majdnem-Herkules.

Mielőtt tovább haladnánk a megoldási folyamatban, nézzük át részeletesen, hogyan is működik ez az eszköz.

Először is, az eszköz grafikus felülete csak MMC konzolból érhető el – azaz megfuttatjuk az mmc.exe progit, majd a snap-in-ek közé felvesszük a Security Configuration & Analysis konzolt. És ha már ott járunk, kapjuk fel a Security Templates konzolt is.

Nagyítás

Ha magunktól próbálunk rájönni az eszköz működésére, akkor gondban leszünk. Ugyanis ha nem ismerjük a logikáját, magunktól soha nem fogjuk kitalálni.
Az elv az, hogy van egy működő rendszer. Ez az, amely éppen dübörög a gépen, amelyen vizsgálódunk. És van egy munkaterület, ahová boncolási célzattal betölthetünk biztonsági sablonokat. Egyszerre mindig csak egyet. Ezt a munkaterületet adatbázisnak nevezték el. Az összes műveletnek ez a két terület az alanya.

  • Össze lehet hasonlítani a munkaterületen lévő sablont a jelenlegi beállításokkal. (Analysis.)
  • Tetszőlegesen módosíthatjuk a munkaterületen lévő sablont, majd elmenthetjük.
  • A munkaterületen lévő sablont ráhúzhatjuk a működő gépre. (Configuration.)

Nézzük részletesen.

Mielőtt bármit csinálnánk, munkaasztalt – adatbázist – kell definiálnunk. Jobbklatty, open database.

Nagyítás

Itt beírjuk a létrehozandó adatbázis (.sdb) nevét. Ezzel létre is jön. De mielőtt még kiérnénk a kuruzslóból, megkérdezi, hogy vajh melyik sablont szeretnénk betölteni? Válasszuk ki valamelyiket.

Nagyítás

Amivel egész biztosan nem okozunk galibát, az az összehasonlítás. Csapjunk bele.

Nagyítás

Rögtön az elején megkérdezi, hová mentse az összehasonlítás során keletkező log fájlt. Ezt jegyezzük fel, mert később szükségünk lehet rá. (Persze ha konzolból nyomjuk, az meg fogja jeleníteni a jobb oldali ablakban.)

Nagyítás

Aztán dolgozik az analízis. (Menj analízisbe, Ofélia.)

Nagyítás

Imhol a végeredmény. Látható, hogy a security fa melyik ágán vizsgálódunk és mely tulajdonság egyezik, mely pedig nem. Az eltérést a mismatch jelzi.

Nagyítás

A konkrét ábrán például láthatjuk, hogy a User Rights ágon belül a System Time állítgatási jog beállításai eltérnek az adatbázisban és az éles rendszeren. Nézzük meg, hogy hogy is néz ez ki a grafikus felületen:

Nagyítás

Igen, láthatjuk, hogy a munkaasztalon lévő sablonban a megfelelő beállítás előtt egy ikon jelzi, hogy ott valami nem stimmel.
Egész pontosan az ikon a következőket jelezheti:

  • Piros körben fehér iksz: a beállítás eltér a valós rendszer és a vizsgált sablon között.
  • Fehér körben zöld pipa: a beállítás megegyezik a valós rendszerben és a sablonban.
  • Kérdőjel: A beállítás nem létezik az adatbázisban, ergo nem is került kiértékelésre.
  • Felkiáltójel: Pont fordítva: a beállítás nem létezik a valós rendszerben.
  • Nincs semmilyen jel: A beállítás egyik helyen sincs definiálva.

Például a korábban a szövegfájlban látott mismatch így jelenik meg a grafikus felületen.

Nagyítás

Természetesen a munkaterületre betöltött sablont nem csak boncolhatjuk, hanem műthetjük is. Bármelyik beállítást módosíthatjuk, majd az így létrejövő sablont exportáljuk valamilyen új néven.
Értelemszerűen ahhoz, hogy ez a menüpont megjelenjen, előtte be kell tölteni egy sablont a munkaterületre, majd összahasonlítani az aktuális beállításokkal. Utána lehet menteni.

Nagyítás

Új sablont nem csak létezőből kiindulva hozhatunk létre – igaz, ehhez már egy másik konzolra lesz szükségünk. A Security Templates snap-in-ben jobbkattintás, majd New Template…

Nagyítás

Látható, hogy ez egy teljesen üres sablont hoz létre. Miénk a terep, tetszőlegesen perverz kombinációk létrehozása előtt nyilik meg a lehetőség. Csak arra vigyázzunk, hogy magunkat ne zárjuk ki a módosítási engedéllyel rendelkező személyek közül. Onnantól ugyanis unalmas hétköznapunk egy kicsit pörgősebbre fog változni.

Nagyítás

Itt pedig azt láthatjuk, hogy a Security Templates konzolban létrehozott MacskaRugjaMeg sablont mentés után már a Security Configuration and Analysis konzol munkaterületére is betölthetjük, további fazonírozás céljából.

Nagyítás

Amennyiben a megfelelően módosított sablont rá akarjuk húzni, akkor az Analysis menüpont helyett a Configuration menüpontot válasszuk – ekkor a munkaterületen lévő beállítások rámásolódnak az aktuális számítógépre.

Nos, nagyjából ennyi. Egész jó kis segédprogram.
Lenne.
Ha a program tervezése során figyelembe vettek volna egy átkozottul reális igényt: azt, hogy a meglévő gép biztonsági beállításaiból sablont gyárthassunk. De nincs. Tessék ilyen szemmel végigolvasni az eszköz működését: mindenhol a munkaterületet exportálhatjuk, oda meg már létező sablont tudunk csak betölteni. Ez egy akkora öngól, hogy még ma sem tudom igazán elhinni. Programozástechnikailag semmibe nem került volna összedobni, a sablongyártásban pedig óriási segítség lett volna.

Érted már, hogy miért Majdnem-Herkules?

Térjünk vissza a megoldandó problémához. Van egy gép, induláskor a setup security sablonnal. Ezen begerjesztem a cluster szolgáltatást, felkonfigurálom a clustert. Innentől már eltértünk a sablontól, tekintve, hogy a telepítés/konfigurálás belerondít rendesen. Aztán jön a multi cég hardening folyamata, mely aztán végképp összezavarja a szálakat.
Nekem arra lenne szükségem, hogy mielőtt ráengedném a hardeninget, le tudjam menteni sablon formában az épp aktuális beállításokat, majd a bekeményítés után visszatölthessem a munkaterületre és ki tudjam analizálni közöttük a különbséget. Nyilván még ez sem lenne túl egyszerű, kicsit ‘tű a szénakazalban’ jellegű a munka… de valahogy így lehetne nekiállni.
Ehelyett… kinlódunk. Nem tudom lementeni a sablont, tehát maximum a setup security kiindulási pont és a hardening végső pont között tudok különbséget képezni – azaz a feladat jellege megmaradt, csak a szénakazal lett jóval nagyobb.
Illetve… trükközhetek. Felkonfigurálom a clustert, majd összehasonlítom a valós rendszert a setup security sablonnal. Ekkor megkapom azokat a beállításokat, melyeket a cluster telepítés érintett. Gyújtok egy gyertyát Szent Antalnál és reménykedek, hogy ez a halmaz nem lesz nagy – és tartalmazni fogja azt a beállítást, melynek átállítása okozza a galibát.
Most jöhet a hardening, majd ezt összehasonlítom a setup security sablonnal – de csak a korábban manuálisan kiszűrt beállításokkal fogok foglalkozni.

A megoldás kicsit olyan ’szarva között a tőgyét’ jellegű – de akár működhet is. Talán.
Ha nem, akkor kénytelen leszek felvenni a csempetépkedő kesztyűt.

ps.
Amikor az ember először morog, utána gondolkodik. A ‘secedit /export /mergedpolicy /db /cfg’ mintha pont ezt csinálná.

Exchange esettanulmány

Van egy ügyfelünk és van nála egy régóta elhúzódó probléma.
Az Exchange organizácójuk nem túl bonyolult, a lentebbi módon néz ki.

Nagyítás

Azaz két administrative/routing group, jelezve, hogy ez valamikor két cég volt, külön IT szervezettel. Mindkét RG-nek saját Internet kijárata van. Mindkét smarthoston X-re végződő operációs rendszer fut. Ami még fontos a történet szempontjából, hogy ‘A’ cég rendszergazdája valamivel paranoiásabb, mint ‘B’ cégé… azaz a smarthoston nem engedi át azokat a kifelé menő leveleket, melyeknek feladója @a.ceg.hu. ‘B’ rendszergazda ellenben mindenkit kienged.
Az elvárt működés az lenne, hogy mindenki a saját kijáratát használja. Ezzel szemben, amennyiben felvesszük ‘A’ cég SMTP konnektorába a * névteret, minden levél – tehát a ‘B’-ben feladottak is – ‘A’ kijáratán mennek ki. Ahol a smarthost el is meszeli a nem oda valókat. Emiatt most gyakorlatilag ‘A’ konnektor le van zárva, mindenki ‘B’-n keresztül levelez.
A cégnél az email meglehetősen kritikus, tehát idő sem nagyon van kísérletezni, meg hibázni sem nagyon lehet.

Kollégám egy évvel ezelőtt kapott egy éjszakát, reggelig sportolt a rendszeren, de nem jutott előbbre. Amint hozzányúlt, felvette a * névteret, megindultak vissza ‘A’ smarthostjáról az NDR-ek, lett is egyből sírás-rívás, árvák könnyeinek potyogása.
Én múlt héten kezdtem el foglalkozni az esettel, péntek délután volt lehetőségem megpiszkálni a rendszert.
Első körben – még hétközben – felvettem mindkét konnektorra egy senki más által nem használt névteret, ahol nekem van egy eldugott postafiókom. (Nem írkálom ki egyenként, de minden smtp névtérhez 1-es súly tartozik.) Ez délután volt, szépen hagytam, hagy terjedjen el az infó a Link State Táblában (LST). Másnap reggel teszteltem, mindkét szerverről küldtem egy levelet magamnak, gyönyörűen a megfelelő kijáraton ment ki mindegyik. Nem lesz itt semmi probléma – nyugodtam meg – akár munkaidőben is át lehetne állítani.
Azért csak megvártam a péntek délutánt. Beírtam a * névteret ‘A’ konnektorába, újraindítottam a Routing Engine Service-t (RES) és az SMTP szolgáltatást, megvártam, amíg az LST frissül, mindenhonnan küldtem egy tesztlevelet – és csak az ‘A’-ból feladott érkezett meg. Jeges rémület szorította össze a szívemet, gondolatban elnézést kértem a kollégámtól, hogy ennyire amatőrnek néztem – és megpróbáltam összekapni magam, hogy megbírkózzak az ismeretlennel. Első körben gyorsan visszaállítottam a kiindulási állapotot, nehogy elvesszenek a levelek. Mondhatnád, hogy mit vacakolok, az smtp konnektoron be lehet állítani, hogy milyen csoportok küldhetnek levelet rajta keresztül, egyszerűen fel kell venni, hogy ‘A’ konnektoron ‘B’ userek ne küldhessenek – és már kész is, lehet menni a pénztárhoz felmarkolni a zsét. Ugyanerre vezetne, ha mindkét konnektoron csak a saját RG-jére érvényesen definiálnám a névtereket. El is raktároztam ezeket a megoldásokat, végső esetben jók lesznek – de itt elsősorban a ‘miért’-et kell megtalálnom és tisztességes megoldást összerakni. A workaround-dal mindig az a baj, hogy nem ismerjük, mi váltja ki, nem tudjuk, milyen más rendellenéséget okozhat. Nehéz így felelősen rendszert üzemeltetni.

Szóval jöhetett a kísérletezgetés. Első körben lecsekkoltam minden elemet. (Az organizáció messze nem ilyen egyszerű, mint amit rajzoltam. Az csak a lényegi vázlat.) Aztán elkezdtem rugdosni a rendszert. (Igen, így identifikálunk: belerúgunk a rendszerbe és lessük, mekkorát sikít.) Nos, láttam olyan csodákat, hogy szemem-szám elállt. A legdurvább az volt, hogy felvettem jó magasra (10) az RG konnektoron a súlyokat, RES újraindít, tesztlevél. És igen, megjött mindkét feladótól! Boldogan csaptam a levegőbe, majd a biztonság kedvéért megnéztem mindkét levél fejlécét. Elég sokáig néztem, egyre üvegesebb szemekkel… majd szóltam Janinak, hogy jöjjön ide, mert ilyesmit még ő sem látott. A ‘B’ szerveren lévő postafiókból a levél az 1-es súlyú út helyett átment a 10-es súlyú RGC-n, majd az ottani 1-es súlyú SMTP konnektor helyett visszament B szerverre – újabb 10-es súly -, végül most már kiment a ‘B’ SMTP konnektoron; azaz mindösszesen összeszedett 21 egységnyi súlyt, az 1 egység helyett. A sportember.

Ha azt mondom, hogy tanácstalan voltam, akkor meglehetősen enyhén fejeztem ki magam. Először is elmentem darts-ot dobálni pár percig. Ránézésre nyugodtnak látszódtam, a figyelmes szemlélőnek legfeljebb az tűnhetett fel, hogy a tábla mellé dobott nyilak is beleálltak a falba. Pedig műanyag hegyűek.

Végül érdekes módját választottam a monitorozásnak. Beírtam újból a * névteret ‘A’ konnektorába, újraindítottam a szolgáltatásokat, mindeközben egy perces auto frissítésre állítottam a Winroute-ot – és fel-alá szkrolloztam a képernyőn, hátha elkapok valahol valami érdekeset. És úgy döntöttem, hogy nem leszek gyáva nyúl, teszek rá, hogy NDR-ek jönnek vissza.
Nos, igen, végül csak elkaptam valamit.
A következő sorozatot láttam:

  • Körülbelül két perc telt el, amíg ‘A’ SMTP konnektora state up állapotba jutott.
  • Körülbelül öt perc telt el, mire az LST frissült.
  • Majdnem tíz percbe telt, mire ‘B’ SMTP konnektora state up állapotba került.

Itt van minden. A magyarázat is, és a megoldás is.
Látható, hogy van egy olyan kritikus öt perc, amikor az organizáció már észleli, hogy két konnektoron is rajta van a * névtér, de a ‘B’ konnektor még nem él. Tehát ebben az öt percben az ‘A’ felé küldi a leveleket. Egyéni balszerencse, hogy mind a kollégám, mind én ebben az öt percben teszteltünk, majd a sikertelen teszt után pánikszerűen álltunk vissza az eredeti állapotra.
Nézzük meg az egyes eseteket:

  • Amikor a teszt névteret vettem fel, nem siettem. Délután beírtam, elmentem haza, reggelig volt ideje elterjedni a változásnak. Azaz nem indítottam újra a szolgáltatásokat, nem került egyik konnektor sem state down állapotba. Persze, hogy ment minden rendben.
  • Na, azzal a súlyemelővel még a hiba gyökerének ismeretében sem igen tudok mit kezdeni. Valószínűleg pont úgy küldtem meg a tesztlevelet, hogy ‘B’ kijárata még éppen nem élt, ezért átment ‘A’-ra, aztán ott valahogy észrevette, hogy időközben életre kelt a ‘B’ SMTP konnektor – és visszament afelé. Elég perverz – és nem is igazán értem, mert nem logikus.

Gyors teszt, immáron jócskán kivárva – és minden levél a saját kijáratán ment ki.
A feladat megoldva.

Aki velem együtt dőlt hátra a székében, elégedetten csettintve, hogy ez egy korrekt lezárása volt az esetnek – igen nagyot tévedett. Ez a megoldás ugyanis – dacára annak, hogy működik – életveszélyes.
Gondolkodjunk el a következő eseteken:

  • ‘B’ rendszergazda újraindítja az Exchange szerverét.
  • Vagy elég csak a Routing Engine Service-t újraindítania.
  • Ledől a ‘B’ smarthost. Oké, tudom, hogy Unix, de a kalapács ellen azok sem rendelkeznek erős védelemmel.

Mindegyik esetben hosszabb-rövidebb ideig az organizáció azt fogja látni, hogy csak ‘A’ konnektor él – és mivel nem tud róla, hogy azon az úton leselkedik Szkülla és Karübdisz – így arra küldi az összes levelet. Azaz nem az történik, hogy ‘B’ konnektor felállásáig a levelek egy kényelmes queue-ban várakoznának – nem, ehelyett egy gusztustalan NDR-rel pattannak vissza.
Szépen végiggondolva a szituációt, visszaállítottam az eredeti állapotot, leírtam, mit tapasztaltam – majd az egészet bedobtam az ‘It needs business decision’ dossziéba.
Amíg ‘A’ rendszergazda nem enged ki minden levelet, addig jobb, ha az a konnektor nem is működik.

Kódzavarban

Miután sikeresen feltelepítettem az Office2007-et, egyből nekiugrottam a számomra legfontosabb komponens beállításának: Outlook2007.
Elképzelhető, hogy ebből hitviták lesznek – én ettől függetlenül évek óta ezt használom otthoni levelezésre, függetlenül attól, hogy a lakásban nincs Exchange szerver. Ezzel szemben van PDA – és nagyon kényelmes, hogy a Calendar/Contact/Task/Notes adatokat is tudom vele szinkronizálni. (Sőt, mindezeket – a PDA segítségével – szinkronizálom a munkahelyi gépemmel is, így elmondható, hogy minden számítógépes környezetben szinkronban vannak az önszervezéshez kapcsolódó anyagaim.)
Természetesen minden évben külön PST fájlba archiválok, de az alap PST, amelyben dolgozom, legalább nyolc éve ugyanaz. Ugyanaz a régi – Outlook97 – tipusú PST fájl dübörög az otthoni Outlook alkalmazásaim alatt.

Ezt a fájlt csempésztem a megszokott módon a mostani Outlook2007 alá is. Fel sem vettem, hogy hőbörgött egy sort a unicode támogatással kapcsolatban. Ugyan már, a 2003 is hőbörgött, aztán mégis milyen szépen ment vele minden.

Tulajdonképpen most is ment minden. Láttam a leveleimet, tudtam küldeni és fogadni is… csak valahogy a magyar ékezeteim pottyantak ki valahol a levelekből. Illetve nem is pottyantak ki, mert ismerőseim szerint teljesen jó leveleket küldtem – annak ellenére, hogy ezek a levelek az én kliens programomban úgy néztek ki, mint ha csupa különösen mogorva cseh káromkodásokból állnának. Legalábbis magánhangzó nem nagyon volt bennük.

Ránézésre kikódolási problémának tűnt. Nézzük a View/Encoding menüt. Izé, merre is van…? Hát, elvoltam egy darabig, mire megtaláltam. Annak ellenére mondom ezt, hogy az új menüelérés jobban tetszik – de még szoknom kell. (Hasonlóképpen sikongattam, amikor a levél fejlécét szerettem volna elérni, levélen belülről.) No, mindegy az Encoding alapján Central European kódolásban olvastam volna a leveleket. Harsány ‘a-ha’ felkiáltás mellett átállítottam UTF8-ra – és láss csodát, egyből megjelentek az ékezetes betűk. Oké, ez gyors volt – nyugodtam meg. A levél bezárásakor még megkérdezte, hogy akarom-e menteni a levelet? Persze, akartam. De nem csak ezt, hanem meg is akartam utána nyitni. Ahol minden mentés ellenére megint eltűntek a magyar betűk. Nocsak. Nézzük a kódolást: jólnevelten maradt UTF-8. Aztán mégsem látszódtak a betűk. Hmm… Levél bezár, megnyit, semmi nem változott. Oké, átállítottam valami idétlen egzotikus urdu kódra, majd rögtön utána vissza UTF8-ra. Egyből megjöttek a magyar betűcskéim.
Lementettem, újra megnyitottam – az ékezetes karakterek megint bal fenéken el.

Nem értettem. Most akkor mi van? Ha beállítom megnyitás után az UTF8-at, akkor felismeri a karaktereket. Ha megnyitás előtt állítom be, akkor meg nem. És mi van teliholdkor?

Végül minden misztifikálásra való hajlamom ellenére nekiálltam keresgélni a neten.
Ezt találtam. Habár a szöveg egzakt módon nem tartalmazta, hogy „de nagy marha vagy Joep, miért nem használsz már unicode alapú PST-t a mostani szutyok helyett” – de értek én a virágnyelvből, tudomásul vettem, hogy az Outlook induláskor ellenőrzi, hogy fennállnak-e bizonyos feltételek és ettől függően vagy unicode módban indul vagy sem. Első esetben süt a nap és csicseregnek a madarak, a második esetben meg még a fű sem nő. És mik a feltételek? Vagy Exchange2000 illetve afölötti Exchange szerveren létrehozott postafiók vagy unicode tipusú OST/PST.

Gyors ellenpróbát tettem: új profil, unicode tipusú PST – és gyönyörűen jöttek-mentek a magyar ékezetek, azt sem kellett tudnom, hol van az Encoding menüpont.

Innentől már nem volt messze a megoldás. Kimentem az előszobába, egy kicsit rugdostam a tálalószekrényt, majd nekiugrottam a lapátolásnak. Szószerint. Létre kellett hoznom egy új profilt, benne egy üres adatbázissal. Aztán ebben letükrözni a korábbi folderstruktúrát, folderenként átmozgatni a leveleket. Természetesen minden folder elemen újra kellett állítgatnom minden megjelenítésre vonatkozó opciót. Nem volt kis munka, de hol volt még a vége. Pl. le kellett gyártanom újra az összes szabályt. Át kellett csalogatnom a Calendar/Task/Contact/Notes adatokat is. Szerencsére emlékeztem mICK jótanácsára, így viszonylag simán átjött az összes appointment is. Persze mindegyik tipusú adatcsoportnál újra definiálni kellett a megszokott szűrőfeltételeket.
Végül az egész művelet megkoronázásaként újra fel kellett építenem az Activesync szinkronizációt – ugye ez alól nemes egyszerűséggel ki lett rúgva a sámli. A többezer item szinkronizációja eltartott pár óráig. Aztán mivel ezek csupa új elemként jöttek be, így ugyanezt a teljes szinkronizációs kört végig kellett játszanom a munkahelyi gépemmel is. Sőt. Mivel a munkahelyi gépem még a telefonommal is össze van szinkronizálva, így ott is le kellett nyomni egy teljes kört. Bízva abban, hogy közben senki nem csörög rám.
De végül sikerült. Mindenki összhangban van mindenkivel.
És vannak magyar betűim az Outlook2007-ben.

MyUnInst rulez

Adott volt a feladat. Itt van egy gép, telepítsek rá Office2007-et – úgy, hogy korábban volt rajta Office2007 béta. Nem tűnt túl pilótavizsgás küldetésnek.

Először bedobtam a cédét, setup. Tudom, tudom… de alapvetően jóindulatú ember vagyok, adtam egy esélyt, hátha. Nem jött be, a telepítő mogorván csak annyit mondott, hogy itt bizony két dudás próbál bepréselődni ugyanabba a kocsmába, az egyiket pöndörítsem csak bátran ki.

Oké, bétaoffice az addremoveprograms segítségével ki lett tessékelve, megint telepítőcédé, aztán setup. Nos, a telepítő az előbbi akción annyira megsértődött, hogy fogai között csak ennyit vetett oda:

„Setup is unable to proceed due to the following error(s): The 2007 Microsoft Office system does not support upgrading from a prerelease version of the 2007 Microsoft Office system. You must first uninstall any prerelease versions of the 2007 Microsoft Office system products and associates technologies.”

Nodehát… hiszen letöröltem.
A biztonság kedvéért szétnéztem itt-ott, de tényleg le lett törölve.
Gondolkodtam, hogy nekiállok átfésülni a registry-t, de aztán úgy döntöttem, inkább megidézem a guglipowert. És milyen jól döntöttem.
Itt van egy remek kis írás arról, hogy Scott Hanselman hogyan mászott ki ugyanebből a szituációból. Ajánlom mindenkinek szíves figyelmébe, nagyon tanulságos írás. Az ember elég hamar rájön, hogy vannak olyan esetek, amikor a saját szívásai apró törpévé zsugorodnak másokéi mellett.

Scott először a Filemon segítségével megkereste, hová rakja az Office a setup log fájlt. (Már ez is… hol vagyunk mi még ettől, hogy ennyire készség szintű legyen a Filemon? Hogy az ember inkább ezt válassza, mint a manuális matatást a vinyón vagy jobb esetben egy desktop search programot, bizonytalan nevű log fájl után kutatva.)
A logfájlban talált egy GUID-ot, arra rákeresett a registryben és ebből adódott, hogy a bűnös komponens, mely meghiúsította a végleges office beköltözési szándékát, az bizony a Microsoft Office Shared MUI (English) komponens.
Eddig öröm az élet… csakhogy ezt most el is kellene távolítani. Az addremoveprograms meg szégyenlősen hallgat.
Scott ekkor előkapta a titkos fegyvert: MyUninst a NirSoft-tól. Ingyenes, egyszerű, mint a faék – és mindent lát, ami valaha fel lett telepítve a gépre. Sőt, nem csak látja ezeket a programokat, de ki is nyesi őket.
Meglepő módon nem csak a MUI komponens maradt fent, hanem még néhány helyesírásellenőrző szutyok is – azaz az a szerencsétlen előző program annyira béta volt, hogy képtelen volt minden komponensét bőröndbe pakolva elhúzni melegebb égtájakra.
Természetesen a MyUnInst segítségével minden kidobható és utána már rendben mehet is a telepítés.

Tartozom az igazságnak azzal, hogy a hibáról a Microsoft is tud. Van is róla KB cikk.
De tessék alaposan átolvasni: ha először ezt a cikket találom meg, istenbizony fogom és inkább visszatelepítem az Office2003-at, mint hogy ennyit turkáljak a registryben.
MyUnIst rulez.

Kleine szívás, gute szívás

Tulajdonképpen ez az írás valamennyire kapcsolódik Al hozzászólásához. Az ember ugyanis nem úgy utál meg egy terméket vagy egy gyártót, hogy egyszer belefut egy kellemetlen hibába – az általánosabb utálathoz sokkal inkább tömérdek apró bosszúságon keresztül vezet az út.
Olyanon, mint amilyenbe pl. ma este is belefutottunk.
Egy ügyfelünk meglehetősen cifra címtárának forest root tartományát állítottuk át Windows2000-ről Windows2003-ra. (Már céloztam erre a melóra.) A tartományvezérlők HP blade szerverek.
Nyilván a munka oroszlánrésze (büdös vagy és ordítasz) az előkészítő munka volt. Összeszedtünk mindent, kezdve a megfelelő Support Pack-tól a legapróbb információig. Többek között tudtuk, hogy amennyiben a hálókártyák teamingben vannak, akkor inplace upgrade előtt szét kell őket szedni. És még számtalan apró trükköt tudtunk – de tényleg nem akarok túl sokáig ezzel macsózni.
Kezdtük a jó öreg forestprep-pel.

Megjegyzés:
Isten áldja, aki kitalálta a ‘repadmin /options +DISABLE_OUTBOUND_REPL’ parancsot. Eszméletlen mennyiségű munkától kímélt meg bennünket. Ha lesz időm, akkor majd a Technet blogba meg is írom, mi a hálálkodás lényege.

Mint a mesében, minden simán lement. Replikáció – mint kés a vajban. Alig telt el másfél óra és az ország legeldugottabb sarkában is ott vigyorgott az új séma. Jöhetett az upgrade. Távoli gépre rámásolva az i386 könyvtár, ILO porton keresztül belépve a winnt32 elindítva. Elméletileg ennek a kezdeti érdeklődés után minden interakció nélkül le kellett volna futnia. Elméletileg.
Éppen amikor kezdett gyanús lenni, hogy minden túl szépen megy, beütött a ménkű.
Feljött egy ablak, hogy a program hiányol egy francseemlékszikanevére.sys állományt egy Compaq Network Teaming Disc nevű médiáról. Alul egy browse jellegű menü, felette a lehetőségek: OK vagy Cancel.
Zavartan néztünk egymásra a kollégámmal.
– Istenbizony nem voltak teamingben a kártyák – mentegetőztem.
– De a teaming fel van telepítve… – szögezte le.
– Igen. De ki volt kapcsolva.
Vakaróztunk rendesen. A kérdéses DC nagyjából a legfontosabb DC volt az erdőben. (Azzal illik kezdeni.) Schema Master, Domain Naming Master… meg fontos replikációs csomópont.
Értelemszerűen ilyen telepítő médiánk nem volt. Lévén este kilenc után, az se volt valószínű, hogy be tudunk szerezni egyet. Azaz az OK gomb kiesik – marad a Cancel gomb. Belegondoltál? Egy marha bonyolult erdő legfontosabb tartományvezérlője behal inplace upgrade közben.
Nyilván megvoltak a rollback stratégiáink. Innen tudtuk, hogy ha ezt a DC-t – pontosabban a funkcióit – elő akarjuk varázsolni a semmiből, akkor kényelmesen megtekinthetjük majd az ablakból azokat a hajnali kukafosztogató egyetemistákat, akik még éppen megelőzik a hajléktalanokat.
Főnökünk volt olyan balszerencsés, hogy pont ekkor telefonált ránk, hogyan állunk. Nem adhattunk mást, csak mi a lényegünk. Még a telefonon keresztül is érzékelni lehetett, hogyan nyúlt meg az orra.
Természetesen nekiálltunk felszántani az Internetet. Én megpróbáltam a HP oldaláról közelíteni, kollégám pedig guglizott. Mondanom sem kell, hogy én egy abszolút érdektelen oldalra jutottam, ő viszont talált egy érdekes doksit.
Idézek belőle:

If you have Compaq Network Teaming installed, see the informations below:

  • During the Installing Network phase, the installation stops (approximately with 32 minutes left of the install to complete) and a dialog pops up specifying Insert Disk (see actual message below.)
    Please insert the compact Disk labeled ‘Compaq Network Teaming Disk’ into your CD-ROM and then click ‘OK’.
  • When dialog pops up, click Cancel for the installation to proceed. After this point, the installation proceeds uninterrupted until it is complete.

Gondolj bele azoknak az embereknek a lelkivilágába, akik szerint ez így korrekt megoldás. Nem, nem teszünk ki az ablakba egy ’skip’ gombot. Nehogymár. Szarjon csak be az a rendszergazda, hogy ha nyom egy Cancel-t, akkor lesz egy installálás közben ábrándosan félbehagyott, használhatatlan szervere. Hogy esetleg ki is írhatnánk valami információt az ablakba? Ugyan már… nyomd meg öcsém a gombot, ha bátornak érzed magad!
Természetesen ez volt a megoldás. Megnyomtuk a Cancel gombot, a telepítés pedig – a félbeszakítási szándékunkon jót derülve – simán lefutott.

Ez messze nem volt hetedhét határra szóló szívás. Olyan aprókára sikerült. De mögötte ott van egy olyan mentalitás, melyet nem tudok elfogadni. Hiába jók általában a HP vasak, hiába dicsekedhetsz szép nagy uptime értékekkel – az ilyen pofonok jobban megmaradnak az emberben. Különösen, ha nem csak egy termékcsaládnál találkozik ezzel a felelőtlen trehánysággal.

ISA szerver nem menni 64

Egyik ügyfelünk most hétvégén tervszerű leállást hajt végre, így lehetőségünk van egy csomó régóta halasztott munkát elvégezni. Többek között jó ideje érik a tűzfaluk lecserélése.
A következőképpen terveztük: én offline összerakom az új vason a cuccot, aztán egyszerűen kidobjuk a régit, berakjuk az újat és mindenki örülni fog. Apró kihívás, hogy más a hardver (a régi 32bites procival ment, az új egy 64 bites Opteron), más az oprencer (a régi Windows2000/32, az új Windows2003R2/64) és persze más a szoftver is (ISA2004Sp1->Isa2004Sp2). De azért működjön ugyanúgy.
Mindazonáltal a feladat nem megoldhatatlan. Igaz, hogy magyar nyelvű 32 bites Windows telepítőcédét kaptam, de szerencsére telepítő médiánk nekünk voltak, megfelelő licenszkulcsai meg az ügyfélnek.
Három napig az általam eddig ismeretlen tűzfalat tanulmányoztam. Leszedtem mindent xml/txt fájlokba – és természetesen kijegyzeltem mindent spirálfüzetbe. Kisebb novella méretű anyag gyűlt össze. (Huszonvalahány subnet, VPN terminálás, szabályhegyek – nem igazán egyszerű a jószág.) A következő nap azzal telt, hogy felraktam az oprendszert és előkészítettem mindent az ISA szervernek. Végül ma jött el a nagy nap.
Ahhoz képest, hogy mennyire kényelmesen ágyaztam meg a tűzfal szoftvernek, őkényessége rövid, gyors, de határozott üzenettel közölte, hogy menjek a fenébe – erre a gépre, ha beledöglök sem fogom tudni feltelepíteni. A miértet viszont nem igazán részletezte.
Ránézésre lehetett egy csomó baja: a processzor 64 bites, az oprendszer R2/64, az ISA ellenben csak standard… A legegyszerűbb ilyenkor megnézni a hivatalos adatokat. Nos, egy szó sincs arról, hogy ne futna R2-vel, illetve 64 bites oprendszerrel. A biztonság kedvéért átnéztem a Shinder könyvet, ott se tér ki rá a hapi. Hívtam a TAM-unkat, de éppen olyan helyen volt, ahol nem vette fel a telefont. Bedobtam egy szösszenetet Shinder bácsi fórumába, majd rácsörögtem GT-re, hátha ő látott már ilyet – de nem. Mindketten nekiálltunk guglizni, végül kaptam tőle egy linket. Nem lehet azt mondani, hogy túlzottan bőbeszédű lenne az írás, de a lényeg benne van: semmilyen ISA nem fut 64 bites oprenceren. Aláírás: XY ISA MVP.
Érted, semmilyen. A frissen kijött ISA2006 sem.
Azért ez elég durva.
Felködlött előttem, milyen remek pofozkodás lesz ebből. Az ügyfél nyilván azt fogja reklamálni, miért nem szóltunk neki, hogy ne vegyen ilyen hardvert? Mi meg… mondjuk azt, hogy mi sem tudtuk? Baromira ciki. És nem csak az a durva, hogy így nem lesz a hétvégén csere – sokkal durvább, hogy mit csináljanak most a méregdrágán vett új hardverrel?
Mentsük a veszett fejsze nyelét. Fel lehet-e rakni 64 bites processzorral felvértezett gépre 32 bites Windows Server oprendszert? A franc se tudja. Talán a Gugli. Nem, ő se igazán. Még talán ez a bejegyzés nyújtotta a legvérmesebb reményeket – mintha az AMD procikra felmenne, csak az Intelekre nem…
Itt álltam, amikor visszahívott a TAM-unk. Rövid idő alatt sikerült mindent tisztáznunk.
Hogy te legközelebb ne járj ilyen hülyén, tömören leírom a lényeget:

  • Jelenleg semmilyen ISA (2000/2004/2006, ill standard/enterprise) nem képes futni 64 bites operációs rendszeren.
  • x64 architektúrára lehet telepíteni 32 bites Windows Server operációs rendszert – azaz AMD Opteronra igen, Intel Itaniumra nem.

Ez azért valahol megnyugtató. Nem az, hogy az ISA nem fut 64 biten, az valahol szégyen – a jó hír az, hogy az ügyfelünk csak a szervízhétvégét bukta be. Meg mi sem veszítettünk olyan nagyot az arcunkból.

Pont, pont, vesszőcske

Egyik ügyfelünk anyacége leszólt, hogy “Béláim, legyetek kedvesek már használni a céges előírás szerinti formát a levelezési címlistában, köszi”.
Kérték, megcsináltuk, hátradőltem. Túlontúl hamar.
Pár nap múlva jöttek a reklamációk: néhány külsős partner nem tud levelet küldeni belsős címekre. Első reflexből visszaírtam, hogy “sorry, de tudomásom szerint az Exchange szerver nagy ívben nem foglalkozik az AD általunk módosított display name paraméterével, itt maximum véletlenek tragikus összejátszásáról lehet szó”. Pedig megtanulhattam volna az eddigi szívásokból, hogy nem jó első reflexből válaszolni, még akkor sem, ha maximálisan biztos vagyok magamban.
A módosítás lényege ugyanis az volt, hogy megvesszőztük a nevet. Azaz ami eddig “Kis Pál” volt, az mostantól “Kis, Pál” lett. Jó, persze fel lehet szisszenni, de hangsúlyozom, ez display name – azaz az a felület, melyet az AD a felhasználónak mutat. A levelezés nyilván a proxyaddresses alapján megy.
És ez bizony így is van. Egészen addig, amíg csak a szerver játszik. Egy igazi admin itt be is hunyja a szemét, mert ami a szervereken túl van, az már a gyehenna. Levelezőkliensek. Fúj.

Nos, boncoljunk levelet.
Egy közönséges email áll egyfelől borítékból és tartalomból. A borítékon van egy feladó (ezt adjuk meg a MAIL FROM smtp paranccsal) és van egy címzett (ezt adjuk meg az RCPT TO smtp paranccsal). A tartalom – mely a DATA smtp parancson belül utazik – meglehetősen összetett valami, pl. meglepő módon neki is van FROM mezője. És itt jönnek be a képbe a levelezőkliensek. A boríték kitöltésével nincs gond, azt kutyakötelességük ugyanúgy kitölteni – de a belső FROM mező már szabad préda. Ma már teljesen elterjedt forma pl. ez: “displayname” <emailaddress>.
Jó, ezt tudjuk. Mi a probléma?
Csináljunk egy kísérletet. Küldjünk magunknak egy levelet, telnettel.
telnet smtp.sajat.domain.hu 25
helo
mail from: nagymagyartarka@sajat.domain.hu
rcpt to: sajat.email@sajat.domain.hu
data
from: “nagymagyar, tarka” <sajat.email@sajat.domain.hu>
subject: apuhodmedbe
pamparampampam
.
quit
És most nézzük meg, mit csináltunk. Küldtünk magunknak egy levelet, melynek a borítékjára feladóként ráírtunk egy fantom címet (nagymagyartarka@sajat.domain.hu), címzettként pedig magunkat (sajat.email@sajat.domain.hu). A trükk ott van, hogy a belső FROM mezőbe beírtuk a saját címünket!
A levelet természetesen meg fogjuk kapni. Nyomjunk rá egy reply-t! Bizony, azt fogjuk látni a címmezőben, hogy nagymagyar, tarka <sajat.email@sajat.domain.hu>, kedvesen aláhúzva. Reménykedőbbek még mondhatják, hogy jó-jó, az Outlook odamaszkol valamit a címsorba, de küldéskor úgyis az email Return-Path mezőjét fogja használni. Ha már itt járunk, nézzük is meg. Nyissuk meg az eredeti levelet, view/options, rögtön az első sorban ott fog vigyorogni, hogy Return-Path: nagymagyartarka@sajat.domain.hu. Tehát, gondoljuk naívan, ha ezt a replyt elküldjük, akkor ez berepül a fekete lyukba – feltéve, hogy valamelyik sunyi kollégánk időközben nem hozott létre nagymagyartarka címet.
Van egy rossz hírem. Az emailt meg fogjuk kapni. A belső FROM értéke űbereli a borítékra írt címet. És ebben a FROM mezőben már szerepel a display név értéke.
Persze még mindig nem látszik, mi itt a baj. Oké, ott van a címben egy vessző. Na és? Kellően körbezártuk idézőjellel, kedves levelezőkliens, tessék nyugodtan nem figyelembe venni.
Most visszaásunk a múltba. Van egy remek oldal, ahol le van írva, milyen karakterek szerepelhetnek az emailcímben. A vesszőre spec azt írja, hogy “megbolondultál?”. Az ugyanis az RFC822 szerint elválasztó karakter. Igenám, de az RFC822-t 2001-ben érdemei elismerése mellett nyugdíjazták, bejött helyette az RFC2822, mely már megengedi a vesszőt, feltéve, hogy idézőjelek között van.
Most már közel vagyunk. Semmi másra nincs szükségünk, mint egy 2001 előtti levelezőkliensre, melynek halvány fogalma sincs az RFC2822-ről. Mit fog csinálni a szerencsétlen, ha ez kerül a címsorába, hogy “Kis, Pál” <kispal@sajat.domain.hu>? Azt fogja mondani, hogy ez két cím: “Kis az egyik, Pál” <kispal@sajat.domain.hu> a másik. Aztán nekiáll visítozni, hogy nem találja a címeket.
Aki szeret kísérletezgetni, nekiugorhat a Freemail webes felületének, remekül hozza a hibát – legalábbis a múlt héten még hozta.

Szuper, megvan a gizda. Mit lehet vele csinálni?

  1. Szólunk a multi Anyucinak, hogy ne legyen vessző a displaynévben. Oké, oké, tudom, csak a teljesség kedvéért írtam ide.
  2. Beállítjuk Exchange organizáció szinten, hogy ne küldje el a display nevet, csak az email címet. (Message format ablak, valamelyik fül.) Nekem, kockafejűnek, ez teljesen jó megoldás lett volna, de az üzlet egyből Apage Satanas-t kiáltott.
  3. Kivezetjük az ősembereket a barlangból a fényre. Magyarul, nekiállunk supportálni az ügyfél üzleti partnereit is, hogyan kell beállítaniuk azt a többezer fajta levelezőklienst, amelyekből néhány nem tudja lekezelni ezt a szituációt.
    Az élet szép.

[Update]
Azóta kisérleteztem egy kicsit és rájöttem, hogy nem ilyen egyszerű a helyzet. Könnyű lenne mindent a kliensre tolni, de mégsem ő tehet a balhéról – hanem a levelezőszerver. A kliens átadja a megfelelő smtp parancsot – nagyjából ugyanúgy – de a szerver az, mely – feltéve, hogy nem ismeri, vagy nem jól ismeri a szabványt -, belebukik a vesszőbe.
Tényleg érdekes.

Minden összefügg mindennel

De rég is volt, te jó ég. Itt írtam egy orbitális nagy zöldségről. Annyira rég volt, hogy azóta a fiúk ki is irtották azt a KB cikket, felszántották, helyét sóval vetették be.
Ettől persze a problémánk nem múlt el. A komment szerint a hibát bejelentettük a PSS-nek, akik rá is uszították embereiket. Több, mint egy évvel ezelőtt. Nem lehet azt mondani, hogy nem vagyunk kellően makacsok.
A bejelentés után a dolgok mentek a maguk útján. Bekértek mindenféle adatot, beküldtem mindenféle adatot. Aztán eszkalálták a problémát a németekhez, akik megint bekértek mindenféle adatot. Ők is megkapták. Aztán nekiálltak kipróbálni ezt-azt – és az egyik próbára az ügyfél azt mondta, hogy ezt pedig már nem. Itt meg is álltunk. Az MTA szolgáltatás hiánya nem érintette őket annyira tragikusan, hogy belemenjenek egy routing groupok közötti szervermigrációba. Köszönték szépen, inkább nem – még akkor sem, amikor az MS bejelentette, hogy ugye tudják, hogy az MTA nélküli Exchange szerver automatikusan nem támogatottá válik.
Eltelt hét-nyolc hónap. Lehulltak a levelek, fehérre váltott a táj, majd elkezdtek bimbózni a rügyek. Az ügyfélnél leváltották az IT vezetőt, az új fiúval jobban lehetett tárgyalni, belement a migrációba. Létrehoztam egy új routing group-ot, telepítettem egy új szervert, konnektorok, routing rendben. Levelezés tesztelve, frankó. MTA indít – hibaüzenet.
Ez bizony övön aluli volt. Az eddigi koncepció szerint biztosan a szerver telepítésénél történt valami gikszer, amely miatt a routing group nem volt teljesen százas. Nos, nem.
Habár. Az új szerver Windows2003, szemben a régivel, mely Windows2000. És az új szerver azt írja az üzenetben, hogy az MTA elindult ugyan, de aztán rögtön le is állt, mert úgy érezte, őrá itt nincs is igazán szükség. Hasonlóan, mint a perfmon szervíz. Kipróbáltam, tényleg az is ezt írja ki.
Ennyi lenne? Az a nagy rejtélyes hiba pusztán csak annyi, hogy nincs kedve elindulni? (Mely valahol érthető, ugyanis közel-távol sincs Exchange5.5 – mindemellett az organizáció még mixed módú.)
Ebbe akár bele is nyugodhatnék, de az eventlogban könyörtelenül ott van ismét a két ominózus hibaüzenet. Most akkor melyiknek higyjek? A direkt üzenetnek? Az eventlognak? Mit tenne az adott helyzetben Steve Jobs a MOM?
Rábíztam a PSS-re. Ha írásba adják, hogy ez jó, akkor jó lesz nekem is.
Nem mondom, hogy nem inogtak meg. A beküldött adatok szerint olyan pöpec az Active Directory, amilyen csak lehet. Az őscsökevény MTA ráadásul nem is az AD alapján működik, saját adattáblái vannak. Tehát minden észérv azt mondja, hogy tojni rá.
Persze ezt nem adták írásba. Az eltelt időre való tekintettel megint bekértek egy valag adatot. Mire beküldtem, kijött egy újabb EXBPA, így kedvesen megkértek, hogy ismételjem meg az adatgyűjtést. Szóval elvoltunk.
Természetesen próbáltam önállóan is nyomozni, találtam is egy figyelemre méltó levélváltást, de a legacyDN értékek sajnálatosan rendben voltak.
A magam részéről innen már nem igazán bíztam semmiben, de egyszer csak jött egy teljesen vad ötlet a német hapitól. Azt mondta, a hiba oka egy kilométerrel távolabbi Exchange szerveren keresendő. A távolságot nem csak fizikailag kell érteni: bár az Exchange szerverek ugyanabban az organizációban vannak, de AD szinten két különböző szájton, melyek között csak egy harmadik szájton keresztül van kapcsolat, tartományilag pedig nemcsakhogy más domainban üzemelnek, de teljesen más fában is. Azt mondta erre a szerverre az EXBPA, hogy a jogosultsági rendszerében el van vágva az öröklődés. Ezt az üzenetet láttam én is, de csak megvontam a vállam. Igen, el van vágva, valamiért valószínűleg anno el kellett vágni. (Még az se kizárt, hogy pont ennek a case-nek a kezelése során. Legalábbis gyanús, de most nincs kedvem utánakeresni.) Ahogy néztem, elvágáskor rákerült minden jogosultság, tehát pánikra nincsen ok.
Mivel a két szervernek tényleg nagyon halvány köze van egymáshoz, meglehetősen tamáskodtam, amikor ezt az öröklődés elvágást kiáltották ki bűnösnek. De fegyelmezetten beklattyintottam, megvártam, amíg elterjed az AD-ban, mint a kolera, aztán teszt. És itt fehéredtem el: az MTA elindult.

Ez a cikk akkor lenne tökéletes, ha most roppant precíz szikekezeléssel bemutatnám, hogy mi rejlik a megoldás mélyén. De őszintén bevallom, halványlila fogalmam sincs. Annyit sikerült megtudnom, hogy a német srác a regtrace alapján jutott erre a következtetésre – ez viszont megint egy olyan cucc, mely bináris formában gyűjti az adatokat, azaz mezei halandó képtelen értelmezni az outputot.
Ehelyett azt tudom csak mondani Shakespeare kollégával egyetemben, hogy “Több dolgok vannak földön és égen, oh, Horatio, mintsem bölcselmetek álmodni képes”.
És ilyenkor ver ki a víz, ha belegondolok, hogy egy ilyen bonyolult Exchange/AD rendszerbe hány embernek van joga belepiszkálni. És ennyi közül elég, ha csak egy gondolja, hogy nem kell szarozni, csak ide-oda kattintunk néhányat és minden oké lesz.

[Update]
Jó persze, azt észrevettem, hogy miután engedtem az öröklődést, rákerült az ezer éve üzemelő Exchange szerver jogosultságlistájára a nagyon-nagyon távoli tartomány ‘exchange domain servers’ csoportja, read jogosultsággal. De ez valahogy még nem elégítette ki a kíváncsiságomat.

Itt sincs, ott sincs

Megőrjít.
Van egy kliens gépem. Ezen akarok futtatni egy szkriptet, mely távoli AD szájtok felhasználóinál módosítana display nevet. (Vbscript + ADSI.) Az adatok Excel táblában vannak.
Lefuttattam az egyik szájtra, a nevek átíródtak. Megnéztem ADUC-ból, tényleg.
Lefuttattam ugyanazt a szkriptet a másikra, nevek látszólag átíródtak. ADUC – mégsem íródtak át. Átfutottam az összes DC-t, sehol sem íródtak át. Picit átírtam a szkriptet, hogy most csak lekérdezze az értékeket – és tényleg nem íródtak át. Beleraktam még vagy ötször a setinfo-t, biztos, ami kurvafix – és kiegészítettem azzal, hogy írás után olvassa is vissza ADSI-n keresztül az értékeket és írja ki fájlba. Szkript lefutott, és a megváltozott értékeket írta ki. Gyorsan ADUC – sehol sem volt változás. Site-site replikáció megrángatása, újból körbenézés, semmi. Lefuttattam a szkriptet csak olvasó módban – a régi értékek jöttek vissza.
Hihetetlen.
A kliens gépről egy gyors próba, ldp-vel megváltoztattam a távoli szájt felhasználójának az adatát – és így működött, tehát se jogosultsági, se tűzfal probléma nincs. Ha ugyanezt egy nyomorult háromsoros vbscript-ből csináltam, akkor bezzeg nem ment.
Bele fogok dilizni. Ez az egy lépés van hátra abból a holland projektből, melynek már a nevétől is feláll a szőr a hátamon. És itt, az utolsó lépésnél jön be egy ilyen X akta, amikor már nem vágyom másra, mint hogy lezárjam ezt a szutykot.

Miután jól kisírtam magam, nekiálltam gondolkozni. Mi lenne például, ha kitörölném a bűvös ‘on error resume next’ sort?
Hoppá. Rögtön az elején befigyelt egy hiba:

Run-time error ‘-2147016693 (8007200b)
Automation Error
The attribute syntax specified to the directory service is invalid

Na, vajon mi lehet ez? Erős a gyanú, hogy adathiba, hiszen a szkript más szájtra lefutott. Kezdjünk játszani. Első körben csak a displayname értékét írtam ki – nem volt hiba. Jött a keresztnév, nem volt hiba. Jött a vezetéknév – és vele együtt a hiba. Hmm… ennyire kényes lenne az az sn attribútum?
Ránéztem az excel táblára – és letéptem az első sor csempét. Az adott szájton nem mi adminisztrálunk és a fiúk nem vacakoltak, a teljes nevet a keresztnévhez írták – azaz az sn attribútumba üres mezőt kellett volna betölteni. Ettől borult meg a szkript futás közben – de az onerrorresumenext továbblökte, mintha mi sem történt volna. Nem is történt semmi. Kiírás sem.
Oké. Akkor tegyünk bele egy vizsgálatot és ha üres a mező, akkor a kérdéses mezővel ne történjen semmi, de a sor többi mezőjét írja ki. Jó lesz ez? Nem biztos. Lehet, hogy az ügyfél törölt egy értéket és szeretné, ha az el is tűnne az AD-ból. Jó, akkor írjunk ki egy “”-t.
Nos, aki azt hiszi, hogy az oChild.attributum = “” lesz a jó megoldás, az még menjen vissza egy kicsit a homokozóba. Ugyanis pont ez a forma adta a fenti runtime error-t.
Igenám, de akkor hogyan lehet törölni egy attribútum értékét? Gugli.
És végül itt van a megoldás. Annyira szép, hogy alig hiszem el.
Tudni kell, hogy az AD-ba lehet cseppeként is írni. Ilyenkor csak a megváltozott attribútum értéke utazik a dróton, azaz spóroltunk egy csomó sávszélességet. Cserébe kicsit bonyolultabb a szintakszis.
Ilyen: oChild.putex X, “attributum”, valtozo,
ahol az X a helyzet kulcsa. Ugyanis ha X=2, akkor kiírás következik, ha X=1, akkor törlés.
Tehát a kérdéses kódrészlet:

If Trim(Cstr(Cells(sor,1).value)) = “” then
oChild.putex 1, “displayname”, “”
else
oChild.putex 2, “displayname”, Trim(Cstr(Cells(sor,1).value))
EndIf

Dögi. Futtassuk meg.
Megint ugyanazt a runtime error-t kapjuk. WTF?
Nos, ismét jött egy kis Gugli – majd megint lekerült a falról egy sor csempe.
A putex-es verzió ugyanis tömböt kér paraméternek. Miért? Csak. Akkor, amikor törlök, akkor nem is igazán kell neki érték, a “” bőven megteszi. De akkor, amikor módosítok, akkor bizony tömbbe kell rakni a változót.
Így fog kinézni a sor:
oChild.putex 2, “displayname”, Array(Trim(Cstr(Cells(sor,1).value)))
És ez már tényleg működik.

Illetve…
Boldogan engedtem rá a felturbózott szkriptet a böszme nagy excel táblára – és pár perc múlva megint runtime error-t kaptam. Egy kicsit megrugdostam az asztallábat majd nekiálltam nyomozni. Hiába. Minden teljesen rendben volt. Kínomban kimásoltam a táblázatból a dn értéket, benyomtam az ldp-be – és megfeküdt az is tőle. Nocsak. Nézzünk be az ADUC-ba.
Basszus. Amíg szarakodtam a szkripttel, addig törölték a felhasználót.
‘On error resume next’ visszakapcsol. Anyátok.

Eseutil XP alatt?

Bármilyen furcsa, de van. És időnként szükség is lehet rá.

A mostani hétvégét arra szántam, hogy kiépítsek otthon egy tesztkörnyezetet – elvégre nem élet az élet házi Exchange szerver nélkül. Virtual PC, Virtual Server van, idő szintén, akkor hajrá.
Az első meglepetést a Virtual PC okozta, ugyanis nem tudta bebootolni a virtuális gépet a telepítő cédéről. A cédé jó volt, a host gép be tudott róla indulni, a virtuális gép beállításai jók voltak – mégse. Mindegy, vacak 2004-es termék, lássuk a nagytesót.
Csakhogy ehhez előtte IIS-t kell telepíteni az XP-re. És rögtön az elején belefutottam egy dilemmába. Ez ugyanis még egy olyan oprendszer, mely sp1-ként települt és később lett rárakva az sp2. Milyen cédét adjak neki, amikor IIS-t akar telepíteni: sp1 vagy sp2?
Végül sp2-t adtam neki, de nem fogadta el. Gondoltam, mielőtt kipróbálnám az sp1-et, megpróbálom megetetni vele az önálló sp2 csomagot. Ez meg is volt valahol. Alig háromszor-négyszer kellett lefuttatnom, mire beugrott a varázslatos -x kapcsoló, amely csak kitömörít. (Korrektek voltak a fiúk, a /?, -? kapcsolókra simán elindult a telepítés. Ennyit a felhasználóbarátságról.) De ez a könyvtár sem tetszett az IIS telepítőnek. Végső elkeseredésemben beadtam az sp1 telepítőlemezt, de az sem volt elég jó.
Itt kezdtem el nagyon nem érteni a dolgot. Aztán a fejemre csaptam: az a hülye a staxmem.dll-t keresi, az összes telepítőszetben meg staxmem.dl_ van. Lehetséges, hogy ezen hasalna el a mutatvány? Ahogy visszaemlékszem, ez nem szokott problémát okozni – de tegye a szívét a kezére az, aki negyed másodpercnél tovább szokta figyelemmel kísérni az ilyen üzeneteket. Lehet, hogy most, pont most csúszott porszem a gépezetbe? És ha igen, mi a teendő? Átnevezhetem simán a dl_ fájlt dll-re? Vagy igyak inkább előtte egy fröccsöt?
Végül az lett a megoldás, hogy ittam egy fröccsöt és közben eszembe jutott, hogy még meg sem kérdeztem az esetről Gugli barátunk véleményét. Hiba volt. A korrekt esetleírás, a megoldási javaslattal, itt található.
Azért röviden összefoglalom.
Van egy secedit.sdb adatbázis valahol a %windir% valamelyik bugyrában. Ha ez megsérül, akkor az IIS telepítő nem fogad el bizonyos dll-eket. Hogy miért nem? Nincs hozzá gusztusa. Mittudomén. Azt se tudom, mitől sérülhet meg. Én egész biztosan nem szoktam kötekedni vele.
Imhol a gyógyítása:
esentutl /p %windir%\security\database\secedit.sdb
És ennél a sornál kezd el jojózni egy Exchange adminisztrátor szeme. Mi van? Eseutil? Az XP-ben?
Bizonyhogy. A név egy picit mutálódott, de a paraméterezés már ugyanaz. És az adatbázis kiterjesztése is beindíthatja a szabad asszociációs folyamot: mdb, edb… sdb… ez bizony JET típusú adatbázis lesz. Aztán amikor az enter lenyomása után megjelenik az a bizonyos rettegve utált karakteres bitkolbász, akkor már egész biztosan tudhatjuk, hogy a deja vu érzésünk helyénvaló volt.
Mellesleg a módszer működik.

Eljöttek az angyalok

A címekkel együtt.

Előzmények:
Itt írtam róla, hogy egyik ügyfelünknél váratlan áldás érkezik: közel 33000 kontakt pottyan az égből a címtárukba. Azt is írtam, hogy sikerült megvédeni ezektől a globális címlistát – de nem túl elegáns módon. Mindenképpen szükség lett plusz adminisztrálásra, ami emberi munka, következésképpen hibaforrás. (Nem mintha a gép nem tudna…)

A héten megkaptuk az első adag címet és alaposan szemügyre vettem őket ldp-vel. Ahogy haladtam sorról sorra, egyre szomorúbb lettem. Sajnos bejött a logika – ha ezek az idegen sejtek látszódni akarnak a szervezetünkben, akkor teljesen hasonulniuk kell. Még az exchangeLegacyDN érték is teljesen ugyanaz, mint a saját címeinknél.
Nem hatásvadászatból írom, tényleg így történt: amikor a tulajdonságok végére értem, akkor találtam – az utolsó sorban – egy olyan bejegyzést, amely egyből bearanyozta a napomat. Ez a neve: msExchangeOriginatingForest. A név magáért beszél: annak az erdőnek a neve van benne, ahonnan a címet migrálták. Értelemszerűen azoknál a címeknél, melyek helyben születtek, ez a tulajdonság üres – azaz nem látszik az ldp-ben.
Innentől kezdve egyszerűen csak ki kell egészítenem a GAL lekérdezést a (!(msExchOriginatingForest=*)) feltétellel és az a bizonyos sokat emlegetett Bob már rögtön a bácsikám is.

Címek az égből

Egyik ügyfelünket az a szerencse érte, hogy egyesítenie kellett saját internetes/belső levelezését anyacége belsős levelezésével. Beszélhetnék a két Exchange organizáció egyesítésének szépségeiről, de most elég lesz, ha csak a címekkel foglalkozom.
Nem kis méretekről van szó: az egyesítés révén több, mint harmincezer új cím fog megjelenni a címlistájukban a jelenlegi ezer mellett – miközben az új címeket csak a top50 felhasználó használja.
Megjósolható, hogy itt nagyokat kell majd varázsolni a címlistákkal.

    Kitérő:
    Ha valaki úgy képzeli el a címlistát, hogy van egy nagy lajstrom, benne a tagok neve – az hatalmasat téved. Szó sincs ilyesmiről. Az egész lista tulajdonképpen egy bazi nagy LDAP lekérdezés. (Érdemes megnézni az Exchange System Managerben a címlista tulajdonságlapján. Igen, arról a kínai szövegről van szó. Később részletezni is fogom.) Lehet ujjongani: mekkora ötlet, nincs lista, nincs egyenként postafiókba firkálgatás, egyszerűen van időnként egy gyors ldap query és ennek eredményét használják a kliensek. És az ldap query gyors – hiszen ez az értelme az egész adatbázis faszerkezetnek. (Már látom előre, hogy erre a szóra mennyire rá fognak harapni a keresőrobotok.:)
    Nos, ha kiujjongtuk magunkat, jöhet a keserves ébredés. Indítsunk el egy ldp-t (support tools) és vizsgáljuk meg egy felhasználó értékkel is bíró tulajdonságait. Fókuszáljunk rá a showInAddressBook tulajdonságra és lassan forduljunk le a székről. Igen. Minden exchange tulajdonságokkal rendelkező objektum tulajdonságai közé be van vésve, hogy mely címlistáknak a tagja.
    Láthatod, nem hazudtam. Nevekből álló lista nincs. Van lekérdezés és van objektumba bevésés. Mindezzel sikerült ötvözni a kényelmetlenséget a lassúsággal. Szerencsére a lassú folyamatok időzíthetők, így végülis nem vészes. (De erről megint később.)

No, nézzük a feladatot. A fentről jövő címeket egy OU szerkezetbe fogja beletojni a MIIS, kontaktok formájában. Természetesen a globális címlistában (Global Address List, GAL) meg fognak jelenni, hiszen azért globális a szerencsétlen.

Ötlet1.
Csináljunk egy alternatív globális címlistát. Na jó, értem én, nem kell kötekedni – igen, ez már nem globális. Csináljunk egy listát és valahogy szűrjük ki a beszülető címeket. Mivel az ügyfélnek is vannak kontaktjai, a legegyszerűbb szűrés – kihajítjuk a kontaktokat – kizárható. Vegyük elő megint az ldp-t, nézzük végig az egyes objektumok tulajdonságait, hátha találunk valami jó szűrőfeltételt. Nos, nem. Nincs. Ez nagyon rossz hír. Kénytelenek leszünk csinálni egyet. Erre valók az ún custom attribute tulajdonságok, van is belőlük tizenhat. Most még csak tesztelünk, tehát egy-egy kontakt, csoport illetve felhasználói postafiók második custom attribute tulajdonságába beírjuk, hogy Valami. Innentől már csak csinálni kell egy teszt címlistát, majd összekattogtatjuk a szűrést ezen tulajdonság értékére. Ja, igen, elfelejtettem mondani, az Address List tulajdonságlapján az egyik fül alatt egy kattogtatógép lapul, ezzel lehet összeállítani ldap query-ket. Legalábbis ez volt a szándék. Sajnos a megvalósítás ettől igen messzire került. Röviden fogalmazva botrányos: a fenti feltételt spec nem lehet összeállítani.
Erről van szó: gyűjts le mindenkit, akinél
vagy userpostafiok.customattribute2=’Valami’
vagy kontakt.customattribute2=’Valami’
vagy group.customattribute2=’Valami’.
Nem egy nagy ügy, így nézne ki:
(|
(&(objektum=user)(customattribute2=Valami))
(&(objektum=kontakt)(customattribute2=Valami))
(&(objektum=group)(customattribute2=Valami))
)
A fenti példán remekül el lehet magyarázni az ldap lekérdezés szintaktikáját. Kezdjük az ún. lengyel logikával. Nem azt mondják, hogy ‘3+3=’, hanem azt, hogy ‘+(3)(3)=’. Az & jelenti az ‘és’ műveletet, a | a ‘vagy’ műveletet és a ! a tagadást.
A valóság ennél jóvabb cifrább, nyilván meg kell vizsgálni, hogy egyáltalán léteznek-e a tulajdonságok és az objektum beazonosítása sem ilyen egyszerű.
Kezdjük a kattogtatást.
Első fül: Kellenek a kontaktok, a postafiókok és a csoportok.
Második fül: Kell az összes Exchange szerver.
Marha jól haladunk, már csak egy fül van hátra, ahol a customattribute2 értékét kellene megadnunk.
Harmadik fül: Izé. Csak úgy nem lehet megadni, előtte ki kell választani, hogy user vagy kontakt vagy group. Válasszuk először a felhasználót. Ekkor a tesztnél megjelenik a tesztkontakt és a tesztfelhasználó. A tesztcsoport nem. Oké, válasszuk a csoportot. Ekkor csak a tesztcsoport jelenik meg. Jó, akkor vegyünk fel két feltételt, legyen felhasználó is és csoport is. Ekkor nem jelenik meg semmi. Nyilván az idióta engine ‘és’ feltételt tett közéjük.
Khmm. Valami nem stimmel.
Jelöljük ki a harmadik fülnél csak a felhasználót és nézzük meg, milyen lekérdezést alkot a robot. Imhol.
(&
(&
(&
(&
(mailnickname=*)
(|(&(objectCategory=person)(objectClass=user)(|(homeMDB=*)(msExchHomeServerName=*)))
(&(objectCategory=person)(objectClass=contact))
(objectCategory=group)
)
)
)
(objectCategory=user)(extensionAttribute8=Valami*)
)
)
A valóságban nincs tördelve. Kell hozzá némi áttekintőképesség, szó se róla.
A ‘*’ az az aszteriszk, azaz jelentése: ‘bármi’. A ‘valami=*’ jelentése, hogy létezik-e egyáltalán a tulajdonság.
Tessék jobban átnézni. Where is the loony? A végén. Egyszerűen tök felesleges az (objectCategory=user) feltétel. Ez a hülye kattintógép viszont mindenképpen berakja, csak hol ‘user’, hol ‘group’ paraméterrel.
Ilyenkor vonja meg az ember a vállát. Hülyék vagytok. Majd beírom én a feltételt. Csakhogy a hülyeség ritkán áll meg félúton: a gyönyörű kattogtatógépben nincs custom fül; _nem lehet_ saját keresőfeltételt beadni. Ami már csak azért is meglepő, mert szószerint ugyanígy néz ki az AD custom query kattogtatógépe és ott meg van olyan: egyszerűen a legördülő menüben eggyel több a választható lehetőség és bejön egy üres szövegmező, ahová gépelhetsz.
Elég mélyre ástunk eddig is, itt az idő, hogy még mélyebbre hatoljunk. Nyilván ezek a lekérdezőfeltételek valahol le vannak tárolva az AD-ban is. Vegyük elő kedvenc AD matyizó svájcibicskánkat, az ADSIedit mmc snap-int. (Szintén support tools.) Nagyon remélem, hogy senkinek sem mondok azzal nagy újdonságot, hogy az Exchange organizáció összes konfigurációs beállítása az AD konfigurációs névterében van elrejtve, a Services/Exchange alatt. Nem kell sokáig túrni, hamar meglesznek a címlista objektumok is… és igen, az objektum ‘purportedsearch’ tulajdonsága rejti a keresőfeltételt. Hanyag eleganciával töröljük ki a felesleges kérdést, hajigáljunk pár percig dartsot, majd ha a replikáció megtette a dolgát, nézzük meg immár az ESM-ben a tesztcímlistát. Gyönyörű. Ott van a lekérdezésünk. Írjuk még be a description mezőbe, hogy aki a grafikus felületen módosítani meri a lekérdezést, annak letört kezét fogjuk a seggébe dugni.
Nyertünk.
Eltekintve attól az apróságtól, hogy a teszt címlista nem hajlandó megjelenni kliensoldalon. De ez apróság, összehasonlítva azzal a hátul motoszkáló rossz érzéssel, hogy ez nem frankó. Kurvára nem elegáns. Eleve fel kell tölteni az AD-t ezzel a Valami értékkel. Ha új felhasználót, kontaktot veszünk fel, tudni kell, hogy ezt az értéket is be kell írni, ha látni akarjuk a címlistában. Emberi munka. Hibalehetőség. Tré.

Ötlet2
Ha nemcsak ldp-ből nézzük meg az objektumot, hanem ADSIedit-ből is, egyszercsak szemünkbe tűnik egy canonicalName nevű tulajdonság. Hö. Mifene. Ebben pont az az útvonal van, hogy hol található az objektum. Háde a címek egy meghatározott OU-ba fognak pottyanni – tehát elegendő lenne egy ‘!canonicalName=Domain/OU/*’ feltétellel kiegészíteni a jelenlegi globális címlista lekérdezési feltételét és máris Bob lenne a bácsikánk. Nosza kimásoltam a globális címlista feltételét (még szerencse, hogy engedik használni a ctrl+C-t…), egy editorban hozzáfűztem a fenti feltételt és az egészet bevágtam ADSIedittel a tesztcímlista megfelelő tulajdonságába. Darts, teszt – és üres halmazt kaptam. Habár szeretek dartsozni, de szorított a határidő, így gyorsítottam a tesztelésen. Nem a címlistáknál vacakoltam, hanem a már korábban emlegetett AD custom search ablakban teszteltem a lekérdezést – itt egyből látom az eredményt és van beíróablak. A tesztcímlista lekérdezésével egyből hibaüzenetet dobott. Jó, hagyjuk a GAL-t. Összekattogtattam egy jó általános lekérdezést, az eredményt kimásoltam, editorban hozzátettem a szükséges feltételt és visszamásoltam a custom search mezőbe, és… nem fogadta el! Szószerint ez történt: kurzor be az ablakba, ctrl+v, egy villanás – és nem történt semmi. Nem került be a szöveg. Azannya. Biztos elrontottam valamit az editorban. Fogtam a kattogtatás adta eredményt és egyből visszamásoltam a szövegablakba. Villanás, üres ablak. Mifasz? Adjuk be cseppenként. Editorból kezdtem feltételenként visszamásolni és most már megjelentek a sorok. Szépen haladtam is, de az utolsó feltétel bemásolásakor újból jött a villanás. Bazdmeg. És akkor még messze nem adtam vissza az akkori hangulatomat. Az idióták lekorlátozták a szövegablakban a bevihető karakterek számát. Olyannyira, hogy begépeléssel nem tudom összerakni azt a lekérdezést, melyet kattogtatással igen.
Habár szó sem volt replikációról, de megint sürgős dartsozhatnékom támadt.
Jó, menjünk vissza az elejére. Tesztként beírtam a ‘!canonicalName=Domain/OU/*’ lekérdezést – és erre is hibaüzenet jött. Így már sokkal tisztább a helyzet. Valamiért ez a feltétel nem jó. Miután tíz percig vizsla szemekkel ellenőriztem betűről betűre, hogy nem gépeltem-e el valamit, elkezdtem végre gondolkodni. Hogyan is működik egy AD query? Hol keres?
Hoppá. Ez bizony nem az egész AD-t túrja át, helyette csak az index adatbázist piszkálja – azt az adatbázist, melyet a globális katalógusok kezelnek. Benne van ebben az adatbázisban a canonicalName tulajdonság?
Nézzük meg. Schema management, canonicalName – bizony, üres az összes checkbox. Hát ezért halt meg futás közben az összes lekérdezés.
Itt volt az idő konzultálni az ügyféllel. Előtte azért megkérdeztem a Microsoftot, hogy mekkora plusz terhelést fog okozni az AD-nak egy új tulajdonság felvétele a GC adatbázisba. Ugyanazt a választ kaptam, mint Arthur Dent a bulldózer előtt: “semekkorát”. Ügyfélnek elmagyaráztam a helyzetet, azt mondták, hajrá, felvehetem a tulajdonságot.
Megvártam a péntek délutánt, nekifeszültem a sémának, bekattintottam a ‘vedd fel az index adatbázisba’ checkbox-ot és a ‘replikáld a GC-k között’ checkbox-ot… majd elgyönyörködtem két hibaüzenetben, miszerint ez a tulajdonság a System Class-ba tartozik, tehát se nem indexeltethető se nem replikáltatható.
Csak.

Ötlet3
Más választási lehetőség híján maradtunk az első módszernél. Közben eszembejutott egy újabb komplikáció: kliensoldalon mindenki a globális címlistát használja; ha bevezetek egy új címlistát, akkor mindenkinél át kell állítgatni. Az ügyfél viszont határozottan irtózik a kliensoldali beavatkozásoktól.
Kellene egy újabb ötlet.
Nos, eddig is bátrak voltunk. Miért ne lehetnénk még bátrabbak? Módosítsuk a globális címlistát. A neve marad globális, de kibelezzük és az álca alatt egy nem globális címlista lenne, mely megegyezne azzal a címlistával, melyet most használnak. A tesztlistát meg átberhelnénk és az lenne a tulajdonképpeni globális címlista.
Az ötlet jó. Némi fennakadást okoz, hogy a globális címlista (GAL) nem módosítható. A grafikus felületről. De itt van a jó öreg ADSIedit, és természetesen a GAL-nak is megvan a ‘purportedsearch’ tulajdonsága. A lekérdezés kimásolása a GAL-ból, átmásolása a tesztcímlistába, kibővítése a plusz feltétellel és visszamásolása a GAL-ba alig volt öt perc.
Csak hogy töltsem a helyet, idemásolom:
(& (extensionattribute2=Valami)(mailnickname=*)
(| (&(objectCategory=person)(objectClass=user)(!(homeMDB=*))(!(msExchHomeServerName=*)))
(&(objectCategory=person)(objectClass=user)(|(homeMDB=*)(msExchHomeServerName=*)))
(&(objectCategory=person)(objectClass=contact))
(objectCategory=group)(objectCategory=publicFolder)(objectCategory=msExchDynamicDistributionList)
))
Enyhe szépséghiba, hogy mindez kliens oldalon egyelőre nem látszik.
De ráérünk, mert még fel kell tölteni az AD-t szkriptből és ez sem apró feladat. Először is figyelni kell arra, hogy a nemlétező tulajdonság és az üres tulajdonság nem ugyanaz, dacára, hogy lekérdezéskor ugyanazt a választ kapjuk az Isempty() függvénnyel. Habár van valami módszer – lekérdezve az Err értékét -, de nekem ez sohasem működött. Viszont jelen esetben igen fontos rögtön az elején különbséget tenni a két lehetőség között, ha ugyanis egy olyan objektum Exchange tulajdonságának adunk értéket, mely se nem mail-, se nem mailbox-enabled, akkor egy olyan szürke zónába léptünk, melytől minden tisztességes adminisztrátor irtózik. Meg a tisztességtelenek is. A zóna kizárólag a hülyéknek van fenntartva.
Szerencsére van egy másik tulajdonság, melynek mindig van értéke, ha az objektum mail/mailbox-enabled: ez a proxyaddresses tulajdonság. Ez gyakorlatilag egy tömb, amelyben az objektum összes e-mailcíme van felsorolva – márpedig egy darab mindenképpen van neki.
A többi már nem nagy ügy. Még arra kell figyelni, hogy a romantikus nevű MsExchHideFromAddressLists változó értéke hamis legyen – azaz az objektum ne legyen kirejtve a címlistákból.
Mehet is. De még mennyire. És de még hányszor. Eszméletlen eldugott sarkai lehetnek egy 3 fás 6 tartományos erdőnek, zegzugos OU-kal, konténerekkel – márpedig addig kell erőszakolni a szkriptet, amíg a globális címlistával megegyező számú objektumot kapunk vissza. (Igen, megírhattam volna rekurzívnak is. Későn jutott eszembe.)

De végül ez is rendbe jött. Ennek ellenére kliensoldalon semmi változás. A tesztgépen továbbra is a régi címlisták látszanak.
Itt van egy láb, kibe rúgjak? Ki mögött rejtőzködik az MSExchangeAL? A legvégén biztos a System Attendant lesz, de azért durva lenne az egész szervert restartolni egy frissítés miatt.
Miről is írtam az elején? Hogy a listatagság beleíródik az objektumba. Ez egy bulk jellegű írási művelet. Melyik komponens lát el hasonló funkciót? Igen, a Recipient Update Service, a jó öreg RUS. Haza is érkeztünk. Ugyanazt kell csinálnunk, mint amit egy új recipient policy bevezetésekor: minden tartományi RUS-ba bele kell rúgni egy jó nagyot. Figyelem: nagyot. Én úgy tapasztaltam, hogy a hivatalos véleménnyel szemben kicsi rúgásra a füle botját sem mozgatja. (Segítség. Kis rúgás: update. Nagy rúgás: rebuild.)
Egy-két óra várakozás következett, közben volt egy röpke őszülés is: ugyanis befigyelt egy jó hosszú periódus, amikor üres volt a teljes globális címlista. Roppant lehangoló látvány. Szerencsére nem sokan látták, ez ugyanis már péntek éjfél körül volt. Hogy a modemesek mennyit fognak átkozódni, amíg az új offline Address Book-ok leérnek hozzájuk, azt nem tudom. Remélem, nem találnak meg.

Tulajdonképpen most már készen is vagyunk, boríthatják a címeket.
És ha már itt lesznek, át kell túrnom alaposan a tulajdonságaikat, hátha találok valami különbséget, ami alapján automatizálható lehet a listázás.

REMonitor

Egy újabb rémálommal kevesebb.
Emlékszem, amikor először találkoztam ilyesmivel, nem hittem a fülemnek.
Egy nagyobb migráció után Exchange routing group-okkal zsonglőrködtem egy meglehetősen nagy organizációban. A végén minden beállt abba az állapotba, amilyenben lennie kellett. Szerintem.
Csak éppen nem tűnt el egy kitörölt routing group – emiatt a levelek véletlenszerűen félrementek. Jó lett volna ténylegesen is megszabadulni a rossz routing group-tól… de még flex-szel sem tudtam eltávolítani. Egy idő után feladtam, call PSS. Azt mondták, igen, elő szokott ilyesmi fordulni, a routing információk cache-ben vannak és néha beragad valami szemét. Ki kell üríteni a cache-t.
– Oké – mondtam – csapjunk bele… hogyan kell?
– Nagyon egyszerű – mondták – az összes szervert le kell állítani egy időben.
– A routing groupban?
– Nem. Az egész organizációban.
Ekkor ültem seggre. Nem kis munka volt megszervezni, hogy minden helyszínen legyen egy ember, aki adott jelre (mobiltelefon) lekapcsolja a szervereket majd adott másik jelre visszakapcsolja. Távoli újraindításról szó sem lehetett, mert addig mindegyik gépnek kikapcsolva kellett lennie, amíg a routing master Exchange szerver fel nem állt.
Viszont ettől tényleg megjavult a levelezés.
Azért úgy belegondoltam, hogy mondjuk egy multicégnél, ahol garmadával vannak szerverek különböző kontinenseken, mekkora meló lehet egy ilyen akciót megszervezni.
Valószínűleg belegondolt a Microsoft is, mert kihoztak végre egy eszközt, mely kezeli ezt a problémát. Az a neve, hogy Routing Engine Monitor (REMonitor) és az Exchange Team szépen le is írja, hogyan kell kezelni. A logika azt mondatja velem, hogy nagyon jó eszköznek kell lennie, ha ennyi időbe tellett a kifejlesztése.

Érik a fekete

Nem, nem cseresznye. Szeder. És nem be, hanem – ha rajtam állna -, akkor ki.

Már az ókori görögök is tudták, mi a jó nekik – még a legelvetemültebb kutatások során sem találtak a régészek semmi nyomot, hogy őseink használtak volna valaha is Blackberry mobil üzenettovábbító rendszert.

Az ügyfél nem volt ennyire elővigyázatos. Neki_ilyen_kellett. A magyarázat egyszerű: habár már telepítve van két darab Onebridge SyncServer (mindegyik organizációhoz egy-egy), de ezek csak PDÁ-val tudnak szinkronizálni. (Kutatásaim szerint valahogy össze lehet lőni Blackberry-vel is, de ebbe most ne menjünk bele.) És amikor a vezig Amerikában járt és az összes CEO előrántotta a kütyüjét, tízből kilenc Blackberry volt. Kinézték szegényt a PDÁ-jával.

Uccu, megvették az egészet tokkal-vonóval. Rám várt a nagy feladat, hogy beüzemeljem.
Az első olvasgatások után nem tűnt túl bonyolultnak. Volt telepítési kézikönyv is – mi más kellhet még? Idő, türelem… novemberben mindezek még megvoltak.

Feltelepítettem a Windows2003 szervert, összeszedtem minden szükséges komponenst. Rengeteg volt, nem véletlenül kézikönyv formában adták mellé a telepítési leírást. De végül tényleg összejött minden.
Aztán a sokadik oldalon azt mondta, hogy telepítsük fel rá az Exchange System Managert. Csakhogy a becélzott organizáció még 5.5-ös. Az Exchange Admin meg nem ment föl Windows2003 szerverre, de nem ám.
Újabb kör a Dataplexbe, Windows2000 szerver felugrott – persze ehhez teljesen más garnitúra lószart kellett leszedni. (IE6, CDO patch, ADODB, stb…) De minden munka elfogy egyszer (vagy nem?) és eljutottam odáig, hogy aktiváljuk a kézi egységet. Vállalati aktiválás elindul, aztán vár. Vártam vele én is. Azóta is ott várnánk együtt, ha a qrtafarkú malac ki nem túrt volna.
Jöhetett a szokásos vajákolás. Logok nézegetése, önmarcangolás (biztos, hogy mindent jól telepítettem?); ilyen kísérlet, olyan kísérlet. Ügyfél kapcsolattartója megpróbálta a lehetetlent: támogatásért folyamodott a T-online-hoz, aki spec. a rendszer eladója volt. Jöttek is az ötletek: ne a wireless aktiválással sportoljunk, hanem a drótossal. Dugjuk fel a kütyüt egy PC-re és indítsuk el úgy a folyamatot. Ehhez lazán bele kellett durrantani a tűzfalba egy páncélököllel, de nem probléma. És már a tűzfalas emberünk is felgyógyult.Viszont az aktivizálás így sem ment. Jött a következő zseniális ötlet: dugjuk fel a kézi egységet közvetlenül a szerver USB portjára. Mert egy szervernek ilyesmi csak úgy van. A vicces az, hogy ez spec desktop gép volt, tehát véletlenül pont volt neki USB ivarszerve. Ekkor egy kicsit rettegtem, hogy ez a módszer _nehogy_ működjön: ebben az esetben ugyanis minden készülék aktiválásakor villamosozhattam volna a Dataplexbe. De a modern technikában lehet bízni: ha eddig sehogy sem működött az aktiválás, akkor ezzel a módszerrel sem produkált meglepetést.
Közben az ügyfél átrágta magát a T-online védelmi vonalain (CRM, te drága) és eljutott egy szakemberig. Az első kérdés az volt, eltávolítottam-e az Outlook-ot. Nem is volt rajta. És az Outlook Express-t? Izé… nem. Hol is van ez leírva? Sehol. De tapasztalat, hogy nem lehet fent.
Jó, szedjük le. Bár az emlékeimben úgy rémlett, hogy ez össze van nőve az Internet Explorer-rel és annyira masszív részei az operációs rendszernek, hogy csak ördögűzéssel távolíthatók el. Naív módon először a Microsoftnál néztem szét.
Most mondja azt valaki, hogy a fiúknak nincs humorérzékük. A következő KB cikken órákig röhögtem.

Cím:
Nem tudjuk leszedni az Outlook Expresst Windows2000 alatt.
Jelenség:
A Windows2000 helpjében leírt módon nem tudjuk eltávolítani az Outlook Expresst.
Ok:
A help fájl hazudós.
Megoldás:
Nem tudod eltávolítani az Outlook Expresst a Control Panel Add/Remove Programs segítségével.

Gyönyörű…
Aztán persze megtaláltam az igazi KB cikket is, illetve ennek különböző, kevésbé aggódós változatait. Mindenesetre elég durva munkának igérkezett, egy csomó könyvtárat, registry kulcsot és rendszerfájlt kellett kigyilkolni, megküzdve közben az állásait elkeseredetten védő Windows File Protection szolgáltatással.
Illetve első körben nem tudtam megküzdeni vele, ugyanis nem dobta fel a megjósolt ‘Uramatyám, mit csinálsz’ ablakot. Ehelyett gondolkodás nélkül visszarakta a dll-eket, még akkor is, amikor a dllcache-ben töröltem és a telepítőkészlet a fasorban sem volt. Nem részletezem, mennyit őszültem közben, a megoldás végül az lett, hogy oda kellett menni fizikailag a szerverhez, barackot nyomni a buksijára és konzolról törölni a rendszerfájlokat. Ekkor már feldobálta a WFP a fehér zászlókat én pedig könyörtelenül legéppisztolyoztam a követeket.
Jöhetett az újabb aktiválási kísérlet. Nem koronázta siker.
Ezután lépésről lépésre végigmentünk a folyamaton és kiugrott, hogy bizony az Exchange organizáció nem érhető el az internet felől. Bizony-bizony, ez egy ilyen organizáció: az ügyfél, aki egy nagy multi hazai leánya, ezen keresztül tartja a kapcsolatot Anyucival. Ja, sóhajtott fel a support legény, akkor ez nem is fog menni. A központi Blackberry server e-mailben küldi el a tanúsítványt a szinkronizálandó postafiókba. Biztos? Igen. Le is írnád? Persze.
Ez után a levél után az ügyfélnél egyes emberek napokig csak egy irányba tudtak menni. A vezig ugyan egy nagyon kedves ember, de ha nem kapja meg a játékát, roppant kedvesen tudja ki is rúgni az embert. (Olyan átmenet Mr Gatto és Mr Teufel között.)
Persze jött a felelős keresése. Én széttártam a kezem: a dokumentációban erről a kitételről egy szó sincs, nekem meg eszembe sem jutott, tekintve, hogy a konkurrens Onebridge simán veszi ezt az akadályt. A T-online meg elfelejtett szólni erről az apróságról; hja, mindenre ők sem gondolhatnak.
Az ügyfél roppant szerencséjére éppen folyik egy másik projekt is. Az anyacég átrendezi sorait és az egész 5.5 organizációt átmigrálja egy E2k3 környezetbe. Ergo nekünk is meg kell lépnünk egy hasonló migrációt, velük egyeztetve. Történetesen az ügyfélnek már van egy E2k3 organizációja, tehát mindösszesen annyi a dolgom, hogy az 5.5 organizációt be kell migrálni az E2k3-ba, azt pedig konnektorokon, DNS-en és MIIS-en keresztül összekötni Anyucival. Bagatell.
De ha ez lemegy, akkor lesz egy olyan organizáció, amelyikben landolnak az anyacég levelei és amelynek lesz Internet kijárata -> ergo bele lehet kötni a Blackberry-t -> ergo Mr Vezig legközelebb nagy arccal elő tudja majd rántani a handheldet az USÁ-ban. (Bár, ahogy most mennek a dolgok, lehet, hogy addigra már pont a többieknek lesz PDÁ-ja.)

Ehhez viszont nyilván újra kell telepíteni a Blackberry szervert, immáron Windows 2003 szerverrel.
A két projektet simán lehet vinni egymás mellett is, így egyszerre telepítettem a két kulcsszervert. (Lásd itt.) Érdekes nap volt.
Most arra számítasz, hogy egy ilyen bonyolult folyamatban milyen összetett szívásokról fogok írni. Nos, nem. A következő szívás nagyon egyszerű, de annál hatásosabb volt. Dönci – a korábban már emlegetett páncélszekrény – azóta őrzi a lábnyomaimat. Meg a harapásmintámat.
Újratelepítés. Eljutottam odáig, hogy partícionálás. Ugye addig volt egy C: – system és boot partíció egyben; emellett egy D:, melyen közel 2 GB, nehezen összevadászott telepítőanyag figyelt. Én csak a C: partíciót terveztem újrahúzni. Igenám, de a telepítésnél feljövő menüben fel volt cserélve a két partíció betűjele! Ha meg akartam őrizni a telepítőkészletet, akkor csak a másik partícióra tudtam telepíteni, ekkor viszont az eredeti D: – amelyik most át lett nevezve C:-nek – lett a boot partíció (amelyiken a system van); míg az eredeti C: – amelyik most át lett nevezve D:-nek, lett a system partíció (amelyikről bootol a rendszer.)
Tudtok követni? Mert most kezdődik igazán a keverés.
Hogy véletlenül se tudjak hibázni, mindkét partícióra felmásoltam a telepítőkészletet. Új telepítés, a partíciók megadásakor letöröltem a D-t, a C-re tettem a windowst. Ekkor egy partíciót kaptam a telepítés után – csakhogy ez volt a nagy és a másik, a D: lett a kicsi. Nekem viszont pont fordítva kellett. Semmi gond, létrehoztam egy kis partíciót, átneveztem X-re, átmásoltam rá is a telepítőkészletet és újratelepítettem a windowst. A partíciók megadásakor a régi C-t (amelyik most egyszerre volt boot és system is) letöröltem és meglepetten konstatáltam, hogy az általam X-nek nevezett partíciót E-re nevezte át. A telepítés lefutott, lett rendesen C: partícióm, egy nagy büdös partícionálatlan rész és valahol a diszk végén egy E: partíció. Amelyikre ez a szerencsétlen nyáladzó elmebeteg rátette a system partíciót.
Aki esetleg elvesztette a fonalat, most jön a visszacsatlakozási pont.
Ennek a büdöslábú operációs rendszernek nem lehet megmondani, hogy telepitéskor ne bántson egy már meglévő partíciót. Ha már van egy partíció és létrehozok egy másikat, hogy arra települjon, akkor automatikusan mindkettore telepíti az operációs rendszer egy részét (system/boot partíciók). És nyilván ezeket a partíciókat utána már nem lehet bántani.
Két választási lehetőségem volt:
– valami unattend szkriptes matyival megmondom neki, ki legyen a system és boot partíció,
– vagy a 2GB adatot hálózaton keresztül átnyomom egy másik gépre, majd mindkét partíciót törlöm. Telepítéskor pedig csak egy partíciót adok meg, így nem tud a nyomorult variálni.
Ez volt a gyorsabb, ezt választottam. Szerencsére nem jött reklamáció szolgáltatás lassulásról.
De akárhogy is nézem, megint ugyanaz a történet: egy MS termék megint azt hisz magáról, hogy ő a kurva okos és nem, az istennek sem engedi, hogy valami kósza admin belepofázzon. Ha két partíció van telepítéskor, akkor külön lesz a system és a boot. Ha úgy gondolja jónak, akkor a partíciókat is átnevezgeti. Mindenkinek pofabe.
Amikor először futottam bele ebbe, akkor azt hittem, biztosan én voltam figyelmetlen.
De nem.
Szégyen.

Na, mindegy, az operációs rendszer felment. Egymás után négyszer is. Visszakerült a jó öreg Windows 2003 szerver.
És ennek már volt egy hatalmas előnye. Amikor másnap eszembe jutott, hogy nem gyaktam ki az Outlook Expresst, akkor már nem kellett kimennem ismét a Dataplexbe, tekintve, hogy ennek már van mstsc /console üzemmódja. Kis lépés az emberiségnek, nagy lépés egy aggresszív klímától torokgyíkban szenvedő adminnak.
Mondjuk a biztonság kedvéért rákerestem, nem változott-e valami a gyilkolászással kapcsolatban. És igen, változott. Azt írták – már fogalmam sincs, hol -, hogy a Windows 2003 alól sehogyan sem lehet eltávolítani az OE-t. Depressziós lesz, kardjába dől, zsúfolt buszon felrobbantja magát.
Ugyan. Mivel más választásom nem volt – a T-online veszettül ragaszkodott hozzá, hogy ez a remek, XXI. századbeli program nem képes együttműködni egy évek óta masszív Windows rendszerkomponenssel – szóval kénytelen voltam kipusztítani a dll-eket. Bár a WFP bedobott még egy apró trükköt – W2k3-nál a Search már nem keres a dllcache könyvtárban -, de terminátorként megkerestem a menekülő fájlokat és nem volt kegyelem.
Nyilván újraindítottam műtét után távolról a gépet – és nem állt fel.
Hmm. Lehet, hogy a Microsoftnak tényleg igaza volt és tényleg ennyire kritikus komponens az Outlook Express?
Mese nincs, duzzogva bár, de ki kellett mennem megint a Dataplexbe. Az Árpád-hídnál lévő rétesárusnak jól ment ebben az időben, mindig bedobtam nála egy mákosat.
Amikor beléptem a szobába, kellett egy kis idő, míg levegőhöz jutottam. Az történt, hogy egy kolléga bekötött egy tesztgépet és mivel nem talált hozzá szabad konzolt, lehúzta a Blackberry szerverét. Az a süket BIOS meg várta, hogy valaki majd megnyomja az F1-et a hiányzó billentyűzettel.
Alapvetően tiszta szerencse, hogy ilyenkor én már hangolódok a szeretet ünnepére.

A sok kanyar után megint összejött egy tesztelhető állapotú konfiguráció. Vállalati aktiválás – és igen, megérkezett a teszt postafiókba a vezérlő levél. Aztán ennyiben is maradtak. A Blackberry központ negyedóránként elküldte a levelet, a handheld meg cseszett aktiválni. Vagy a jó ég tudja, melyik komponens.
Újabb levél a support hapinak. Két napig semmi. Ekkor felhívtam a srácot, olvasta-e. Még nem. Be van havazva. Oké. Levél az ügyfélnek, így állunk. Vezig hogy érzi magát?
Huh. Újabb kapkodás. Ingerült levélváltások. Hogy milyen support is ez? A T-online büszkén válaszol, hogy semmilyen. Ugyanis ehhez a cucchoz nem is adnak el supportot, mert hivatalosan nincs is olyan termékük, hogy támogatás. De ha ennyire bénák vagyunk, akkor kijönnek és jó pénzért feltelepítik ők.
Szóval ment az agyalás. Én közben – sokadszor – átolvastam a telepítési útmutatót. És basszus, megakadt a szemem egy megjegyzésen: ne telepítsük a Blackberry szervert dmz-be. Lehet, hogy az a baj, hogy túl okosnak képzeltem magam. Azt gondoltam, hogy legfeljebb majd megnézzük jól, mit akar ez kommunikálni, aztán azokat jól átengedjük. Aztán lehet, hogy ez meg egy olyan termék, amelyik csak akkor működik, ha egy LAN-on van az Exchange szerverrel. Mittudomén, lehet, hogy azt se tudja, mi az a default gateway. (Tudom, nem az a szint… de ha az ember el van kettyenve, akkor szinte mindegy mit, csak csinálni akar valamit.)
Kimentem megint a Dataplexbe és átkábeleztem a belső LAN-ra. NIC, routing tábla, minden rendben, a gép működött, távolról is. Akkor újabb kísérlet, és újabb döbbenet: a Blackberry Manager azt mutatta, hogy a szerver nem működik.
Vazze, ez a szerencsétlen nem bírta elviselni, hogy megváltozott az IP címe. Nyess. Blackberry szerver le, aztán fel. És már csodálatosan működött is. Jöhetett a teszt, levél megérkezett és a negyedórás próbálkozások is.
Közben jött e-mail a supporttól – gondolom ráléptek a figura farkára jól; pedig ő tehetett a legkevésbé a helyzetről. Azt mondta, akkor szokott ilyen történni, ha nem jól távolítják el az Outlook Expresst. Ekkor sikítoztam egy kicsit. Ugyan már, mi a megfelelő eltávolítása egy eltávolíthatatlan programnak?
Nem sokkal később jött egy másik levél is, benne egy csomó tippel. Köztük azzal, hogy ugye, a service account user nevében léptem be és csináltam a telepítést. Nem. Már miért tettem volna? Általában domain adminnal telepítek, ha kell service account user, akkor legfeljebb átírom a service adatlapját. No, mindegy, egy próbát megér.
És igen. Ez hozta a megoldást. Bármennyire is hihetetlen, a service account user valami démoni lény és csak ő tudja azt a titkot, amitől életre lehelődik a Blackberry szerver. És hol van ez leírva? – kezdtem dühöngeni. Újból elővettem a rongyos telepítési leírást… és megtaláltam. Egyszer leírták nagy vonalakban a folyamatot, egyszer pedig szájbarágósan. És az utóbbi változatnál volt ott, elég apró betűkkel.
Legközelebb annyira betű szerint fogok telepíteni, amennyire csak lehet.
Bár ismerve a rajtam ülő átkot, akkor meg biztosan egy sajtóhibába fogok belebukni.

Szóval öröm, petárdák, hejehuja, pezsgőbontás. Most már van egy Blackberry kütyüm is. Illetve eddig is volt, csak nem működött.
Még annyi lett volna hátra, hogy visszaköltöztetjük a cuccot a dmz-be, de a support gyorsan szertefoszlatta az elképzeléseimet: felhívta a figyelmemet, hogy az első aktivizálás után már ne változtassuk meg a szerver IP címét, az ugyanis be lett regisztrálva a Blackberry központban, a licenszkulccsal együtt. A belső IP? – hűledeztem. Ja – jött a válasz.

Én általában vonzódom a bizarr dolgokhoz, de ez már meghaladta az én tűrőképességeimet is. Sóhajtottam egy nagyot, megírtam az üzemeltetési dokumentációt és lerúgtam magamról az egész bagázst.
Nem is akarom látni többet.

Ezt ne próbáljátok ki otthon

Essünk túl rögtön a nehezén: farok voltam. Nem is kicsit. De megint mákom volt, nem ez okozta a szopást.
Mint írtam korábban, egy nagyobb lélegzetű projekt részeként fel kellett húznom egy távoli tartományban, egy távoli szájtban egy tartományvezérlőt. Anélkül, hogy túl sokat gondolkodtam volna, felhúztam rá egy w2k3 szervert. Aztán amikor jött a dcpromo, kerregett egy kicsit, majd indignáltan közölte, hogy “legalább egy adprep kellene, fiú“. Basszus – csaptam a fejemre – ez még csak natív w2k tartomány. Oké, tudomásul vettem, hogy nem történt meg az előléptetés – a biztonság kedvéért átnéztem az AD-t, de sehol semmi nyoma nem volt, hogy keletkezett volna egy DC.
Újrahúztam a gépet, immáron w2k-val, megint dcpromo, remekül sikerült. Elég késő este volt, gondoltam reggelre lemegy minden replikációs szutyok.
Hát, nem. Semmi replikáció nem történt, semmi srv rekord nem jött létre – a DC bizony elég döglöttnek tűnt. Egy kollégával nekifogtunk a feltámasztásnak, de nem bírtuk kirángatni a klinikai halál állapotából. A hibaüzenetek mélyén mindig beleütköztünk egy gyanús objektumba, mely egy guid névre hallgatott. Úgy tűnt, hogy ez a bazi hosszú karaktersorozat akadt keresztbe az AD torkán.
Ha nem, hát nem. Dcpromo vissza. Azt mondta, hogy nem lehet, mert nem működik a replikáció. Itt kezdett el jojózni a szemem – hát pont azért akarom demotálni, mert nem működik a replikáció! Aznapra elég is volt ennyi.
Hétvégén egyrészt aludtam egyet-kettőt, másrészt gondolkodtam. Igen, szoktam. Néha.
Találtam is valami magyarázatot. Igaz, légből kapott – ún. identifikált – magyarázat volt, de logikusnak tűnt. Kicsi is, savanyú is, de a miénk. Valószínűleg az első dcpromo már megágyazott a szervernek a konfigurációs névtérben – és csak utána vette észre, hogy nem megfelelő a séma. Persze ezt már nem takaritotta ki. Mocskos Microsoft. Trehány banda.
Jöttem két nap múlva és megpróbáltam létrehozni egy ugyanolyan nevű DC-t. Naná, hogy ennek – legbelül – csak ronda guid-os neve lehetett, hiszen az előző ágy még ott illatozott. Hogy aztán miért okozott helyrehozhatatlan replikációs hibát ez az elnevezés, azt már nem tudom.
A megoldás adta magát: valamilyen módon ki kell takaritani a döglött DC-t, helyét felszántani, sóval bevetni, aztán másik néven kreálni egy újabb tartományvezérlőt. A takarításhoz meg is találtam a megfelelő KB cikkeket (egyik, másik), innentől kezdve már csak a diplomácia maradt hátra. Mennyire lesz ez kockázatos? Ha fejreállítom a regionális vezető szerepre törő ügyfél éles tartományát egy Europe-wide projektben, akkor én az EMEA régióban sem találok új munkahelyet. De az idő is erősen sürget, és bár kicsi a kockázat, de ha megemlítem, akkor beindul a change management, kockázatelemzés, független tesztelés, annyakínja…
Volt min agyalnom.
Végül megoldódott a helyzet. Beavattam a főnökömet, írtam az ügyfélnek, fél napig vártam, nem válaszoltak, hallgatás – beleegyezés. Mehettem dózerolni. Az első döbbenet akkor ért, amikor a dcpromo /forceremoval sem működött. Azt mondta, nem tudja leállítani a netlogont. Nofene.
Itt már azért sejtettem, hogy megint mehetek a jó öreg zajos, szélviharos szerverhelyiségbe.
Egyelőre beléptem az ILO porton, letiltottam az összes hálókártyát, majd nekiálltam megműteni az éles AD szívét. Nem mondom, hogy nem remegett a kezem.
Itt érdemes megemlékezni egy fordítási bakiról.

10. Perform a metadata cleanup for the demoted domain controller on a surviving domain controller in the forest.

10. Végezze el a metaadatok törlését a lefokozott tartományvezérlőn az erdő egy még meglévő tartományvezérlőjéről.

Uraim, ez nem ugyanaz, nagyon nem…
A műtét sikerült, az ügyfél nem vett észre semmit, én meg tekerhettem a Dataplexbe. Ilyen flott telepítésem még nem volt blade-del: 2 óra alatt tiptop fent volt az oprencer, mindenestől. Hát, igen… a rutin.
És jött megint a félelmetes dcpromo. Látszólag minden sikerült. Jó, akkor most menjünk büfébe, mert szégyenlős a kicsi – ha nézik, akkor nem replikál. De ez a büdös dög akkor sem replikált, ha nem nézték. Ugyanaz a jelenség. Semmi replikáció, szájton belül RPC error, szájton kívül semmitmondó ‘majd replikálok, ha ráérek‘ üzenet, az eventlogban meg egy teljesen értelmezhetetlen hibaüzenet: nem tud bejegyezni egy bazinagyguid nevű aliast az msdcs.forestroot dns zónába. Megnéztem és ez egy igen idétlen zóna: tele van ilyen ökörhugyozás bejegyzésekkel és az új DC-nek tényleg nyoma sincs.
Nos, a szituáció megérett egy funkcionális eszkalációra. (ITIL vagyunk, vagy miaf@sz.) Először mozgósítottam a tűzfalas emberünket, majd ezzel egy időben becsörögtem a Microsoft PSS-hez. Tuti örültek nekem, délután fél ötkor, egy ‘A’ kategóriás bejelentéssel. Az első embernek egyből el is romlott a postafiókja, így kénytelen volt rögtön eszkalálni a problémát.
Amíg ők odabent békésen eszkalálgattak, visszahívott az – egyébként igen jónevű – tűzfalas emberünk.
– Hát, van néhány drop, DNS kéréseknél – mondta.
– Mennyi?
– Tulajdonképpen kurva sok.
– Áááááá! – kezdtem el sikoltozni. (Még rögtön az elején nyomatékosan kértem, hogy az új DC és a többi között any-any szabály legyen.)
– Elég érdekes a dolog – folytatta a srác, mintha érezte volna, mi bántja a szívemet – ugyanis protocolfilter fogja meg; azt mondja, hogy valótlan a kérés szintakszisa.
Kezdett összeállni a dolog.
– Nem lehet, hogy ez egy olyan DNS kérés, amelyikben valaki egy kibaszott hosszú nevű aliast akar beregisztrálni? – érdeklődtem.
– De, lehet.
– Nem-e lehetne-e ezt a protokolszűrést kikapcsolni-e?
– De, lehet. (Medve a halállistával.)
Vártam pár percet, újraindítottam a DC-t és… pár perc múlva begerjedt a replikáció. Én így még nem örültem replmon képernyőnek.
Tehát összeállt a kép: a dcpromo lefutott, de egy DNS regisztráció nem történt meg: az új DC GUID-ja nem került be aliasként a forest root tartomány msdcs.forest.root zónájába. És azért nem került bele, mert a bejegyzési kérelmet a tűzfal BOF támadásnak érzékelte.
Oké. De miért vágta ez haza a replikációt?
Ekkor hívtak vissza a Microsofttól. Örömmel közöltem, hogy megoldódott a probléma. Rakjuk össze, amink van – javasolta a srác. Erre elmondtam, mire jöttünk rá – ő pedig elmagyarázta, hogy hogyan is történik igazából a replikáció. Így:

The domain controller initiating the replication (DC1) queries the Active Directory in searching for its configured replication partners. These replication partners are typically defined by the Knowledge Consistency Checker (KCC), but can also be defined manually.
DC1 knows only the name of the domain controller that it wants to replicate with (DC2). It finds a GUID in the Active Directory that matches the target domain controller’s name (DC2). Note that each domain controller in the forest should have its own unique GUID.
Now that DC1 knows DC2’s GUID, it must find DC2’s IP address so that it can connect to it across the network. To do this, DC1 uses DNS. DC1 sends a recursive DNS query to its locally configured DNS server for a CNAME record. The format of this record always matches the following
guid._msdcs.root of Active Directory forest
Where guid is the GUID that DC1 found in the Active Directory, and root of Active Directory forest is the root of the Active Directory forest. For example 91f9b084-4876-4b59-be17-59e74c340221._msdcs.reskit.com where 91f9b084-4876-4b59-be17-59e74c340221 is a GUID and reskit.com is the root of the Active Directory forest.
DC1’s locally configured DNS server should respond to the query for the CNAME with an alias. The alias is another name for the GUID. For example, the GUID 91f9b084-4876-4b59-be17-59e74c340221 is resolved to dc-02.reskit.com.
Now that DC1 knows the alias for the GUID, it must resolve the alias to an IP address so that it can connect to DC2 across the network. DC1 sends a recursive DNS query to its locally configured DNS server for a Host (A) record that matches the name of the alias. The DNS server should respond with the IP address that has been mapped to the alias — for example, 169.254.66.7
Now that DC1 knows DC2’s IP address, it can connect to DC2 over the network and replicate Active Directory data.

Röviden összefoglalva, itt kőkemény névfeloldás folyik. A replikációs partnerek csak egymás nevét ismerik. Ez alapján kikeresik az AD-ból a partner GUID-ját. Most már csak a GUID-hoz tartozó IP cím kellene – ezt tartalmazza az a bizonyos zóna a forest rootban. Ha ebben nincs meg az új DC GUID-IP összerendelése, a replikáció csonkára fut.
Szép, mi? Jól mellétrafáltam az ujjamból szopott magyarázattal. Szó sem volt megágyazásról, beragadásról meg trehány Microsoftról. Minden tiszta, logikus és érthető. Csak az kicsit gáz, hogy ezt az infót a PSS-től kellett megtudnom. Lehet, hogy valahol le van írva… lehet… de én még nem találkoztam vele.

Szóval most működünk.
Milyen fából faragják a jó tűzfalast? Úgy van. Pár perc múlva visszahívott, hogy oké, JoeP, szóljál mikor kapcsolhatom vissza a filtert, mert anélkül szarul érzem magam. Itt kezdtem el másodjára sikoltozni – de aztán rájöttem, hogy nem beszél hülyeségeket. Ha vigyázunk arra a szájbanyomott rekordra, akkor többször nem kell bejegyezni. Kiolvasni meg csak ki tudják. Talán. Holnap teszteljük.
Szeretünk a penge élén.

Penge III.

Aludtam rá egyet és lenne néhány megjegyzésem. (Valahogy úgy érzem, ekkorát azért nem kellett volna szívnom.)

1. A hp mérnökei ennyire nem lehetnek idióták. A rendszert nem ilyen felhasználásra tervezték – hivatalosan smartstart cédéről kellett volna telepítenem az oprendszert és akkor a problémák 89 százalékát elkerültem volna.
Más kérdés, hogy a kollégák szerint az a telepítés létrehoz egy plusz partíciót, mely később zavarokat okoz az üzemeltetésben. Ehhez viszont nem tudok hozzászólni.

2. De ha már így kell telepíteni – és fel is lett nyomva közel harminc szerver -, akkor már igazán ki lehetett volna jelölni egy terminál szervert, ahová felkerülnek a preparált image-k (floppy a raid kontrollerrel, cédé a megfelelő driverekkel) és ahonnan lehet a hálózati ILO porton keresztül telepíteni. Telepítési doksiról nem is beszélve.