<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="http://unfoldingneurons.com/"
	>

<channel>
	<title>Bits, Bytes and my 5 cents &#187; DNS</title>
	<atom:link href="http://blog.encodingit.ch/tag/dns/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.encodingit.ch</link>
	<description>Life is just a technical game</description>
	<lastBuildDate>Thu, 02 Feb 2012 16:28:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Eine Ära geht zu Ende &#8230;</title>
		<link>http://blog.encodingit.ch/2011/06/eine-ara-geht-zu-ende/</link>
		<comments>http://blog.encodingit.ch/2011/06/eine-ara-geht-zu-ende/#comments</comments>
		<pubDate>Mon, 20 Jun 2011 07:10:05 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Ausbildung]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Drucker]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Quota]]></category>
		<category><![CDATA[RedHat]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[Sun]]></category>
		<category><![CDATA[VBS]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.encodingit.ch/?p=2464</guid>
		<description><![CDATA[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.<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></description>
			<content:encoded><![CDATA[<p>&#8230; 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!<br />
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.</p>
<p>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 <img src='http://blog.encodingit.ch/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<pre class="brush: bash; title: ; notranslate">
'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(&quot;WScript.Network&quot;)
Set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)

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

'Prüfen ob Drive schon vorhanden
If NOT objFSO.DriveExists (strDrive) Then
	'drive mappen
	objNetwork.MapNetworkDrive strDrive, strPath , bolPer, strUsr, strPas
End If
</pre>
<p>Oder noch ein VBS-Script, um zwei DNS-Einträge zu setzen:</p>
<pre class="brush: bash; title: ; notranslate">
'-----------------------------------------------------------------------------------------------
'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 = &quot;192.168.1.18&quot;
strsecondary = &quot;192.168.1.19&quot;

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

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

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

'read each network interface in variable
For Each objNetCard in colNetCards
	'set dns arry to network interface
	objNetCard.SetDNSServerSearchOrder(arrDNSServers)
Next
</pre>
<p>Nun weg von der dunklen Seite &#8211; auf zu Linux, da hab ich entsprechend mehr Material <img src='http://blog.encodingit.ch/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span id="more-2464"></span></p>
<p>Los geht es mit einem Perl-Script, welches alle Benutzer aus dem LDAP ausliesst, die abgelaufen sind und diese via eMail informiert:</p>
<pre class="brush: perl; title: ; notranslate">
#!/usr/bin/perl -w
use IPC::Open3;
use Net::LDAP;

$date = setExpire();
my $LDAPHOST = &quot;&quot;;
my $LDAPROOT  = &quot;&quot;;
my $LDAPUPASS = &quot;&quot;;

my $ldap = Net::LDAP-&gt;new($LDAPHOST) or die &quot;Can't bind to ldap:\n $!\n $@&quot;;
$ldap-&gt;bind;
my $pid = open3(\*IN,\*OUT,0,'/bin/bash');
my $cmd = 'lsuser -a expires ALL &gt; tmpusers';
print IN &quot;$cmd\n&quot;;
open(USERS, &quot;tmpusers&quot;) || die(&quot;tmpusers is not accessable!&quot;);
@raw_data = &lt;USERS&gt;;
close(USERS);
foreach $user (@raw_data)
{
	@splited = split(/=/, $user);
	@splited2 = split(/ /, $splited[0]);
	$username = $splited2[0];
	if (not($splited[1] == &quot;0&quot;))
	{
		$exyear = (substr($splited[1],8,2));
		$exmonth = (substr($splited[1],0,2));
		$exday = (substr($splited[1],2,2));
		$expired = &quot;$exyear$exmonth$exday&quot;;
		if ($date &gt; $expired) {
			my $pid = open3(\*IN,\*OUT,1,'/bin/bash');
			my $cmd = 'lsuser -a gecos '.$username;
			print IN &quot;$cmd\n&quot;;
			my $result = &lt;OUT&gt;;
			if ((index($result,&quot;gecos&quot;)) &gt; 0)
			{
				@raw_info = split(/=/, $result);
				if ((index($raw_info[1],&quot;_&quot;)) &gt; 0)
				{
					@raw_name = split(/_/, $raw_info[1]);
					$fullname = $raw_name[0].&quot; &quot;.$raw_name[1];
				} else {
					$fullname = $raw_info[1];
				}
				my ($mesg) = $ldap-&gt;search(
					base   =&gt; &quot;ou=People,$LDAPROOT&quot;,
					filter =&gt; &quot;(uid=$username)&quot;,
					attrs =&gt; ['uid', 'mail']
				);
				$mesg-&gt;code &amp;&amp; die $mesg-&gt;error;
				foreach my $entry ( $mesg-&gt;entries ) {
					my ($useremail) = $entry-&gt;get_value('mail');
					my $pid = open3(\*IN,\*OUT,1,'/bin/bash');
					my $cmd = '/usr/lib/sendmail -t
						To: '.$useremail.'
						Subject: Account has expired
						Dear '.$fullname.'
						Your account '.$username.' has expired!';
					print IN &quot;$cmd\n&quot;;
				}
			}
		}
	}
}

$ldap-&gt;unbind;

sub setExpire {
	my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);

	$year += 1900;
	$mon += 1;
	$year = sprintf(&quot;%02d&quot;, $year % 100);
	$mon = sprintf(&quot;%02d&quot;, $mon % 100);
	$mday = sprintf(&quot;%02d&quot;, $mday% 100);
	return &quot;$year$mon$mday&quot;;
}
</pre>
<p>Oder ein Bash-Script, um einen Drucker hinzuzufügen:</p>
<pre class="brush: bash; title: ; notranslate">
#!/bin/bash
echo &quot;What's the printer's name?&quot;
read printer
echo &quot;What's the queue's name (Default: $printer)?&quot;
read queue

echo &quot;&lt;Printer $printer&gt;&quot; &gt;&gt; /etc/cups/printers.conf
echo &quot;Info $printer&quot; &gt;&gt; /etc/cups/printers.conf
echo &quot;DeviceURI lpd://$printer/$queue&quot; &gt;&gt; /etc/cups/printers.conf
echo &quot;State Idle&quot; &gt;&gt; /etc/cups/printers.conf
echo &quot;Accepting Yes&quot; &gt;&gt; /etc/cups/printers.conf
echo &quot;JobSheets none none&quot; &gt;&gt; /etc/cups/printers.conf
echo &quot;QuotaPeriod 0&quot; &gt;&gt; /etc/cups/printers.conf
echo &quot;PageLimit 0&quot; &gt;&gt; /etc/cups/printers.conf
echo &quot;KLimit 0&quot; &gt;&gt; /etc/cups/printers.conf
echo &quot;&lt;/Printer&gt;&quot; &gt;&gt; /etc/cups/printers.conf

echo &quot;restarting cups&quot;
/etc/init.d/cups restart
</pre>
<p>Wie wäre es mit einem kleinen Script, dass den freien Festplattenspeicher mit ASCII grafisch aufbereitet:</p>
<pre class="brush: bash; title: ; notranslate">
#!/bin/bash
df -h $1 | tr -s ' ' '\t' | cut -f2,3,5,6 | grep '^[^/].*$' | grep '^.*/.*$' | while read all use pct fs
	#get the percent without the % and wirte it to fil
	do echo $pct $fs | cut -d% -f1 | while read fil
		#write as that much # as the number of fil is
		do for (( i=0 ; $i&lt;$fil; i=$i+1 ))
			#write everything to out
			do out=&quot;$out#&quot;
		done

		#calculate the rest
		rest=$((100-fil))
		for (( i=0 ; $i&lt;$rest; i=$i+1 ))
			#add everything to out too
			do out=&quot;$out-&quot;
		done

		#get the size of the mountpoint
		size=$(echo $fs | wc -m)
		#calculate the needed rest
		size=$((15-$size))

		#add the number of spaces
		for (( i=0 ; $i&lt;$size; i=$i+1 ))
			do space=&quot;$space &quot;
		done

		#print the mountpoint, space buffer and out (its fil)
		echo -e &quot;$fs $space $out $pct ($use/$all)&quot;
	done
done
</pre>
<p>Oder aber ein Script (benötigt expect) das via iLO eine Maschine neustartet:</p>
<pre class="brush: bash; title: ; notranslate">
#!/usr/bin/expect
# Version 1.0
# by Patrick Schmid

spawn ssh root@[lindex $argv 0]
expect &quot;Password:&quot; {send &quot;PASSWORD\r&quot;}
expect &quot;&gt; &quot; {send &quot;reset /SYS -script\r&quot;}
expect {
	&quot;Performing&quot; {puts stdout &quot;\nDone&quot;}
  default {puts stdout &quot;\nError&quot;}
}
</pre>
<p>So jetzt mal weg von den Scripts, einfach ein paar Befehle für die Konsole. So zum Hinzufügen einer Maschine zu einer NIS-Domäne:</p>
<pre class="brush: bash; title: ; notranslate">
ypset -d DOMÄNE SERVER
/etc/init.d/ypbind restart
chkconfig --level 345 ypbind on
</pre>
<p>Oder eine Checkliste zum Zurücksetzen eines vergessenen Passwortes unter RedHat:</p>
<ul>
<li>Insert de Rescue Disk</li>
<li>Befor loading the system press F2 to enter the start up menu</li>
<li>Select Disk and wait until it is loaded</li>
<li>Press F5 to enter rescue mode</li>
<li>enter &#8220;linux rescue&#8221; and confirm with Enter</li>
<li>Wait until a shell promt comes up</li>
<li>Type &#8220;chroot /mnt/syslinux&#8221; and confirm with enter</li>
<li>mount -o remount,rw /</li>
<li>Open the shadow file by entering &#8220;vi /etc/shadow&#8221;</li>
<li>Delete the value between the first two :</li>
<li>Type :wq to save and quit</li>
<li>Type shutdown -h now and remove the CD</li>
<li>Password is reseted now</li>
</ul>
<p>Auch die Quota lässt sich ganz einfach anzeigen und anpassen:</p>
<pre class="brush: bash; title: ; notranslate">
zfs get quota store/home/USERNAME
zfs set quota=10G store/home/USERNAME
</pre>
<p>Oder aber viel Nützliches im Umgang mit SUN / Solaris. So zum Beispiel zum Ausführen eines Filesystemchecks:</p>
<pre class="brush: bash; title: ; notranslate">
fsck -v ufs /dev/dsk/c0t0d0sX
</pre>
<p>Oder zum sauberen Neustarten eines Maschine:</p>
<pre class="brush: bash; title: ; notranslate">
sync:sync:reboot
</pre>
<p>Oder wenn man auf der Konsole mit BACKSPACE nichts mehr löschen kann, so hilft:</p>
<pre class="brush: bash; title: ; notranslate">
stty erase [BACKSPACE]
</pre>
<p>Auch wenn man alle Partitionen sehen will, wird geholfen:</p>
<pre class="brush: bash; title: ; notranslate">
echo|format
</pre>
<p>Oder wer von der Konsole aus neustarten will:</p>
<pre class="brush: bash; title: ; notranslate">
boot -s (Single User)
boot net -s (ab Netzwerk starten)
boot net - install (ab Netzwerk installieren)
boot cdrom -s (von CD starten)
</pre>
<p>Auch wer unter Solaris sein Passwort vergisst, muss nicht verzweifeln:</p>
<ul>
<li>boot cdrom -s                        &#8211;> Ab CD starten</li>
<li>echo|format                          &#8211;> Die Partitionen ausgeben</li>
<li>mkdir /tmp/d                         &#8211;> Ordner zum mounten erstellen</li>
<li>mount /dev/dsk/c0t0d0s0 /tmp/t       &#8211;> Partition mounten</li>
<li>vim /etc/shadow                      &#8211;> Passwortfile öffnen, Passwort für root löschen</li>
<li>sync;sync;reboot                     &#8211;> Reboot</li>
<li>fsck /dev/dsk/c0t0d0s0               &#8211;> file system check</li>
<li>fsck -y /dev/dsk/c0t0d0s0            &#8211;> confirm file system check</li>
</ul>
<p>So das war es dann in etwa auch schon wieder. Und ja ich weiss, die Scripts sind teils schrecklich umständlich, aber sie führten zum Ziel <img src='http://blog.encodingit.ch/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.encodingit.ch/2011/06/eine-ara-geht-zu-ende/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Domain Name System mit Bind9</title>
		<link>http://blog.encodingit.ch/2011/03/domain-name-system-mit-bind9/</link>
		<comments>http://blog.encodingit.ch/2011/03/domain-name-system-mit-bind9/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 08:04:45 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[LPIC]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[LPIC 201]]></category>
		<category><![CDATA[Netzwerk]]></category>
		<category><![CDATA[Planet]]></category>

		<guid isPermaLink="false">http://blog.encodingit.ch/?p=1723</guid>
		<description><![CDATA[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.<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></description>
			<content:encoded><![CDATA[<p>Zur Zeit bereite ich mich wieder auf eine neue LPI-Prüfung vor, dieses Jahr steht Nummer 201 an. Darin geht es um <a target="_blank" href="http://www.lpi.org/eng/certification/the_lpic_program/lpic_2/exam_201_detailed_objectives" >Themen</a> wie Linux Kernel kompilieren, patchen, Source kompilieren, Kernelmodule, Startup-Scripts, Grubshell, Filesystem, RAID und LVM oder Netzwerkkonfiguration und DNS.<br />
Eigentlich alles gar nicht so schwer, wäre da nur nicht die Tatsache, dass keine Unterlagen verwendet werden dürfen!</p>
<p>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.</p>
<p>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.</p>
<p>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:</p>
<pre class="brush: bash; title: ; notranslate">
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
</pre>
<p>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 (<a href="http://blog.encodingit.ch/2010/05/der-ur-verzeichnisdienst-nis-yp/" >darüber habe ich schon mal geschrieben</a>).<br />
Doch als auch das nicht mehr reichte, kam man zu DNS.<br />
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 <img src='http://blog.encodingit.ch/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Die wichtigsten Dateien für die Namensauflösung auf einem Client wären dabei:</p>
<blockquote><p>/etc/hosts > verantwortlich für die lokale Namensauflösung.<br />
/etc/resolv.conf > gibt an, welche Nameserver angefragt und welche Domains durchsucht werden sollen.<br />
/etc/nsswitch.conf > definiert die Reihenfolge ob zuerst der DNS, NIS oder die Hosts-Datei bei der Auflösung berücksichtigt werden soll.</p></blockquote>
<p>Dies war alles auf dem Client &#8211; nun aber zu unserem DNS Server. Zuerst mal installieren:</p>
<pre class="brush: bash; title: ; notranslate">
apt-get install bind9
</pre>
<p><span id="more-1723"></span></p>
<p>Gestartet wird der Dienst entweder über /usr/sbin/named oder über /etc/init.d/bind9 (unter Debian). Doch nach der Installation läuft er sowieso standardmässig.</p>
<p>Die Konfiguration ist ganz amüsant! LPIC will sich ja nicht auf eine Distribution festlegen, deshalb gibt es bei einem typischen Beispiel wie bind immer wieder Unterschiede.<br />
Unter Debian (unter welchem ich die Installationen gerade durchführe) liegt alles wie gewohnt unter /etc/bind. RedHat oder Suse packen die Konfigurationsdateien aber in /etc/named.conf und die Zonendateien in /var/named. Viel Spass beim Suchen <img src='http://blog.encodingit.ch/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Unter Debian läuft die Konfiguration von Bind und der Zonen in zwei einzelnen Files ab:</p>
<blockquote><p>named.conf.options > Darin werden alle Einstellungen definiert, wie sich der DNS-Server zu verhalten hat<br />
named.conf.local > Hier werden all die Einstellungen zu den Zonen definiert</p></blockquote>
<p>Nun wollen wir aber auch unser erstes Zonen-File anlegen.<br />
Zuerst der Forward Lookup von Domain -> IP. Dazu legen wir eine Datei in das Verzeichnis /etc/bind mit dem Namen unserer Domain:</p>
<pre class="brush: bash; title: ; notranslate">touch /etc/bind/encodingit.ch</pre>
<p>Diese befüllen wir nun mit dem DNS-Syntax, welcher sehr akribisch eingehalten werden muss:</p>
<pre class="brush: bash; title: ; notranslate">$TTL 2d
@ IN SOA master.encodingit.ch. root.encodingit.ch. (
               2011030401       ; serial
               3h               ; refresh
               1h               ; retry
               1w               ; expiry
               1d )             ; minimum

@              IN NS   master.encodingit.ch.
master          IN A    192.168.1.20</pre>
<p>Die Datei ist bei jeder Zone immer gleich aufgebaut. Auf der ersten Zeile wird die Time-To-Life festgelegt, Dann folgen Angaben über den DNS und die Email-Adresse des Admins (mit . anstatt @). Weiter geht es mit einer eindeutigen Nummer, Standardangaben und dann endlich die eigentlichen Lookups.<br />
Zuerst wird ein NS-Record für die Domain angelegt, danach wird der Name über einen A-Record einer IP zugewiesen.</p>
<p>Nun müssen wir noch den Reverse Lookup einrichten. Dazu machen wir wieder eine neue Datei:</p>
<pre class="brush: bash; title: ; notranslate">touch /etc/bind/1.168.192.in-addr.arpa</pre>
<p>Und befüllen auch diese:</p>
<pre class="brush: bash; title: ; notranslate">$TTL 2d
@ IN SOA master.encodingit.ch. root.encodingit.ch. (
               2011030401       ; serial
               3h               ; refresh
               1h               ; retry
               1w               ; expiry
               1d )             ; minimum

@     IN NS master.encodingit.ch.
20	   IN PTR		master.encodingit.ch.</pre>
<p>Nachdem die Zonen nun angelegt sind, muss man den DNS auch noch dazu zwingen, diese zu kennen. Dazu muss die named.conf.local mit einem Eintrag wie dem folgenden ergänzt werden:</p>
<pre class="brush: bash; title: ; notranslate">zone &quot;encodingit.ch&quot; {
type master;
file &quot;/etc/bind/encodingit.ch&quot;;
};

zone &quot;1.168.192.in-addr.arpa&quot; {
type master;
file &quot;/etc/bind/1.168.192.in-addr.arpa&quot;;
};</pre>
<p>Nun muss noch bind neu gestartet und dann der Client auf den neuen DNS gewechselt werden:</p>
<pre class="brush: bash; title: ; notranslate">/etc/init.d/bind9 restart
echo &quot;domain encodingit.ch&quot; &gt; /etc/resolv.conf
echo &quot;nameserver 127.0.0.1&quot; &gt;&gt; /etc/resolv.conf</pre>
<p>Und schon ist der DNS bereit!</p>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.encodingit.ch/2011/03/domain-name-system-mit-bind9/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<series:name><![CDATA[Vorbereitung LPIC 201]]></series:name>
	</item>
		<item>
		<title>DNS Server Konfiguration</title>
		<link>http://blog.encodingit.ch/2009/11/dns-server-konfiguration/</link>
		<comments>http://blog.encodingit.ch/2009/11/dns-server-konfiguration/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 01:06:05 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Netzwerk]]></category>
		<category><![CDATA[Webmin]]></category>

		<guid isPermaLink="false">http://compr00t.co.funpic.de/?p=649</guid>
		<description><![CDATA[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, alle Dateien einzeln zu editieren und konfigurieren, also habe ich auf Webmin zurückgegriffen.

Webmin erlaubt es, viele Einstellungen in Bereichen wie Netwerkverwaltung, Useradministration, Servereinstellungen und vieles mehr direkt über ein GUI im Browser zu konfigurieren.<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></description>
			<content:encoded><![CDATA[<p>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.</p>
<p>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.</p>
<p>Umso erstaunter war ich, wie kompliziert das eigentlich unter Linux ist&#8230;</p>
<p>Doch war ich irgendwie zu faul (oder einfach vom WindowsGUI verwöhnt), alle Dateien einzeln zu editieren und konfigurieren, also habe ich auf <a href="http://www.webmin.com/"  target="_blank">Webmin</a> zurückgegriffen.</p>
<p><a target="_blank" href="http://www.webmin.com/screenshots/chapter30/figure4.png"  rel="lightbox[649]"><img class="alignnone" src="http://www.webmin.com/screenshots/chapter30/figure4.png" alt="" width="461" height="221" /></a></p>
<p>Webmin erlaubt es, viele Einstellungen in Bereichen wie Netzwerkverwaltung, Useradministration, Servereinstellungen und vieles mehr direkt über ein GUI im Browser zu konfigurieren.</p>
<p>Zuerst muss man sich also das aktuelle Paket von Sourceforge holen:</p>
<blockquote><p>wget http://downloads.sourceforge.net/project/webadmin/webmin/1.390/webmin_1.390_all.deb</p></blockquote>
<p>Danach kann man die Installation starten:</p>
<blockquote><p>sudo dpkg -i webmin_*</p></blockquote>
<p>Da aber noch einige Pakete fehlen, wird die Installation vorerst fehlschlagen. Also gilt es dies noch zu berichtigen:</p>
<blockquote><p>sudo apt-get install -f</p></blockquote>
<p>Und nun ist Webmin auch schon installiert unter unter https://127.0.0.1:10000 verfügbar.</p>
<p>Jetzt kann also die Installation losgehen. Dazu ruft man Webmin auf und loggt sich mit einem User ein, welcher sudo-Rechte besitzt.<br />
Dann wählt man unter &#8220;Server&#8221; den Punkt &#8220;BIND DNS Server&#8221;.</p>
<p>Nun muss man zuerst mal eine neue Zone erstellen. Hierfür wählt man den Punkt &#8220;Create master zone&#8221;. Will man, wie in meinem Fall Namen zu IPs auflösen, so muss man eine Forward Lookup Zone erstellen.</p>
<p>Unter &#8220;Domain name / Network&#8221; vergibt man den Namen für die Zone. Dieser wird auch gleich der Name der Top Level Domain sein (zB. lokal, ch oder com).<br />
Nun muss man noch unter &#8220;Email address&#8221; eine eMail-Adresse eingeben. Der Rest kann man auf den Standardeinstellungen belassen.</p>
<p>Jetzt kann man endlich die ersten Namen einer IP zuordnen. Dazu definiert man alle Namen und IPs unter dem Punkt &#8220;Address (0)&#8221;.</p>
<p>Wenn man will, kann man unter &#8220;Reverse Address (0)&#8221; nochmal die selbigen Informationen zuordnen.</p>
<p>Nachdem man seine Änderungen abgespeichert hat, kann man die Einstellungen testen.<br />
Dazu logge ich mich per SSH ein und führe eine Abfrage an den DNS Server aus:</p>
<blockquote><p>dig @127.0.0.1 name.domain</p></blockquote>
<p>Eine Antwort sollte etwa so aussehen:</p>
<blockquote><p>; &lt;&lt;&gt;&gt; DiG 9.4.2-P2 &lt;&lt;&gt;&gt; @127.0.0.1 name.domain<br />
; (1 server found)<br />
;; global options:  printcmd<br />
;; Got answer:<br />
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 18355<br />
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0</p>
<p>;; QUESTION SECTION:<br />
;name.domain.                     IN      A</p>
<p>;; ANSWER SECTION:<br />
name.domain.              38400   IN      A       192.168.0.1</p>
<p>;; AUTHORITY SECTION:<br />
domain.                  38400   IN      NS      SL004.</p>
<p>;; Query time: 1 msec<br />
;; SERVER: 127.0.0.1#53(127.0.0.1)<br />
;; WHEN: Sun Nov 29 01:52:00 2009<br />
;; MSG SIZE  rcvd: 62</p></blockquote>
<p>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.</p>
<p>Und von nun an, muss ich mir keine mühsamen IP-Adressen mehr merken <img src='http://blog.encodingit.ch/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Vielen Dank an Roman für die <a href="http://ubuntublog.ch/services/webmin-auf-ubuntu-804-server"  target="_blank">Tipps zu Webmin</a>.</p>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.encodingit.ch/2009/11/dns-server-konfiguration/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

