· 4 in h a l t sv er zei c n is 7 a us bl i c k 91 7. 1 e rw ei teru n gs - u dv er b esseru gs m...

174

Upload: others

Post on 23-Mar-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

T E C H N I S C HE

UNI VE RS I T �AT

M �U N C H E N

I NSTI TUT F�UR I NFORMATI K

Diplomarbeit

Integration des Managements desDomai n-Name- Systems i n di e

vorhandene Managementumgebungdes Lei bni z- Rechenzentrums (LRZ)

Heiko Hauck

Page 2:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

T E C HN I S C HE

UNI VE RS I T �AT

M �U N C H E N

I NSTI TUT F �UR I NFORMATI K

Diplomarbeit

I ntegrati on des Managements desDomai n- Name- Systems i n di e

vorhandene Managementumgebungdes Lei bni z- Rechenzentrums (LRZ)

Bearbeiter: Hei ko HauckAufgabenstell er: Prof . Dr. Hei nz-Gerd Hegeri ng

Betreuer: Di pl . Inf orm. Ki rsten Hei l erDr. Robert Val ta

Abgabetermi n: 15. November 1994

Page 3:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

Erkl �arung

Hi ermi t erkl �are i ch, da� i chdi e vorl i egende Arbei t sel bst�andi g ange-f erti gt und nur di e angegebenenQuel l en undHi l f smi ttel verwendet

habe.

M�unchen, den 9. November 1994

(Hei ko Hauck)

Page 4:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

Inhaltsverzeichni s

Abbildungsverzei chni s 5

1 Ei nl ei tung 7

1.1 Motivati on : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 7

1. 2 Vorgehenswei se : : : : : : : : : : : : : : : : : : : : : : : : : : : : 9

2 Ei nf�uhrung i n das Domai n Name Sys t em 11

2. 1 Moti vati on : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 11

2. 2 Fr�uheres Verfahren : : : : : : : : : : : : : : : : : : : : : : : : : : 12

2. 3 Das Domai n Name System : : : : : : : : : : : : : : : : : : : : : : 14

2. 3. 1 Vertei lung der Inf ormati on : : : : : : : : : : : : : : : : : : 14

2. 3. 2 Hi erarchi scher Namensraum : : : : : : : : : : : : : : : : : 14

2. 3. 3 Zugri � ei ner Anwendung auf DNS-Inf ormati onen : : : : : 16

3 Kon�gurat i on ei ner DNS-Umgebung 19

3. 1 Untertei l ung der DNS-Gesamti nf ormati on : : : : : : : : : : : : : 19

3. 2 Kon�gurati onsdatei en : : : : : : : : : : : : : : : : : : : : : : : : 21

3. 2. 1 Nameserverkon�gurati on : : : : : : : : : : : : : : : : : : : 22

3. 2. 2 Zonenkon�gurati on : : : : : : : : : : : : : : : : : : : : : : 23

3. 2. 3 Resol verkon�gurati on : : : : : : : : : : : : : : : : : : : : : 2

1

Page 5:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

2 INHALTSVERZEI CHNI S

4 Anf . an das Mgmt . ei nes Names erv. - Verbundes 27

4. 1 Bedeutung des Managements : : : : : : : : : : : : : : : : : : : : 28

4. 2 Notwendi gkei t des Managements bzgl . des DNS : : : : : : : : : : 29

4. 3 DNS-Management aus Betrei bersi cht : : : : : : : : : : : : : : : : 30

4. 3. 1 Auf gaben : : : : : : : : : : : : : : : : : : : : : : : : : : : 30

4. 3. 2 Anf orderungen : : : : : : : : : : : : : : : : : : : : : : : : 31

4. 3. 3 Umsetzung : : : : : : : : : : : : : : : : : : : : : : : : : : 33

4. 4 Integrati onsans�atze : : : : : : : : : : : : : : : : : : : : : : : : : : 37

4. 4. 1 Internet-Management f �ur das DNS : : : : : : : : : : : : : 38

4. 4. 2 Anbi ndung des DNS an ei n Dokumentati onssystem : : : : 40

4. 5 Anf ord. an ei ne Umgebung f �ur DNS-Kon�g. Mgmt. : : : : : : : : : 41

4. 5. 1 Zentral e Kon�gurati on vertei l ter Nameserver : : : : : : : : 41

4. 5. 2 Val i di erung von �Anderungen, Lebenszei t : : : : : : : : : : 41

4. 5. 3 Automati sche Rekon�gurati on bei �Anderungen : : : : : : : 43

5 DNS- Kon�g. mi t der Net zdok. - Dat enbank 45

5. 1 Di e vorhandene Netzdokumentati onsdatenbank : : : : : : : : : : 46

5. 1. 1 �Ubersi cht : : : : : : : : : : : : : : : : : : : : : : : : : : : 46

5. 1. 2 DNS- rel evante Rel ati onen : : : : : : : : : : : : : : : : : : 47

5. 1. 3 Kri t i k an den vorhandenen Rel ati onen : : : : : : : : : : : 50

5. 2 Anf orderungen an das Datenbankdesi gn : : : : : : : : : : : : : : 51

5. 2. 1 Hosts : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 52

5. 2. 2 Zonen : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 52

5. 2. 3 Nameserver : : : : : : : : : : : : : : : : : : : : : : : : : : 54

5. 2. 4 Resol ver : : : : : : : : : : : : : : : : : : : : : : : : : : : : 56

5. 3 Das Datenbankdesi gn : : : : : : : : : : : : : : : : : : : : : : : : : 57

5. 3. 1 Enti ty/Rel ati onshi p Model l : : : : : : : : : : : : : : : : : 5

5. 3. 2 Di e Objekte (Enti t i es) und deren Umsetzung i n Tabel l en :

5. 3. 3 Di e Bezi ehungen (Rel ati onshi ps) und deren Integrati on idi e Tabel l en : : : : : : : : : : : : : : : : : : : : : : : :

Page 6:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

I NHALTSVERZEI CHNI S 3

5. 4 Integrati on i n vorhandene Datenbank : : : : : : : : : : : : : : : : 62

5. 4. 1 HOSTS (neu) ! KOMPONENTE(al t) : : : : : : : : : : 62

5. 4. 2 HOSTS (neu) ! LOGPORT(al t) : : : : : : : : : : : : : : 63

5. 4. 3 ZONES (neu) ! PERSON(al t) : : : : : : : : : : : : : : : 65

5. 4. 4 ZONES (neu) ! INSTITUT(al t) : : : : : : : : : : : : : : 65

5. 5 Organi satori sche Probl eme : : : : : : : : : : : : : : : : : : : : : : 65

5. 5. 1 Ei ngabe der DNS-Daten i n di e Datenbank : : : : : : : : : 66

5. 5. 2 Vertei l ung der Kon�gurati onsdatei en : : : : : : : : : : : : 67

5. 5. 3 Zugri � auf Nameserver- Proze� : : : : : : : : : : : : : : : : 68

6 Impl ement i erung 69

6. 1 Auf bau der Rel ati onen : : : : : : : : : : : : : : : : : : : : : : : : 70

6. 1. 1 Modi �zi erte Tabel l e : : : : : : : : : : : : : : : : : : : : : : 71

6. 1. 2 Host-Tabel l en : : : : : : : : : : : : : : : : : : : : : : : : : 71

6. 1. 3 Zonen-Tabel l en : : : : : : : : : : : : : : : : : : : : : : : : 73

6. 1. 4 Nameserver-Tabel l en : : : : : : : : : : : : : : : : : : : : : 76

6. 2 Anf orderungen an das Werkzeug : : : : : : : : : : : : : : : : : : : 79

6. 2. 1 Inf ormati ons u� : : : : : : : : : : : : : : : : : : : : : : : : 79

6. 2. 2 Fl exi bi l i t�at und Komf ort : : : : : : : : : : : : : : : : : : : 81

6. 3 Programmauf bau : : : : : : : : : : : : : : : : : : : : : : : : : : : 82

6. 3. 1 Hauptprogramm : : : : : : : : : : : : : : : : : : : : : : : 82

6. 3. 2 Unterprogramme : : : : : : : : : : : : : : : : : : : : : : : 84

6. 4 Programmodul e : : : : : : : : : : : : : : : : : : : : : : : : : : : : 84

6. 4. 1 Verzei chni sbaumauf bauen : : : : : : : : : : : : : : : : : : 85

6. 4. 2 Resol verkon�gurati on : : : : : : : : : : : : : : : : : : : : : 85

6. 4. 3 Nameserverkon�gurati on : : : : : : : : : : : : : : : : : : : 85

6. 4. 4 Zonenkon�gurati on f �ur Forward Mappi ng : : : : : : : : : : 86

6. 4. 5 Zonenkon�gurati on f �ur Reverse Mappi ng : : : : : : : : : : 87

6. 4. 6 Loopback Interf ace (127. 1 ! l ocal host) : : : : : : : : : : : 88

6. 4. 7 Loopback Interf ace (l ocal host ! 127. 1) : : : : : : : : : : : 88

6. 4. 8 Root- Zonenkon�gurati onsdatei hol en : : : : : : : : : : : : 88

6. 5 Ei n- und Ausgabe des Prog. anhand ei nes Bsp. : : : : : : : : : : : 88

Page 7:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

4 I NHALTSVERZEI CHNI S

7 Aus bl i ck 91

7. 1 Erwei terungs- und Verbesserungsm�ogl i chkei ten : : : : : : : : : : : 92

7. 2 Ei nbi ndung i n ei ne Managementpl attf orm : : : : : : : : : : : : : 95

ALi s t i ngs 99

A. 1 Kon�gurati onsdatei . ora2dnsrc : : : : : : : : : : : : : : : : : : : : 99

A. 2 Hauptprogrammora2dns : : : : : : : : : : : : : : : : : : : : : : : 101

A. 3 Modul ora2dns. pl : : : : : : : : : : : : : : : : : : : : : : : : : : : 109

A. 4 Modul make di r. pl : : : : : : : : : : : : : : : : : : : : : : : : : : 116

A. 5 Modul res conf . pl : : : : : : : : : : : : : : : : : : : : : : : : : : : 119

A. 6 Modul named boot. pl : : : : : : : : : : : : : : : : : : : : : : : : : 125

A. 7 Modul named f orward. pl : : : : : : : : : : : : : : : : : : : : : : : 130

A. 8 Modul named reverse. pl : : : : : : : : : : : : : : : : : : : : : : : 144

A. 9 Modul named l ocal . pl : : : : : : : : : : : : : : : : : : : : : : : : : 154

A. 10 Modul named l oopback. pl : : : : : : : : : : : : : : : : : : : : : : 155

A. 11 Modul named cache. pl : : : : : : : : : : : : : : : : : : : : : : : : 157

B Dat enbank { Bei s pi el 161

C Gener i er t e Kon�g. - Dat ei en { Bei s pi el e 165

C. 1 Resol verkon�gurati on : : : : : : : : : : : : : : : : : : : : : : : : : 165

C. 2 Nameserverkon�gurati on : : : : : : : : : : : : : : : : : : : : : : : 165

C. 3 Zonenkon�gurati on (Forward Mappi ng) : : : : : : : : : : : : : : : 166

C. 4 Zonenkon�gurati on (Reverse Mappi ng) : : : : : : : : : : : : : : : 167

Li t er at urver zei chni s 16

Page 8:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

Abbi l dungsverzei chni s

2. 1 Vertei l ung von HOSTS.TXT : : : : : : : : : : : : : : : : : : : : : 13

2. 2 Hi erarchi scher Namensraum(Tei l baum) : : : : : : : : : : : : : : : 15

2. 3 Inf ormati ons u� (DNS-Anf ragen) : : : : : : : : : : : : : : : : : : 16

3. 1 Untertei l ung der DNS- Inf ormati on : : : : : : : : : : : : : : : : : 20

3. 2 Kon�gurati onsdatei en: Bootdatei und Zonendatei en : : : : : : : : 21

4. 1 Ei nsatz des Generi erungsskri pts df2hf : : : : : : : : : : : : : : : : 34

4. 2 DNS i n der MIB- 2 des Internet-Regi str i erungsbaumes : : : : : : : 39

4. 3 Netzdokumentati onsdatenbank : : : : : : : : : : : : : : : : : : : : 40

5. 1 Schema der bestehenden Datenbank : : : : : : : : : : : : : : : : : 47

5. 2 Zu managende Obj ektkl assen : : : : : : : : : : : : : : : : : : : : 51

5. 3 Enti ty/Rel ati onsshi p Model l : : : : : : : : : : : : : : : : : : : : : 58

6. 1 Inf ormati onsquel l en und - senken : : : : : : : : : : : : : : : : : : : 80

6. 2 Programmora2dns { �Ubersi cht : : : : : : : : : : : : : : : : : : : 83

6. 3 Getei l tes Subnetz : : : : : : : : : : : : : : : : : : : : : : : : : : : 86

7. 1 Ei nbi ndung i n ei ne Managementpl attorm : : : : : : : : : : : : : : 96

5

Page 9:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

6 ABBI LDUNGSVERZEI CHNI S

Page 10:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

Kapi tel 1

Ei nl ei tung

1.1 Motivat i on

Nach demBau des ersten Personal computers i n den 70er Jahren kames i mdar-au�ol genden Jahrzehnt zumal l gemei nen Durchbruch des Mi krocomputers. Sei -ne Vertreter waren kaumnoch aus B�uros, Labors, Banken, aber auch pri vatenWohnzi mmern mehr wegzudenken.

Was di esen Systemen amAnf ang aber wei tgehend noch f ehl te, war di e F�ahi gkei t ,mi tei nander zu kommuni zi eren. Es handel te si ch of t umi sol i erte Systeme, bei

denen di e Daten von Hand ei ngegeben oder mi ttel s zumei st magneti scher Daten-tr�ager gel aden werden mu�ten. Dadurch war ei n manuel l es Ei ngrei f en sei tens des

Anwenders bei Kommuni kati onsvorg�angen erf orderl i ch, was ei nen der wesentl i -chen Vortei l e der el ektroni schen Datenverarbei tung, di e (vol l st�andi ge) Automati -

s i erung vonArbei tsvorg�angen, zwar ni cht zuni chte machte, aber dennoch deutl i chei nschr�ankte.

Umei nen Datenaustausch zwi schen Rechnern ohne umst�andl i chen und l angwi e-r i gen Transport ei nes phyi schen Medi ums (Band, Di skette, : : : ) zu erm�ogl i chen,

wurden Kommuni kati onsnetze gescha�en. Deren Bedeutung hat i n den vergange-nen Jahren enormzugenommen. Auchwenn derzei t noch zwi schen l okal en (LAN)

und Wei tverkehrsnetzen (WAN) unterschi eden wi rd, so tragen moderne Hochge-schwi ndi gkei tstechnol ogi en wi e ATM(Asynchronous Transf er Mode) zu derenVermengung bei . Dami t wi rd es m�ogl i ch, di e i n l etzter Zei t vi el zi t i erten

"Da-

tenautobahnen\ zu real i s i eren, mi t denen vi el e heute erst begrenzt m�ogl iMul ti medi a-Anwendungen der brei ten Masse zug�angl i ch gemacht werden solda hi erf �ur ei ne enormhohe Bandbrei te erf orderl i ch i st .

Auf demWeg dorthi n m�ussen wi r uns aber noch mi t den Probl emen exi sder und erprobter Netze ausei nandersetzen, umdann mi t der daraus ge

7

Page 11:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

8 KAPI TEL 1. EI NLEI TUNG

Erf ahrung Neues scha�en zu k�onnen. Zu den genannten Netzen geh�ort al s ei nerder bekanntesten WAN-Vertreter das ARPA- Internet, das urspr�ungl i ch auf ei nForschungsproj ekt des ameri kani schen Vertei di gungsmi ni steri ums (DoD) zur�uck-geht, s i ch i n den vergangenen Jahren aber stark al s Forschungs- und Hochschul -

netz etabl i erte und i n j �ungster Zei t auch i mmer mehr f �ur kommerzi el l e Zweckegenutzt wi rd.

Di e vorl i egende Arbei t besch�af t i gt s i ch mi t demDomai n Name System(DNS),ei ner Anwendung auf demInternet. Dabei handel t es si ch umei n System, mi tdessen Hi l f e j edemRechner i mgesamten Netz ei n Name zugeordnet wi rd, durchden er gl obal ei ndeuti g i denti �zi ert werden kann. Dami t wi rd di e Verwendungumst�andl i cher Adressen (Zahl en) �uber �ussi g.

Derarti ge vertei l te Anwendungen { das Domai nName Systemwi rd durchRechnerreal i s i ert , di e i mganzen Netz vertei l t s i nd { si nd aber sehr kompl ex und dami t

f ehl ertr�achti g. Deshal b m�ussen M�ogl i chkei ten gescha�en werden, das System"i n

den Gri �\ zu bekommen, d. h. das Systemmu� gemanaget werden.

F�ur das Management bi eten si ch ei nersei ts i sol i erte, propri et�are und auf der andren Sei te i ntegri erte Verf ahren an. W�ahrend erstere �of ters verf �ugbar und

si nd, bi etet i ntegri ertes Management wei taus mehr Si cherhei t1 undi st deshal b vorzuzi ehen. Uml etzteres zu real i s i eren, bi eten si ch

verschi edene Wege an:

� Anbi ndung i sol i erter Werkzeuge und Verf ahren an eigri ertes Management. Hi erzu si nd Modul e zu entwihandenenWerkzeug auf setzen und ei ne Schni ttste

� Entwi ckl ung neuer Werkzeuge und Verf ahren,mentpl attf ormei ngebunden werden. Dabei mmanagenden Obj ektes ber�ucksi chti gt werde

ti onen demManager an der Pl attf ormabbl ei ben sol l en, sof ern er si e ni cht f �ur

Di e l etztgenannte Forderung l �a�t si chtems i n Formei ner Netzdokumentat

nen al l gemei n und unabh�angi g voche Komponenten oder Anwendun

Pl attf ormbzw. des (dari n enthal i ch.

AmLei bni z-Rechenzentrumi sttei l der l okal en Managementu

1Sicherhe i t i n Bezug auf K

Page 12:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1. 2. VORGEHENSWEISE 9

Arbei t l i egt nun dari n, ei n Verf ahren zu entwi ckel n, das ei n Werkzeug enth�al t ,durch das das Domai n Name Systeman di e genannte Datenbank angebunden

wi rd, und so sei n Management erm�ogl i cht wi rd. Davon i st i n erster Li ni e dasKon�gurati onsmanagement betro�en, da di e Datenbank u. a. s�amtl i che zur Kon-�gurati on notwendi gen Inf ormati onen berei tstel l en sol l .

1. 2 Vorgehenswei se

In Kapi tel 2 wi rd zun�achst ei ne al l gemei ne Ei nf �uhrung i n das Domai n Name Sys-tem, denGegenstand di eser Arbei t , gegeben. Dabei wi rd gezei gt, wel ches Probl em

zu l �osen war, das l etztl i ch zur Ei nf �uhrung des DNS f �uhrte, wi e di eses vor und nachdessen Ei nf �uhrung gel �ost wurde, und wel che Vortei l e das DNS mi t si ch brachte.

Mi t demanschl i e�enden 3. Kapi tel wi rd ei ne Beschrei bung der Kon�gurati ondes Domai n Name Systems ei ngeschoben. Neben ei ner systemati schen Untertei -l ung der gesamten vomDNS zur Verf �ugung gestel l ten Inf ormati on wi rd anhandvon kl ei nen Bei spi el kon�gurati onsdatei en auf gezei gt, wi e man ei ne ei gene DNS-

Umgebung zumLauf en bri ngt.

Auch wenn deren Spezi �kati onen demNetzverwal ter l etzl i ch verborgen bl ei bensol l (vgl . Abschni tt 1. 1), so i st deren Kenntni s f �ur di e vorl i egende Arbei

erl �a�l i ch, umdas neu zu i mpl ementi erende Datenbankschema und Werkzeugstehen zu k�onnen. Di e Datei en stel l en di e systemn�aheste vomNetzverwal t

ei n u�bare Schi cht dar.

Mi t dem4. Kapi tel wi rd di esbez�ugl i ch ei n Schni tt gemacht. Nach der Bdes Managements al l gemei n und spezi el l f �ur das Domai n Name Systemwsen Management aus Betrei bersi cht, d. h. i n di esemFal l e aus der Si cAdmi ni strators, pr�asenti ert . Neben sei nen Auf gaben und den dami tAnf orderungen werden M�ogl i chkei ten auf gezei gt, di e Auf gaben umal l erdi ngs i sol i erter Natur si nd.

Deren Nachtei l e f �uhren zumi ntegri erten Management. Hi erftungswei sende Ans�atze pr�asenti ert , ei ner aus demBerei

ments und ei n anderer mi t Hi l f e ei nes Dokumentati onsRechenzentrumu. a. al s Netzdokumentati onsdatenban

nannte Ansatz wi rd bzgl . des Kon�gurati onsmanverf ol gt, weshal b amSchl u� di eses Kapi tel s

an di e Managementumgebung stel l en, genan

Di e Umsetzung di eses Verf ahrens i st Gegenne Netzdokumentati onsdatenbank vorhanabzul egen si nd, mu� man si ch zun�achs

Page 13:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

10 KAPI TEL 1 . EI NLEI TUNG

Unabh�angi g davon werden di e Anf orderungen an das Desi gn der neuen (zus�atzl i -chen) Datenbank gestel l t , bevor unter deren Ber�ucksi chti gung das Desi gn sel bst

entworf en wi rd. Anschl i e�end wi rd versucht, di e si ch ergebenden neuen Rel ati o-nen i n di e al ten zu i ntegri eren. Schl i e�l i ch gi l t es noch ei ni ge organi satori

Probl eme zu l �osen, bevor das Verf ahren ei ngesetzt werden kann.

Das 6. Kapi tel beschrei bt schl i e�l i ch di e Impl ementi erung des Verf ahrz�ahl t zumei nen das exakte Rel ati onenschema mi t ei ner Beschrei buAttri bute und zumanderen das Werkzeug, an das wi ederumei genegen gestel l t werden.

Das Werkzeug wi rd i n Formei nes Perl - Skri pts real i s i ert . Bbeschrei bung wi rd zun�achst ei ne �Ubersi cht pr�asenti ert , be

Modul e, aus denen es si ch zusammensetzt, ei ngegangeDemonstrati on der Ei n- und Ausgabe des Programms r

Das 7. Kapi tel gi bt schl i e�l i ch ei nen Ausbl i ck �uberzu tun i st . Dazu z�ahl en zumei nen m�ogl i che Erwgen des i mpl ementi erten Verf ahrens und zumandeManagementpl attf orm.

Page 14:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

Ka p i t e l 2

E i n f�u h r u n g i n d a s Doma i n

Sys t e m

Di eses Kapi tel besch�af t i gt s i ch mi t demDomai n Namment i n di eser Arbei t i n ei ne vorhandene Mangementumsol l . Dabei handel t es si ch umei ne Anwendung ausbekannte Anwendungen si nd z. B. NIS (Network Inf or(Network Fi l e System).

Zun�achst wi rd i n Abschni tt 2. 1 ei n Probl emvorgesammenhang mi t Kommuni kati onsnetzen auf tr i tt .Identi �zi erung der ei nzel nen tei l nehmenden Kommi t Zahl en arbei ten, i st es f �ur den Menschen l ei

Ei n L�osungsansatz zu di esemProbl em, wi e er vSystems zumEi nsatz kam, wi rd i n Abschni tt 2. 2di e Probl eme di eses Verf ahrens auf gezei gt,

gef unden werden mu�te.

Hi erbei handel t es si ch umdas Domai n Name�Uberbl i ck �uber di e dami t ei nhergehende I

schen Namensraumsowi e di e Art und WInf ormati onen zu den j ewei l gen Anwen

2. 1 Moti vat i on

Komponenten ei nes el ektroni schennumeri schenWert i denti �zi ert und a

Bei spi el i st das Tel ef onnetz del ef ons durch Ei ngabe von

Page 15:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

12 KAPI TEL 2 . EI NF�UHRUNG I N DAS DOMAI N NAME S YS TEM

Auch Computernetze kennen Adressen, di e j e nach verwendetemProtokol l un-terschi edl i ch ausf al l en. So verwendet zumBei spi el das i mLAN-Berei ch sehr ver-

brei tete Ethernet ei ne 48Bi t-Adresse, di e von den Herstel l ern der Adapterkartenbei deren Produkti on ei ndeuti g f estgel egt wi rd. Dami t i st dann si chergestel l t ,

unter ei n und dersel ben Adresse nur ei n ei nzi ger Rechner errei chbar i sVerwechsl ungen ausgeschl ossen werden.

ImARPA- Internet vernetzte Rechner verwenden das IP-Protokol l . Di egen IP-Adressen haben ei nen Umf ang von 32 Bi t und werden i n derdurch Punkte getrennte dezi mal e Bytewerte dargestel l t . So besi

spi el der Rechner, auf demgerade di eser Text ei ngegeben wi rd129. 187. 10. 20.

Numeri sche Adressen werden ei ngesetzt, da si e vomComputerbei tet werden k�onnen. Dagegen si nd si e f �ur den Benutzerda der Mensch i mal l gemei nen ei n besseres Namens- wi esi tzt. Umden Bed�urf ni ssen des Anwenders entgegenzudeswegen entschl ossen, f �ur Rechner auch al phanumeri s(Bei spi el : sun1) .

Dami t ei n sol cher Servi ce angeboten werden kann, idi g, der di e Namen auf di e numeri schen Adressen ab

wi rd al s Namensau �osung (Address Resol uti on) beti nen i mBetri ebssystemder Rechner al s Resol

Ei n wei terer Vortei l di eser Abbi l dung besRechner erhal ten bl ei ben k�onnen, wenn s

wei se bei mUmzug ei nes Rechners i n e

2. 2 Fr�uheres Verfah

Umdi e Address Resol uti on durchfHOSTS . TXT krei ert [Sant 93], d

IP-Adressen enthi el t . Di ese DNetwork Inf ormati on Cente

sei n, auf demunter Verwendbi ndung zu ei nemanderen Rectei l ungsproze� wurde mi t H

(si ehe Abbi l dung 2. 1).

Lokal wurde di e Dateiten dann di e bere

nehmen.

Page 16:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

2 . 2 . FR �UHERES VERFAHREN 13

ftp

ftp

ftp

ftpftp

ftp

/etc/hosts /etc/hosts

/etc/hosts /etc/hosts

/etc/hosts/etc/hosts

HOSTS.TXT

Rechner A Rechner B

Rechner C Rechner D

Rechner E Rechner F

zentr.Rechner(NIC)

Abbi l dung 2. 1: Vertei l ung von HOSTS . TXT

Di eses Verf ahren hatte aber entschei dende Nachtei l e [ Geor 93] :

� Ho h e Ne t zla s t d ur c h Ve r t e il u n gs pr o z e �Durch den Vertei l ungsproze� wurde das Netz betr�achtl i ch bel aste

sonders ung�unsti g war di e Tatsache zu werten, da� di e Netzldrati scher Kompl exi t�at O(n2) i n Bezug auf di e Zahl der Re

bei ei ner Verdoppel ung der Anzahl der Rechner di e Dateiso of t �uber das Netz geschi ckt werdenmu�te, sondern sverdoppel te.

� La n g s a me Re g i s t r i e r u n g vo n Mo d i �kaAl l e Daten wurden bei di esemVe

verwal tet. Das bedeutete, da�werdenmu�te und erst nach eganzen Netz bekannt wurdeInternet (i mJahre 1993 c

da� der notwendi geZei t erl edi gt werd

� Ko l l i s i o n eDbep

Page 17:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

14 KAPI TEL 2 . EI NF �UHRUNG I N DAS DOMAI N NAME S YS TEM

2. 3 Das Domai n Name System

Umden oben genannten Probl emen zu entgegnen, wurde i mJahre 1984 dasDomai n Name System(DNS) ei ngef �uhrt ([ RFC881] , [ RFC882] und [ RFC883] ) .

Dabei handel t es si ch umei nen Verzei chni sdi enst, bei demdi e Inf ormati onenni cht zentral , sondern vertei l t gespei chert werden, mi t ei nemhi erarchi schen statt

achen Namensraum.

Auf di ese Punkte sowi e auf das Verf ahren, wi e di ese Inf ormati on schl i e�l i ch dortverf �ugbar gemacht wi rd, wo si e ben�oti gt wi rd (Anwendung), wi rd i n den f ol -genden Abschni tten ei ngegangen. Dabei wi rd auch der sehr wi chti ge Begri � deNameservers erl �autert.

2.3.1 Verteilung der Information

Bei mDNS l i egt ei n �uber das ganze Netz vertei l tes Datenbanksystemvor. Di e In-f ormati on, wel cher Name auf wel che Adresse abzubi l den i st , wi rd (i n der Reg

von derj eni gen Organi sati on verwal tet und den anderen zur Verf �ugung gebei der si e auch tats�achl i ch anf �al l t . Dadurch wi rd das zwei te Probl e

same Regi str i erung von �Anderungen der DNS-Daten, gel �ost.

Bei spi el swei se verwal tet das Lei bni z-Rechenzentrum(LRZ) s�amtvanten Inf ormati onen bez�ugl i ch der ei genen Rechner sel bst. Ddas LRZ aber auch di esen Di enst f �ur ei nen Tei l der Bayeri schi st al so m�ogl i ch, di ese Auf gabe an andere zu �ubertragen

ni cht dami t besch�af t i gen kann bzw. wi l l .

2.3.2 Hierarchischer Namensraum

Das Probl emder Namenskol l s i onen l �a�t si chdadurch el i mi ni eren, i nnernamen ni cht ach, sondern i n ei ner Baumstruktur hi erachi sch aden (Tei l baumsi ehe Abbi l dung 2. 2).

Di e Namen setzen si ch aus demHostnamen, al so demNamenRechners (zumBei spi el : sun1) , und demDomai nnamen, der angiInsti tuti on (Berei ch) der Rechner geh�ort (i mBei spi el : l rz-

sammen. Di e Kombi nati on von bei demwi rd al s Ful l y Qua(FQDN) bezei chnet (i mBei spi el al so: sun1. l rz-muenchen

Di e Domai nnamen setzen si ch aus den Namen der Knoten i mDer Domai nname ei nes Knotens besteht aus dessen Name sowi

der i msel ben Pf ad dar�uberl i egenden Knoten { j ewei l s durch eitrennt (Bei spi el : nm. i nf ormati k. uni -muenchen. de) . Der W

Page 18:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

2 . 3. DAS DOMAI N NAME S YS TEM 15

sunhegering8sunhegering7

187nmdec16vegatuminfo1hp10

sun1 hp10 informatik e-technik informatik 129

in-addruni-muenchentu-muenchenlrz-muenchen

edu de arpa

· (root)

Abbi l dung 2. 2: Hi erarchi scher Namensraum(Tei l baum)

di e Root-Domai n (. ) dar, di e darunterl i egenden hei �en Top- Level -Domai ns (edu,de, : : : ) , di e der n�achstni edri geren Schi cht entsprechend Second- Level -Domai ns

( l rz-muenchen. de, tu-muenchen. de, : : : ) . Modal i t�aten zur Namensvergabesi nd i n [ RFC1032] beschri eben.

Al l e Tei l b�aume ei nes Knotens bi l den zusammen mi t di esemei ne Domai n, der di edarunterl i egenden Subdomai ns und Rechner angeh�oren. Zur Inf ormati onauf tei -l ung (vertei l tes Datenbanksystem) wi rd der Baumi n Zonen ei ngetei l t , di e von

den ei nzel nen Insti tuti onen i n Ei genverantwortung verwal tet werden. Ei ne Zone umf a�t ei ne (Sub- )Domai n abz�ugl i ch der del egi erten (i n ei nen anderen

antworungsberei ch �ubertragenen) Subdomai ns, di e wi ederumei ner ei genenangeh�oren.

Di e Bl �atter i mBaumstel l en di e Rechner mi t i hren Namen, al so den Homen dar. Dari n i st dann auch di e entsprechende IP-Adresse (gegebenenf

mehrere) gespei chert. Wi e amBei spi el des Hostnamen hp10 zu sehes j etzt auch m�ogl i ch, ei n und densel ben Hostnamen1 mehrmal s zuwenn der Rechner ei ner anderen Domai n angeh�ort. Dassel be gi l t auci nnerhal b zwei er verschi edener Domai nnamen (i n der Abbi l dung: i n

muenchen. de 6= i nf ormati k. uni -muenchen. de) .

Ei ne Besonderhei t stel l t di e Domai n i n- addr. arpa dar. Mei ne i nverse Namensabbi l dung (Reverse Mappi ng): IP-A

vorzunehmen. Dazu wi rd di e IP-Adresse al s dezi mal e Byte

1hp10.informatik.tu-muenchen.de ist ein Aliasname f�ur hphalle10.informatik

muenchen.de. AliasnamenundHostnamen sindaber gleichbedeutend, weshalbdies als realexistierendes Beispiel gew�ahlt wurde.

Page 19:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

16 KAPI TEL 2 . EI NF �UHRUNG I N DAS DOMAI N NAME S YS TEM

Nul l en und Leerzei chen i n umgekehrter Rei chenf ol ge geschri eben, umden Post�xi n- addr. arpa erwei tert und al s Name verwendet (Bei spi el : 20. 10. 187. 129. i n-

addr. arpa) . In demdami t ref erenzi erten Bl att �ndet man dann ei nen entspre-chenden Ei ntrag, der den Namen enth�al t ( i mBei spi el : sun1. l rz. muenchen. d

Der i n der Abbi l dung abgeschni ttene Tei l baumenth�al t al l e Ei ntr�age f �ur eiB-Netz (129. 187. . ) des LRZ.

Neben demForward Mappi ng (Abbi l dung: Name !IP-Adresse) und demeben behandel tenReverse Mappi ng bi etet das Domai nName Systemnochwei te

Di enste/Inf ormati onen an. Der wi chti gste i st das Mai l - Routi ng [ RFC974] .ben k�onnen aber auch Inf ormati onen �uber CPUund Betri ebssystemder Rec

abgef ragt werden, sof ern si e berei tgestel l t werden. Wei tere Inf ormati onben (derzei t) ei ne untergeordnete Bedeutung und sol l en deshal b a

Stel l e ni cht erw�ahnt werden.

2.3.3 Zugri� einer Anwendungauf DNS-Informationen

Imf ol genden wi rd gezei gt, wi e ei ne Anwendung (Programm) auf Inf ormati onen,di e das Domai n Name Systemzur Verf �ugung stel l t , zugrei �en kann. Abbi l dung2. 3 gi bt ei ne �Ubersi cht �uber ei n m�ogl i ches Szenari o.

gethostbyname() gethostbyname()gethostbyname()gethostbyname()

Resolver Resolver Resolver

Nameserver

Resolver

DB

(DNS/UDP)Anfragen

telnet <name1> ftp <name2> rlogin <name3> rsh <name4>

/etc/hostsNameserver DB

Clie

nt

Ser

ver

Client

Abbi l dung 2. 3: Inf ormati ons u� (DNS-Anf ragen)

Den Anwendungsprotokol l en (tel net, f tp, : : : ) wi rd anstel l e der IP-Adresse dHostname bzw. der Ful l y Qual i �ed Domai n Name (FQDN) �ubergeben. Wi rd nur

Page 20:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

2 . 3 . DAS DOMAI N NAME S YS TEM 17

der Hostname angegeben2, so wi rd er umdenDomai nnamen erwei tert. Das auf ge-ruf ene Programmbedi ent si ch bei mVerbi ndungsauf bau der Bi bl i otheksf unkti ongethostbyname(). Dami t werden di e Resol verrouti nen des Betri ebssystems auf -

geruf en.

Di e Resol verrouti nen schi cken di e Anf ragen an den/di e n�achstgel egenen Name-server3. Je nach Kon�gurati on der Resol ver (si ehe Manpage g e t h o s t e n t [ UCBK] )

kann di e Anf rage auch anmehrere Nameserver geschi ckt oder k�onnen vorhandeneEi ntr�age i n / e t c / h o s t s zur Namensau �osung verwendet werden.

I st der Nameserver ni cht i n der Lage, ei ne Anf rage sel bst zu beantwortendern nur auf ei nen di esbez�ugl i ch kompetenterenNameserver zu verwei sendi e Anf rage an l etzteren geschi ckt werden. Di ese evtl . rekursi ve Abf

kann der Resol ver demAnwendungsprogrammabnehmen4.

Ei n Nameserver i st ei n Proze�, der Anf ragen beantwortet, di e erDNS-Protokol l s [ RFC1035] zumei st al s Datagramme (UDP/IP) erZu di esemZweck kann auch ei ne TCP/IP-Verbi ndung auf gebaut werd

Nameserver l �auf t al s Hi ntergrundproze� (Daemon) auf ausgew�ahl tenei nes Insti tuts oder ei ner Organi sati on.

Al s ei gene Inf ormati onsquel l e besi tzt er ei ne i nterne DatenbanKon�gurati onsdatei en gel aden wi rd. Daneben besteht aber

Tei l e ei ner Datenbank anderer Nameserver zu kopi eren,f ormati onen daraus l i ef ern zu k�onnen. F�ur di esen B

dann al s Secondary Nameserver, wohi ngegen er f �urf ormati on aus l okal en Kon�gurati onsdatei en

Nameserver agi ert . Di ese Spi egel ung i stry Nameserver ausf al l en kann und zumanNameserver ei ne geri ngere Netzl ast undsatz gi l t , da� f �ur j ede Zone mi ndest

[ Quar 94] .

Daneben spei chert ei nNameserverda� di e gl ei che Anf rage erne

hat. Di eses al s Cachi ngserver (Cache Nameservanderen Nameservern

deren Nameserver

2Dies wirdinder PManpage resolver [UCBK], OptionRESDEFNAMES).

3BeimDomainName Systemwird eine Client/Server Architektur eingesetzt. Der Tport der Informationzwischen demNameserver (Informationsquelle) und demAnwendungs-

programm(Client, Informationssenke) erfolgt �uber das Internet.heManpage resol ver [UCBK], OptionRESRECURSEOptionRESUSEVC

Page 21:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

18 KAPI TEL 2 . EI NF �UHRUNG I N DAS DOMAI N NAME S YS TEM

An di eser Stel l e mu� darauf hi ngewi esen werden, da� di e mei sten Nameserversowohl al s Pri mary und Secondary Nameserver arbei ten (j ewei l s f �ur ei ne oder

mehrere verschi edene Zonen) al s auch al s Cache Nameserver f �ur di e Root-Domai n.Letztere di ent dazu, i mBauman Zwei ge zu gel angen, di e ni cht zu den sel bstverwal teten geh�oren.

Page 22:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

Ka p i t e l 3

Ko n �g u r a t i o n e i n e r

DNS -Umg e b u n g

Bei mDomai n Name Systemhandel t es si ch umei nen Verj eni gen Inf ormati onen zur Verf �ugung stel l t , di e denrati onsvorgang mi tgegeben werden. Di es geschi eht

datei en.

Wegen i hres gro�en Umf angs m�ussen di e Inf ormUntertei l ung erf ol gt i n zwei verschi edenen

schni tt 3. 1 vorgestel l t .

In Abschni tt 3. 2 werden di e Kon�guratden Nameservern verwal teten Zonen sspi el en, pr�asenti ert . Deren Kennt

Arbei t zu erstel l endes Datenbaderen Hi l f e entsprechende Date

Di e Kon�gurati onsdatei en kt�uchti ge DNS-Umgebung z

nuel l en Kon�gurati on l i egnotwendi g si nd, sonde

stehen schwerwi egenund dort ei n gezi

3. 1 Unte

Di e Untertei l umensi onen

Page 23:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

20 KAPI TEL 3 . KONFI GURATI ON EI NER DNS -UMGEBUNG

A

PTR

MX

...

Zone Zone Zone

DNS-Information

gesamte

NameserverNameserver

horizontale Unterteilung

nach

Art

der I

nfor

mat

ion

verti

kale

Unt

erte

ilung

in Zonen

Ab b i l d u n g 3 . 1 : Un t e r t e i l u n g d e r DNS - I n f o r ma t i o n

1 . Ho r i z o n t a l e Un t e r t e i l u n g i n Zo n e nBe i e i n e r v e r t e i l t e n Anw

s t

Page 24:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

3 . 2 . KONFI GURATI ONS DATEI EN 2 1

Ta b e l l e 3 . 1 a u f g e f �u h r t .

Ty p Be d e u t u n gA Na me ! I P- Ad r e s s e ( Fo r e wa r d Ma p p

PTR I P- Ad r e s s e ! Na me ( ReMX Ma i l Ro u t i n

HINFO

Page 25:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

2 2 KAPI TEL 3 . KONFI GURATI ON EI NER DNS - UMGEBUNG

Wi e a u s Ab b i l d u n g 3 . 2 e r s i c h t l i c h i s t , t e i l e n s i c h d i e fwe n d i g e n Ko n � g u r a t i o n s d a

Page 26:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

3 . 2 . KONFI GURATI ONS DATEI EN 2 3

directory /etc/namedb

; type domain source/host bak-file

cache . named.cache

primary lrz-muenchen.de named.hosts

primary 128.129.in-addr.arpa named.rev

primary 0.0.127.in-addr.arpa named.local

secondary eg 193.227.1.1 eg.BF

secondary gov.eg 193.227.1.1 gov.eg.BF

3. 2. 2 Zonenkon�gurat i on

I n d e n Zo n e n d a t e i e n we r d e n d i e I n f o r ma t i o n e n f e s t g e l e g t , dS y s t e mf �u r d i e j e we i l i g e Zo n e z u r

Da

Page 27:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

2 4 KAPI TEL 3 . KONFI GURATI ON EI NER DNS - UMGEBUNG

ppp IN NS dfvgate

IN NS hp10

@ IN MX 140 cd1

localhost IN A 127.0.0.1

sun1 IN A 129.187.10.20

sun2 IN A 129.187.10.21

dfvgate IN A 129.187.10.25

hp10 IN A 129.187.13.22

cd1 IN A 129.187.13.3

� n a me d . r e vBe i d e r f o l g e n d e n Da t e i Be i s p i e l f �u r d a s Re v e r s e

Ne t z ( 129. 187. . , u n v

$ORIGIN 187.1

@

20.10

20.11

195.15

� n a me d . l o c aDi e f o

Page 28:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

3 . 2 . KONFI GURATI ONS DATEI EN 2 5

Di e s e Da t e i k a n n j e n a c h d e m, o b a u f d e m j e we i l i g e n Re c h n e ri n s t a l l i e r t i s t o d e r n i c h t , u n t e r s c

� Mi t l o k

Page 29:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

2 6 KAPI TEL 3 . KONFI GURATI ON EI NER DNS - UMGEBUNG

Page 30:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

Ka p i t e l 4

An f o r d e r u n g e n a n d a s

Ma n a g e me n t e i n e s

Na me s e r v e r

Di e s e s

Page 31:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

2 8 KAPI TEL 4. ANF. AN DAS MGMT. EI NES NAMES ERV. - VERBUNDES

4.1 BedeutungdesManagements

Be i mo d e r n e n Re c h n e r s y s t e me n u n d Re c h n e r n e t z e n g e n �u g t e s n i c h t , s i cd i e Au f g a b e n , d i e s i e z u e r b r i n g e n h a b e n ,

e i n e Bu c h u n g v

Page 32:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

4. 2. NOTWENDIGKEITDES MANAGEMENTS BZGL. DES DNS 2 9

4. 2 Notwendi gkei t des Managements bzgl . des

Domai n Name Systems

m v o r a n g e h e n d e n Ka p i t e l wu r d e e i n e i n f a c h e s Be i s p i e l g e z e i g t , wi e s i c h e iDNS - Umg e b u n g k o n � g u r i e r e n l �a � t . Da b e i wu r d e n e

wi c h t i g e Zo n e n b e r �u c k s i c

Page 33:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

3 0 KAPITEL 4. ANF. ANDAS MGMT. EINES NAMESERV. -VERBUNDES

Ne b e n Pr o b l e me n , mi t d e n e n d e r Anwe n d e r k o n f r o n i e r t wi r d , g i b t e s a u c h n o ca n d e r e , d i e z . B. d i e Be t r e i b e r v o n Na me s e r v e r n u n t

Ab s t i mmu n g b e i d e r Z

Page 34:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

4. 3. DNS-MANAGEMENTAUS BETREIBERSICHT 3 1

Da g e g e n we r d e n i m f o l g e n d e n Au f g a b e n g e n a n n t , d i e i n d i e Be t r i e b s phas e �u b ef �u h r e n b z w. i n d i e s e r v o n Be d e u t u n g s i n d :

� Be r e i t s t e l l e n u n d Ak t i v i e r e n

� An p a s s u n g d e

Page 35:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

3 2 KAPITEL 4. ANF. ANDAS MGMT. EINES NAMESERV. -VERBUNDES

� Be i m Be r e i t s t e l l e n v o n Na me s e r v e r n i s t f e s t z u l e g e n , we l c h e Di e n s t e je i n z e l n e a n z u b i e t e n h a t . I n d e r Re g e l v e r f �u

S e r v i c e f �u r d i e i

Page 36:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

4. 3. DNS-MANAGEMENTAUS BETREIBERSICHT 3 3

�tg : Re s t g �u l t i g k e i t s d a u e r e i n e s g e s p i e g e l t e n Da t e n b e s t a n d e s .Er s t n a c h Ab l a u f d i e s e r Ze i t f r a g t e i n S e c

z u s t �a n d i g e n Pr i ma r

Page 37:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

3 4 KAPITEL 4. ANF. ANDAS MGMT. EINES NAMESERV. -VERBUNDES

HOSTS-Datei

Zonendateien

ZonendateienForeward Mapping

Reverse Mapping

/etc/hosts

DOMAINS-DateiMulti Domain Nameserver Database

mit deren Nameservernverwaltete Zonen

SOANS

restliche DNS-InfoACNAMEHINFOMX

Perl-Skriptdf2hf

Ab b i l d u n g 4 . 1 : Ei n s a t z d e s Ge n e r i e r u n g s s k r i p t s df 2hf

I n d e r v o m DNS - Admi n i s t r a t o r z u e r s t e l l e n d e n DOMAI NSDNS - I n f o r ma t i o n e n ( Re c o r d s ) i n

i n Ka p i

Page 38:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

4. 3. DNS-MANAGEMENTAUS BETREIBERSICHT 3 5

d i r e k t v o n e i n a n d e r a b h �a n g e n , k a n n ma n s i c h d o p p e l t e Ar b e i t s p a r e n . DS k r i p t e r s t e l l t d i e PTR- Re c o r d s a u t o ma t i s c h

d i g e n Zo n e n a n g i b t

Page 39:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

3 6 KAPITEL 4. ANF. ANDAS MGMT. EINES NAMESERV. -VERBUNDES

� Unt e r s t �ut z ung v on nur e i nemName s e r v e rAu s d e r DOMAI NS - Da t e i we r d e n n u r Zo n e n d a t e i e n f �u r e i n e n Na me s e r

g e n e r i e r t . Wi l l ma n z we i o d e r me h r e r e Na me sv e r f �u r d a r i n e n t h a l

Page 40:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

4. 4. INTEGRATIONSANS�ATZE 3 7

dnswalk: We r k z e u g , d a s v o n e i n z e l n e n Do ma i n s Zo n e n t r a n s f e r s d u r c h f �u h r td i e Er g e b n i s s e a u f i n t e r n e Ko n s i s t e n z u n d S o

dnsstats: We r k z e u g z u r An a l y

Page 41:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

3 8 KAPITEL 4. ANF. ANDAS MGMT. EINES NAMESERV. -VERBUNDES

e i n e mh e t e r o g e n e n Ne t z , d a d i e e i n g e s e t z t e n Na me s e r v e r , Pr o t o k o l l e u n d S c hs t e l l e n j e we i l s h o mo g e n s i n d , s o n d e r n v i e l me

Ma n a g e me n t v e r f a h

Page 42:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

4. 4. INTEGRATIONSANS�ATZE 3 9

dnsServConfigImplementIdent1

dnsServZoneTable1

... ...

dnsServConfig dnsServCounter dnsServOptCounter dnsServZone1 2 3 4

...1

dnsResConfig

...1

dnsServCounterAuthAns

dnsServMIB dnsResMIB1 2

system interfaces tcp dns1 2 6 32

......

iso.org.dod.internet.mngt.mib-21.3.6.1.2.1

1 1dnsServMIBObjects dnsResMIBObjects

Ab b i l d u n g 4 . 2 : DNS i n d e r MI B- 2 d e s I n t e r n e t - Re g i s t r i e r u n g s b a u me

dnsServCounter: S t a t i s t i s c h e An g a b e n �u b e r An f r a g e n ,s e r v e r g e s t e l l t wu r d e n . Di e

An z a h l d e

Page 43:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

4 0 KAPITEL 4. ANF. ANDAS MGMT. EINES NAMESERV. -VERBUNDES

Do ma i n Na me S y s t e m d a n n i m Ra hme n d e s I n t e r n e t - Ma n a g e me n t s v e r wa l t e twe r d e n .

4.4.2 AnbindungdesDNSaneinDokumentationssystem

Ei n Do k ume n t a t i o n s s y s t e m d i e n t d e r Er f a s s u n g , Da r s t e l l u n g u n d Ve r wa l tp h y s i s c h e n I n f r a s t r u k t u r e i n e s Ko mmu n i k a t i

i s t v o r a l l e m d a

Page 44:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

4. 5. ANFORD. ANEINEUMGEBUNGF�URDNS-KONFIG.MGMT. 4 1

I n t e g r a t i o n 7, a u f d e r e n Gr u n d l a g e d a n n e i n Ve r f a h r e n z u m DNS - Ko n � g u r a t i o n sma n a g e me n t e r a r b e i t e t wi r d .

Da n e b e n k �o n n e n d a n n a u c h a n d e r e Anwe n de i n Tr o u b l e Ti c k e

Page 45:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

4 2 KAPITEL 4. ANF. ANDAS MGMT. EINES NAMESERV. -VERBUNDES

I n d e n Ei n t r �a g e n d e r Zo n e n k o n � g u r a t i o n s d a t e i e n s i n d Ze i t i n f o r ma t i o n e n a ng e b e n , wi e l a n g e d i e j e we i l i g e n Ei n t r �a g e g �u l

l a n g e s i e d a

Page 46:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

4. 5. ANFORD. ANEINEUMGEBUNGF�URDNS-KONFIG.MGMT. 4 3

W�u n s c h e n s we r t w�a r e e s , we n n d e m DNS - Admi n i s t r a t o r e i n We r k z e u g ( e v t l . i n -n e r h a l b e i n e r Ma n a g a me n t p l a t t f o r m) z u r Ve r f �u g u n g

h a n d v o n S t a t i s t i k e n g u t

Page 47:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

4 4 KAPITEL 4. ANF. ANDAS MGMT. EINES NAMESERV. -VERBUNDES

i n t e r a k t i v e s Ab f r a g e - u n d Ma n i p u l a t i o n s we r k z e u g v o n ORACLE) u n t e r b l e i b t ,s o n s t I n k o n s i s t e n z e n z wi s c h e n d e r e x t e r n e n Da t

d e n Ko n � g u r a t i o n s d a

Page 48:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

Ka p i t e l 5

DNS - Ko n � g u r a t i o n mi t d e

Ne t z d o ku me n t a t i

I m f o l g e n d e n

Page 49:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

4 6 KAPITEL 5. DNS-KONFIG. MITDERNETZDOK. -DATENBANK

I m f o l g e n d e n Ab s c h n i t t 5 . 3 wi r d e i n En t i t y / Re l a t i o n s h i p Mo d e l l p r �a s e n t id a s a u s d e n An f o r d e r u n g e n e n t wi c k e l t e De s i

Re l a t i o n e n s c h e m

Page 50:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

5. 1. DIEVORHANDENENETZDOKUMENTATIONSDATENBANK 4 7

i e Ab b i l d u n g 5 . 1 1 g i b t e i n e n �Ub e r b l i c k �u b e r d i e I n f o r ma t i o n s t a b e l l e n . Di e eg e z e i c h n e t e n Pf e i l e s t e l l e n d i e Be z i e h u n g e n z

( Fr e md s c h l �u s s e l

Page 51:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

4 8 KAPITEL 5. DNS-KONFIG. MITDERNETZDOK. -DATENBANK

d a s Do ma i n Na me S y s t e m s i n d n u r s o l c h e i n t e r e s s a n t , d i e �u b e r S c h n i t t sl e n mi t I P- Pr o t o k o l l v e r f �u g e n :

select distinct kl.klasse, kl.name

from komponentenklasse kl, komponente ko

where kl.klasse=ko.klasse and

ko.name=lp.komponente and lp.proto

Al s Er g e b n i s d i e s e r An f r a g e e r

KL NAME

-- ----

AS ATM-

BI Brid

BR Brou

DI CDCN

DR Druc

FK FDDI

MC Maci

PC PC

PL Plot

RE Rech

RO Rout

SK Ster

TH Twis

TS sons

UV X.25

WS Work

XW XWin

Da b e i

Page 52:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

5. 1. DIEVORHANDENENETZDOKUMENTATIONSDATENBANK 4 9

( n �u t z l i c h f �u r J o i n s , d a d a n n n u r j e we i l s e i n Ve r g l e i c h s a t t r i b u t z u b e a r bt e n i s t ) a l s a u c h k o mp o n e n t e n we i s e ( wi c h t i g

Ve r g l e i c h s t a t

Page 53:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

5 0 KAPITEL 5. DNS-KONFIG. MITDERNETZDOK. -DATENBANK

�u b e r wa c h t we r d e n .

Ei n e n t s c h e i d e n d e s Pr o b l e m b e i Ne u e n t wi c k l u n g e n u n d Er we i t e r uPr o d u k t e n i n Be z u g a u f d i e Ak z e p t a n z d e

f o r ma t i k s t e l l t

Page 54:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

5. 2. ANFORDERUNGENANDAS DATENBANKDESIGN 5 1

s o wi e d e r Ge r �a t e n u mme r ( 5 . b i s 8 . Z e i c h e n ) z u s a mme n g e s e t z t e Pr i m�a r s c h l �u sNAME d e r Re l a t i o n KOMPONENTE.

Nu n i s t e i n we i t e r e s At t r i b u t ( KLAS S E) d emi t d e r d e s o b i

Page 55:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

5 2 KAPITEL 5. DNS-KONFIG. MITDERNETZDOK. -DATENBANK

5.2.1 Hosts

Un t e r"Ho s t \ wi r d i m f o l g e n d e n e i n e Re c h n e r e i n h e i t v e r s t a n d e n , d i e g e nau e i ne n

Na me n ( Ho s t n a me n ) b e s i t z t 5.

An f o r d e r u n g e n , d i e s i c h a n d a s Ob j e k t"Ho

Zo n e n z u o r d n u n g :J e d e r Ho s t mu

Page 56:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

5. 2. ANFORDERUNGENANDAS DATENBANKDESIGN 5 3

An f o r d e r u n g e n , d i e s i c h a n d a s Ob j e k t"Zo n e \ s t e l l e n :

Va t e r z o n e :Zu j e d e r Zo n e ( a u c h d i e d e l e g i e r t e n f r e md v e r wa

e x p l i z i t d i e Va t e r z o n e a

Page 57:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

5 4 KAPITEL 5. DNS-KONFIG. MITDERNETZDOK. -DATENBANK

Mi t d e m Re v e r s e Ma p p i n g e i n e s I n t e r n e t Cl a s s - A Ne t z e s e r g i b t s i c h b e i Ve rd u n g e i n e r 1 6 Bi t S u b n e t z ma s k e a u c h e i n Be i s p i e

De l e g a t i o n d e r Zo nd e m By t e we

Page 58:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

5. 2. ANFORDERUNGENANDAS DATENBANKDESIGN 5 5

An f o r d e r u n g e n , d i e s i c h a n d a s Ob j e k t"Na me s e r v e r \ s t e l l e n :

Lo k a l e r Ho s t :Ei n l o k a l e r 10 Na me s e r v e r mu� a u f e i n e m l o k a l e

k e i n e n S i n n , e i n e n Na m

Page 59:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

5 6 KAPITEL 5. DNS-KONFIG. MITDERNETZDOK. -DATENBANK

Ve r f �u g u n g s t e l l e n b z w. a l s S l a v e Na me s e r v e r a r b e i t e n , e i n s e h r v i e l g e rMa n a g e me n t a u f wa n d v o n n �o t e n i s t , wa s d i e K

�Ub e r l e g u n g a n s

Page 60:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

5. 3. DAS DATENBANKDESIGN 5 7

5. 3 Das Datenbankdesi gn

5.3.1 Entity/Relationship Modell

b i l d u n g 5 . 3 z e i g t d a s u n t e r Be r �u c k s i c h t i g u n g d e r g e n a n n t e n An f o r d e r u n g e ne n t wi c k e l t e En t i t y / Re l a t i o n s h i p Mo d e l l .

Z e n t r a l e r Ge g e n s t a n d d e s Mo d e l l s swe s e n t l

Page 61:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

58

KAPITEL5.

DNS-KONFIG.MIT

DERNETZDOK.-DATENBANK

HostsNameserver

WKSAliases Forwarder

NameserverZonen(lokal)

(lokal)

(fremd)

(fremd)IP-Adr.Zonen

Zonen(fremddelegiert)

MAILX

12

43

56

7 9

10

8

11

13

1

2 3

4

5

6

78

9

10

11

12

15

16

n:1

1:1 m:n

obligatorisch

14

17

Abbildung5.3:Entity/RelationsshipModell

Page 62:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

5. 3. DAS DATENBANKDESIGN 5 9

3 . Alias - Name nZu e i n e m Ho s t g e h �o r i g e Al i a s - Na me n . Hi e r f �u r i s t e i n e Ta b e l l e

z u e r s t e l l e n .

4 . We l l Kn own S e rvi ce sVo n e i n e m Ho s t a n g e b o t e n e

e i n

Page 63:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

6 0 KAPITEL 5. DNS-KONFIG. MITDERNETZDOK. -DATENBANK

5. 3. 3 Di e Bezi ehungen (Rel at i onshi ps) und deren Integra-t i on i n di e Tabel l en

1 . I P- Ad r e s s e n $ Ho s t s ( N: 1 )J e d e r Ho s t h a t e i n e o d e r me h r e r e I P- Ad r e s s e n . Di e Ta b e

u m d e n Pr i m�a r s c h l �u s s e l d e r Ta b e

2 . Al i a

Page 64:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

5. 3. DAS DATENBANKDESIGN 6 1

e i n e e i g e n e Ta b e l l e ( S ECONDARY LL) z u e r s t e l l e n . Di e s e e n t h �a l t d im�a r s c h l �u s s e l d e r Ta b e l l e n HOS TS u n d NAMES

9 . Loka l e Name s e rv eJ e d e r l o k

Page 65:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

6 2 KAPITEL 5. DNS-KONFIG. MITDERNETZDOK. -DATENBANK

1 6 . Fr e md e Zon e n ( d e l e g i e rt ) $ Loka l e Name s e rv e r ( S e c on da ryS e rv i c e ) ( M: N)

Fr e md e , d e l e g i e r t e Zo n e n k �o n n e n v o n e i n e m o d e rd a r y ) Na me s e r v e r n g e s

Page 66:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

5. 4. INTEGRATIONINVORHANDENEDATENBANK 6 3

Hi e r f �u r s o l l d i e Ta b e l l e LOGPORT ( a l t ) h e r a n g e z o g e n we r d e n , d i e u . a . d i eAd r e s s e n e n t h �a l t , wa s a b e r z u Pr o b l e me n f �u h r t ,

Page 67:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

6 4 KAPITEL 5. DNS-KONFIG. MITDERNETZDOK. -DATENBANK

SQL> desc logport

Name Null? Type

------------------------------- -------- ----

KOMPONENTE CHAR(8)

PORT CHAR(10)

PROTOKOLL NOT NULL CHAR(3)

ADRESSE NOT NULL CHAR(50)

BEMERKUNG CHAR(35)

Di e v i e r At t r i b u t e KOMPONENTE, PORT, PROTOKOLL u n d BEMERKUNGs i n d z u s a mme n n i c h t e i n d e u t i g , d a e i n e Ko mp o n e n t e me h r e r e l o g i

d e m g l e i c h e n Pr o t o k o l l h a b e n k a n n , ume i s t e n s u n b e l e g t b

Di e

Page 68:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

5. 5. ORGANISATORISCHEPROBLEME 6 5

Al s Er g e b n i s a l l e r b i s h e r g e n a n n t e n An b i n d u n g s v e r s u c h e d e r Ta b e l l e HOSd i e b e i d e n v o r h a n d e n e n Ta b e l l e n l �a � t s i c h f e s

b i n d u n g g e b e n

Page 69:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

6 6 KAPITEL 5. DNS-KONFIG. MITDERNETZDOK. -DATENBANK

W�a h r e n d d a s e r s t e Pr o b l e m d a s Ve r f a h r e n n u r i n t e r n b e t r i � t u n d i m f o l gd e n d u r c h e i n e n Ko mp r o mi � g e l �o s t wi r d , mu � s i c h

d e r Be n u t z e r - u n d S y s t e

Page 70:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

5. 5. ORGANISATORISCHEPROBLEME 6 7

We i t e r e Fo r d e r u n g e n , d i e s i c h i m Zu s a mme n h a n g mi t d e r Ei n g a b e r e i h e n f o lg e b e n , b e s t e h e n d a r i n , d a � z . B. d i e I P- Ad r e s

S e r v i c e s n a c h d e n H

Page 71:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

6 8 KAPITEL 5. DNS-KONFIG. MITDERNETZDOK. -DATENBANK

5. 5. 3 Zugri � auf Nameserver- Proze�

Ei n Pr o b l e m, d a s mi t d e r e r f o l g r e i c h e n Ve r t e i l u n g d e r Ko n � g u r a t i o n s d a t en i c h t g e l �o s t i s t , i s t d i e Pr o z e � s t e u e r u n g

v o n S i g n a l e

Page 72:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

Ka p i t e l 6

I mp l e me n t i e r u n g

Di e s e s Ka p i t e l b e s c h �a f t i g t s i c h s c h l i e � l ib a n k r e l a t i o n

Page 73:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

7 0 KAPITEL 6. IMPLEMENTIERUNG

6. 1 Auf bau der Rel at i onen

I m v o r a n g e h e n d e n Ka p i t e l wu r d e n mi t Hi l f e e i n e s En t i t y / Re l a t i o n s hd i e n o t we n d i g e n DB- Ta b e l l e n h e r g e l e i t e t

He r l e i t u n g

Page 74:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

6. 1. AUFBAUDERRELATIONEN 7 1

6. 1. 1 Modi �zi erte Tabel l e

Di e i n d e r Ne t z d o k ume n t a t i o n s d a t e n b a n k v o r h a n d e n e Ta b e l l e I NS TI TUwi e f o l g t e r we i t e r t :

At t r i b u t n a me We r t e b e r e i c h NOT1 i d c h a r ( 4 )

2 o r g a n i s a t i o n c h3 n a me

4 c h e

Page 75:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

7 2 KAPITEL 6. IMPLEMENTIERUNG

3 . S u b d o ma i n n a me , f a l l s d e r Ho s t e i n e r S u b d o ma i n i n n e r h a l b s e i na n g e h �o r t . [ o p t i o n a l ]

4 . Zo n e , d e r d e r Ho s t a n g e h �o rt ung: Di

Page 76:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

6. 1. AUFBAUDERRELATIONEN 7 3

� WKS

At t r i b u t n a me We r t e b e r e i c h NOT NULL1 h o s t n u mb e r ( 5 , 0 ) �

2 s e r v i c e c h a r ( 2 4 0 ) �

1 . Ho s t ( Fr e md s c h l �u s s e l a u f HOS TS . I D) .

2 . An g a b e v o n I P- Ad r e s s e ,

Page 77:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

7 4 KAPITEL 6. IMPLEMENTIERUNG

5 . Na me d e r z u e r s t e l l e n d e n Zo n e n d a t e i . [ o p t i o n a l , s t a n d a r d m�ama i n n a me + S u�x ]

6 . E- Ma i l Ad r e s s e d e s DNS - Admi n i s

7 . Kl a s s e d

Page 78:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

6. 1. AUFBAUDERRELATIONEN 7 5

Mi t d e r f o l g e n d e n Anwe i s u n g wi r d d i e Ei n d e u t i g k e i t d e s Pr i m�a r s c hg e w�a h r l e i s t e t :

create unique index del_zones_id on del_zo

� DEL ZONES S EC

At t r i b u t n a me We r t e b e r e i c h1 d e l z o n e n umb

2 s n s i p n a m3 s

Page 79:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

7 6 KAPITEL 6. IMPLEMENTIERUNG

Ma i l Ro u t i n g ( �u b e r MX- RRs ) wi r d i m Ra hme n d i e s e r Ar b e i t n u r i n da n g e g e b e n e n Fo r m u n t e r s t �u z t ( s i e h e Ka p i t e l

6. 1. 4 Nameserver- Tabel l en

� NAMES ERVERS

At t r i b u t n a me We r1 i d

2 h o

Page 80:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

6. 1. AUFBAUDERRELATIONEN 7 7

7 . S e r i e n n umme r d e r S OA- RRs d e s Lo o p b a c k I n t e r f a c e s ( 3 2 Bi t - We r tn e VZ , s i e h e [ RFC 1 0 3 5 ] , Ka p i t e l 3 . 3 . 1 3 ) .

l a t i o n v o n DNS - I n

Page 81:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

7 8 KAPITEL 6. IMPLEMENTIERUNG

� S ECONDARY LL ( l o k a l e Na me s e r v e r f �u r l o k a l e Zo n e n )

At t r i b u t n a me We r t e b e r e i c h NOT NULL1 z o n e n umb e r ( 5 , 0 ) �

2 n a me s e r v e r n u mb e r ( 5 , 0 )3 b a c k u p � l e c h a r ( 6 4

1 . Zo n e ( Fr e md s

2 .

Page 82:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

6. 2. ANFORDERUNGENANDASWERKZEUG 7 9

� FORWARDERS

At t r i b u t n a me We r t e b e r e i c h NOT NULL1 n a me s e r v e r n u mb e r ( 5 , 0 ) �

2 i p a d d r c h a r ( 1 5 ) �

1 . Na me s e r v e r ( Fr e md s c h l �u s s e l a u f NAMES ER

2 . I P- Ad r e s s e d e s Ma s t e r Nt e

Page 83:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

8 0 KAPITEL 6. IMPLEMENTIERUNG

Netzdoku-Datenbank

FTP-Server

Resolver-konf.datei

Nameserver-konf.datei

Zonen-konf.dateien

Cache-konf.datei

(für jeden Host) (für jeden Nameserver)

Datum, Usernameakt. Systemdaten: Programm

Standardwerte-Kontingent

Ab b i l d u n g 6 . 1 : I n f o r ma t i o n s q u e l l e n u n d - s e n k e n

� Ei n Ko n t i n g e n t a n S t a n d a r d we r t e n , d i e i n d e r Rd e n , we n n d i e e n t s p r e c

Page 84:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

6. 2. ANFORDERUNGENANDASWERKZEUG 8 1

6. 2. 2 Fl exi bi l i t�at und Komf ort

I n v i e l e n DNS - Ma n a g e me n t u mg e b u n g e n l i e g t e i n s e h r u mf a n g r e i c h e r Da ts t a n d v o r , d e r b e i mEi n s a t z e i n e s n e u e n Ko n � g u

l i c h g e ma c h t we r d

Page 85:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

8 2 KAPITEL 6. IMPLEMENTIERUNG

3 . I s t d i e s e s e b e n f a l l s u n b e l e g t , s o wi r d d e r i n d e r Ko n � g u r a t i o n s dl e t z t g e n a n n t e We r t v e r we n d e t ( NAM

4 . I s t a u c h i n d e r Ko n �

Page 86:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

6. 3. PROGRAMMAUFBAU 8 3

Resolver-Konfiguration

Resolver-Konfigurationsdatei erstellen

Nameserver-Konfiguration

Root-Domain Konfigurationsdatei via Anoymous-FTP holen

Bootdatei für Nameserver erstellen

Für alle Hosts:

Für alle Nameserver:

Für alle Zonen, die der Nameserver verwaltet:

Zonenkonfigurationsdatei erstellen (für Forward/Reverse Mapping)

Loopback Interface

Konfigurationsdatei (127.1 -> localhost) erstellen

Konfigurationsdatei (localhost -> 127.1) erstellen

Standardwerte vorbelegen & ggf. durch Konfigurationsdatei modifizieren

Verzeichnisbaum erstellen

Einloggen im Datenbanksystem

Ausloggen aus dem Datenbanksystem

Ab b i l d u n g 6 . 2 : Pr o g r a mm ora2dns { �Ub e r s i c h t

Ma � n a hme n e r h e b l i c h u mf a n g r e i c h e r s i n d . Di e s e s o l l e n d ug r a mm a u f b e r e i t e t e Pa r a me t e r e n

we i s

Page 87:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

8 4 KAPITEL 6. IMPLEMENTIERUNG

d e r Na me r s e r v e r l �a u f t b e s t i mmt we r d e n . S i n d e i n z e l n e At t r i b u t e d a b e it e n b a n k n i c h t s p e z i � z i e r t , s o we r d e n s i e

( v g l . Ka p i t e

S i n

Page 88:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

6. 4. PROGRAMMODULE 8 5

6. 4. 1 Verzei chni sbaumauf bauen

Da s Mo d u l make di r. pl ( L i s t i n g s i e h e An h a n g A. 4 ) b e i n h a l t e t i m we s e n t le i n e Pr o z e d u r , mi t d e r e n Hi l f e d i e Un t e r v e r z e

Ko n � g u r a t i o n

Page 89:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

8 6 KAPITEL 6. IMPLEMENTIERUNG

Hub

Brouter

Brouter

Resolver

Nameserver

SubnetzmaskeEthernet I:

SubnetzmaskeEthernet II:

1 2 3 4

8

5

XXX.YYY.50

6 7

11

12 13

14

SubnetzmaskeFDDI:1

3 4

5

7XXX.YYY.50

XXX.YYY.40

Ab b i l d u n g 6 . 3 : Ge t e i l t e s S u b n e t z

S e r v i c e a n b i e t e t . Hi e r z u z �a h l e n a u c h d i e S t a n d a r d e i n t rt e r f a c e . Al s n �a c h s t e s f o l

Page 90:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

6. 4. PROGRAMMODULE 8 7

Ho s t - u n d g g f . Do ma i n n a me n b e z e i c h n e t . Da d u r c h k �o n n e n Gl u e Re c o r d sd e r l i c h we r d e n . Al l e Ka n d i d a t e n h i e r f �u r we r

Be i d e n S e c o n

Page 91:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

8 8 KAPITEL 6. IMPLEMENTIERUNG

6. 4. 6 Loopback Interf ace (127. 1 ! l ocal host)

Da s Mo d u l named l ocal . pl ( L i s t i n g s i e h e An h a n g A. 9 ) . i s t f �u r d e n Re v ep i n g Te i l d e s Lo o p b a c k I n t e r f a c e s z u s t �a n d

Ne b e n d e mKo p f d e r Ko n � g ue l l

Page 92:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

6. 5. EIN- UNDAUSGABEDES PROG. ANHANDEINES BSP. 8 9

Wi r d d a s Pr o g r a mm d a mi t z u m La u f e n g e b a c h t , s o e r s c h e i n t f o l g e n d e Au s g a b

sun1.(0)./home/a/a2824ch/dipl/perl> ora2dns

Starting execution...

Creating directory '/home/a/a2824ch/dipl/perl/ftp/dfvgate.lrz-muenchen.de'

Creating directory '/home/a/a2824ch/dipl/perl/ftp/dfvgate.lrz-muenchen.de/e

[...]

Creating directory '/home/a/a2824ch/dipl/perl/ftp/a2824ch.ppp.lrz-muenchen.

Creating directory '/home/a/a2824ch/dipl/perl/ftp/a2824ch.ppp.lrz-muenchen.

[...]

Creating directory '/home/a/a2824ch/dipl/perl/ftp/hp11.lrz-muenchen.de'

Creating directory '/home/a/a2824ch/dipl/perl/ftp/hp11.lrz-muenchen.de/etc'

Creating directory '/home/a/a2824ch/dipl/perl/ftp/dfvgate.lrz-muenchen.de/e

(remote-file) (local-file)

Creating directory '/home/a/a2824ch/dipl/perl/ftp/hp10.lrz-muenchen.de/etc/

(remote-file) (local-file)

Ready.

Na c h e i n e r S t a r t me l d u n g , d i e e r s c h e i n t , we n n d e rt e x t f e r t i g v o r �u b e

Page 93:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

9 0 KAPITEL 6. IMPLEMENTIERUNG

Di e n u n f o l g e n d e Au f g a b e s e i t e n s d e s DNS - Admi n i s t r a t o r s b e s t e h t d aDa t e i e n a u f d i e e i n z e l n e n Ho s t s z u v e r t e

Re s o l v e r ) z u

Page 94:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

Ka p i t e l 7

Au s b l i c k

I n d e r v o r l i e g e n d e n Ar b e i t wu r d e n M�o g l i c h k e i t e nNa me S y s t e ms a u f g e z e i g t

Page 95:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

9 2 KAPITEL 7. AUSBLICK

Da s i n d i e s e r Ar b e i t e n t wi c k e l t e We r k z e u g wu r d e n i c h t f �u r d e n i s os a t z k o n z i p i e r t , s o n d e r n f �u r d i e Ei n b

m�o g l i c h e

Page 96:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

7. 1. ERWEITERUNGS- UNDVERBESSERUNGSM�OGLICHKEITEN 9 3

Da n e b e n l i e � e s i c h a b e r a u c h e i n e i g e n s t �a n d i g e s S c h e ma e n t wi c k e l n , d a sb e s o n d e r e , f �u r d a s Ro u t i n g wi c h t i g e As p e k t e wi

mi t d a z wi s c h e n l i e g e n

Page 97:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

9 4 KAPITEL 7. AUSBLICK

e i n e u n t e r g e o r d n e t e Ro l l e . De s h a l b wi r d d a f �u r s e i t e n s d e s i mt e n Ve r f a h r e n s a u c h n u r e i n a u f d a s

g e b o t e n ( s

Page 98:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

7. 2. EINBINDUNGINEINEMANAGEMENTPLATTFORM 9 5

Um s i c h b e i m Ei n s a t z d e s Ve r f a h r e n s e i n e e r h e b l i c h e Me n g e Ar b e i t z u s p a -r e n , d i e b e i d e r Ei n g a b e d e r Da t e n i n d i e Da t e n b

Te i l v e r f a h r e n z u e n

Page 99:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

9 6 KAPITEL 7. AUSBLICK

Konfig.-Dateien Konfig.-Dateien

Nameserver DBDB Nameserver

Managementplattform Netzdokumentation

Oracle DB

ora2dns

HP OpenView

2

1

4

3

Ab b i l d u n g 7 . 1 : Ei n b i n d u n g i n e i n e Ma n a g e me n t p l a t t o r m

Di e d i r e k t e An b i n d u n g d e r Ma n a g e me n t p l a t t f o r m ad i e s e r b e i d e n a n e i n Tr o u

Page 100:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

7. 2. EINBINDUNGINEINEMANAGEMENTPLATTFORM 9 7

Do ma i n s i c h t : Be i d e r o b e n g e n a n n t e n S i c h t i s t e s e r f o r d e r l i c h , e i n e n Na mv e r h o s t f �u r e i n e b e s t i mmt e Zo n e z u k e n n e

f o r ma t i o n e n z u g e l a

Page 101:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

9 8 KAPITEL 7. AUSBLICK

Page 102:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

An h a n g A

Li s t i n g s

A. 1 Kon�gurat i onsdatei . ora2dnsrc

# **********************************************************************

# * Integration des Managements des Domain-Name-Systems in die *

# * vorhandene Managementumgebung des Leibniz-Rechenzentrums (LRZ) *

# * (Diplomarbeit an der TU-Muenchen, SS 94 - WS 94/95) *

# * ------------------------------------------------------------------ *

# * Autor: Heiko Hauck ([email protected]) *

# * Datei: .ora2dnsrc (Konfigurationsdatei fuer ora2dns) *

# **********************************************************************

# Format dieser Datei:

# <Variablenname> [<Leerzeichen> <Variablenbelegung>]

# Wird keine Variablenbelegung angegeben, so wird ein Leerstring verwendet.

# Kommentare muessen mit einem '#'-Zeichen beginnen.

# Leerzeilen sind erlaubt.

# DB-Qualifier, der bei saemtlichen DB-Anfragen vor den Tabellennamen

# eingefuegt wird

ORA2DNS.QUALIFIER

# Verzeichnis, in dem die erstellten Konfigurationsdateien

# (in entsprechenden Unterverzeichnissen) abgelegt werden

ORA2DNS.FTP_DIR /home/a/a2824ch/dipl/perl/ftp

# TTL-Wert fuer A-RRs in den Zonendateien

HOSTS.RECORD_TTL

# Klasse der A-RRs in den Zonendateien

HOSTS.RECORD_CLASS IN

# TTL-Wert fuer MX-RRs in den Zonendateien

MAILX.RECORD_TTL

# Klasse der MX-RRs in den Zonendateien

MAILX.RECORD_CLASS IN

9 9

Page 103:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 0 0 ANHANGA. LISTINGS

# Dateiname fuer den Nameserverprozess

NAMESERVERS.FILENAME_EXE /etc/named

# Name der Datei, in der die ID des Nameserverprozesses steht

NAMESERVERS.FILENAME_PID /etc/named.pid

# Klasse des SOA-Records (fuer Loopback-Interface des Nameservers)

NAMESERVERS.SOA_CLASS IN

# Refresh-Intervall des SOA-Records (fuer Loopback-Interface des Nameservers)

NAMESERVERS.SOA_REFRESH 21600

# Retry-Intervall des SOA-Records (fuer Loopback-Interface des Nameservers)

NAMESERVERS.SOA_RETRY 3600

# Expire-Intervall des SOA-Records (fuer Loopback-Interface des Nameservers)

NAMESERVERS.SOA_EXPIRE 604800

# Minimum-Intervall des SOA-Records (fuer Loopback-Interface des Nameservers)

NAMESERVERS.SOA_MINIMUM 172800

# Verzeichnis, in dem die Zonendateien abgelegt werden

NAMESERVERS.FILES_DIR /etc/namedb

# Name der Zonendatei fuer das Loopback-Interface (127.1 ->localhost)

NAMESERVERS.FILENAME_LO named.local

# Name der Zonendatei fuer das Loopback-Interface (localhost -> 127.1)

NAMESERVERS.FILENAME_LB named.loopback

# Name der Root-Zonendatei (Cache Service)

NAMESERVERS.FILENAME_CA named.cache

# Host, von dem diese Datei mittels Anonymous FTP geholt wird

NAMESERVERS.FTP_HOST rs.internic.net

# Verzeichnis auf diesem Host

NAMESERVERS.FTP_DIR /domain

# Dateiname auf diesem Host

NAMESERVERS.FTP_FILE named.cache

# Dateiendung, die an den Zonendateinamen angefuegt wird, falls hierfuer

# der jeweilige Domainname verwendet wird (lokale Zonen - Secondary Service)

SECONDARY_LL.BACKUPFILE_SUFFIX .BF

# Dateiendung, die an den Zonendateinamen angefuegt wird, falls hierfuer

# der jeweilige Domainname verwendet wird (fremde Zonen - Secondary Service)

SECONDARY_LF.BACKUPFILE_SUFFIX .BF

# Dateiendung, die an den Zonendateinamen angefuegt wird, falls hierfuer

# der jeweilige Domainname verwendet wird

ZONES.SOURCEFILE_SUFFIX .DNF

# Klasse des SOA-Records

ZONES.SOA_CLASS IN

# Refresh-Intervall des SOA-Records

ZONES.SOA_REFRESH 21600

# Retry-Intervall des SOA-Records

ZONES.SOA_RETRY 3600

# Expire-Intervall des SOA-Records

ZONES.SOA_EXPIRE 604800

# Minimum-Intervall des SOA-Records

ZONES.SOA_MINIMUM 172800

Page 104:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 2. HAUPTPROGRAMMORA2DNS 1 0 1

A. 2 Hauptprogrammora2dns

#!/home/a/a2824ch/bin/oraperl

# **********************************************************************

# * Integration des Managements des Domain-Name-Systems in die *

# * vorhandene Managementumgebung des Leibniz-Rechenzentrums (LRZ) *

# * (Diplomarbeit an der TU-Muenchen, SS 94 - WS 94/95) *

# * ------------------------------------------------------------------ *

# * Autor: Heiko Hauck ([email protected]) *

# * Datei: ora2dns (Hauptprogramm) *

# **********************************************************************

# AUFRUF: ora2dns [username password]

# Werden Benutzername und Passwort nicht mit angegeben,

# so werden hierfuer Standardangaben eingesetzt

# (siehe Prozedur login in dem Modul 'ora2dns.pl')

# Patch fuer die lokal installierte Version von 'oraperl'

@INC = ('.', '/sw/PD/perl-4.36/lib');

# Einbinden der Programmodule

require 'ora2dns.pl';

require 'make_dir.pl';

require 'res_conf.pl';

require 'named_boot.pl';

require 'named_cache.pl';

require 'named_forward.pl';

require 'named_reverse.pl';

require 'named_local.pl';

require 'named_loopback.pl';

# Programmstart

print "Starting execution...\n";

# Setzen bzw. Einlesen der Defaultwerte (aus Datei '$HOME/.ora2dnsrc')

&set_default;

# DB-Qualifier (globale Variable)

# wird bei den SQL-Abfragen vor alle Tabellennamen gesetzt

$DB = $def{'ORA2DNS.QUALIFIER'};

# Einloggen in die Datenbank

&login;

# Generierung der Host-Unterverzeichnisse

&make_dir;

# Resolverkonfiguration fuer jeden Host

&res_conf;

# ======================================================================

Page 105:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 0 2 ANHANGA. LISTINGS

# Nameserverkonfiguration

# hierzu notwendige (globale) SQL-Anfragen:

# Auswahl saemtlicher Nameserver mit ihren Daten

&query(<<"END_SQL", *nameservers);

select id, host, soa_responsible, soa_class, soa_serial, soa_refresh,

soa_retry, soa_expire, soa_minimum, files_dir, filename_lo,

filename_lb, filename_ca, ftp_host, ftp_dir, ftp_file

from ${DB}nameservers

END_SQL

# Auswahl der Daten eines bestimmten Hosts und der zughoerigen Zone

$csr_hosts = &query_open(<<"END_SQL");

select h.name, h.subdomain_name, h.zone, h.record_ttl, h.record_class,

z.name, z.soa_responsible, z.soa_class, z.soa_serial,

z.soa_refresh, z.soa_retry, z.soa_expire, z.soa_minimum

from ${DB}hosts h, ${DB}zones z

where h.zone = z.id and h.id = :1

END_SQL

# Auswahl aller IP-Adressen eines bestimmten Hosts

$csr_ipaddr = &query_open(<<"END_SQL");

select ip_addr from ${DB}ipaddr where host = :1

END_SQL

# Auswahl aller Zonen, die einen bestimmten Primary Nameserver haben

$csr_zones = &query_open(<<"END_SQL");

select id, name, sourcefile, soa_responsible, soa_class, soa_serial,

soa_refresh, soa_retry, soa_expire, soa_minimum

from ${DB}zones

where prim_nameserver = :1

END_SQL

# ----------------------------------------------------------------------

# Schleife ueber saemtliche Nameserver

for(@nameservers)

{

# Einlesen der Nameserverdaten

local($id, $host, $soa_responsible, $soa_class, $soa_serial, $soa_refresh,

$soa_retry, $soa_expire, $soa_minimum, $files_dir, $filename_lo,

$filename_lb, $filename_ca, $ftp_host, $ftp_dir, $ftp_file) = split(/$;/);

# $id, $host koennen nicht NULL sein

# die restlichen Variablen duerfen NULL sein

# Einlesen der Daten des zugehorigen Hosts

local(@hosts);

Page 106:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 2. HAUPTPROGRAMMORA2DNS 1 0 3

&query_bind($csr_hosts, *hosts, $host);

# Ergebnis kann nur aus einem Tupel bestehen, da der Schluessel zones.id

# eindeutig ist (unique index)

local($hostname, $subdomainname, $zone, $record_ttl, $record_class,

$domainname, $z_soa_responsible, $z_soa_class, $z_soa_serial,

$z_soa_refresh, $z_soa_retry, $z_soa_expire, $z_soa_minimum)

= split(/$;/, $hosts[0]);

# $hostname, $zone, $domainname, $z_soa_responsible & $z_soa_serial koennen

# nicht NULL sein

# $subdomainname, $record_ttl, $record_class, $z_soa_class, $z_soa_refresh,

# $z_soa_retry, $z_soa_expire & $z_soa_minimum duerfen NULL sein

# --------------------------------------------------------------------

# Belegen der optionalen Attribute, falls

# sie in der Datenbank nicht belegt wurden (NULL-Werte)

# Eintraege fuer die SOA-Records der Zonen des Loopback-Interfaces

# (Forward & Reverse Mapping)

# Sind die folgenden beiden Attribute nicht speziell fuer den

# Nameserver angegeben, so werden die Werte der Zone, zu der

# der Nameserver-Host gehoert, verwendet

if(&testnull($soa_responsible))

{ $soa_responsible = $z_soa_responsible; }

if(&testnull($soa_serial))

{ $soa_serial = $z_soa_serial; }

# Im Gegensatz zu den beiden obigen Attributen kommt bei den folgenden

# noch der Default-Wert als letzte Alternative hinzu

if(&testnull($soa_class))

{ $soa_class = &testnull($z_soa_class) ?

$def{'NAMESERVERS.SOA_CLASS'} : $z_soa_class; }

if(&testnull($soa_refresh))

{ $soa_refresh = &testnull($z_soa_refresh) ?

$def{'NAMESERVERS.SOA_REFRESH'} : $z_soa_refresh; }

if(&testnull($soa_retry))

{ $soa_retry = &testnull($z_soa_retry) ?

$def{'NAMESERVERS.SOA_RETRY'} : $z_soa_retry; }

if(&testnull($soa_expire))

{ $soa_expire = &testnull($z_soa_expire) ?

$def{'NAMESERVERS.SOA_EXPIRE'} : $z_soa_expire; }

if(&testnull($soa_minimum))

{ $soa_minimum = &testnull($z_soa_minimum) ?

$def{'NAMESERVERS.SOA_MINIMUM'} : $z_soa_minimum; }

# Bei den folgenden Attributen stehen neben Nameserver-spezifischen

# Angaben Default-Werte zur Verfuegung

Page 107:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 0 4 ANHANGA. LISTINGS

# Verzeichnis, in dem die Zonendateien abgelegt werden

if(&testnull($files_dir))

{ $files_dir = $def{'NAMESERVERS.FILES_DIR'}; }

# Name fuer Zonendatei des Loopback-Interfaces (127.1 -> localhost)

if(&testnull($filename_lo))

{ $filename_lo = $def{'NAMESERVERS.FILENAME_LO'}; }

# Name fuer Zonendatei des Loopback-Interfaces (localhost -> 127.1)

if(&testnull($filename_lb))

{ $filename_lb = $def{'NAMESERVERS.FILENAME_LB'}; }

# Name fuer Zonendatei fuer Root-Domain (Cache)

if(&testnull($filename_ca))

{ $filename_ca = $def{'NAMESERVERS.FILENAME_CA'}; }

# FTP Host, von dem obige Datei geholt wird

if(&testnull($ftp_host))

{ $ftp_host = $def{'NAMESERVERS.FTP_HOST'}; }

# Quellverzeichnis auf dem FTP-Server

if(&testnull($ftp_dir))

{ $ftp_dir = $def{'NAMESERVERS.FTP_DIR'}; }

# Name der Datei auf dem FTP-Server

if(&testnull($ftp_file))

{ $ftp_file = $def{'NAMESERVERS.FTP_FILE'}; }

# Die folgenden beiden Attribute werden u.U. fuer das Erzeugen

# eines Glue-Records fuer den aktuellen Nameserver-Host beim

# Forward-Mapping benoetigt; neben Host-spezifischen Angaben

# stehen Default-Werte zur Verfuegung

if(&testnull($record_ttl))

{ $record_ttl = $def{'HOSTS.RECORD_TTL'}; }

if(&testnull($record_class))

{ $record_class = $def{'HOSTS.RECORD_CLASS'}; }

# --------------------------------------------------------------------

# Aufbau des Fully Qualified Domain Name fuer den Nameserver-Host

local($fqdn);

if((!&testnull($subdomainname)) && (length($subdomainname) > 0))

{

$fqdn = $hostname . '.' . $subdomainname . '.' . $domainname;

}

else

{

$fqdn = $hostname . '.' . $domainname;

}

Page 108:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 2. HAUPTPROGRAMMORA2DNS 1 0 5

# Generierung der zugehoerigen IP-Adresse

# Im Falle mehrerer IP-Adressen wird die "erste" ausgewaehlt

# Die Liste der IP-Adressen wird ausserdem fuer die Boot-Datei benoetigt

local(@ipaddr);

&query_bind($csr_ipaddr, *ipaddr, $host);

# $ipaddr[..] kann nicht NULL sein

local($ipa) = $ipaddr[0];

# Loeschen von Leerzeichen in der Adresse (DB-Konvention)

$ipa =~ s/\x20//g;

# --------------------------------------------------------------------

# Verzeichnis, in dem Daten fuer den Nameserver-Host abgelegt werden

local($directory) = $def{'ORA2DNS.FTP_DIR'} . '/' . $fqdn;

# Loeschen fuehrender Slashes ('/') in den Namesattributen

$files_dir =~ s/^\///o;

$filename_lo =~ s/^\///o;

$filename_lb =~ s/^\///o;

$filename_ca =~ s/^\///o;

# Generierung des Verzeichnisses fuer die Zonendateien

&make_dir_ns($directory, $files_dir);

# --------------------------------------------------------------------

# Generierung der Boot-Datei

# Die Standard-Ausgabe wird fuer das Unterprogramm auf die

# entprechende Datei umgelenkt

local($filename) = $directory . '/etc/named.boot';

open(NF, ">$filename") || die "Can't open $filename: $!\n";

local($OLD_HANDLE) = select(NF);

&named_boot($ipa, $fqdn, $id, $filename_ca, *ipaddr, $files_dir,

$filename_lo, $filename_lb);

select($OLD_HANDLE);

close(NF);

# --------------------------------------------------------------------

# Verzeichnis fuer Zonendateien

$directory .= '/' . $files_dir. '/';

Page 109:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 0 6 ANHANGA. LISTINGS

# --------------------------------------------------------------------

# Generierung der Zonen-Dateien fuer Forward- & Reverse-Mapping

local(@zones);

&query_bind($csr_zones, *zones, $id);

# Schleife ueber saemtliche Zonen, die von dem aktuellen Nameserver

# als Primary Nameserver verwaltet werden

for(@zones)

{

local($id, $name, $sourcefile, $soa_responsible, $soa_class,

$soa_serial, $soa_refresh, $soa_retry, $soa_expire, $soa_minimum)

= split(/$;/);

# $id, $name, $soa_responsible & $soa_serial koennen nicht NULL sein

# $sourcefile, $soa_class, $soa_refresh, $soa_retry, $soa_expire &

# $soa_minimum duerfen NULL sein

# Belegen der optionalen Attribute, falls

# sie in der Datenbank nicht belegt wurden (NULL-Werte)

# Sind die folgenden Attribute nicht speziell fuer Zone angegeben,

# so werden Default-Werte verwendet

# Endung des Namens der Zonendatei

if(&testnull($sourcefile))

{

$sourcefile = $name . $def{'ZONES.SOURCEFILE_SUFFIX'};

}

# Eintraege fuer den SOA-Record der Zone

if(&testnull($soa_class))

{ $soa_class = $def{'ZONES.SOA_CLASS'}; }

if(&testnull($soa_refresh))

{ $soa_refresh = $def{'ZONES.SOA_REFRESH'}; }

if(&testnull($soa_retry))

{ $soa_retry = $def{'ZONES.SOA_RETRY'}; }

if(&testnull($soa_expire))

{ $soa_expire = $def{'ZONES.SOA_EXPIRE'}; }

if(&testnull($soa_minimum))

{ $soa_minimum = $def{'ZONES.SOA_MINIMUM'}; }

# ------------------------------------------------------------------

# Die Standard-Ausgabe wird fuer das jeweilige Unterprogramm auf die

# entprechende Datei umgelenkt

$filename = $directory . $sourcefile;

Page 110:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 2. HAUPTPROGRAMMORA2DNS 1 0 7

open(NF, ">$filename") || die "Can't open $filename: $!\n";

$OLD_HANDLE = select(NF);

# ------------------------------------------------------------------

# Forward- & Reverse-Mapping Zonendateien erfordern sehr unterschiedliche

# Generierungsverfahren; Feststellung des Typs anhand des Zonennamens

if(!($name =~ /\.in-addr\.arpa$/i))

{

&named_forward('/' . $files_dir. '/' . $sourcefile, $fqdn, $ipa,

$soa_class, $soa_responsible, $soa_serial,

$soa_refresh, $soa_retry, $soa_expire, $soa_minimum,

$name, $id, $record_ttl, $record_class);

}

else

{

&named_reverse('/' . $files_dir. '/' . $sourcefile, $fqdn, $ipa,

$soa_class, $soa_responsible, $soa_serial,

$soa_refresh, $soa_retry, $soa_expire, $soa_minimum,

$name, $id);

}

# ------------------------------------------------------------------

select($OLD_HANDLE);

close(NF);

}

# --------------------------------------------------------------------

# Generierung der Zonen-Datei fuer das Loopback-Interface (127.1 -> localhost)

# Die Standard-Ausgabe wird fuer das Unterprogramm auf die

# entprechende Datei umgelenkt

$filename = $directory . $filename_lo;

open(NF, ">$filename") || die "Can't open $filename: $!\n";

$OLD_HANDLE = select(NF);

&named_local('/' . $files_dir. '/' . $filename_lo, $ipa,

$soa_class, $fqdn, $soa_responsible, $soa_serial,

$soa_refresh, $soa_retry, $soa_expire, $soa_minimum);

select($OLD_HANDLE);

close(NF);

# --------------------------------------------------------------------

# Generierung der Zonen-Datei fuer das Loopback-Interface (localhost -> 127.1)

# Die Standard-Ausgabe wird fuer das Unterprogramm auf die

# entprechende Datei umgelenkt

Page 111:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 0 8 ANHANGA. LISTINGS

$filename = $directory . $filename_lb;

open(NF, ">$filename") || die "Can't open $filename: $!\n";

$OLD_HANDLE = select(NF);

&named_loopback('/' . $files_dir. '/' . $filename_lb, $ipa,

$soa_class, $fqdn, $soa_responsible, $soa_serial,

$soa_refresh, $soa_retry, $soa_expire, $soa_minimum);

select($OLD_HANDLE);

close(NF);

# --------------------------------------------------------------------

# Holen der Zonen-Datei fuer die Root-Domain (via Anonymous FTP)

# Als Passwort wird die E-Mail-Adresse des DNS-Administrators verwendet

$filename = $directory . $filename_ca;

&named_cache($filename, $ftp_host, $ftp_dir, $ftp_file, $soa_responsible);

}

# ----------------------------------------------------------------------

# Schliessen der Cursor globaler SQL-Anfragen

&query_close($csr_hosts);

&query_close($csr_ipaddr);

&query_close($csr_zones);

# ======================================================================

# Ausloggen aus der Datenbank

&logout;

# Programmende

print "Ready.\n";

Page 112:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 3. MODULORA2DNS. PL 1 0 9

A. 3 Modul ora2dns. pl

# **********************************************************************

# * Integration des Managements des Domain-Name-Systems in die *

# * vorhandene Managementumgebung des Leibniz-Rechenzentrums (LRZ) *

# * (Diplomarbeit an der TU-Muenchen, SS 94 - WS 94/95) *

# * ------------------------------------------------------------------ *

# * Autor: Heiko Hauck ([email protected]) *

# * Datei: ora2dns.pl (Oraperl Bibliothek fuer ora2dns) *

# **********************************************************************

# *globale* Variable, auf deren Wert ein DB-Attribut gesetzt wird (vor

# dem Packen), wenn es undefiniert (NULL) ist

$NULL="\0";

# **********************************************************************

# PROZEDUR zum Einlesen der Standard-/Default-Werte (keine Parameter)

# Diese koennen mit Hilfe der Datei $HOME/.ora2dnsrc abgeaendert werden.

# Ergebnis: *globales* assoziatives Array %def

sub set_default

{

# Standardvorbelegung des Arrays

%def =

(

'ORA2DNS.QUALIFIER', '',

'ORA2DNS.FTP_DIR', '/home/a/a2824ch/dipl/perl/ftp',

'HOSTS.RECORD_TTL', '',

'HOSTS.RECORD_CLASS', 'IN',

'MAILX.RECORD_TTL', '',

'MAILX.RECORD_CLASS', 'IN',

'NAMESERVERS.FILENAME_EXE', '/etc/named',

'NAMESERVERS.FILENAME_PID', '/etc/named.pid',

'NAMESERVERS.SOA_CLASS', 'IN',

'NAMESERVERS.SOA_REFRESH', '21600',

'NAMESERVERS.SOA_RETRY', '3600',

'NAMESERVERS.SOA_EXPIRE', '604800',

'NAMESERVERS.SOA_MINIMUM', '172800',

'NAMESERVERS.FILES_DIR', '/etc/namedb',

'NAMESERVERS.FILENAME_LO', 'named.local',

'NAMESERVERS.FILENAME_LB', 'named.loopback',

'NAMESERVERS.FILENAME_CA', 'named.cache',

'NAMESERVERS.FTP_HOST', 'rs.internic.net',

'NAMESERVERS.FTP_DIR', '/domain',

'NAMESERVERS.FTP_FILE', 'named.cache',

'SECONDARY_LL.BACKUPFILE_SUFFIX', '.BF',

'SECONDARY_LF.BACKUPFILE_SUFFIX', '.BF',

'ZONES.SOURCEFILE_SUFFIX', '.DNF',

'ZONES.SOA_CLASS', 'IN',

Page 113:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 1 0 ANHANGA. LISTINGS

'ZONES.SOA_REFRESH', '21600',

'ZONES.SOA_RETRY', '3600',

'ZONES.SOA_EXPIRE', '604800',

'ZONES.SOA_MINIMUM', '172800'

);

# Name der Konfigurationsdatei

local($filename) = $ENV{'HOME'} . '/.ora2dnsrc';

# Aktuelle Zeilennummer beim Auslesen (fuer Fehlermeldungen)

local($line) = 1;

# Falls die Datei existiert, ...

if(-e $filename)

{

# ..., wird sie geoeffnet

open(RCFILE,$filename) || die "Can't open $filename: $!\n";

# zeilenweises Einlesen

while(<RCFILE>)

{

# Kommentarzeilen werden ignoriert

if (/^#/) { $line++; next; }

# Einlesen von Variablenname & -belegung

local($var, $value) = ('', '');

($var, $value) = /^(\S+)\s+(\S+)/;

# Ist die Belegung leer, so wird der Name dennoch eingelesen

if($value eq '') { ($var) = /^(\S+)/; }

# Variablenname gegeben?

if($var ne '')

{

# Im Falle eines undefinierten Namens wird eine Fehlermeldung

# ausgegeben (kein Programmabbruch)

if(!defined($def{$var}))

{

print STDERR "Unknown variable $var in '$filename' line $line\n";

}

else

# gueltiger Variablenname

{

# Folgende Variablen muessen mit einem Wert belegt sein,

# sonst Fehlermeldung und keine Modifikation des bisherigen Wertes

if((length($value) == 0) &&

($var ne 'ORA2DNS.QUALIFIER') &&

($var ne 'HOSTS.RECORD_TTL') &&

($var ne 'MAILX.RECORD_TTL') &&

($var ne 'SECONDARY_LL.BACKUPFILE_SUFFIX') &&

Page 114:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 3. MODULORA2DNS. PL 1 1 1

($var ne 'SECONDARY_LF.BACKUPFILE_SUFFIX') &&

($var ne 'ZONES.SOURCEFILE_SUFFIX'))

{

print STDERR

"Variable $var in '$filename' line $line can't be set to ''\n";

}

else

# Modifikation der Variable

{

$def{$var} = $value;

}

}

}

# neue Zeile

$line++;

}

# Konfigurationsdatei schliessen

close(RCFILE);

}

}

# **********************************************************************

# PROZEDUR zum Einloggen in die Datenbank

# (keine eigenen Parameter, sondern ggf. die des Programmaufrufes)

# Ergebnis: *globale* Variable $lda (Datenbank-ID)

sub login

{

# lokale Variablen

local($login_sid) = 'oracle';

local($login_name,$login_pw);

# Werden beim Programmstart zwei (oder mehrere) Parameter angegeben,

# so werden diese (die ersten beiden) als Login-Name bzw. Passwort

# fuer die Datenbank verwendet, ...

if(@ARGV >= 2)

{

$login_name = @ARGV[0];

$login_pw = @ARGV[1];

}

else

# ..., sonst werden Standardvorgaben eingesetzt:

{

# Die folgenden Zeilen sind an die jeweilige Umgebung anzupassen

$login_name = `cat /home/a/a2824ch/oracle/LOGIN`;

$login_pw = `cat /home/a/a2824ch/oracle/PASSWD`;

Page 115:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 1 2 ANHANGA. LISTINGS

# $login_name = 'nduser';

# $login_pw = 'usernd';

}

# Einloggen

# Misslingt dies, dann Programmabbruch

$lda = &ora_login($login_sid, $login_name, $login_pw) ||

die "$ora_errstr\n";

}

# **********************************************************************

# PROZEDUR zum Ausloggen aus der Datenbank (keine Parameter)

# Voraussetzung: *globale* Variable $lda (Datenbank-ID) vorher gesetzt

sub logout

{

# Ausloggen

# Misslingt dies, dann Programmabbruch

do ora_logoff($lda) || die "Can't log off Oracle\n";

}

# **********************************************************************

# PROZEDUR fuer eine vollstaendige Datenbankabfrage

# Parameter: $_[0] = Query-Text

# $_[1] = Pointer auf die Ergebnisliste mit Tupeln

# Im Falle mehrerer abgefragter Attribute werden diese gepackt.

# Voraussetzung: *globale* Variable $lda (Datenbank-ID) vorher gesetzt

# Rueckgabewert: Anzahl der gefundenen Tupel

sub query

{

# (lokalen) Cursor oeffnen und Abfrage durchfuehren

# Misslingt dies, dann Programmabbruch

local($csr) = &ora_open($lda, $_[0]) || die $ora_errstr;

# lokale Variablen

local(@entry);

local(*entrylist) = $_[1];

local($entrycount) = 0;

# Liste am Anfang leer

@entrylist = ();

# Einlesen saemtlicher Tupel

while(@entry = &ora_fetch($csr))

{

# Ueberpruefung, ob <NULL>-Werte in den Attributen

# vorhanden sind; in diesem Fall werden sie durch den Wert der

# globalen Variable $NULL ersetzt (dieser darf also nicht als

Page 116:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 3. MODULORA2DNS. PL 1 1 3

# Attributbelegung in der DB vorkommen).

# Wuerde man auf diese Massnahme verzichten, so wuerde

# die Information eines <NULL>-Wertes nach join/split

# dahingehend verloren gehen, dass er als Leerstring

# bzw. numerische Null interpretiert werden wuerde.

# Ueberpruefung fuer jedes einzelne Attribut

foreach(@entry)

{

$_ = $NULL unless defined($_);

}

# Packen aller Attribute eines Tupels zu einem Listenelement

# und Eintrag in die Ergebnisliste

push(@entrylist, join($;, @entry));

$entrycount++;

}

# Warnung, falls ein Fehler aufgetreten ist

warn $ora_errstr if $ora_errno;

# Cursor schliessen

# Misslingt dies, dann Programmabbruch

do ora_close($csr) || die "Can't close Oracle cursor\n";

# Anzahl der gefundenen Tupel

$entrycount;

}

# **********************************************************************

# PROZEDUR zum Eroeffnen einer Datenbankabfrage

# Parameter: $_[0] = Query-Text

# Voraussetzung: *globale* Variable $lda (Datenbank-ID) vorher gesetzt

# Rueckgabewert: Cursor fuer die Datenbankabfrage

sub query_open

{

# Cursor oeffnen

# Misslingt dies, dann Programmabbruch

&ora_open($lda, $_[0]) || die $ora_errstr;

}

# **********************************************************************

# PROZEDUR zum Durchfuehren einer Datenbankabfrage

# Parameter: $_[0] = Cursor fuer die Datenbankabfrage

# $_[1] = Pointer auf die Ergebnisliste mit Tupeln

# $_[2..] = Werte der zu bindenden Query-Variablen

# Im Falle mehrerer abgefragter Attribute werden diese gepackt.

Page 117:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 1 4 ANHANGA. LISTINGS

# Rueckgabewert: Anzahl der gefundenen Tupel

sub query_bind

{

# lokale Variablen

local($csr) = shift @_;

local(@entry);

local(*entrylist) = shift @_;

local($entrycount) = 0;

# Liste am Anfang leer

@entrylist = ();

# Binden der Query-Variablen und Abfrage durchfuehren

# Misslingt dies, dann Programmabbruch

&ora_bind($csr,@_) || die $ora_errstr;

# Einlesen saemtlicher Tupel

while(@entry = &ora_fetch($csr))

{

# Ueberpruefung, ob <NULL>-Werte in den Attributen

# vorhanden sind; in diesem Fall werden sie durch den Wert der

# globalen Variable $NULL ersetzt (dieser darf also nicht als

# Attributbelegung in der DB vorkommen).

# Wuerde man auf diese Massnahme verzichten, so wuerde

# die Information eines <NULL>-Wertes nach join/split

# dahingehend verloren gehen, dass er als Leerstring

# bzw. numerische Null interpretiert werden wuerde.

# Ueberpruefung fuer jedes einzelne Attribut

foreach(@entry)

{

$_ = $NULL unless defined($_);

}

# Packen aller Attribute eines Tupels zu einem Listenelement

# und Eintrag in die Ergebnisliste

push(@entrylist, join($;, @entry));

$entrycount++;

}

# Warnung, falls ein Fehler aufgetreten ist

warn $ora_errstr if $ora_errno;

# Anzahl der gefundenen Tupel

$entrycount;

}

# **********************************************************************

Page 118:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 3. MODULORA2DNS. PL 1 1 5

# PROZEDUR zum Schliessen einer Datenbankabfrage

# Parameter: $_[0] = Cursor fuer die Datenbankabfrage

sub query_close

{

# Cursor schliessen

# Misslingt dies, dann Programmabbruch

do ora_close($_[0]) || die "Can't close Oracle cursor\n";

}

# **********************************************************************

# FUNKTION zum Testen, ob ein Attribut undefiniert ist

# Parameter: $_[0] = entpacktes Attribut

# Rueckgabewert: TRUE, falls undefiniert, sonst FALSE

sub testnull

{

$_[0] eq $NULL;

}

# **********************************************************************

# PROZEDUR zum Sicherstellen, dass ein Attribut definiert ist

# (sonst Programmabbruch)

# Parameter: $_[0] = entpacktes Attribut

# $_[1] = Tabellenname

# $_[2] = Attributname

# Voraussetzung: *globale* Variable $DB (Datenbank-Qualifier) vorher gesetzt

sub notnull

{

# Programmabbruch mit Fehlermeldung, falls undefiniert

die "Illegal entry (NULL) for $_[2] in table ${DB}$_[1]\n"

if $_[0] eq $NULL;

}

# **********************************************************************

1;

Page 119:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 1 6 ANHANGA. LISTINGS

A. 4 Modul make di r. pl

# **********************************************************************

# * Integration des Managements des Domain-Name-Systems in die *

# * vorhandene Managementumgebung des Leibniz-Rechenzentrums (LRZ) *

# * (Diplomarbeit an der TU-Muenchen, SS 94 - WS 94/95) *

# * ------------------------------------------------------------------ *

# * Autor: Heiko Hauck ([email protected]) *

# * Datei: make_dir.pl (Oraperl Bibliothek fuer ora2dns) *

# **********************************************************************

# PROZEDUR zum Erstellen eines einzelnen Verzeichnisses innerhalb des

# Unix-Dateibaumes

# Parameter: $_[0] = Name des Verzeichnisses

sub mk_dir

{

# Das Verzeichnis wird nur erstellt, wenn es noch nicht vorhanden ist

if(!(-d $_[0]))

{

# Erstellung mit Leserechten fuer jedermann

if(!mkdir($_[0], 0755))

{

# Misslingt dies, dann Programmabbruch

die "Can't create directory '$_[0]'";

}

# Bestaetigung

print "Creating directory '$_[0]'\n";

}

}

# **********************************************************************

# PROZEDUR zum Erstellen des fuer die Resolverkonfiguration benoetigten

# Verzeichnisbaumes (keine Parameter)

sub make_dir

{

# Wurzel des neuen Verzeichnisbaumes

local($dir) = $def{'ORA2DNS.FTP_DIR'};

# Falls diese nicht exisiert, dann Programmabbruch

if(!(-d $dir))

{

die "Directory '$dir' (for ftp) does not exist";

}

# Auswahl aller Hosts mit Name, Subdomain- und Domainname

# Hierfuer werden innerhalb des angegebenen Verzeichnisses Unterverzeichnisse

# angelegt

Page 120:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 4. MODULMAKEDIR. PL 1 1 7

local(@hosts);

&query(<<" END_SQL", *hosts);

select h.name, h.subdomain_name, z.name

from ${DB}hosts h, ${DB}zones z

where h.zone = z.id

END_SQL

# --------------------------------------------------------------------

# Schleife ueber alle Hosts

for(@hosts)

{

# Parameter fuer den aktuellen Host

local($host, $subdomain, $domain) = split(/$;/);

# $host, $domain koennen nicht NULL sein

# $subdomain darf NULL sein

# Aufbau des FQDN, der den Unterverzeichnisnamen bestimmt

local($fqdn);

if((!&testnull($subdomain)) && (length($subdomain) > 0))

{

$fqdn = $host . '.' . $subdomain . '.' . $domain;

}

else

{

$fqdn = $host . '.' . $domain;

}

# Generieren des Unterverzeichnisses und eines darin enthaltenen

# '/etc'-Verzeichnisses

&mk_dir($dir . '/' . $fqdn);

&mk_dir($dir . '/' . $fqdn . '/etc');

}

}

# **********************************************************************

# PROZEDUR zum Erstellen des fuer die Zonenkonfigurationsdateien benoetigten

# Verzeichnisses

# Parameter: $_[0] = Verzeichnis, in dem das neue erstellt werden soll

# $_[1] = Name des zu erstellenden Verzeichnis(-pfades)

sub make_dir_ns

{

# lokale Parameterkopien

local($dir,$newdir) = @_;

# Liste der einzelnen Knoten im Verzeichnispfad

local(@fdirs) = split(/\//, $newdir);

Page 121:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 1 8 ANHANGA. LISTINGS

# sukzessiver Aufbau des Verzeichnispfades

for(@fdirs)

{

$dir .= '/' . $_;

&mk_dir($dir);

}

}

# **********************************************************************

1;

Page 122:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 5. MODULRES CONF. PL 1 1 9

A. 5 Modul res conf . pl

# **********************************************************************

# * Integration des Managements des Domain-Name-Systems in die *

# * vorhandene Managementumgebung des Leibniz-Rechenzentrums (LRZ) *

# * (Diplomarbeit an der TU-Muenchen, SS 94 - WS 94/95) *

# * ------------------------------------------------------------------ *

# * Autor: Heiko Hauck ([email protected]) *

# * Datei: res_conf.pl (Oraperl Bibliothek fuer ora2dns) *

# **********************************************************************

# PROZEDUR zur formatierten Ausgabe eines Nameserver-Eintrags

# Parameter: $_[0] = IP-Adresse des Nameservers

# $_[1] = FQDN des Nameservers

# Pro Konfigurationsdatei max. 3 Nameserver (*globale* Variable $nsc)

sub print_nameserver

{

# Noch ein Eintrag zulaessig?

if($nsc < 3)

{

# formatierte Ausgabe und Zaehlererhoehung

print "nameserver @_[0]", " " x (20 - length(@_[0])), "# @_[1]\n";

$nsc++;

}

}

# **********************************************************************

# PROZEDUR zur Bestimmung des "optimalen" Weges zwischen zwei Hosts

# mit jeweils einer oder mehreren IP-Adressen; dabei die die guenstigste

# Adresse des Zielhosts ausgewaehlt und aus der Zieladressenliste gestrichen

# Das hierzu verwendete Verfahren basiert auf einem Vergleich der

# Subnetzmasken; diese Prozedur kann evtl. durch eine bessere ersetzt

# werden (siehe Ausarbeitung)

# Parameter: $_[0] = Pointer auf Liste mit IP-Adressen des Quellhosts

# $_[1] = Pointer auf Liste mit IP-Adressen des Zielhosts

# Rueckgabewert: s. oben

sub best_route

{

# Lokale Parameterkopien und Variablen

local(*sourcelist) = $_[0];

local(*destlist) = $_[1];

local($fits) = -1; # Anzahl der bisher max. identischen Bytes

local($offset); # Nummer der zugehoerigen Ziel-IP-Adresse

# Schleife ueber alle Quellhost-IP-Adressen

SOURCE:

Page 123:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 2 0 ANHANGA. LISTINGS

for(@sourcelist)

{

# Extrahieren der Quellhost-IP-Adresse

local($a,$b,$c,$d) =

/\x20{0,2}(\d{1,3})\.\x20{0,2}(\d{1,3})\.\x20{0,2}(\d{1,3})\.\x20{0,2}(\d{1,3})/;

# Nummer der jeweiligen Zielhost-IP-Adresse

local($o)=0;

# Schleife ueber alle Zielhost-IP-Adressen

for(@destlist)

{

# Extrahieren der Quellhost-IP-Adresse

# Programmabbruch im Falle eines syntaktischen Fehlers

die "Illegal entry for ip_addr in table ${DB}ipaddr\n" unless

/\x20{0,2}(\d{1,3})\.\x20{0,2}(\d{1,3})\.\x20{0,2}(\d{1,3})\.\x20{0,2}(\d{1,3})/;

# Stufenweiser Byte-Vergleich zur Bestimmung des Uebereinstimmungsgrades

# beider Adressen

local($f);

if($1 == $a)

{

if($2 == $b)

{

if($3 == $c)

{

if($4 == $d) { $f = 4; } # Identische Adressen

else { $f = 3; } # Bytes 1-3 gleich

}

else { $f = 2; } # Bytes 1-2 gleich

}

else { $f = 1; } # Byte 1 gleich

}

else { $f = 0; } # Voellig verschiedene Adressen

# Verbesserung gegenueber bisher?

if($fits < $f)

{

# Neuer Uebereinstimmungsgrad und Nummer

$fits = $f;

$offset = $o;

# Bei identischen Adressen keine Verbesserung mehr moeglich,

# deshalb Schleifenabbruch

last SOURCE if($fits == 4);

}

$o++;

}

}

# Auswahl und Ausschneiden der besten IP-Adresse aus der Zielhostliste

Page 124:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 5. MODULRES CONF. PL 1 2 1

splice(@destlist,$offset,1);

}

# **********************************************************************

# PROZEDUR zur Erstellung saemtlicher Resolverkonfigurationsdateien

# Parameter: keine

sub res_conf

{

# Auswahl aller Hosts mit ihren Identifikatoren, Namen, Subdomain-Namen &

# Identifikatoren der zugehoerigen Zonen

local(@hosts);

&query(<<" END_SQL", *hosts);

select id, name, subdomain_name, zone from ${DB}hosts

END_SQL

# Auswahl des Domain-Namens & Host-Identifikators, auf dem der

# zugehoerige Primary Nameserver laeuft, fuer eine bestimmte Zone

local($csr_1) = &query_open(<<" END_SQL");

select z.name, n.host from ${DB}nameservers n, zones z

where n.id = z.prim_nameserver and z.id = :1

END_SQL

# Auswahl aller IP-Adressen eines bestimmten Hosts

local($csr_2) = &query_open(<<" END_SQL");

select ip_addr from ${DB}ipaddr where host = :1

END_SQL

# Auswahl der Host-Identifikatoren von lokalen Secondary Nameservern,

# die eine bestimmte lokale Zone spiegeln

local($csr_3) = &query_open(<<" END_SQL");

select n.host

from ${DB}nameservers n, ${DB}secondary_ll s

where n.id = s.nameserver and s.zone = :1

END_SQL

# Auswahl der Hosts mit ihren Namen, Subdomain- & Domainnamen,

# die eine bestimmte IP-Adresse besitzen

local($csr_4) = &query_open(<<" END_SQL");

select h.name, h.subdomain_name, z.name

from ${DB}hosts h, ${DB}ipaddr i, ${DB}zones z

where h.id = i.host and h.zone=z.id and i.ip_addr = :1

END_SQL

# --------------------------------------------------------------------

# Schleife ueber saemtliche Hosts

for(@hosts)

{

# Anzahl der Nameserver pro Konfig.Datei: *globale* Variable $nsc

Page 125:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 2 2 ANHANGA. LISTINGS

$nsc = 0;

# Parameter fuer den aktuellen Host

local($id, $name, $subdomain, $zone) = split(/$;/);

# $id, $name koennen nicht NULL sein

# $zone darf nicht NULL sein (&notnull ...)

# $subdomain_name darf NULL sein

&notnull($zone, 'hosts', 'zone');

# ------------------------------------------------------------------

# Auswahl des Primary Nameservers der Zone des aktuellen Hosts

local(@dn_pnsh);

&query_bind($csr_1, *dn_pnsh, $zone);

# Ergebnis = 1 Tupel

local($domain, $pns_host) = split(/$;/,@dn_pnsh[0]);

# $domain, $pns_host koennen nicht NULL sein

# Vollstaendiger Domainname

if((!&testnull($subdomain)) && (length($subdomain) > 0))

{

$domain = $subdomain . '.' . $domain;

}

# Ausgabedatei oeffnen und Standardausgabe dorthin umlenken

local($filename) = $def{'ORA2DNS.FTP_DIR'} . '/' .

$name . '.' . $domain . '/etc/resolv.conf';

open(NF,">$filename") || die "Can't open $filename: $!\n";

local($OLD_HANDLE)=select(NF);

# IP-Adresse des aktuellen Hosts bestimmen

local(@ipa_host);

&query_bind($csr_2, *ipa_host, $id);

# $ipa_host[..] kann nicht NULL sein

# Auswahl der "ersten" IP-Adresse

local($ipa) = $ipa_host[0];

# Eliminieren von darin enthaltenen Leerzeichen

$ipa =~ s/\x20//g;

# ------------------------------------------------------------------

# Ausgabe des Dateikopfes

print "# /etc/resolv.conf for $name.$domain [$ipa]\n";

print "# created by ora2dns (08/94 by Heiko Hauck; Diplomarbeit TUM)\n\n";

print "# User: ", `whoami`;

print "# Date: ", `date`, "\n";;

print "domain $domain\n\n";

# ------------------------------------------------------------------

Page 126:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 5. MODULRES CONF. PL 1 2 3

# Laeuft der Primary Nameserver auf dem aktuellen Host, so wird dieser

# sofort eingetragen, ...

local(@ipa_nsh);

if($psn_host == $id)

{

&print_nameserver('127.0.0.1', 'localhost');

}

else

# ..., sonst wird seine "beste" IP-Adresse in eine Liste (@ipa_nsh)

# eingetragen

{

local(@ipa);

&query_bind($csr_2, *ipa, $pns_host);

# $ipa[..] kann nicht NULL sein

@ipa_nsh = (&best_route(*ipa_host, *ipa));

}

# ------------------------------------------------------------------

# Auswahl der Secondary Nameserver der Zone des aktuellen Hosts

local(@sns_hosts);

&query_bind($csr_3, *sns_hosts, $zone);

# $sns_hosts[..] kann nicht NULL sein

# Schleife ueber alle Secondary Nameserver

for(@sns_hosts)

{

# Laeuft der Nameserver auf dem aktuellen Host, so wird dieser

# sofort eingetragen, ...

if($_ == $id)

{

if ($nsc == 0)

{

&print_nameserver('127.0.0.1', 'localhost');

}

}

else

# ..., sonst wird seine "beste" IP-Adresse in eine Liste (@ipa_nsh)

# eingetragen

{

local(@ipa);

&query_bind($csr_2, *ipa, $_);

# $ipa[..] kann nicht NULL sein

push(@ipa_nsh,&best_route(*ipa_host, *ipa));

}

}

# ------------------------------------------------------------------

Page 127:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 2 4 ANHANGA. LISTINGS

# Eintragen der (restlichen) Nameserver in die Datei

# Schleife ueber die jeweils "besten" IP-Adressen der Nameserverhosts

while(@ipa_nsh)

{

# Auswahl und Ausaschneiden der "besten" Adresse der Liste

local($ipa) = &best_route(*ipa_host,*ipa_nsh);

# Auswahl des zugehoerigen Hosts (Name, Subdomain- & Domainname)

local(@hn_sn_dn);

if(&query_bind($csr_4, *hn_sn_dn, $ipa) !=1 )

{

# Programmabbruch, falls eine IP-Adresse mehreren Hosts zugeordnet

# werden kann

die "Multiple hosts for one IP address";

}

local($host, $subdomain, $domain) = split(/$;/,$hn_sn_dn[0]);

# $host, $domain koennen nicht NULL sein

# $subdomain darf NULL sein

# Vollstaendiger Domainname

if((!&testnull($subdomain)) && (length($subdomain) > 0))

{

$domain = $subdomain . '.' . $domain;

}

# Eliminieren von darin enthaltenen Leerzeichen

$ipa =~ s/\x20//g;

# Eintrag

&print_nameserver($ipa, $host . '.' . $domain);

}

# Standardausgabe wieder herstellen und Datei schliessen

select($OLD_HANDLE);

close(NF);

}

# Schliessen der oben fuer die Datenbankabfrage geoeffneten Cursor

&query_close($csr_1);

&query_close($csr_2);

&query_close($csr_3);

&query_close($csr_4);

}

# **********************************************************************

1;

Page 128:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 6. MODULNAMEDBOOT. PL 1 2 5

A. 6 Modul named boot . pl

# **********************************************************************

# * Integration des Managements des Domain-Name-Systems in die *

# * vorhandene Managementumgebung des Leibniz-Rechenzentrums (LRZ) *

# * (Diplomarbeit an der TU-Muenchen, SS 94 - WS 94/95) *

# * ------------------------------------------------------------------ *

# * Autor: Heiko Hauck ([email protected]) *

# * Datei: named_boot.pl (Oraperl Bibliothek fuer ora2dns) *

# **********************************************************************

# PROZEDUR zur Generierung einer Nameserver-Bootdatei

# Parameter: $_[0] = IP-Adresse des Nameserverhosts (ohne Leerzeichen)

# $_[1] = FQDN des Nameserverhosts

# $_[2] = ID des Nameservers

# $_[3] = Name der Root-Domain-Datei (Cache Service)

# $_[4] = Pointer auf Liste mit IP-Adressen des Nameserverhosts

# $_[5] = Verzeichnis, in dem die Zonendateien abgelegt werden

# $_[6] = Name der Localhost-Zonendatei (127.1 -> localhost)

# $_[7] = Name der Loopback-Zonendatei (localhost -> 127.1)

# Die Ausgabe erfolgt zur Standard-Ausgabe.

sub named_boot

{

# Auswahl der Domainnamen und Sourcefile-Namen,

# deren Zonen einen best. Primary Nameserver haben

local($csr_prim) = &query_open(<<" END_SQL");

select name, sourcefile from ${DB}zones where prim_nameserver = :1

END_SQL

# Auswahl des Backupfile-Namens, Domainnamens & lokalen Primary Nameservers

# fuer Zonen, die einen bestimmten lokalen Secondary Nameserver haben

local($csr_sec_ll) = &query_open(<<" END_SQL");

select s.backupfile, z.name, z.prim_nameserver

from ${DB}secondary_ll s, ${DB}zones z

where z.id = s.zone and s.nameserver = :1

END_SQL

# Auswahl der IP-Adressen eines bestimmten Primary Nameservers

local($csr_ipaddr) = &query_open(<<" END_SQL");

select i.ip_addr

from ${DB}ipaddr i, ${DB}nameservers n

where i.host = n.host and n.id = :1

END_SQL

# Auswahl fremder Domainnamen, deren Prim.Nameserver-IP-Adressen und

# Backupfile-Namen, die einen bestimmten lokalen Secondary Nameserver haben

local($csr_sec_lf) = &query_open(<<" END_SQL");

select zone_name, ip_addr, backupfile

from ${DB}secondary_lf

where nameserver = :1

Page 129:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 2 6 ANHANGA. LISTINGS

END_SQL

# Auswahl der Forwarder-IP-Adressen eines bestimmten Slave Nameservers

local($csr_forward) = &query_open(<<" END_SQL");

select ip_addr from ${DB}forwarders where nameserver = :1

END_SQL

# Test, ob ein bestimmter Nameserver Slave Nameserver ist

local($csr_slave) = &query_open(<<" END_SQL");

select count(*) from ${DB}nameservers_slave where nameserver = :1

END_SQL

# --------------------------------------------------------------------

# Ausgabe des Dateikopfes

print "; /etc/named.boot for $_[1] [$_[0]]\n";

print "; created by ora2dns (08/94 by Heiko Hauck; Diplomarbeit TUM)\n";

print ";\n";

print "; User: ", `whoami`;

print "; Date: ", `date`;

print ";\n";

print "; type\t\tdomain\t\t\tsource file or host\tbackup file\n";

print ";\n";

# Ausgabe des Verzeichnisses, in dem die Zonendateien abgelegt werden

print "directory\t/$_[5]\n";

# --------------------------------------------------------------------

# Zonen-Eintraege fuer den Primary Service des Nameservers

# Hinweis als Kommentarzeile

print "; primary nameserver:\n";

# Endung der Zonendateinamen

local($suffix) = $def{'ZONES.SOURCEFILE_SUFFIX'};

# Zonen bestimmen

local(@prim);

&query_bind($csr_prim, *prim, $_[2]);

# Schleife ueber alle betroffenen Zonen

for(@prim)

{

# Parameter der aktuellen Zone

local($domainname, $sourcefile) = split(/$;/);

# $domainname kann nicht NULL sein

# $sourcefile darf NULL sein

# Wird der Name der Zonendatei nicht explizit angegeben, ...

if(&testnull($sourcefile))

Page 130:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 6. MODULNAMEDBOOT. PL 1 2 7

{

# ..., so wird der Domainname + Suffix verwendet

$sourcefile = $domainname . $suffix;

}

# Eintrag in die Bootdatei

print "primary\t\t$domainname\t$sourcefile\n";

}

# Standardeintraege in der Bootdatei, da jeder Nameserver Primary Nameserver

# fuer das Loopback-Interface (forward & reverse) ist

print "primary\t\t0.0.127.in-addr.arpa\t$_[6]\n";

print "primary\t\tlocalhost\t\t$_[7]\n";

# --------------------------------------------------------------------

# Zonen-Eintraege fuer den Secondary Service des Nameservers

# Hinweis als Kommentarzeile

print "; secondary nameserver:\n";

# Endung der Zonendateinamen (lokale Zonen)

$suffix = $def{'SECONDARY_LL.BACKUPFILE_SUFFIX'};

# Lokale Zonen bestimmen

local(@sec_ll);

&query_bind($csr_sec_ll, *sec_ll, $_[2]);

# Schleife ueber alle betroffenen Zonen

for(@sec_ll)

{

# Parameter der aktuellen Zone

local($backupfile, $domainname, $prim_id) = split(/$;/);

# $backupfile darf NULL sein

# $domainname, $prim_id koennen nicht NULL sein

# IP-Adressen des zugehoerigen Primary Nameservers bestimmen ...

local(@ipaddr);

&query_bind($csr_ipaddr, *ipaddr, $prim_id);

# $ipaddr[..] kann nicht NULL sein

# ... und die "beste" davon auswaehlen

local($ipa) = &best_route($_[4], *ipaddr);

# Eliminieren von darin enthaltenen Leerzeichen

$ipa =~ s/\x20//g;

# Wird der Name der Zonendatei nicht explizit angegeben, ...

if(&testnull($backupfile))

{

# ..., so wird der Domainname + Suffix verwendet

Page 131:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 2 8 ANHANGA. LISTINGS

$backupfile = $domainname . $suffix;

}

# Eintrag in die Bootdatei

print "secondary\t$domainname\t$ipa\t$backupfile\n";

}

# --------------------------------------------------------------------

# Endung der Zonendateinamen (fremde Zonen)

$suffix = $def{'SECONDARY_LF.BACKUPFILE_SUFFIX'};

# Fremde Zonen bestimmen

local(@sec_lf);

&query_bind($csr_sec_lf, *sec_lf, $_[2]);

# Schleife ueber alle betroffenen Zonen

for(@sec_lf)

{

# Parameter der aktuellen Zone

local($domainname, $ipa, $backupfile) = split(/$;/);

# $domainname, $ipa koennen nicht NULL sein

# $backupfile darf NULL sein

# Eliminieren von in der IP-Adresse enthaltenen Leerzeichen

$ipa =~ s/\x20//g;

# Wird der Name der Zonendatei nicht explizit angegeben, ...

if(&testnull($backupfile))

{

# ..., so wird der Domainname + Suffix verwendet

$backupfile = $domainname . $suffix;

}

# Eintrag in die Bootdatei

print "secondary\t$domainname\t$ipa\t$backupfile\n";

}

# --------------------------------------------------------------------

# Forwarding-Eintraege, Nameserver als Forwarder Nameserver arbeitet

# Forwarder-IP-Adressen bestimmen

local(@forward);

&query_bind($csr_forward, *forward, $_[2]);

# Sind welche vorhanden?

if(@forward > 0)

{

# Hinweis als Kommentarzeile

print "; forwarding nameservers:\n";

Page 132:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 6. MODULNAMEDBOOT. PL 1 2 9

# Eliminieren von in den IP-Adressen enthaltenen Leerzeichen

for(@forward)

{

s/\x20//g;

}

# Eintrag in die Bootdatei

print "forwarders\t", join(' ', @forward), "\n";

# Laeuft der Nameserver als Slave, ...

local(@slave);

&query_bind($csr_slave, *slave, $_[2]);

if($slave[0] > 0)

{

# ..., so gibt es einen entsprechenden Eintrag in die Bootdatei

print "slave\n";

}

}

# --------------------------------------------------------------------

# Standardeintrag in der Bootdatei, da jeder Nameserver Cache Nameserver

# fuer die Root-Domain ist

print "; cache nameserver:\n";

print "cache\t\t.\t\t\t$_[3]\n";

# Schliessen der oben fuer die Datenbankabfrage geoeffneten Cursor

&query_close($csr_prim);

&query_close($csr_sec_ll);

&query_close($csr_ipaddr);

&query_close($csr_sec_lf);

&query_close($csr_forward);

&query_close($csr_slave);

}

# **********************************************************************

1;

Page 133:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 3 0 ANHANGA. LISTINGS

A. 7 Modul named f orward. pl

# **********************************************************************

# * Integration des Managements des Domain-Name-Systems in die *

# * vorhandene Managementumgebung des Leibniz-Rechenzentrums (LRZ) *

# * (Diplomarbeit an der TU-Muenchen, SS 94 - WS 94/95) *

# * ------------------------------------------------------------------ *

# * Autor: Heiko Hauck ([email protected]) *

# * Datei: named_forward.pl (Oraperl Bibliothek fuer ora2dns) *

# **********************************************************************

# PROZEDUR zur Generierung einer Zonen-Datei fuer das Forward Mapping

# Parameter: $_[0] = Name der Datei

# $_[1] = FQDN des Nameserverhosts

# $_[2] = IP-Adresse des Nameserverhosts

# $_[3] = Klasse des SOA-Records

# $_[4] = E-Mail-Adresse (SOA-Responsible)

# $_[5] = Seriennummer im SOA-Record

# $_[6] = Refresh-Intervall im SOA-Record

# $_[7] = Retry-Intervall im SOA-Record

# $_[8] = Expire-Intervall im SOA-Record

# $_[9] = Minimum-Intervall im SOA-Record

# $_[10] = Domainname der Zone

# $_[11] = Identifikator der Zone

# $_[12] = TTL fuer Glue-Records

# $_[13] = Klasse der Glue-Records

# Die Ausgabe erfolgt zur Standard-Ausgabe.

sub named_forward

{

# Ausgabe des Dateikopfes

print "; $_[0] for $_[1] [$_[2]]\n";

print "; created by ora2dns (08/94 by Heiko Hauck; Diplomarbeit TUM)\n";

print ";\n";

print "; User: ", `whoami`;

print "; Date: ", `date`;

print ";\n";

# Ausgabe der betroffenen Zone

print "\$ORIGIN\t\t$_[10].\n";

# Ausgabe des SOA-Records fuer diese Zone

print "\@\t\t$_[3]\tSOA\t$_[1]. $_[4]. (\n";

print "\t\t\t\t\t$_[5] ; serial\n";

print "\t\t\t\t\t$_[6] ; refresh\n";

print "\t\t\t\t\t$_[7] ; retry\n";

print "\t\t\t\t\t$_[8] ; expire\n";

print "\t\t\t\t\t$_[9] ) ; minimum\n";

# --------------------------------------------------------------------

Page 134:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 7. MODULNAMEDFORWARD. PL 1 3 1

# Eintrag fuer den Primary Nameserver der Zone

print "\t\tIN\tNS\t$_[1].\n";

# --------------------------------------------------------------------

# Anlegen einer Liste fuer potentielle Glue-Records

# folgende Attribute werden dabei als Listenelement gepackt:

# FQDN, TTL, Class, IP-Adresse (Reihenfolge wie angegeben)

# Primary Nameserver Host ist Kandidat fuer Glue-Record

local(@glue) = (join($;, ($_[1], $_[12], $_[13], $_[2])));

# --------------------------------------------------------------------

# Lokale Secondary Nameserver fuer die Zone

local(@servers);

&query(<<" END_SQL", *servers);

select h.id, h.name, h.subdomain_name, h.record_ttl, h.record_class, z.name

from ${DB}zones z, ${DB}hosts h, ${DB}nameservers n, ${DB}secondary_ll s

where z.id = h.zone and h.id = n.host and

n.id = s.nameserver and s.zone = $_[11]

END_SQL

# Auswahl aller IP-Adressen eines bestimmten Hosts

local($csr_ipaddr) = &query_open(<<" END_SQL");

select ip_addr from ${DB}ipaddr where host = :1

END_SQL

# Schleife ueber alle betroffenen Nameserver

for(@servers)

{

# Parameter des aktuellen Nameservers

local($id, $hostname, $subdomainname, $record_ttl, $record_class,

$domainname) = split(/$;/);

# $id, $hostname, $domainname koennen nicht NULL sein

# $subdomainname, $record_ttl, $record_class duerfen NULL sein

# Aufbau des Fully Qualified Domain Name fuer den Nameserver-Host

local($fqdn);

if((!&testnull($subdomainname)) && (length($subdomainname) > 0))

{

$fqdn = $hostname . '.' . $subdomainname . '.' . $domainname;

}

else

{

$fqdn = $hostname . '.' . $domainname;

}

# Eintrag fuer den Nameserver

print "\t\tIN\tNS\t$fqdn.\n";

Page 135:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 3 2 ANHANGA. LISTINGS

# ------------------------------------------------------------------

# Secondary Nameserver Host ist Kandidat fuer Glue-Record

# Record-TTL und -Class

if(&testnull($record_ttl))

{ $record_ttl = $def{'HOSTS.RECORD_TTL'}; }

if(&testnull($record_class))

{ $record_class = $def{'HOSTS.RECORD_CLASS'}; }

# IP-Adresse des Nameserver-Hosts

local(@ipaddr);

&query_bind($csr_ipaddr, *ipaddr, $id);

# $ipaddr[..] kann nicht NULL sein

local($ipa) = $ipaddr[0];

# Loeschen von Leerzeichen in der Adresse (DB-Konvention)

$ipa =~ s/\x20//g;

# Eintrag in die Liste

push(@glue, join($;, ($fqdn, $record_ttl, $record_class, $ipa)));

}

# --------------------------------------------------------------------

# Achtung: 'Perl' ueberschreibt aktuelle Parameter ohne entspr. Zuweisung!

# Deshalb: Kopie in lokale Variable

local($current) = $_[10];

# --------------------------------------------------------------------

# Fremde Secondary Nameserver fuer die Zone

# Auswahl der FQDNs und IP-Adressen der betroffenen Nameserver

&query(<<" END_SQL", *servers);

select ip_name, ip_addr from ${DB}secondary_fl where zone = $_[11]

END_SQL

# Schleife ueber alle betroffenen Nameserver

for(@servers)

{

# Parameter des aktuellen Nameservers

local($ip_name, $ip_addr) = split(/$;/);

# $ip_name kann nicht NULL sein

# $ip_addr darf u.U. NULL sein

# Eintrag fuer den Nameserver

print "\t\tIN\tNS\t$ip_name.\n";

# ------------------------------------------------------------------

Page 136:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 7. MODULNAMEDFORWARD. PL 1 3 3

# Secondary Nameserver Host ist Kandidat fuer Glue-Record,

# falls sein FQDN in der zur aktuellen Zone gehoerigen Domain liegt

if($ip_name =~ /\.$current$/i)

{

# In diesem Fall muss seine IP-Adresse angegeben werden,

# sonst Programmabbruch

&notnull($ip_addr, 'ip_addr', 'secondary_fl');

# Loeschen von Leerzeichen in der Adresse (DB-Konvention)

$ip_addr =~ s/\x20//g;

# Eintrag in die Liste

push(@glue, join($;, ($ip_name, '', 'IN', $ip_addr)));

}

}

# --------------------------------------------------------------------

# Nameserver Eintraege fuer delegierte (lokale) Subdomains

# Auswahl aller Zonen, die die aktuelle Zone als Vaterzone haben

local(@domains);

&query(<<" END_SQL", *domains);

select id, name, prim_nameserver from ${DB}zones where parent = $_[11]

END_SQL

# Auswahl von ID, Namen, Subdomainnamen, RR-Parameter und Domainnamen

# eines Hosts, auf dem ein bestimmter Primary Nameserver laeuft

local($csr_prim) = &query_open(<<" END_SQL");

select h.id, h.name, h.subdomain_name, h.record_ttl, h.record_class, z.name

from ${DB}zones z, ${DB}hosts h, ${DB}nameservers n

where z.id = h.zone and h.id = n.host and n.id = :1

END_SQL

# Auswahl von ID, Namen, Subdomainnamen, RR-Parameter und Domainnamen

# von Hosts, auf denen fuer eine bestimmte Zone Secondary Nameserver laufen

local($csr_serv) = &query_open(<<" END_SQL");

select h.id, h.name, h.subdomain_name, h.record_ttl, h.record_class, z.name

from ${DB}zones z, ${DB}hosts h, ${DB}nameservers n, ${DB}secondary_ll s

where z.id = h.zone and h.id = n.host and

n.id = s.nameserver and s.zone = :1

END_SQL

# Auswahl von fremden Secondary Nameservern fuer eine bestimmte Zone

local($csr_secf) = &query_open (<<" END_SQL");

select ip_name, ip_addr from ${DB}secondary_fl where zone = :1

END_SQL

# --------------------------------------------------------------------

# Schleife ueber alle delegierten lokalen Subdomains

Page 137:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 3 4 ANHANGA. LISTINGS

for(@domains)

{

# Parameter der akuellen Subdomain

local($id, $name, $prim_nameserver) = split(/$;/);

# $id, $name & $prim_nameserver koennen nicht NULL sein

# Subdomain-Name (innerhalb) der Domain bestimmen

local($subdomain) = $name;

$subdomain =~ s/\.$current$//i;

# Primary Nameserver fuer Subdomain

local(@prim);

&query_bind($csr_prim, *prim, $prim_nameserver);

local($hostid, $hostname, $subdomainname, $record_ttl,

$record_class, $domainname) = split(/$;/, $prim[0]);

# $hostid, $hostname, $domainname koennen nicht NULL sein

# $subdomainname, $record_ttl, $record_class duerfen NULL sein

# Aufbau des Fully Qualified Domain Name fuer den Primary Nameserver

local($fqdn);

if((!&testnull($subdomainname)) && (length($subdomainname) > 0))

{

$fqdn = $hostname . '.' . $subdomainname . '.' . $domainname;

}

else

{

$fqdn = $hostname . '.' . $domainname;

}

# Ausgabe des Subdomain-Namens mit Primary Nameserver

print "$subdomain\t\tIN\tNS\t$fqdn.\n";

# ------------------------------------------------------------------

# Primary Nameserver Host ist Kandidat fuer Glue-Record

# Record-TTL und -Class

if(&testnull($record_ttl))

{ $record_ttl = $def{'HOSTS.RECORD_TTL'}; }

if(&testnull($record_class))

{ $record_class = $def{'HOSTS.RECORD_CLASS'}; }

# IP-Adresse des Nameserver-Hosts

local(@ipaddr);

&query_bind($csr_ipaddr, *ipaddr, $hostid);

# $ipaddr[..] kann nicht NULL sein

local($ipa) = $ipaddr[0];

# Loeschen von Leerzeichen in der Adresse (DB-Konvention)

$ipa =~ s/\x20//g;

Page 138:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 7. MODULNAMEDFORWARD. PL 1 3 5

# Eintrag in die Liste

push(@glue, join($;, ($fqdn, $record_ttl, $record_class, $ipa)));

# ------------------------------------------------------------------

# Lokale Secondary Nameserver fuer die Subdomain

local(@serv);

&query_bind($csr_serv, *serv, $id);

# Schleife ueber alle lokalen Secondary Nameserver

for(@serv)

{

# Host-Parameter des aktuellen Nameservers

local($id, $hostname, $subdomainname, $record_ttl, $record_class,

$domainname) = split(/$;/);

# $id, $hostname, $domainname koennen nicht NULL sein

# $subdomainname, $record_ttl, $record_class duerfen NULL sein

# Aufbau des Fully Qualified Domain Name fuer den Secondary Nameserver

local($fqdn);

if((!&testnull($subdomainname)) && (length($subdomainname) > 0))

{

$fqdn = $hostname . '.' . $subdomainname . '.' . $domainname;

}

else

{

$fqdn = $hostname . '.' . $domainname;

}

# Ausgabe des Secondary Nameservers

print "\t\tIN\tNS\t$fqdn.\n";

# ----------------------------------------------------------------

# Secondary Nameserver Host ist Kandidat fuer Glue-Record

# Record-TTL und -Class

if(&testnull($record_ttl))

{ $record_ttl = $def{'HOSTS.RECORD_TTL'}; }

if(&testnull($record_class))

{ $record_class = $def{'HOSTS.RECORD_CLASS'}; }

# IP-Adresse des Nameserver-Hosts

local(@ipaddr);

&query_bind($csr_ipaddr, *ipaddr, $id);

# $ipaddr[..] kann nicht NULL sein

local($ipa) = $ipaddr[0];

# Loeschen von Leerzeichen in der Adresse (DB-Konvention)

$ipa =~ s/\x20//g;

Page 139:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 3 6 ANHANGA. LISTINGS

# Eintrag in die Liste

push(@glue, join($;, ($fqdn, $record_ttl, $record_class, $ipa)));

}

# ------------------------------------------------------------------

# Fremde Secondary Nameserver fuer die Subdomain

local(@secf);

&query_bind($csr_secf, *secf, $id);

# Schleife ueber alle fremden Secondary Nameserver

for(@secf)

{

# Parameter des aktuellen Nameservers

local($ip_name, $ip_addr) = split(/$;/);

# $ip_name kann nicht NULL sein

# $ip_addr darf u.U. NULL sein

# Eintrag fuer den Nameserver

print "\t\tIN\tNS\t$ip_name.\n";

# ----------------------------------------------------------------

# Secondary Nameserver Host ist Kandidat fuer Glue-Record,

# falls sein FQDN in der zur aktuellen Zone gehoerigen Domain liegt

if($ip_name =~ /\.$current$/i)

{

# In diesem Fall muss seine IP-Adresse angegeben werden,

# sonst Programmabbruch

&notnull($ip_addr, 'ip_addr', 'secondary_fl');

# Loeschen von Leerzeichen in der Adresse (DB-Konvention)

$ip_addr =~ s/\x20//g;

# Eintrag in die Liste

push(@glue, join($;, ($ip_name, '', 'IN', $ip_addr)));

}

}

}

# Schliessen der fuer delegierte (lokale) Subdomains geoeffneten DB-Cursor

&query_close($csr_prim);

&query_close($csr_serv);

&query_close($csr_secf);

# --------------------------------------------------------------------

# Nameserver Eintraege fuer delegierte (fremde) Subdomains

# Auswahl der fremden Zonen (mit Primary Nameserver), die die aktuelle Zone

# als Vaterzone haben

Page 140:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 7. MODULNAMEDFORWARD. PL 1 3 7

local(@del_zones);

&query(<<" END_SQL", *del_zones);

select id, name, pns_ip_name, pns_ip_addr

from ${DB}del_zones where parent = $_[11]

END_SQL

# Auswahl der (fremden) Secondary Nameserver einer bestimmten delegierten

# fremden Zone

local($csr_dzs) = &query_open (<<" END_SQL");

select sns_ip_name, sns_ip_addr from ${DB}del_zones_sec where del_zone = :1

END_SQL

# Auswahl der lokalen Secondary Nameserver einer bestimmten fremden Zone

local($csr_seclf) = &query_open (<<" END_SQL");

select h.name, h.subdomain_name, z.name

from ${DB}zones z, ${DB}hosts h, ${DB}nameservers n, ${DB}secondary_lf s

where z.id = h.zone and h.id = n.host and

n.id = s.nameserver and s.zone_name = :1

END_SQL

# Schleife ueber alle delegierten fremden Subdomains

for(@del_zones)

{

# Parameter der aktuellen Subdomain

local($id, $name, $pns_ip_name, $pns_ip_addr) = split(/$;/);

# $id, $name & $pns_ip_name koennen nicht NULL sein

# $pns_ip_addr darf u.U. NULL sein

local($subdomain) = $name;

# Subdomain-Name (innerhalb) der Domain bestimmen

$subdomain =~ s/\.$current$//i;

# Ausgabe des Subdomain-Namens mit Primary Nameserver

print "$subdomain\tIN\tNS\t$pns_ip_name.\n";

# ------------------------------------------------------------------

# Primary Nameserver Host ist Kandidat fuer Glue-Record,

# falls sein FQDN in der zur aktuellen Zone gehoerigen Domain liegt

if($pns_ip_name =~ /\.$current$/i)

{

# In diesem Fall muss seine IP-Adresse angegeben werden,

# sonst Programmabbruch

&notnull($pns_ip_addr, 'pns_ip_addr', 'del_zones');

# Loeschen von Leerzeichen in der Adresse (DB-Konvention)

$pns_ip_addr =~ s/\x20//g;

# Eintrag in die Liste

push(@glue, join($;, ($pns_ip_name, '', 'IN', $pns_ip_addr)));

}

Page 141:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 3 8 ANHANGA. LISTINGS

# ------------------------------------------------------------------

# Fremde Secondary Nameserver

local(@dzs);

# Schleife ueber alle fremden Secondary Nameserver

&query_bind($csr_dzs, *dzs, $id);

for(@dzs)

{

# Parameter des aktuellen Nameservers

local($sns_ip_name, $sns_ip_addr) = split(/$;/);

# $sns_ip_name kann nicht NULL sein

# $sns_ip_addr darf u.U. NULL sein

# Ausgabe des Secondary Nameservers

print "\t\tIN\tNS\t$sns_ip_name.\n";

# ----------------------------------------------------------------

# Secondary Nameserver Host ist Kandidat fuer Glue-Record,

# falls sein FQDN in der zur aktuellen Zone gehoerigen Domain liegt

if($sns_ip_name =~ /\.$current$/i)

{

# In diesem Fall muss seine IP-Adresse angegeben werden,

# sonst Programmabbruch

&notnull($sns_ip_addr, 'sns_ip_addr', 'del_zones');

# Loeschen von Leerzeichen in der Adresse (DB-Konvention)

$sns_ip_addr =~ s/\x20//g;

# Eintrag in die Liste

push(@glue, join($;, ($sns_ip_name, '', 'IN', $sns_ip_addr)));

}

}

# ------------------------------------------------------------------

# Lokale Secondary Nameserver

local(@seclf);

&query_bind($csr_seclf, *seclf, $name);

# Schleife ueber alle lokalen Secondary Nameserver

for(@seclf)

{

# Host-Parameter des aktuellen Nameservers

local($hostname, $subdomainname, $domainname) = split(/$;/);

# $hostname & $domainname koennen nicht NULL sein

# $subdomainname darf NULL sein

# Aufbau des Fully Qualified Domain Name fuer den Secondary Nameserver

Page 142:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 7. MODULNAMEDFORWARD. PL 1 3 9

local($fqdn);

if((!&testnull($subdomainname)) && (length($subdomainname) > 0))

{

$fqdn = $hostname . '.' . $subdomainname . '.' . $domainname;

}

else

{

$fqdn = $hostname . '.' . $domainname;

}

# Ausgabe des Secondary Nameservers

print "\t\tIN\tNS\t$fqdn.\n";

}

}

# Schliessen der fuer delegierte (fremde) Subdomains geoeffneten DB-Cursor

&query_close($csr_dzs);

&query_close($csr_seclf);

# --------------------------------------------------------------------

# Sortieren der Glue-Record Kandidaten, Elimination doppelter Eintraege

local($last) = undef;

# sortierte minimale Liste

local(@sglue) = ();

# Schleife fuer alle Eintraege (innerhalb sind sie bereits sortiert)

for(sort @glue)

{

# Falls der aktuelle Eintrag schon eingetragen wurde, wird

# er nicht nochmal eingetragen

if($_ eq $last) { next; }

# Eintrag in die neue Liste

push(@sglue, $_);

# Merken des aktuellen Eintrags fuer den naechsten Schleifendurchlauf

$last = $_;

}

# --------------------------------------------------------------------

# Mail Exchanger (MX-Records) fuer die Zone

# Auswahl der Mail Exchanger Eintraege fuer die aktuelle Zone

local(@mailx);

&query(<<" END_SQL", *mailx);

select m.name, m.record_ttl, m.record_class, m.pref_value,

h.name, h.subdomain_name, z.name

Page 143:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 4 0 ANHANGA. LISTINGS

from ${DB}zones z, ${DB}hosts h, ${DB}mailx m

where z.id = h.zone and h.id = m.host and m.zone = $_[11]

END_SQL

# Schleife ueber alle betroffenen Mail Exchanger Eintraege

for(@mailx)

{

# aktuelle Parameter der Eintraege

local($name, $record_ttl, $record_class, $pref_value, $hostname,

$subdomainname, $domainname) = split(/$;/);

# $name, $pref_value, $hostname, $domainname koennen nicht NULL sein

# $record_ttl, $record_class, $subdomainname duerfen NULL sein

# Aufbau des Fully Qualified Domain Name des Ziel-Hosts

local($fqdn);

if((!&testnull($subdomainname)) && (length($subdomainname) > 0))

{

$fqdn = $hostname . '.' . $subdomainname . '.' . $domainname;

}

else

{

$fqdn = $hostname . '.' . $domainname;

}

# Falls kein bzw. ein leerer Name angegeben wird, dann

# Eintrag fuer aktuelle Zone

if((&testnull($name)) || ($name eq '')) { $name = '@'; }

# Record-TTL und -Class

if(&testnull($record_ttl))

{ $record_ttl = $def{'MAILX.RECORD_TTL'}; }

if(&testnull($record_class))

{ $record_class = $def{'MAILX.RECORD_CLASS'}; }

# Ausgabe des MX-Records

print "$name\t$record_ttl\t$record_class\tMX\t$pref_value\t$fqdn.\n";

}

# --------------------------------------------------------------------

# Hosts (A-, CNAME-, HINFO- & WKS-Records) fuer die Zone

# Auswahl der Hosts in der aktuellen Zone

local(@hosts);

&query(<<" END_SQL", *hosts);

select id, name, subdomain_name, record_ttl, record_class, cpu, os

from ${DB}hosts

where zone = $_[11]

END_SQL

# Auswahl der WKS eines bestimmten Hosts

Page 144:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 7. MODULNAMEDFORWARD. PL 1 4 1

local($csr_wks) = &query_open(<<" END_SQL");

select service from ${DB}wks where host = :1

END_SQL

# Auswahl der Alias-Namen eines bestimmten Hosts

local($csr_alias) = &query_open(<<" END_SQL");

select canonical_name from ${DB}aliases where host = :1

END_SQL

# --------------------------------------------------------------------

# Schleife ueber alle Hosts in der aktuellen Zone

for(@hosts)

{

# akutelle Host-Parameter

local($id, $name, $subdomainname, $record_ttl, $record_class,

$cpu, $os) = split(/$;/);

# $id, $name koennen nicht NULL sein

# $subdomainname, $record_ttl, $record_class, $cpu & $os duerfen NULL sein

# Name innerhalb der aktuellen Zone

local($hostname) = $name;

if((!&testnull($subdomainname)) && (length($subdomainname) > 0))

{

$hostname .= '.' . $subdomainname;

}

# Record-TTL und -Class

if(&testnull($record_ttl))

{ $record_ttl = $def{'HOSTS.RECORD_TTL'}; }

if(&testnull($record_class))

{ $record_class = $def{'HOSTS.RECORD_CLASS'}; }

# Falls fuer einen Host keine einzige IP-Adresse vorhanden ist, ...

if(&query_bind($csr_ipaddr, *ipaddr, $id) == 0)

{

# ..., dann Programmabbruch

die "No IP-adress available for $hostname.$current";

}

# Auswahl der ersten IP-Adresse

# $ipaddr[..] kann nicht NULL sein

local($ipa) = shift(@ipaddr);

# Loeschen von Leerzeichen in der Adresse (DB-Konvention)

$ipa =~ s/\x20//g;

# Ausgabe des Hostnamens (innerhalb der aktuellen Zone) und der

# (ersten) IP-Adresse als A-Record

print "$hostname\t$record_ttl\t$record_class\tA\t$ipa\n";

Page 145:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 4 2 ANHANGA. LISTINGS

# Schleife ueber restliche IP-Adressen des Hosts

for(@ipaddr)

{

# Loeschen von Leerzeichen in der Adresse (DB-Konvention)

s/\x20//g;

# Ausgabe des entsprechenden A-Records

print "\t$record_ttl\t$record_class\tA\t$_\n";

}

# Erscheint der Host in der Glue-Liste, muss er dort geloescht

# (fuer ungueltig erklaert) werden (sonst doppelter Eintrag)

for(@sglue)

{

if(/^$hostname\.$current$;/i) { $_ = undef; last; }

}

# ------------------------------------------------------------------

# Existieren fuer den Host gueltige Angaben ueber CPU & Betriebssystem, ...

if((!&testnull($cpu)) && (length($cpu) > 0) &&

(!&testnull($os)) && (length($os) > 0))

{

# ..., so werden diese als HINFO-Record ausgegeben

print "\t$record_ttl\t$record_class\tHINFO\t$cpu $os\n";

}

# ------------------------------------------------------------------

# WKS des Hosts

local(@wks);

&query_bind($csr_wks, *wks, $id);

# $wks[..] kann nicht NULL sein

# Schleife ueber alle Eintraege

for(@wks)

{

# Ausgabe als WKS-Record

print "\t$record_ttl\t$record_class\tWKS\t$_\n";

}

# ------------------------------------------------------------------

# Aliasnamen des Hosts

local(@alias);

&query_bind($csr_alias, *alias, $id);

# $alias[..] kann nicht NULL sein

# Schleife ueber alle Alias-Namen

for(@alias)

{

Page 146:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 7. MODULNAMEDFORWARD. PL 1 4 3

# ACHTUNG: Alias-Namen werden nicht direkt der Zone zugeordnet,

# sondern der jeweiligen Subdomain des Hosts

if((!&testnull($subdomainname)) && (length($subdomainname) > 0))

{

$_ .= '.' . $subdomainname;

}

# Ausgabe als CNAME-Record

print "$_\t$record_ttl\t$record_class\tCNAME\t$hostname\n";

}

}

# Schliessen der fuer die Hostausgabe geoeffneten DB-Cursor

&query_close($csr_wks);

&query_close($csr_alias);

&query_close($csr_ipaddr);

# --------------------------------------------------------------------

# Erzeugen der Glue-Records

# Schleife ueber alle Listeneintraege

for(@sglue)

{

# Wurde der aktuelle Eintrag geloescht (fuer ungueltig) erklaert,

# so darf er nicht weiter beruecksichtigt werden

if(defined($_))

{

# aktuelle Glueparameter

local($fqdn, $record_ttl, $record_class, $ipa) = split(/$;/);

# Falls der Host in der zur aktuellen Zone gehoerenden Domain liegt, ...

if($fqdn =~ s/\.$current$//i)

{

# ..., muss er als A-Record (Glue) eingetragen werden

print "$fqdn\t$record_ttl\t$record_class\tA\t$ipa\n";

}

}

}

}

# **********************************************************************

1;

Page 147:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 4 4 ANHANGA. LISTINGS

A. 8 Modul named reverse. pl

# **********************************************************************

# * Integration des Managements des Domain-Name-Systems in die *

# * vorhandene Managementumgebung des Leibniz-Rechenzentrums (LRZ) *

# * (Diplomarbeit an der TU-Muenchen, SS 94 - WS 94/95) *

# * ------------------------------------------------------------------ *

# * Autor: Heiko Hauck ([email protected]) *

# * Datei: named_reverse.pl (Oraperl Bibliothek fuer ora2dns) *

# **********************************************************************

# PROZEDUR zur Generierung einer Zonen-Datei fuer das Reverse Mapping

# Parameter: $_[0] = Name der Datei

# $_[1] = FQDN des Nameserverhosts

# $_[2] = IP-Adresse des Nameserverhosts

# $_[3] = Klasse des SOA-Records

# $_[4] = E-Mail-Adresse (SOA-Responsible)

# $_[5] = Seriennummer im SOA-Record

# $_[6] = Refresh-Intervall im SOA-Record

# $_[7] = Retry-Intervall im SOA-Record

# $_[8] = Expire-Intervall im SOA-Record

# $_[9] = Minimum-Intervall im SOA-Record

# $_[10] = Domainname der Zone

# $_[11] = Identifikator der Zone

# Die Ausgabe erfolgt zur Standard-Ausgabe.

sub named_reverse

{

# Ausgabe des Dateikopfes

print "; $_[0] for $_[1] [$_[2]]\n";

print "; created by ora2dns (08/94 by Heiko Hauck; Diplomarbeit TUM)\n";

print ";\n";

print "; User: ", `whoami`;

print "; Date: ", `date`;

print ";\n";

# Ausgabe der betroffenen Zone

print "\$ORIGIN\t\t$_[10].\n";

# Ausgabe des SOA-Records fuer diese Zone

print "\@\t\t$_[3]\tSOA\t$_[1]. $_[4]. (\n";

print "\t\t\t\t\t$_[5] ; serial\n";

print "\t\t\t\t\t$_[6] ; refresh\n";

print "\t\t\t\t\t$_[7] ; retry\n";

print "\t\t\t\t\t$_[8] ; expire\n";

print "\t\t\t\t\t$_[9] ) ; minimum\n";

# --------------------------------------------------------------------

# Achtung: 'Perl' ueberschreibt aktuelle Parameter ohne entspr. Zuweisung!

# Deshalb: Kopie in lokale Variable

Page 148:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 8. MODULNAMEDREVERSE. PL 1 4 5

local($current) = $_[10];

# --------------------------------------------------------------------

# Aufbau der Maske zur Auswahl der IP-Adressen

# Dabei wird unterschieden, wieviele Bytes der IP-Adresse durch den

# Domainnamen schon vorgegeben sind

local($mask, $replace);

if($current =~ /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.in-addr\.arpa$/i)

{

# 3 Bytes vorgegeben

# Beispiel: Fuer die Zone '15.187.129.in-addr.arpa' ist die zugehoerige

# Maske '129.187. 15.'

# Diese wird spaeter mit dem Begin der IP-Adressen verglichen

$mask = ' ' x (3 - length($3)) . $3 . '.' .

' ' x (3 - length($2)) . $2 . '.' .

' ' x (3 - length($1)) . $1 . '.';

# 1 Byte ist noch auszuwaehlen

$replace = 1;

}

else

{

if($current =~ /^(\d{1,3})\.(\d{1,3})\.in-addr\.arpa$/i)

{

# 2 Bytes vorgegeben

$mask = ' ' x (3 - length($2)) . $2 . '.' .

' ' x (3 - length($1)) . $1 . '.';

# 2 Bytes sind noch auszuwaehlen

$replace = 2;

}

else

{

if($current =~ /^(\d{1,3})\.in-addr\.arpa$/i)

{

# 1 Byte vorgegeben

$mask = ' ' x (3 - length($1)) . $1 . '.';

# 3 Bytes sind noch auszuwaehlen

$replace = 3;

}

else

{

if($current =~ /^\.in-addr\.arpa$/i)

{

# kein Byte vorgegeben

$mask = '';

# alle 4 Bytes sind noch auszuwaehlen

Page 149:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 4 6 ANHANGA. LISTINGS

$replace = 4;

}

else

{

# Programmabbruch, falls ein fehlerhafter Domainname angegeben wurde

die "Illegal domain $current";

}

}

}

}

# Liste von Subnetzmasken, deren IP-Adressen nicht zu dieser,

# sondern zu einer delegierten Zone gehoeren (siehe unten)

local(@submasks) = ();

# --------------------------------------------------------------------

# Eintrag fuer den Primary Nameserver der Zone

print "\t\tIN\tNS\t$_[1].\n";

# --------------------------------------------------------------------

# Lokale Secondary Nameserver fuer die Zone

local(@servers);

&query(<<" END_SQL", *servers);

select h.name, h.subdomain_name, z.name

from ${DB}zones z, ${DB}hosts h, ${DB}nameservers n, ${DB}secondary_ll s

where z.id = h.zone and h.id = n.host and

n.id = s.nameserver and s.zone = $_[11]

END_SQL

# Schleife ueber alle betroffenen Nameserver

for(@servers)

{

# Parameter des aktuellen Nameservers

local($hostname, $subdomainname, $domainname) = split(/$;/);

# $hostname, $domainname koennen nicht NULL sein

# $subdomainname darf NULL sein

# Aufbau des Fully Qualified Domain Name fuer den Nameserver-Host

local($fqdn);

if((!&testnull($subdomainname)) && (length($subdomainname) > 0))

{

$fqdn = $hostname . '.' . $subdomainname . '.' . $domainname;

}

else

{

$fqdn = $hostname . '.' . $domainname;

}

# Eintrag fuer den Nameserver

Page 150:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 8. MODULNAMEDREVERSE. PL 1 4 7

print "\t\tIN\tNS\t$fqdn.\n";

}

# --------------------------------------------------------------------

# Fremde Secondary Nameserver fuer die Zone

# Auswahl der FQDNs der betroffenen Nameserver

&query(<<" END_SQL", *servers);

select ip_name from ${DB}secondary_fl where zone = $_[11]

END_SQL

# Schleife ueber alle betroffenen Nameserver

for(@servers)

{

# $_ kann nicht NULL sein

# Eintrag fuer den Nameserver

print "\t\tIN\tNS\t$_.\n";

}

# --------------------------------------------------------------------

# Nameserver Eintraege fuer delegierte (lokale) Subdomains

# Auswahl aller Zonen, die die aktuelle Zone als Vaterzone haben

local(@domains);

&query(<<" END_SQL", *domains);

select id, name, prim_nameserver from ${DB}zones where parent = $_[11]

END_SQL

# Auswahl des Namens, Subdomain- und Domainnamens eines Hosts,

# auf dem ein bestimmter Primary Nameserver laeuft

local($csr_prim) = &query_open(<<" END_SQL");

select h.name, h.subdomain_name, z.name

from ${DB}zones z, ${DB}hosts h, ${DB}nameservers n

where z.id = h.zone and h.id = n.host and n.id = :1

END_SQL

# Auswahl des Namens, Subdomain- und Domainnamens von Hosts,

# auf denen fuer eine bestimmte Zone Secondary Nameserver laufen

local($csr_serv) = &query_open(<<" END_SQL");

select h.name, h.subdomain_name, z.name

from ${DB}zones z, ${DB}hosts h, ${DB}nameservers n, ${DB}secondary_ll s

where z.id = h.zone and h.id = n.host and

n.id = s.nameserver and s.zone = :1

END_SQL

# Auswahl von fremden Secondary Nameservern fuer eine bestimmte Zone

local($csr_secf) = &query_open (<<" END_SQL");

select ip_name from ${DB}secondary_fl where zone = :1

Page 151:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 4 8 ANHANGA. LISTINGS

END_SQL

# --------------------------------------------------------------------

# Schleife ueber alle delegierten lokalen Subdomains

for(@domains)

{

# Parameter der akuellen Subdomain

local($id, $name, $prim_nameserver) = split(/$;/);

# $id, $name & $prim_nameserver koennen nicht NULL sein

# Subdomain-Name (innerhalb) der Domain bestimmen

local($subdomain) = $name;

$subdomain =~ s/\.$current$//i;

# Primary Nameserver fuer Subdomain

local(@prim);

&query_bind($csr_prim, *prim, $prim_nameserver);

local($hostname, $subdomainname, $domainname) = split(/$;/, $prim[0]);

# $hostname, $domainname koennen nicht NULL sein

# $subdomainname darf NULL sein

# Aufbau des Fully Qualified Domain Name fuer den Primary Nameserver

local($fqdn);

if((!&testnull($subdomainname)) && (length($subdomainname) > 0))

{

$fqdn = $hostname . '.' . $subdomainname . '.' . $domainname;

}

else

{

$fqdn = $hostname . '.' . $domainname;

}

# Ausgabe des Subdomain-Namens mit Primary Nameserver

print "$subdomain\t\tIN\tNS\t$fqdn.\n";

# ------------------------------------------------------------------

# Aufbau der Subnetzmaske zum Ausschluss von IP-Adressen, die in

# die lokale delegierte Subdomain fallen

local($submask);

if($subdomain =~ /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/i)

{

# 3 Bytes vorgegeben

# nur moeglich, wenn noch 4 Bytes zu besetzen sind,

# sonst Programmabbruch

if($replace < 4)

{ die "Illegal subdomain $subdomain of domain $current"; }

Page 152:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 8. MODULNAMEDREVERSE. PL 1 4 9

$submask = ' ' x (3 - length($3)) . $3 . '.' .

' ' x (3 - length($2)) . $2 . '.' .

' ' x (3 - length($1)) . $1 . '.';

}

else

{

if($subdomain =~ /^(\d{1,3})\.(\d{1,3})$/i)

{

# 2 Bytes vorgegeben

# nur moeglich, wenn noch mindestens 3 Bytes zu besetzen sind,

# sonst Programmabbruch

if($replace < 3)

{ die "Illegal subdomain $subdomain of domain $current"; }

$submask = ' ' x (3 - length($2)) . $2 . '.' .

' ' x (3 - length($1)) . $1 . '.';

}

else

{

if($subdomain =~ /^(\d{1,3})$/i)

{

# 1 Byte vorgegeben

# nur moeglich, wenn noch mindestens 2 Bytes zu besetzen sind,

# sonst Programmabbruch

if($replace < 2)

{ die "Illegal subdomain $subdomain of domain $current"; }

$submask = ' ' x (3 - length($1)) . $1 . '.';

}

else

{

# nicht zulaessige Subdomain, Programmabbruch

die "Illegal subdomain $subdomain of domain $current";

}

}

}

# Eintrag der Subnetzmaske in die dafuer vorgesehene Liste

push(@submasks,$submask);

# ------------------------------------------------------------------

# Lokale Secondary Nameserver fuer die Subdomain

local(@serv);

&query_bind($csr_serv, *serv, $id);

# Schleife ueber alle lokalen Secondary Nameserver

for(@serv)

Page 153:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 5 0 ANHANGA. LISTINGS

{

# Host-Parameter des aktuellen Nameservers

local($hostname, $subdomainname, $domainname) = split(/$;/);

# $hostname & $domainname koennen nicht NULL sein

# $subdomainname darf NULL sein

# Aufbau des Fully Qualified Domain Name fuer den Secondary Nameserver

local($fqdn);

if((!&testnull($subdomainname)) && (length($subdomainname) > 0))

{

$fqdn = $hostname . '.' . $subdomainname . '.' . $domainname;

}

else

{

$fqdn = $hostname . '.' . $domainname;

}

# Ausgabe des Secondary Nameservers

print "\t\tIN\tNS\t$fqdn.\n";

}

# ------------------------------------------------------------------

# Fremde Secondary Nameserver fuer die Subdomain

local(@secf);

&query_bind($csr_secf, *secf, $id);

# Schleife ueber alle fremden Secondary Nameserver

for(@secf)

{

# $_ kann nicht NULL sein

# Ausgabe des Secondary Nameservers

print "\t\tIN\tNS\t$_.\n";

}

}

# Schliessen der fuer delegierte (lokale) Subdomains geoeffneten DB-Cursor

&query_close($csr_prim);

&query_close($csr_serv);

&query_close($csr_secf);

# --------------------------------------------------------------------

# Nameserver Eintraege fuer delegierte (fremde) Subdomains

# Auswahl der fremden Zonen (mit Primary Nameserver), die die aktuelle Zone

# als Vaterzone haben

local(@del_zones);

&query(<<" END_SQL", *del_zones);

select id, name, pns_ip_name

Page 154:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 8. MODULNAMEDREVERSE. PL 1 5 1

from ${DB}del_zones where parent = $_[11]

END_SQL

# Auswahl der (fremden) Secondary Nameserver einer bestimmten delegierten

# fremden Zone

local($csr_dzs) = &query_open (<<" END_SQL");

select sns_ip_name from ${DB}del_zones_sec where del_zone = :1

END_SQL

# Auswahl der lokalen Secondary Nameserver einer bestimmten fremden Zone

local($csr_seclf) = &query_open (<<" END_SQL");

select h.name, h.subdomain_name, z.name

from ${DB}zones z, ${DB}hosts h, ${DB}nameservers n, ${DB}secondary_lf s

where z.id = h.zone and h.id = n.host and

n.id = s.nameserver and s.zone_name = :1

END_SQL

# Schleife ueber alle delegierten fremden Subdomains

for(@del_zones)

{

# Parameter der aktuellen Subdomain

local($id, $name, $pns_ip_name,) = split(/$;/);

# $id, $name & $pns_ip_name koennen nicht NULL sein

# Subdomain-Name (innerhalb) der Domain bestimmen

local($subdomain) = $name;

$subdomain =~ s/\.$current$//i;

# Ausgabe des Subdomain-Namens mit Primary Nameserver

print "$subdomain\tIN\tNS\t$pns_ip_name.\n";

# Fremde Secondary Nameserver

local(@dzs);

&query_bind($csr_dzs, *dzs, $id);

# Schleife ueber alle fremden Secondary Nameserver

for(@dzs)

{

# $_ kann nicht NULL sein

# Ausgabe des Secondary Nameservers

print "\t\tIN\tNS\t$_.\n";

}

# Lokale Secondary Nameserver

local(@seclf);

&query_bind($csr_seclf, *seclf, $name);

# Schleife ueber alle lokalen Secondary Nameserver

for(@seclf)

{

Page 155:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 5 2 ANHANGA. LISTINGS

# Host-Parameter des aktuellen Nameservers

local($hostname, $subdomainname, $domainname) = split(/$;/);

# $hostname & $domainname koennen nicht NULL sein

# $subdomainname darf NULL sein

# Aufbau des Fully Qualified Domain Name fuer den Secondary Nameserver

local($fqdn);

if((!&testnull($subdomainname)) && (length($subdomainname) > 0))

{

$fqdn = $hostname . '.' . $subdomainname . '.' . $domainname;

}

else

{

$fqdn = $hostname . '.' . $domainname;

}

# Ausgabe des Secondary Nameservers

print "\t\tIN\tNS\t$fqdn.\n";

}

}

# Schliessen der fuer delegierte (fremde) Subdomains geoeffneten DB-Cursor

&query_close($csr_dzs);

&query_close($csr_seclf);

# --------------------------------------------------------------------

# PTR-Eintraege fuer die Zone

# Auswahl saemtlicher Hosts (Name, Subdomain- & Domainname, IP-Adresse),

# bei denen eine IP-Adresse zu der Maske passt

local(@ptr);

&query(<<" END_SQL", *ptr);

select h.name, h.subdomain_name, z.name, i.ip_addr

from ${DB}ipaddr i, ${DB}hosts h, ${DB}zones z

where z.id = h.zone and h.id = i.host and i.ip_addr like '$mask\%'

END_SQL

# Schleife ueber alle ausgewaehlten Hosts

PTR: for(@ptr)

{

# Parameter des aktuellen Hosts

local($hostname, $subdomainname, $domainname, $ipa) = split(/$;/);

# $hostname, $domainname & $ipa koennen nicht NULL sein

# $subdomainname darf NULL sein

# Ausschluss von IP-Adressen, die einer delegierten Zone (Subnetz)

# angehoeren

for(@submasks)

{

if($ipa =~ /^$mask$_/) {next PTR;}

Page 156:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 8. MODULNAMEDREVERSE. PL 1 5 3

}

# Aufbau des Fully Qualified Domain Name

local($fqdn);

if((!&testnull($subdomainname)) && (length($subdomainname) > 0))

{

$fqdn = $hostname . '.' . $subdomainname . '.' . $domainname;

}

else

{

$fqdn = $hostname . '.' . $domainname;

}

# Zerlegen der IP-Adresse in ihre 4 Bytes

$ipa =~ /^\x20*(\d+)\.\x20*(\d+)\.\x20*(\d+)\.\x20*(\d+)$/;

# Das 4. Byte wird immer ausgegeben

print $4;

# Byte 1-3 werden nur ausgegeben, wenn deren Auswahl innerhalb

# der Zone noch frei war

if($replace >= 2) { print ".$3"; }

if($replace >= 3) { print ".$2"; }

if($replace == 4) { print ".$1"; }

# Ausgabe des restlichen Records (Klasse, Typ, FQDN)

print "\t\tIN\tPTR\t$fqdn.\n";

}

}

# **********************************************************************

1;

Page 157:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 5 4 ANHANGA. LISTINGS

A. 9 Modul named l ocal . pl

# **********************************************************************

# * Integration des Managements des Domain-Name-Systems in die *

# * vorhandene Managementumgebung des Leibniz-Rechenzentrums (LRZ) *

# * (Diplomarbeit an der TU-Muenchen, SS 94 - WS 94/95) *

# * ------------------------------------------------------------------ *

# * Autor: Heiko Hauck ([email protected]) *

# * Datei: named_local.pl (Oraperl Bibliothek fuer ora2dns) *

# **********************************************************************

# PROZEDUR zur Generierung der Zonen-Datei fuer das Loopback-Interface

# (127.1 -> localhost)

# Parameter: $_[0] = Name der Datei

# $_[1] = IP-Adresse des Nameserverhosts

# $_[2] = Klasse des SOA-Records

# $_[3] = FQDN des Nameserverhosts

# $_[4] = E-Mail-Adresse (SOA-Responsible)

# $_[5] = Seriennummer im SOA-Record

# $_[6] = Refresh-Intervall im SOA-Record

# $_[7] = Retry-Intervall im SOA-Record

# $_[8] = Expire-Intervall im SOA-Record

# $_[9] = Minimum-Intervall im SOA-Record

# Die Ausgabe erfolgt zur Standard-Ausgabe.

sub named_local

{

# Ausgabe des Dateikopfes

print "; $_[0] for $_[3] [$_[1]]\n";

print "; created by ora2dns (08/94 by Heiko Hauck; Diplomarbeit TUM)\n";

print ";\n";

print "; User: ", `whoami`;

print "; Date: ", `date`;

print ";\n";

# Ausgabe der betroffenen Zone

print "\$ORIGIN\t0.0.127.in-addr.arpa.\n";

# Ausgabe des SOA-Records fuer diese Zone

print "\@\t$_[2]\tSOA\t$_[3]. $_[4]. (\n";

print "\t\t\t\t$_[5] ; serial\n";

print "\t\t\t\t$_[6] ; refresh\n";

print "\t\t\t\t$_[7] ; retry\n";

print "\t\t\t\t$_[8] ; expire\n";

print "\t\t\t\t$_[9] ) ; minimum\n";

# Ausgabe des Nameservers fuer diese Zone (= aktueller Nameserver)

print "\tIN\tNS\t$_[3].\n";

# Ausgabe des PTR-Records, der fuer die eigentliche Abbildung zustaendig ist

print "1\tIN\tPTR\tlocalhost.\n";

Page 158:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 10. MODULNAMEDLOOPBACK. PL 1 5 5

}

# **********************************************************************

1;

A. 10 Modul named l oopback. pl

# **********************************************************************

# * Integration des Managements des Domain-Name-Systems in die *

# * vorhandene Managementumgebung des Leibniz-Rechenzentrums (LRZ) *

# * (Diplomarbeit an der TU-Muenchen, SS 94 - WS 94/95) *

# * ------------------------------------------------------------------ *

# * Autor: Heiko Hauck ([email protected]) *

# * Datei: named_loopback.pl (Oraperl Bibliothek fuer ora2dns) *

# **********************************************************************

# PROZEDUR zur Generierung der Zonen-Datei fuer das Loopback-Interface

# (localhost -> 127.1)

# Parameter: $_[0] = Name der Datei

# $_[1] = IP-Adresse des Nameserverhosts

# $_[2] = Klasse des SOA-Records

# $_[3] = FQDN des Nameserverhosts

# $_[4] = E-Mail-Adresse (SOA-Responsible)

# $_[5] = Seriennummer im SOA-Record

# $_[6] = Refresh-Intervall im SOA-Record

# $_[7] = Retry-Intervall im SOA-Record

# $_[8] = Expire-Intervall im SOA-Record

# $_[9] = Minimum-Intervall im SOA-Record

# Die Ausgabe erfolgt zur Standard-Ausgabe.

sub named_loopback

{

# Ausgabe des Dateikopfes

print "; $_[0] for $_[3] [$_[1]]\n";

print "; created by ora2dns (08/94 by Heiko Hauck; Diplomarbeit TUM)\n";

print ";\n";

print "; User: ", `whoami`;

print "; Date: ", `date`;

print ";\n";

# Ausgabe der betroffenen Zone

print "\$ORIGIN\tlocalhost.\n";

# Ausgabe des SOA-Records fuer diese Zone

print "\@\t$_[2]\tSOA\t$_[3]. $_[4]. (\n";

print "\t\t\t\t$_[5] ; serial\n";

print "\t\t\t\t$_[6] ; refresh\n";

print "\t\t\t\t$_[7] ; retry\n";

print "\t\t\t\t$_[8] ; expire\n";

Page 159:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 5 6 ANHANGA. LISTINGS

print "\t\t\t\t$_[9] ) ; minimum\n";

# Ausgabe des Nameservers fuer diese Zone (= aktueller Nameserver)

print "\tIN\tNS\t$_[3].\n";

# Ausgabe des A-Records, der fuer die eigentliche Abbildung zustaendig ist

print "\tIN\tA\t127.0.0.1\n";

}

# **********************************************************************

1;

Page 160:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 11. MODULNAMEDCACHE. PL 1 5 7

A. 11 Modul named cache. pl

# **********************************************************************

# * Integration des Managements des Domain-Name-Systems in die *

# * vorhandene Managementumgebung des Leibniz-Rechenzentrums (LRZ) *

# * (Diplomarbeit an der TU-Muenchen, SS 94 - WS 94/95) *

# * ------------------------------------------------------------------ *

# * Autor: Heiko Hauck ([email protected]) *

# * Datei: named_cache.pl (Oraperl Bibliothek fuer ora2dns) *

# **********************************************************************

# PROZEDUR zum Holen der Root-Domain-Datei (Cache) mittels Anonymous FTP

# Parameter: $_[0] = Name der lokalen Datei (inkl. Verzeichnispfad)

# $_[1] = Name der FTP-Hosts, von dem die Datei geholt wird

# $_[2] = Verzeichnis, in dem dort die Datei abgelegt ist

# $_[3] = Name der Datei auf dem FTP-Host

# $_[4] = E-Mail-Adresse (als Passwort fuer Anonymous FTP)

sub named_cache

{

# lokale Parameterkopien

local($local_file, $host, $remote_dir, $remote_file, $email) = @_;

# Die Login-Name- & Passwort-Ubergabe an das FTP geschieht mittels

# der '.netrc'-Datei des Anwenders.

# Ist in dieser Datei noch kein ein Eintrag fuer den angegebenen FTP-Host

# vorhanden, so wird er eingefuegt (ein vorhandener wird nicht geaendert).

# Ist die Datei noch nicht vorhanden, wird sie mit dem Eintrag erzeugt.

# '.netrc' liegt im Home-Verzeichnis des Anwenders

local($filename) = $ENV{'HOME'}.'/.netrc';

# Eintrag in '.netrc'

local($netrc) = "machine $host login ftp password $email\n";

# Existiert die Datei '.netrc' bereits?

if(-e $filename)

{

# Datei oeffnen zum Lesen

# Misslingt dies, dann Programmabbruch

open(NETRC, "<$filename") || die "Can't open $filename: $!\n";

# Zeilenweises Durchsuchen nach einen entspr. Host-Eintrag

while(<NETRC>)

{

if(/^machine\s+$host\s+/)

{

# Wird ein solcher gefunden, braucht kein weiterer mehr gesucht werden

$netrc = undef; # Markierung fuer "gefunden"

last;

}

Page 161:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 5 8 ANHANGA. LISTINGS

}

# Datei (vom Lesen) schliessen

close(NETRC);

# Falls noch kein entsprechender Eintrag vorhanden ist:

if(defined($netrc))

{

# Datei oeffnen zum Anfuegen

# Misslingt dies, dann Programmabbruch

open(NETRC, ">>$filename") || die "Can't append to $filename: $!\n";

# Eintrag

print NETRC $netrc;

# Datei (vom Anfuegen) schliessen

close(NETRC);

}

}

else

# Datei '.netrc' existiert noch nicht

{

# Datei oeffnen zum Schreiben

# Misslingt dies, dann Programmabbruch

open(NETRC, ">$filename") || die "Can't write to $filename: $!\n";

# Eintrag

print NETRC $netrc;

# Datei (vom Schreiben) schliessen

close(NETRC);

}

# Zugriffsrechte auf die Datei ".netrc" (notwendig)

chmod 0600, $filename;

# --------------------------------------------------------------------

# Oeffnen eines Ausgabekanals, der als Eingabe fuer FTP dient

open(FTP,"|ftp $host");

# ASCII-Modus, da eine Text-Datei uebertragen wird

print FTP "ascii\n";

# Wahl des Verzeichnisses auf dem FTP-Host

print FTP "cd $remote_dir\n";

# Datei soll geholt werden

print FTP "get\n";

Page 162:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

A. 11. MODULNAMEDCACHE. PL 1 5 9

# Angabe des Dateinamens auf dem FTP-Host

print FTP "$remote_file\n";

# Angabe des lokalen Dateinamens (inkl. Verzeichnis)

print FTP "$local_file\n";

# FTP verlassen

print FTP "quit\n";

# Schliessen des Kanals und Durchfuehrung der FTP-Prozedur

close(FTP);

print "\n";

}

# **********************************************************************

1;

Page 163:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

1 6 0 ANHANGA. LISTINGS

Page 164:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

An h a n g B

Da t e n b a n k { Be i s p i e l

ALIASEShost canonical name Kommentar

0 nettest dfvgate0 df v0 i rcserver3 x500 sunmanager3 ntp14 hpmanager hpman

4 hpmgr4 ntp26 mai l host cd17 ml i sts sunserver7 f tp7 l rznews7 news7 i dserver7 l i stserv7 gopher8 sunpop sun1

DEL ZONESi d name pns i p name pns i p addr0 i nf ormati k.tu-muenchen. de tumi nf o1. i nf ormati k. tu-muenchen. de 131.159

DEL ZONES SECdel zone sns i p name sns i p addr

0 tumi nf o2. i nf ormati k. tu-muenchen. de 131.159. 0. 81

0 hpsystem1. i nf ormati k. tu-muenchen. de 131.159. 0.176

0 ns . Germany. EU. net

161

Page 165:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

162 ANHANG B. DATENBANK { BEI S PI EL

HOSTSi d n a me s u bd o ma i n n a me z o n e k o mp o n e n t e c p u o s

0 d f v g a t e 0 WSC1 0 0 1 81 s u n c o l l e c t 0 WSC1 0 0 1 8

2 h p 1 0 0 WSCP0 0 4 33 s u nma n a g e r 0 WSC3 0 0 0 0

4 h pma n 0 WSC0 0 0 1 65 h pma n 2 0 WSC3 0 5 9 6

6 c d 1 0 RECP0 07 s u n s e r v e r 0

8 s u n 19 s u n 2

1 0 a 2 8 2 4 c h1 1 a 2 8 2 4 a r

1 2 h p 1

h o

Page 166:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

163

S ECONDARY FLz o n e i p n a me i p a d d r Ko mme n t a r

0 n s . n i c . d e l r z - mu e n c h e n . d e0 c h a r l y . b l . p hy s i k . t u - mu e n c h e n . d e

4 n s . n i c . d e t u - mu e n4 c h a r l y . b l . p hy s i k . t u - mu e n c h e n . d e 1

4 t umi n f o 1 . i n f o r ma t i k . t u - m

i d n a me

Page 167:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

164 ANHANG B. DATENBANK { BEI S PI EL

Page 168:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

An h a n g C

Ge n e r i e r t e Ko n � g u r a t i o n s

{ Be i s p i e l e

Di e i mf ol genden angegebenenDat[ . . . ] bzw. vomLayout an di e vwerden dadurch ni cht beei n

C.1 Resolverkon�guratio

# /etc/resolv.conf for dfvgate.lrz-muenchen

# created by ora2dns (08/94 by Heiko Hauck;

# User: a2824ch

# Date: Wed Oct 26 15:42:48 MET 1994

domain lrz-muenchen.de

nameserver 127.0.0.1 # localhost

nameserver 129.187.13.22 # hp10.lrz-mu

C.2 Nameserverkon�guration

; /etc/named.boot for dfvgate.lrz-muenchen.de [129.187.10.25]

; created by ora2dns (08/94 by Heiko Hauck; Diplomarbeit TUM)

;

; User: a2824ch

; Date: Wed Oct 26 15:42:56 MET 1994

;

; type domain source file or host b

165

Page 169:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

166 ANHANG C. GENERI ERTE KONFI G. - DATEI EN { BEI S PI ELE

;

directory /etc/namedb

; primary nameserver:

primary lrz-muenchen.de lrz-muenchen.de.DNF

primary ppp.lrz-muenchen.de ppp.lrz-muenchen.de.DNF

primary 187.129.in-addr.arpa 187.129.in-addr.arpa.DNF

primary 15.187.129.in-addr.arpa 15.187.129.in-addr.arpa.DNF

primary tu-muenchen.de tu-muenchen.de.DNF

primary 0.0.127.in-addr.arpa named.local

primary localhost named.loopback

; secondary nameserver:

secondary informatik.tu-muenchen.de 131.159.0.1 informatik.tu-muenchen.de.BF

secondary eg 193.227.1.1 eg.BF

; cache nameserver:

cache . named.cache

C.3 Zonenkon�guration(ForwardMapping)

; /etc/namedb/lrz-muenchen.de.DNF for dfvgate.lrz-muenchen.de [129.187.10.25]

; created by ora2dns (08/94 by Heiko Hauck; Diplomarbeit TUM)

;

; User: a2824ch

; Date: Wed Oct 26 15:42:56 MET 1994

;

$ORIGIN lrz-muenchen.de.

@ IN SOA dfvgate.lrz-muenchen.de. postmaster@[...] (

1994082900 ; serial

21600 ; refresh

3600 ; retry

604800 ; expire

172800 ) ; minimum

IN NS dfvgate.lrz-muenchen.de.

IN NS hp10.lrz-muenchen.de.

IN NS ns.nic.de.

IN NS charly.bl.physik.tu-muenchen.de.

ppp IN NS dfvgate.lrz-muenchen.de.

IN NS hp10.lrz-muenchen.de.

@ IN MX 140 cd1.lrz-muenchen.de.

sunmail IN MX 10 sunserver.lrz-muenchen.de.

hpmail IN MX 10 hp10.lrz-muenchen.de.

dfvgate IN A 129.187.10.25

nettest IN CNAME dfvgate

dfv IN CNAME dfvgate

ircserver IN CNAME dfvgate

suncollect IN A 129.187.9.241

hp10 IN A 129.187.13.22

IN A 129.187.16.1

sunmanager IN A 129.187.10.32

x500 IN CNAME sunmanager

Page 170:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

C. 4 . ZONENKONFI GURATI ON (REVERS E MAPPI NG) 167

ntp1 IN CNAME sunmanager

[...]

sun1 IN A 129.187.10.20

sunpop IN CNAME sun1

sun2 IN A 129.187.10.21

a2824ar.ppp IN A 129.187.15.157

IN HINFO PC Linux/PPP

hp11 IN A 129.187.16.2

C.4 Zonenkon�guration(ReverseMapping)

/namedb/187.129.in-addr.arpa.DNF for dfvgate.lrz-muenchen.de [129.187.10.25]

ed by ora2dns (08/94 by Heiko Hauck; Diplomarbeit TUM)

a2824ch

Wed Oct 26 15:43:01 MET 1994

N 187.129.in-addr.arpa.

IN SOA dfvgate.lrz-muenchen.de. postmaster@[...] (

1994082902 ; serial

21600 ; refresh

3600 ; retry

604800 ; expire

172800 ) ; minimum

IN NS dfvgate.lrz-muenchen.de.

IN NS hp10.lrz-muenchen.de.

IN NS dfvgate.lrz-muenchen.de.

IN NS hp10.lrz-muenchen.de.

IN PTR dfvgate.lrz-muenchen.de.

IN PTR suncollect.lrz-muenchen.de.

IN PTR hp10.lrz-muenchen.de.

IN PTR hp10.lrz-muenchen.de.

IN PTR sun1.lrz-muenchen.de.

IN PTR sun2.lrz-muenchen.de.

IN PTR hp11.lrz-muenchen.de.

Page 171:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

168 ANHANG C. GENERI ERTE KONFI G. - DATEI EN { BEI S PI ELE

Page 172:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

L i t e r a t u r v e r z e i c h n i s

[ Baye 94] Rudol f Bayer, Vo r l e s u n g Da t e n b a n k s y s t es i t�at M�unchen, Sommersemester 1994.

[ Ecke 89] Toerl ess Eckert, Un i x Ma n u a l PUni versi t�at, Erl angen, Ja

[ Frei 93] B. Frei tag, Vo r l e ss i ta

[ Geor 93] JuX. 50gar

[ Gol k 91] L

Page 173:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

170 LI TERATURVERZEI CHNI S

[ RFC1010] J. Reynol ds und J. Postel ,"Assi gned Numbers\, RFC1010, USC

Inf ormati on Sci ences Insti tute, Mari na del Rey, Cal i f orni a, Mai 1987.

[ RFC1032] M. Stahl ,"Domai n Admi ni strators Gui de\, RFC1032, SRI Inter-

nati onal , November 1987.

[ RFC1034] P. Mockapetri s ,"Domai n Names { Concepts and Faci l i t i es\, RFC

1034, USCInf ormati on Sci ences Insti tute, November 1987.

[ RFC1035] P. Mockapetri s ,"Domai n Names { Impl ementati on and Speci �ca-

t i on\, RFC 1035, USC Inf ormati on Sci ences Insti tute, November1987.

[ RFC1611] R. Austei n und J. Saperi a,"DNS Server MIBExtensi ons\, RFC

1611, Epi l ogue Technol ogy Corp. / Di gi tal Equi pment Corp. , Mai1994.

[ RFC1612] R. Austei n und J. Saperi a,"DNS Resol ver MIBExtensi ons\, RFC

1612, Epi l ogue Technol ogy Corp. / Di gi tal Equi pment Corp. , Mai1994.

[ RFC881] J. Postel ,"The Domai n Names Pl an and Schedul e\, RFC881, USC

Inf ormati on Sci ences Insti tute, November 1983.

[ RFC882] P. Mockapetri s ,"Domai n names - Concepts and Faci l i t i es\, RFC

882, USCInf ormati on Sci ences Insti tute, November 1983.

[ RFC883] P. Mockapetri s ,"Domai n names - Impl ementati on and Speci �ca-

t i on\, RFC 883, USC Inf ormati on Sci ences Insti tute, November1983.

[ RFC974] Crai g Partri dge,"Mai l Routi ng and the Domai n System\, RFC974,

CSNETCICBBNLaboratori es Inc. , Januar 1986.

[ Sant 93] Mi chael Santi f al l er , TCP/ I P u n d ONC/ NFS i n Th e o r i e u n d Pr a x i sAddi son-Wesl ey (Deutschl and) GmbH, Bonn, 1993.

[ Saue 92] Hermann Sauer, Re l a t i o n a l e Da t e n b a n k e n : Th e oAddi son-Wesl ey (Deutschl and) GmbH, Bonn,

[ Teor 90] Toby J. Teorey, Da t a b a s e Mo d e l iRe l a t i o n s h i p Ap

[ UCBK] Uni versi ty o

[ Val t 92]

Page 174:  · 4 IN H A L T SV ER ZEI C N IS 7 A us bl i c k 91 7. 1 E rw ei teru n gs - u dV er b esseru gs m oglich k ei t e n::: :: :: :: :: 92 7. 2 E in b d u n gin ein eM an age m en tp

LI TERATURVERZEI CHNI S 171

[ Val t 94] Robert Val ta, Au s we r t u n g d e r Umf r a g e z u r a k t u e l l e n Ne t z d o kt a t i o n , Lei bni z-Rechenzentrum, M�unchen, Januar 1994

[ Vi xi 93] Paul Vi xi e, Na me S e r v e r Op e r a t i o n s GuDi gi tal Equi pment Corp. , Pa

[Wal l 91] Larry Wal l und Randal L.Associ ates Inc. ,