HOWTO:
Microsoft Domain Controller en Linux DNS-server geschreven door Johan Huysmans
1. Over deze howto. Deze howto behandelt verschillende aspecten van een MS Windows Domain Controller gebruik makend van de Linux Named server. We zullen een nieuwe Domain Controller installeren maar dan met een linux Named DNS server. Daarna worden nog verschillende aspecten ivm met de DNS server van een Active Directory. Omdat we niet alles over de Domain Controller kunnen behandelen zullen enkel de zaken ivm DNS in de Active Directory worden besproken. Ook bij het configureren van de Named server zal niet in detail worden getreden, enkel de noodzakelijke aspecten worden aangehaald. Daardoor kan het handig zijn dat je al enige kennis hebt van deze 2 zaken. Al de pc's bevinden zich in het netwerk "192.168.123.0", de ip-verdeling is als volgt: 192.168.123.100 dc.pinguin.be De Windows 2003 DC 192.168.123.101 ns.pinguin.be De Linux Named server 192.168.123.116 client1.pinguin.be De Windows XP pro client pc
2. Nieuwe installatie DC en Named server. A. Configuratie van de Named server. We moeten ervoor zorgen dat in de "/etc/named.conf" file de zone is gedefinieerd die overeenkomt met de domein naam, hier dus "pinguin.be". De DC heeft geen reverse zone nodig, deze hoeft daarom niet aangemaakt te worden. Het kan nogtans handig zijn als je hem gebruikt wanneer er ook A-records worden toegevoegd aan de zone "pinguin.be". Buiten deze zone moet natuurlijk ook de root-zone, eventueel de localhost-zones, de algemene options en het logging gedefinieerd worden. /etc/named.conf ... zone "pinguin.be" { type master; file "pinguin.zone"; }; ...
De zonefile moet enkel de algemene configuratie bevatten. Al het nodige wordt ingevuld door de DC. /var/named/pinguin.zone $ORIGIN . $TTL 3600 pinguin.be
; 1 hour IN SOA ns.pinguin.be. root.pinguin.be. ( 2005013101 ; serial 60 ; refresh (1 minute) 3600 ; retry (1 hour) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) NS ns.pinguin.be. $ORIGIN pinguin.be. ns A 192.168.123.101
Na deze configuratie kan men de named server (her)starten en testen vanop de domain controller. Let er wel op dat de juist instelling op de DC zijn gemaakt, Primary Dns Suffix moet ingesteld staan op "pinguin.be" en DNS Server op "192.168.123.101". Testen kan gemakkelijk door vanop de command-line nslookup te runnen en testen op "ns.pinguin.be". Als het resolven zonder errors verloopt is de DNS-server goed geconfigureerd. Om ervoor te zorgen dat de DC zelf updates kan uitvoeren op de DNS moet men dit ook toelaten. Dit doen we door de "allow-update" regel toe te voegen in de zone. Voor de veiligheid laten we enkel toe dat de DC updates kan maken door zijn ip in te vullen. /etc/named.conf ... zone "pinguin.be" { type master; file "pinguin.zone"; allow-update { 192.168.123.100; }; }; ...
Na het herstarten van de named server zal de windows pc zichzelf toevoegen, dit kan enige tijd (of reboot van windows) nodig hebben. Er zal een /var/named/pinguin.zone.jnl file zijn aangemaakt, en later zal er in de /var/named/pinguin.zone file een regel zijn toegevoegd, namelijk: "dc A 192.168.123.100" De DNS server is nu ingesteld zoals het hoort en kunnen we nu dus overgaan op de installatie van de Domain Controller.
B. Installatie van de Domain Controller. Door het uitvoeren van het commando "dcpromo" starten we de installatie van de Domain Controller. Enkel de schermen die in verband staan met DNS zullen hier getoont worden. Tijdens de installatie zal men de volledige DNS naam voor het domain vragen, dit moet overeen komen met de zone die we hierboven hebben gedefinieerd. In ons voorbeeld is dit dus "pinguin.be"
Een Windows Domain Controller is sterk afhankelijk van een DNS-server, daarom wordt tijdens de installatie al nagegaan dat er een DNS-server aanwezig is, eventueel wordt deze dan nog geïnstalleerd. Onze DNS-server was al op voorhand volledig en correct geconfigureerd, de installatie wizard herkend deze dan ook onmiddellijk, indien dit niet gebeurt zullen eventuele fouten in dit scherm getoont worden.
Enkele schermen verder zal de eigenlijke installatie beginnen. Als men ondertussen de log-file van de DNS-server in het oog houdt zal men merken dat de DC reeds enkele updates uitvoert. De enige update die voor het herstarten van de DC gebeurt is het toevoegen van zijn naam, indien dit nog niet is gebeurt. Tijdens het herstarten van de windows pc zal je zien dat er veel meer updates gebeuren. Zo worden de zones _msdcs.pinguin.be, _sites.pinguin.be, _tcp.pinguin.be en _udp.pinguin.be toegevoegd. De complete lijst en uitleg van al de resource records volgt in een volgend onderdeeltje.
3. Joinen van een computer in ons domain. Als we een computer willen joinen in ons domain moeten we er eerst en vooral voor zorgen dat de juiste dns server staat ingesteld. Dit gebeurt op dezelfde wijze waarop we de dc hebben getest. Tijdens het joinen zal de client via de dns server de dc zoeken. Alles is goed ingesteld, dus de client wordt goed toegevoegd en na het herstarten ervan kan men ook inloggen op het domain. 4. Clients, Dc's en Dynamic DNS. In het begin van de howto hebben we ingesteld dat het ip 192.168.123.100 updates mag uitvoeren op de zone "pinguin.be". We zagen al direct dat windows zijn computernaam in de dns heeft geplaatst, na de installatie heeft hij nog een reeks updates uitgevoerd. De client pc's willen ook hun naam in de dns invoeren maar hebben hiervoor geen toestemming met het gevolgd dat dit niet gebeurt. In de properties van die client pc op de DC zien we nogtans dat de dns naam voor deze pc is ingevuld. Willen we toch dat de naam in de DNS server wordt ingevoerd zullen we moeten overschakelen op een DDNS, omdat dit een iets te ruim onderwerp is zullen we dit hier niet bespreken. Meer informatie hierover vind je in een andere howto, van dezelfde schrijver.
5. Active Directory updates in de DNS. Welk zijn nu juist de updates die na de installatie van de Active Directory zijn toegevoegd en waarvoor staan ze? /var/named/pinguin.zone A
_____ B
_____ C
$ORIGIN . $TTL 3600 pinguin.be
; 1 hour IN SOA
$TTL 600 ; 10 minutes
ns.pinguin.be. root.pinguin.be. ( 2005013123 60 3600 604800 86400 ) NS ns.pinguin.be.
; serial ; refresh (1 minute) ; retry (1 hour) ; expire (1 week) ; minimum (1 day)
A 192.168.123.100 $ORIGIN _msdcs.pinguin.be. 4342ee1e-cbcb-4f8b-abfe-0474b64ad806 CNAME dc.pinguin.be. $ORIGIN _tcp.Default-First-Site-Name._sites.dc._msdcs.pinguin.be. _kerberos SRV 0 100 88 dc.pinguin.be. _ldap SRV 0 100 389 dc.pinguin.be. $ORIGIN _tcp.dc._msdcs.pinguin.be. _kerberos SRV 0 100 88 dc.pinguin.be. _ldap SRV 0 100 389 dc.pinguin.be. $ORIGIN _msdcs.pinguin.be. _ldap._tcp.fe8d0aab-6441-4298-ab25-b8855e2417c3.domains SRV 0 100 389 dc.pinguin.be. gc A 192.168.123.100 $ORIGIN gc._msdcs.pinguin.be. _ldap._tcp.Default-First-Site-Name._sites SRV 0 100 3268 dc.pinguin.be. _ldap._tcp SRV 0 100 3268 dc.pinguin.be. $ORIGIN _msdcs.pinguin.be. _ldap._tcp.pdc SRV 0 100 389 dc.pinguin.be. $ORIGIN _tcp.Default-First-Site-Name._sites.pinguin.be. _gc SRV 0 100 3268 dc.pinguin.be. _kerberos SRV 0 100 88 dc.pinguin.be. _ldap SRV 0 100 389 dc.pinguin.be. $ORIGIN _tcp.pinguin.be. _gc SRV 0 100 3268 dc.pinguin.be. _kerberos SRV 0 100 88 dc.pinguin.be. _kpasswd SRV 0 100 464 dc.pinguin.be. _ldap SRV 0 100 389 dc.pinguin.be. $ORIGIN _udp.pinguin.be. _kerberos SRV 0 100 88 dc.pinguin.be. _kpasswd SRV 0 100 464 dc.pinguin.be. $ORIGIN pinguin.be. $TTL 1200 ; 20 minutes dc A 192.168.123.100 $TTL 3600 ; 1 hour ns A 192.168.123.101
Zone A: Dit werd ingesteld bij de configuratie van de DNS server en verder uitleg is dus niet nodig. Merk wel op dat de "serial" is verhoogd. Zone B: Voor de overzichtelijkheid volgt de uitleg even verder. Zone C: De regel van "ns" komt uit onze eigen configuratie, de regel "dc" werd toegevoegd doordat we "allow-update" van dat ip hebben toegevoegd. Zone B in detail: Deze DNS-structuur kan zoals elke andere dns-structuur weergegeven worden in een boomdiagram. Voor de overzichtelijkheid zijn de 4 "_" zones weergegeven in aparte diagrammen. Deze kan je vinden als .png files bij deze howto. Via de SRV records kan de client te weten komen waar desbetreffende service beschikbaar is. Zo zijn er 4 services: * _ldap * _kerberos * _kpasswd (Kerberos Password Change server) * _gc (Global Catalog) Doordat deze services aparte resource records hebben is het dus mogelijk dat ze op verschillende servers draaien. Buiten de definiëring van deze services binnen de protocollen (_tcp en _udp) worden ze ook gedefinieerd binnen _sites. Deze zone is vooral belangrijk wanneer er verschillende sites beschikbaar zijn. Daardoor kan de Domain Controller binnen de juiste site gekozen worden. De zones binnen _msdcs (dc = domain controller, gc = global catalog, pdc = primary domain controller) worden aangemaakt om het localiseren van de servers die die specifieke rol hebben binnen het domain. In de lijst komt ook 2 keer een 128-bit nummer voor. Dit is een GUID (Global Unique IDentifier), een van de Domain Controller en de andere van het Domain zelf. Deze records worden enkel gebruikt nadat men een Domain of Domain Controller heeft hernoemt en dit nog niet is aangepast in de DNS server. Buiten de SRV records zijn er ook nog A records toegevoegd, deze zijn beschikbaar voor de clients die geen SRV records ondersteunen. Deze maken het dus mogelijk om ook voor hen de Domain Controller te vinden.
6. Welke queries worden wanneer uitgevoerd? Opstarten van de DC Feb 02 12:29:14.309 client 192.168.123.100#1029: query: _ldap._tcp.pdc._msdcs.pinguin.be IN SRV Feb 02 12:29:29.356 client 192.168.123.100#1032: query: _ldap._tcp.Default-First-Site-Name._sites.dc._msdcs.pinguin.be IN SRV Feb 02 12:29:29.950 client 192.168.123.100#1032: query: _ldap._tcp.dc._msdcs.pinguin.be IN SRV Feb 02 12:29:29.951 client 192.168.123.100#1032: query: _ldap._tcp.fe8d0aab-6441-4298-ab25b8855e2417c3.domains._msdcs.pinguin.be IN SRV Feb 02 12:29:30.384 client 192.168.123.100#1034: query: _ldap._tcp.Default-First-Site-Name._sites.dc._msdcs.pinguin.be IN SRV Feb 02 12:29:30.982 client 192.168.123.100#1040: query: _ldap._tcp.dc._msdcs.pinguin.be IN SRV Feb 02 12:29:30.983 client 192.168.123.100#1041: query: _ldap._tcp.fe8d0aab-6441-4298-ab25b8855e2417c3.domains._msdcs.pinguin.be IN SRV Feb 02 12:29:33.075 client 192.168.123.100#1032: query: _kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs.PINGUIN.BE IN SRV Feb 02 12:29:33.676 client 192.168.123.100#1032: query: _kerberos._tcp.dc._msdcs.PINGUIN.BE IN SRV Feb 02 12:29:41.601 client 192.168.123.100#1048: query: _ldap._tcp.pinguin.be IN SOA Feb 02 12:29:41.603 client 192.168.123.100#1049: query: ns.pinguin.be IN A Feb 02 12:29:41.630 client 192.168.123.100#1051: query: _ldap._tcp.Default-First-Site-Name._sites.pinguin.be IN SOA Feb 02 12:29:41.631 client 192.168.123.100#1052: query: ns.pinguin.be IN A Feb 02 12:29:41.633 client 192.168.123.100#1054: query: _ldap._tcp.pdc._msdcs.pinguin.be IN SOA Feb 02 12:29:41.634 client 192.168.123.100#1055: query: ns.pinguin.be IN A Feb 02 12:29:41.656 client 192.168.123.100#1057: query: _ldap._tcp.fe8d0aab-6441-4298-ab25b8855e2417c3.domains._msdcs.pinguin.be IN SOA Feb 02 12:29:41.657 client 192.168.123.100#1058: query: ns.pinguin.be IN A Feb 02 12:29:41.659 client 192.168.123.100#1060: query: 4342ee1e-cbcb-4f8b-abfe-0474b64ad806._msdcs.pinguin.be IN SOA Feb 02 12:29:41.660 client 192.168.123.100#1061: query: _msdcs.pinguin.be IN SOA Feb 02 12:29:41.661 client 192.168.123.100#1062: query: ns.pinguin.be IN A Feb 02 12:29:41.662 client 192.168.123.100#1063: query: pinguin.be IN NS Feb 02 12:29:41.662 client 192.168.123.100#1064: query: pinguin.be IN SOA Feb 02 12:29:41.664 client 192.168.123.100#1066: query: 4342ee1e-cbcb-4f8b-abfe-0474b64ad806._msdcs.pinguin.be IN CNAME Feb 02 12:29:41.665 client 192.168.123.100#1067: query: _ldap._tcp.dc._msdcs.pinguin.be IN SOA Feb 02 12:29:41.666 client 192.168.123.100#1068: query: ns.pinguin.be IN A Feb 02 12:29:41.668 client 192.168.123.100#1070: query: _ldap._tcp.Default-First-Site-Name._sites.dc._msdcs.pinguin.be IN SOA Feb 02 12:29:41.669 client 192.168.123.100#1071: query: ns.pinguin.be IN A Feb 02 12:29:41.670 client 192.168.123.100#1073: query: _ldap._tcp.gc._msdcs.pinguin.be IN SOA Feb 02 12:29:41.671 client 192.168.123.100#1074: query: ns.pinguin.be IN A Feb 02 12:29:41.673 client 192.168.123.100#1076: query: _ldap._tcp.Default-First-Site-Name._sites.gc._msdcs.pinguin.be IN SOA Feb 02 12:29:41.675 client 192.168.123.100#1077: query: ns.pinguin.be IN A Feb 02 12:29:41.679 client 192.168.123.100#1079: query: _kerberos._tcp.dc._msdcs.pinguin.be IN SOA Feb 02 12:29:41.679 client 192.168.123.100#1080: query: ns.pinguin.be IN A Feb 02 12:29:41.681 client 192.168.123.100#1082: query: _kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs.pinguin.be IN SOA Feb 02 12:29:41.682 client 192.168.123.100#1083: query: ns.pinguin.be IN A Feb 02 12:29:41.684 client 192.168.123.100#1085: query: _kerberos._tcp.pinguin.be IN SOA Feb 02 12:29:41.685 client 192.168.123.100#1086: query: ns.pinguin.be IN A Feb 02 12:29:41.687 client 192.168.123.100#1088: query: _kerberos._tcp.Default-First-Site-Name._sites.pinguin.be IN SOA Feb 02 12:29:41.688 client 192.168.123.100#1089: query: ns.pinguin.be IN A Feb 02 12:29:41.690 client 192.168.123.100#1091: query: _gc._tcp.pinguin.be IN SOA Feb 02 12:29:41.690 client 192.168.123.100#1092: query: ns.pinguin.be IN A Feb 02 12:29:41.692 client 192.168.123.100#1094: query: _gc._tcp.Default-First-Site-Name._sites.pinguin.be IN SOA Feb 02 12:29:41.693 client 192.168.123.100#1095: query: ns.pinguin.be IN A Feb 02 12:29:41.695 client 192.168.123.100#1097: query: _kerberos._udp.pinguin.be IN SOA
Feb 02 12:29:41.696 Feb 02 12:29:41.698 Feb 02 12:29:41.699 Feb 02 12:29:41.701 Feb 02 12:29:41.702 Feb 02 12:29:41.704 Feb 02 12:29:41.707 Feb 02 12:29:41.708 Feb 02 12:29:44.355 Feb 02 12:30:01.628 Feb 02 12:30:01.637 Feb 02 12:30:01.639 Feb 02 12:30:01.640 Feb 02 12:30:01.641 Feb 02 12:30:01.641 Feb 02 12:30:01.642
client 192.168.123.100#1098: query: ns.pinguin.be IN A client 192.168.123.100#1100: query: _kpasswd._tcp.pinguin.be IN SOA client 192.168.123.100#1101: query: ns.pinguin.be IN A client 192.168.123.100#1103: query: _kpasswd._udp.pinguin.be IN SOA client 192.168.123.100#1104: query: ns.pinguin.be IN A client 192.168.123.100#1106: query: pinguin.be IN SOA client 192.168.123.100#1108: query: gc._msdcs.pinguin.be IN SOA client 192.168.123.100#1109: query: ns.pinguin.be IN A client 192.168.123.100#1032: query: pinguin.be IN A client 192.168.123.100#1032: query: dc.pinguin.be IN SOA client 192.168.123.100#1032: query: ns.pinguin.be IN A client 192.168.123.100#1032: query: 100.123.168.192.in-addr.arpa IN SOA client 192.168.123.100#1032: query: pinguin.be IN A client 192.168.123.100#1032: query: 123.168.192.in-addr.arpa IN NS client 192.168.123.100#1032: query: 123.168.192.in-addr.arpa IN SOA client 192.168.123.100#1032: query: pinguin.be IN A
Joinen van het domein Feb 02 12:33:08.848 client 192.168.123.116#1038: query: _ldap._tcp.dc._msdcs.pinguin.be IN SRV ==> invoeren van Administrator username en password. Feb 02 12:33:25.158 client 192.168.123.116#1040: query: _ldap._tcp.dc._msdcs.pinguin.be IN SRV Feb 02 12:33:25.383 client 192.168.123.116#1025: query: dc.pinguin.be IN A Feb 02 12:33:25.518 client 192.168.123.116#1025: query: _kerberos._tcp.dc._msdcs.pinguin.be IN SRV Feb 02 12:33:27.842 client 192.168.123.116#1057: query: _ldap._tcp.dc._msdcs.pinguin.be IN SRV Feb 02 12:33:29.473 client 192.168.123.116#1025: query: dc.pinguin.be IN A Feb 02 12:52:44.871 client 192.168.123.116#1073: query: _ldap._tcp.Default-First-SiteName._sites.dc._msdcs.pinguin.be IN SRV
Opstarten van client pc (Er zijn geen queries nodig tijdens het inloggen) Feb 02 12:55:05.323 client 192.168.123.116#1025: query: _ldap._tcp.Default-First-Site-Name._sites.dc._msdcs.pinguin.be IN SRV