Schlagwort-Archiv: DNS

Eine Ära geht zu Ende …

… nein keine Angst, ich höre nicht auf mit dem Bloggen! Die Ära bezieht sich auf meine 4 Jährige Lehre, die ich ich wenigen Tagen abschliessen werde!
Und als ich mich so durch meine Ordnerstrukturen geklickt habe, wurde mir klar, dass sich in den 4 Jahren sehr viele kleine, aber auch wichtige und interessante Scripts, Kommandos und ähnliches angesammelt hat. Und da ich denke, es könnte dem einen oder anderen vielleicht mal helfen, möchte ich euch das nicht vorenthalten.

Beginnen wir mit einem einfachen VBS-Script um ein Netzlaufwerk zu verbinden unter Windows. Ich weiss die gibts wie Sand am Meer, aber meines ist besser ;)

'Author: 	Patrick schmid
'Datum:	23.9.2008
'Version:	1.0.0

Option Explicit

'Variablen einlesen
Dim objNetwork, objFSO
Dim strPath, strDrive, bolPer, strUsr, strPas

'Neue Systemojekte kreieren
Set objNetwork = CreateObject("WScript.Network")
Set objFSO = CreateObject("Scripting.FileSystemObject")

'Relevante Daten definieren
strPath = "\\PFAD\ZUM\SERVER'
strDrive = "W:"
bolPer = False
strUsr = "USER"
strPas = "PASSWORD"

'Prüfen ob Drive schon vorhanden
If NOT objFSO.DriveExists (strDrive) Then
	'drive mappen	
	objNetwork.MapNetworkDrive strDrive, strPath , bolPer, strUsr, strPas
End If

Oder noch ein VBS-Script, um zwei DNS-Einträge zu setzen:

'-----------------------------------------------------------------------------------------------
'Author:		Patrick Schmid
'Date:			14.12.2009
'Version:		1.0
'-----------------------------------------------------------------------------------------------
Option Explicit

'reserve variabels
Dim objWMIService, colNetCards, arrDNSServers, objNetCard, strprimary, strsecondary

'set dns ips for primary and secondary
strprimary = "192.168.1.18"
strsecondary = "192.168.1.19"

'set array with primary and secondary dns server
arrDNSServers = Array(strprimary, strsecondary)

'get system environment
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

'get all Network interfaces
Set colNetCards = objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")

'read each network interface in variable
For Each objNetCard in colNetCards
	'set dns arry to network interface
	objNetCard.SetDNSServerSearchOrder(arrDNSServers)
Next

Nun weg von der dunklen Seite – auf zu Linux, da hab ich entsprechend mehr Material :)

Weiterlesen

Domain Name System mit Bind9

Zur Zeit bereite ich mich wieder auf eine neue LPI-Prüfung vor, dieses Jahr steht Nummer 201 an. Darin geht es um Themen wie Linux Kernel kompilieren, patchen, Source kompilieren, Kernelmodule, Startup-Scripts, Grubshell, Filesystem, RAID und LVM oder Netzwerkkonfiguration und DNS.
Eigentlich alles gar nicht so schwer, wäre da nur nicht die Tatsache, dass keine Unterlagen verwendet werden dürfen!

Also will ich mich mal ans repetieren machen und beginne mit DNS, genauer Bind9 einrichten und konfigurieren. Später folgen dann nach und nach noch all die anderen Themen, wodurch eine Artikelserie daraus werden wird.

Doch zuerst zu DNS! Obwohl eigentlich sollte man es eher als Namensauflösung bezeichnen, denn es werden noch Dienste wie NIS oder Dateien wie /etc/hosts angesprochen.

Aber alles von vorne! Also die einfachste Möglichkeit zum eine IP-Adresse auflösen ist über die Hosts-Datei unter /etc/hosts. Diese könnte in etwa so aussehen:

root@master:/etc# cat /etc/hosts
127.0.0.1	localhost
127.0.1.1	master.encodingit.ch	master

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Jedoch wenn man mehr als nur ein, zwei Computer hat, so ist es relativ mühsam auf jedem diese Datei von Hand zu pflegen. Auch Sun bemerkte dies und entwickelte NIS (darüber habe ich schon mal geschrieben).
Doch als auch das nicht mehr reichte, kam man zu DNS.
Einfach gesagt ist es eine Hosts-Datei, welche an einem zentralen Ort verwaltet werden kann und von jeder Maschine bei Bedarf geladen wird. Komplizierter gesagt: dazu kommen wir noch ;)

Die wichtigsten Dateien für die Namensauflösung auf einem Client wären dabei:

/etc/hosts > verantwortlich für die lokale Namensauflösung.
/etc/resolv.conf > gibt an, welche Nameserver angefragt und welche Domains durchsucht werden sollen.
/etc/nsswitch.conf > definiert die Reihenfolge ob zuerst der DNS, NIS oder die Hosts-Datei bei der Auflösung berücksichtigt werden soll.

Dies war alles auf dem Client – nun aber zu unserem DNS Server. Zuerst mal installieren:

apt-get install bind9

Weiterlesen

DNS Server Konfiguration

Damit ich mir für meine virtuellen Server nicht jedes mal die passende IP merken oder irgendwo nachsehen will, habe ich mir einen eigenen DNS Server im Netzwerk installiert.

Für mich war das eine Premiere, da ich bisher nur unter Windows das vergnügen hatte, und da ist es wirklich keine grosse Sache.

Umso erstaunter war ich, wie kompliziert das eigentlich unter Linux ist…

Doch war ich irgendwie zu faul (oder einfach vom WindowsGUI verwöhnt), alle Dateien einzeln zu editieren und konfigurieren, also habe ich auf Webmin zurückgegriffen.

Webmin erlaubt es, viele Einstellungen in Bereichen wie Netzwerkverwaltung, Useradministration, Servereinstellungen und vieles mehr direkt über ein GUI im Browser zu konfigurieren.

Zuerst muss man sich also das aktuelle Paket von Sourceforge holen:

wget http://downloads.sourceforge.net/project/webadmin/webmin/1.390/webmin_1.390_all.deb

Danach kann man die Installation starten:

sudo dpkg -i webmin_*

Da aber noch einige Pakete fehlen, wird die Installation vorerst fehlschlagen. Also gilt es dies noch zu berichtigen:

sudo apt-get install -f

Und nun ist Webmin auch schon installiert unter unter https://127.0.0.1:10000 verfügbar.

Jetzt kann also die Installation losgehen. Dazu ruft man Webmin auf und loggt sich mit einem User ein, welcher sudo-Rechte besitzt.
Dann wählt man unter “Server” den Punkt “BIND DNS Server”.

Nun muss man zuerst mal eine neue Zone erstellen. Hierfür wählt man den Punkt “Create master zone”. Will man, wie in meinem Fall Namen zu IPs auflösen, so muss man eine Forward Lookup Zone erstellen.

Unter “Domain name / Network” vergibt man den Namen für die Zone. Dieser wird auch gleich der Name der Top Level Domain sein (zB. lokal, ch oder com).
Nun muss man noch unter “Email address” eine eMail-Adresse eingeben. Der Rest kann man auf den Standardeinstellungen belassen.

Jetzt kann man endlich die ersten Namen einer IP zuordnen. Dazu definiert man alle Namen und IPs unter dem Punkt “Address (0)”.

Wenn man will, kann man unter “Reverse Address (0)” nochmal die selbigen Informationen zuordnen.

Nachdem man seine Änderungen abgespeichert hat, kann man die Einstellungen testen.
Dazu logge ich mich per SSH ein und führe eine Abfrage an den DNS Server aus:

dig @127.0.0.1 name.domain

Eine Antwort sollte etwa so aussehen:

; <<>> DiG 9.4.2-P2 <<>> @127.0.0.1 name.domain
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18355
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;name.domain. IN A

;; ANSWER SECTION:
name.domain. 38400 IN A 192.168.0.1

;; AUTHORITY SECTION:
domain. 38400 IN NS SL004.

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Nov 29 01:52:00 2009
;; MSG SIZE rcvd: 62

Nun muss man nur noch den einzelnen Hosts den DNS hinzufügen. Da bei mir alle Clients ihre IPs per DHCP beziehen, musste ich den DNS nur da eintragen, und abwarten.

Und von nun an, muss ich mir keine mühsamen IP-Adressen mehr merken :)
Vielen Dank an Roman für die Tipps zu Webmin.