Szerző: Garami Gábor | 2008. 12. 09.

Active Directory - DNS Bind alapokon

Ez megint egy erdekes allatfajta lesz, elore szolok.

A pelda rendszer ketto gepet fog tartalmazni, dc es dns, a tartomany pedig a szeretett mittudomain.com lesz.

Nos, most lassuk a hozzavalokat, ket szerverre:

    <li>DC
    
    1. Windows 2000 vagy 2003 Server
    2. Support Tools

    <li>DNS
    
    1. Bind 9
    2. Valamilyen szovegszerkeszto

Eloszor is, lassuk a DNS szervert, mert ez az egyszerubb a bonyolultabb:

Telepitsuk fel a bind-et, ha szukseges, tegyuk elerhetove a DNS portjait a belso halo szamara.

Nagyon fontos, hogy ezt a DNS szervert semmikeppen se probaljuk meg valamilyen grafikus/webes eszkozzel menedzselni, mert eleg kenyes dolgok vannak benne, amiket nem jo, ha egy magat okosnak erzo eszkoz szemetnek erzekelve kihajit.

A konfigfajlban keressuk meg eloszor az options reszt, majd pakoljunk ilyeneket bele:

auth-nxdomain no;

Ezutan az options mezon kivul hozzunk letre ketto zonat, egyet a fo zonanak, egyet pedig a _msdcs zonanak. Ez utobbit mindenkeppen letre kell hozni, mert az Active Directory fokepp erre tamaszkodik. Lassuk a kodokat elobb, majd utana duma:

Zona...

zone "mittudomain.com" IN { type master; file "zones/mittudomain.com.db"; allow-update { 10.0.20.0/24; }; };

zone "msdcs.mittudomain.com" { type master; file "zones/msdcs.mittudomain.com.db"; allow-update { 10.0.20.5; }; check-names ignore; };

mittudomain.com zonafajl...

@ IN SOA mittudomain.com. hostmaster.mittudomain.com. ( 2008120901 ; serial 28800 ; refresh 7200 ; retry 3600000 ; expires 86400 ) ; minimum

IN NS dns

@ IN A 10.0.20.3 dns A 10.0.20.3 dc A 10.0.20.5

_msdcs.mittudomain.com zonafajl...

msdcs.mittudomain.com IN SOA mittudomain.com. hostmaster.mittudomain.com. ( 2008120901 ; serial 28800 ; refresh (8 hours) 7200 ; retry (2 hours) 3600000 ; expire (5 weeks 6 days 16 hours) 86400 ; minimum (1 day) ) msdcs.mittudomain.com. IN NS dns.mittudomain.com.

Es akkor most duma:

Amint lathato a mittudomain.com zonafajl a leheto legegyszerubb lett, harom A rekord, egy NS, egy SOA, es roviditett formatum. Amit lenyeges megjegyezni belole, hogy a @ rekordnak mindig, kivetel nelkul a DNS szerverre onmagara kell mutatni, meghozza A rekordkent. Ez azert nagyon-nagyon fontos, mert az AD csak igy ertekeli a DNS szervert authoritativnak, es csak igy lesz hajlando beleirni magat.

Lassuk a nagyobbik remet, a _msdcs-t. Itt mar a konfig is modosult, latszik, hogy a bekerulo nevek ellenorzeset kikapcsoltam. Ez is nagyon fontos dolog, ugyanis a szabvany szerint a DNS nevekben nem lehetne alahuzas (underscore) karakter, marpedig itt maga a domain kezdodik igy. Ez sajnos MS sajatossag, nincs mit ellene tenni.

A zonafajlban precizen ki kell irni mindent, ugyanis a bind tud eleg sokat anyazni dolgokon, illetve neha nem kepes a @ feloldasara. Ilyenkor sajnos nincs mas hatra, mint potyogni. Ettol eltekintve ez meg egyszerubb: csak egy NS bejegyzes kerult ide, ami a DNS szerverunkre mutat.

Ezzel a bind kesz is, inditsuk el. Ha a syslog-ba valamire panaszkodna, akkor eloszor is ellenorizzuk a check-names megletet a zona konfigjaban, majd nezzuk at tuzetesen a zonafajlt.

Lassuk a DC-t.

Jelentkezzunk be, es ha eddig nem tettuk volna meg, akkor adjunk egy jo eros jelszot az Administrator/Rendszergazda felhasznalonak, mert a kovetkezo lepes ezt a jelszot importalja.

Allitsuk be a dns gepet a Windows elsodleges DNS szerverekent, ne legyen masodlagos DNS. Halozati helyek -> jobb klikk, Tulajdonsagok. Valasszuk ki a halozati kapcsolatunkat, majd a TCP/IP protokoll tulajdonsagainal irjuk be a dns gep IP cimet.

A Support Tools a Windows telepitolemez SUPPORT mappajaban talalhato, van itt egy SUPTOOLS.MSI, na azon kell duplakatt, es Next,Next,Finish. Nyissunk parancssort:

> cd "C:\Program Files\Support Tools" > netdiag /test:dns

... snip ...

DNS test . . . . . . . . . . . . . : Passed

PASS - All the DNS entries for DC are registered on DNS server '10.0.20.3' and other DCs also have some of the names registered.

The command completed successfully.

Ennek igy kell kineznie. Ha valami RCODE hibara panaszkodik, vagy arra, hogy a DNS szerver szerinte nem authoritativ, akkor ellenorizzuk nslookup -pal, hogy a domain nevere megkapjuk-e A rekordkent a dns.mittudomain.com ip cimet. Ha nem, akkor ellenorizzuk a DNS szervert, hogy a kukacos A rekord bekerult-e a zonafajlba. Esetleg inditsuk ujra a bind-et.

Barmi egyeb hiba tovabbi keresest kell hogy maga utan vonjon, barmilyen szosz keresztbe fog akadni a kovetkezo lepes torkan.

Most adjuk ki a dcpromo parancsot. Ezt nem reszleteznem kulon, hogyan kell kitolteni, egyvalamire hivom csak fel a figyelmet: a tartomany DNS neve feltetlen egyezzen azzal a nevvel, amire a bind authoritativ, kulonben nem fogunk tudni tovabblepni.

A dcpromo lefutasa soran meg nem tortenik semmi a DNS szerverunkkel, viszont amikor a Windows szerver ujraindul, kezdjuk argus szemekkel figyelni a dns.mittudomain.com syslog-jat, mert a domain bejegyzesek ekkor tortennek meg. Ha lefutott, akkor csinaljunk egy teljes restartot a bind-en. Barmily hihetetlen ugyanis, a bind kepes a teljesen hibas bejegyzesek eltarolasara is, es ilyenkor ujraninditaskor akadnak a torkan dolgok. Hogy ez ne tudjon varatlanul elofordulni, celszeru tehat szandekosan kezdemenyezni. Ilyenkor altalaban a check-names szokott kiabalni. Ha nagyon kiabal, az options reszben tegyunk egy ilyen bejegyzest:

check-names master warn;

Es a zonafajlbol vegyuk ki a check-names bejegyzest. Ezzel ugyan globalisan kikapcsoltuk a nevek ellenorzeset, de hat ez egy ilyen vilag.

Ha szerencsenk volt, akkor jelenleg van egy teljesen mukodokepes Active Directory rendszerunk Bind DNS szerverrel.

Szerző: Garami Gábor | 2008. 11. 30.

Ruby on Windows: LIBMYSQL.DLL

Megint egy... ennek a sorozatnak sosincs vege?

Szoval, ha olyan uzeneteket kapnal, hogyaszongya:

 ArgumentError in <%= controller.class %>#index

NULL pointer given

Akkor beleszaladtal abba, hogy a gem-kent csomagolt 2.7.3-as mysql.so lib csak a 5.0-as libmysql.dll-lel hajlamos egyutmukodni korrektul. Innet szerezheted meg jol, arra kell ugyelni, hogy a klienseknel nem eleg csak a commandline klienst (mysql.exe) kijelolni, hanem az other tools-t is ki kell, akkor lesz libmysql.dll amit be lehet masolni a ruby bin mappajaba.

Forras: Railsforum: mysql driver not working with Rails 2.0.2

Szerző: Garami Gábor | 2008. 11. 29.

Ruby on Windows: inputrc

Nagyon kellemetlen, ha az ember nem tud karaktereket beutni a terminalba, mert valami idiota lib nem engedi. Konkretan az irb es a readline hazasitasa okan az osszes olyan karakter elveszett, amihez AltGr-t kell nyomni. Az irb-s terminal az mindig angol kiosztas volt, es ettol megkergultem mar. No, itt a megoldas.

Hozzavalo: nincs. Illetve... no, de ezt kesobb.

Elkeszites:

Toltsuk le ezt valami olyan helyre, aminek a neveben se szokoz, se ekezetes karakter nincsen (hasznal valaki fajlnevben ekezetes karaktert?!).
Az utvonalat tegyuk vagolapra, majd Sajatgep -> Tulajdonsagok -> Special -> Environment variables
Name: INPUTRC
Value: az eppen kimasolt utvonal, a vegen mindenkepp legyen ott, hogy .inputrc, vagyis a file neve.

A konzolt ujranyitva az irb-t elstartolva mar van minden hianyzo karakter. Ha megse, akkor szoljatok, es belepakolom.

Forras: flip: Rails 1.2: Fehlender Zeichensatz der Rails console (irb)

Szerző: Garami Gábor | 2008. 11. 26.

Postfix over SELinux (Virtual mail domains)

Ha virtualis levelezes van:

# chcon -R -t mail_spool_t /srv/mail
Szerző: Garami Gábor | 2008. 11. 21.

DNS server: MS master - Bind slave

Avagy hogyan biztositsuk magunkat be.

Hozzavalok - ket szerverre:
1. szerver (DNS1)
- Microsoft Windows 200x Server
- DNS service
- MMC

2. szerver (DNS2)
- Linux (BSD?)
- Bind 9.x

Elokeszulet:
- Ha meg nem lenne installalva a megfelelo Microsoft Windows Server cucc, azt itt tegyuk meg. Nem kell semmilyen extra dolog hozza.
- Ha mar egy meglevo DNS szervernek akarunk masodlagos szervert beloni, akkor nincs egyeb teendo
- Nagyon fontos, hogy a DNS2 a megfelelo DNS vegzodest ismerje. Ezt legegyszerubben a /etc/hosts fajlban adhatjuk meg ilytenkeppen:

127.0.0.1    dns2.mittudomain.com dns2 localhost

- Szinten fontos, hogy amig nincs meg a zonatranszfer, addig a resolv.conf-ban a Microsoft-os DNS szerverre mutassunk.
- Egyertelmu, hogy a DNS2 gepnek rendelkeznie kell bejegyzessel a DNS1 adatbazisaban.

Elkeszites:

DNS1-en inditsuk el az MMC konzolt, es eloszor is ellenorizzuk, hogy a DNS2 gep informacioi tenyleg megvannak-e. Ha nem, akkor surgosen potoljuk.
Menjunk ra a Forward-lookup Zones mappan belul a mittudomain.com mappara, es jobbklikk/Tulajdonsagok muvelettel hozzuk be a tulajdonsagait.
Itt a Nameservers fulon adjuk hozza kedves dns2 gepunket (ha igaz, akkor DNS adminoknak kell lennunk ehhez a muvelethez). Nagyon fontos, hogy a nevet irjuk be legfelulre, es nyomjunk Resolve gombot. Ha csak az ip-t irjuk be az IP-cim mezobe, akkor az ablak nem fogja engedni leokezni magat.
Az utolso elotti fulon engedelyezzuk a zonatranszfert, kattintsunk a masodik radiogombra, majd a Notify fulon is tegyunk hasonlokepp, itt azonban az elso radiogombra tenyereljunk ra. Ezzel a Windows fel van keszitve a hozza fordulo zonatranszfer keresek kiszolgalasara.

DNS2-re eloszor is tegyuk fel a bind-et. Ha elinditotta volna a csomagkezelo, akkor most allitsuk le.
Vagy a named.conf-ban, vagy a named.conf.options-ban tegyunk ilyen beallitasokat:

listen-on {
   10.0.20.4;
   127.0.0.1; 
};

A named.conf-ba vagy a named.conf.local-ba vegyuk fel az uj zonankat:

zone "mittudomain.com" {
   type slave;
   file "mittudomain.com";
   masters { 10.0.20.3; };
};

Megjegyzes: a listen-on szekcioban a DNS2 IP-cime legyen, a zone szekcioba pedig a DNS1 IP-cime keruljon.

Ezutan inditsuk el a bind-et, es figyeljuk erosen a syslogot.
Ha szerencsenk van, akkor lathatjuk, hogy a zona transzfer sikeres volt. Errol meggyozodhetunk DNS1 -en az esemenynaplot elinditva a DNS szerver naplojaban levo riportbol is, illetve belenezhetunk a leszinkronizalt zonafajlba is.

A fenti modszer mukodik AD-integralt zonak eseteben is.