Raspberry Pi – Sonstiges



Inhalt:


Umgebungsvariable PATH erweitern

Die Umgebungsvariable PATH speichert Verzeichnispfade in den die Kommandozeile (Shell) nach den eingegebenen, ausführbaren Dateien sucht. Befindet sich diese Datei in einem anderen Verzeichnis als in PATH aufgelistet, muss in der Kommandozeile (oder Shell-Skript) der komplette Pfad mitangegeben werden. Um dieses bei jeder Eingabe umzugehen, kann die PATH-Variable mit dem Pfad erweitert werden.

PATH temporär erweitern

Der Umgebungsvariable PATH wird ein zusätzlicher Pfad angefügt, der nur während der aktuellen Login-Session gilt.

$ PATH=$PATH:/neuer/Pfad

Nach einem Neustart oder erneutem Anmelden ist der Eintrag nicht mehr vorhanden.

PATH dauerhaft erweitern

Möchte man einen Pfad dauerhaft in der Umgebungsvariable PATH speichern, so muss dieser in der Datei /etc/profile hinzugefügt werden.

Öffne die /etc/profile Datei zum editieren:

$ sudo nano /etc/profile

Füge der Variablen PATH einen Doppelpunkt als Trenner und den zusätzlichen Pfad an.

PATH in der /etc/profile Datei

Die Datei speichern und RPi neustarten. Oder um den Pfad bis zum nächsten Neustart in der aktuellen Login-Session nutzen zu können, PATH temporär erweitern.

 






Raspberry Pi – Speichermedien einbinden



USB-Speichermedium einbinden

Sollen Geräte mit NTFS-Dateisystem eingebunden werden, muss zunächst der Treiber installiert werden:

$ sudo apt-get -y install ntfs-3g hfsutils hfsprogs exfat-fuse

Als nächstes wird ein Einhängepunkt für die spätere Einbindung des Gerätes im /media Verzeichnis erstellt (z.B. usb1):

$ sudo mkdir /media/usb1

Um den Pfad zu dem USB-Gerät herauszufinden den folgenden Befehl ausführen, das Gerät anschliessen und den Befehl erneut ausführen.

$ sudo blkid -o list -w /dev/null

Das Gerät sollte jetzt zusätzlich zu den vorhandenen aufgelistet sein.

Angeschlossenes USB-Speichermedium
Angeschlossenes USB-Speichermedium

USB-Gerät manuell einhängen:

Da der device-Pfad jetzt bekannt ist kann der USB-Stick oder die USB-Festplatte eingehangen werden.

 

FAT32:

$ sudo mount -t vfat -o utf8,uid=pi,gid=pi,noatime /dev/sda1 /media/usb1

NTFS:

$ sudo mount -t ntfs-3g -o utf8,uid=pi,gid=pi,noatime /dev/sda1 /media/usb1

ext4:

$ sudo mount -t ext4 -o defaults /dev/sda1 /media/usb1

Anzeige



USB-Sticks bei reichelt elektronik
Große Auswahl an USB-Sticks und aktuellen Angeboten.

USB-Gerät automatisch beim Start einhängen:

Soll das USB-Speichermedium beim Booten eingehangen werden kann man dies in der /etc/fstab Datei eintragen.

$ sudo nano /etc/fstab

Am Ende der Datei die UUID des Gerätes, Einhängepunkt und Optonen eintragen.

 

FAT32:

UUID=0444-D367 /media/usb1/ vfat utf8,uid=pi,gid=pi,noatime 0

 

NTFS:

UUID=0444-D367 /media/usb1/ ntfs-3g utf8,uid=pi,gid=pi,noatime 0

 

ext4:

UUID=0444-D367 /media/usb1/ ext4 defaults 0


NAS-Server einbinden

Zuerst einen Einhängepunkt des Geretes im /media Verzeichnis erstellen (z.B. nas1):

$ sudo mkdir /media/nas1

NAS manuell einhängen:

Samba

$ sudo mount -t cifs //192.168.1.2/nasfreigabe /media/nas1 -o user=nasuser,pass=nasuserpassword

NFS

$ sudo mount -t nfs 192.168.1.2:/nasfreigabe /media/nas1 -vwn

NAS automatisch beim Start einhängen:

Um den NAS-Server automatisch beim Booten des Pis einzuhängen, muss dieser in der /etc/fstab Datei eingetragen werden.

$ sudo nano /etc/fstab

Am Ende der Datei eintragen für Samba:

//192.168.1.2/nasfreigabe /media/nas1 cifs username=NASUSER,password=NASUSERPASSWORD,uid=pi,gid=pi 0 0

oder für NFS:

192.198.1.2:/nasfreigabe /media/nas1 nfs auto,rw,rsize=8192,wsize=8192 0 0

Raspberry Pi neustarten:

$ sudo reboot

Speichermedium aushängen

$ sudo umount /mountpoint/path -v

 






Buffalo LinkStation Wake-On-LAN



Inhalt:

  1. Einführung
  2. Voraussetzungen
  3. Vorbereitung
  4. Die Raspberry Pi Software
  5. Back-End zum Ein- und Ausschalten
    1. 5.1 MySQL Account Datenbank anlegen
    2. 5.2 WebApp erstellen


1. Einführung

In diesem Tutorial erkläre ich wie man den Buffalo LinkStation NAS-Server mithilfe von Raspberry Pi über das lokale Heimnetzwerk und aus dem Internet ein- und ausschalten kann.

Die Buffalo LinkStation wartet 5 Minuten lang auf eine WOL-Nachricht. Bekommt sie keine, wird das Betriebssystem heruntergefahren. Der Raspberry Pi sorgt dafür, dass diese Nachricht innerhalb dieser Zeit gesendet wird damit der Buffalo wach bleibt, oder es wird eben keine WOL-Nachricht geschickt wenn ein gewolltes Ausschalten der LinkStation eingeleitet werden soll.

2. Voraussetzungen

Für die Realisierung dieses Projektes sind folgende Voraussetzungen zu erfüllen:

  • Ein Wake-On-LAN-fähiges Gerät, das kontinuierlich WOL-Pakete empfangen muss um wach zu bleiben. Im Projekt wurde der NAS-Server Buffalo LinkStation LS-WXLD24 verwendet.
  • Ein Raspberry Pi mit installiertem Linux-Betriebsystem (hier Raspbian Jessie) und SSH– oder direktem Terminal-Zugriff auf das System.
  • Raspberry Pi USB- oder FTP-Zugriff für die Dateienübertragung.
  • Beide Geräte müssen im Heimnetzwerk verbunden sein. Vorzugsweise per LAN.
  • Auf dem Raspberry Pi sind Webserver (Apache2 oder lighttpd), PHP5, mySQL installiert und aktiv.
  • (optional wenn man das Zielgerät von Aussen schalten möchte) ein Zugriff auf den Raspberry Pi aus dem Internet.
Feste-IP.net
Feste-IP.net

3. Vorbereitung

Der LinkStation Power Schalter muss auf AUTO stehen. In dieser Position fährt der NAS Server nach ca. 5 Minuten herunter wenn keine Wake-On-LAN-Nachricht empfangen wird.

Der Raspberry Pi soll wie die LinkStation in gleichem Heimnetzwerk verbunden sein.

4. Die Raspberry Pi Software

Die Raspberry Pi Software stayalive schickt standardmässig alle 3 Minuten eine Wake-On-LAN-Nachricht zu der LinkStation. Die Datei stay.alive enthält ein Flag 0 oder 1. Steht er auf 1 wird der NAS Server wach gehalten bzw. hochgefahren. Bei 0 wird keine WOL-Nachricht geschickt und der NAS Server fährt nach ca. 5 Minuten herunter.

Die stayalive Software kann hier heruntergeladen werden. Die ZIP-Datei auf den RPi in das Verzeichnis /home/pi/Downloads übertragen und entpacken.

$ cd /home/pi/Downloads
$ unzip stayalive_1.1.2.zip
$ cd stayalive_1.1.2

Die Konfigurationsdatei stayalive.conf anpassen (vor der Installation!).

$ sudo nano stayalive/stayalive.conf

Vor allem die Parameter BCAST_ADDR, BCAST_PORT und TARGET_MAC sind wichtig.
Danach das Install-Skript ausführen.

$ sudo bash install

Nach der Installation den Flag in der Datei /etc/stayalive/stay.alive auf 1 setzen. Die LinkStation sollte nun hochfahren.

Die install.log-Datei befindet sich im /etc/stayalive Verzeichnis. Ausführung-Log-Dateien sind im /var/log/stayalive Verzeichnis zu finden.

5. Back-End zum Ein- und Ausschalten

Als Back-End zu Ein- und Ausschalten der LinkStation eignet sich am besten eine Webanwendung. Mit der ist es dann möglich über den Internet Browser lokal oder aus dem Internet den NAS Server zu schalten. Die Anwendung setzt den Flag in der stay.alive Datei. Damit Unbefügte kein Zugriff auf die Anwendung haben, wird Login Authentifizierung eingesetzt. Berechtigte Benutzer und Passwörter werden in der MySQL-Datenbank gespeichert.

5.1 MySQL Account Datenbank anlegen

Anmerkung: Falls der MySQL-Server und phpMyAdmin noch nicht installiert, siehe diese Anleitung!

Um den Zugriff auf die Webanwendung zum Schalten des NAS-Servers zu schützen wird eine Datenbank mit Accounts für berechtigte Benutzer eingerichtet.

Dafür den phpMyAdmin auf dem Raspberry Pi öffnen (http://{RPi-IP-Adresse}/phpmyadmin). Gegebenfalls das bei der phpMyAdmin-Installation vergebene Passwort eingeben.

Auf dem Reiter Datenbanken den Datenbanknamen „hnc“ eingeben und Koalition utf8mb4_general_ci wählen.

hnc Datenbank anlegen
hnc Datenbank anlegen

Mit „Anlegen“ bestätigen und weiter.

Links im Datenbankbrowser die hnc-Datenbank wählen, und die Tabelle account mit 4 Spalten erzeugen.

account Tabelle erzeugen
account-Tabelle erzeugen

Die Tabellenspalten wie unten definieren.

account Tabellenspalten definieren
account-Tabellenspalten definieren

Zu dem Reiter Einfügen wechseln und neuen Benutzer anlegen. Der Benutzername und Passwort sollen mit MD5 verschlüsselt werden.

account Tabelle- Benutzer anlegen
Wake-On-LAN Webanwendung-Benutzer hinzufügen

Bestätigung eines erfolgreich hinzugefügten Datensatzes:

account Datensatz erfolgreich eingefügt
Datensatz erfolgreich eingefügt in die Tabelle account

Auf dem Reiter Anzeigen ist jetzt der Datensatz mit dem verschlüsseltem Benutzernamen und Passwort sichtbar.

account Tabellendatensatz anzeigen
Der eingefügte account-Tabellendatensatz

Eine Beispiel Datenbank kann hier heruntergeladen werden.

Nach dem entpacken der ZIP-Datei den Raspberry Pi phpMyAdmin öffnen (http://{RPi-IP-Adresse}/phpmyadmin), auf den Home Button klicken (1) und den Reiter Import wählen (2). Die entpackte sql-Datei laden (3) und mit OK (4) die Datenbank importieren.

hnc Datenbankimport
Datenbankimport

Die Beispiel-Datenbank enthält eine Tabelle account mit einem Datensatz für den Benutzer testuser mit dem Passwort testpasswort.

5.2 WebApp erstellen

Die Webanwendung soll über eine grafische Oberfläche den Flag in der Datei /etc/stayalive/stay.alive setzen können. Sinnvoll ist auch eine Benutzer-Authentifizierung wenn man auf diese Anwendung über das Internet zugreifft.

Eine Beispiel-Webanwendung kann hier heruntergeladen werden. Die ZIP-Datei in das RPi /home/pi/Downloads Ordner übertragen und dann in das /var/www bzw. bei Raspbian Jessie /var/www/html Verzeichnis entpacken.

$ cd /home/pi/Downloads
$ sudo unzip hnc.zip -d /var/www

seit Raspbian Jessie (Ende 2015):

$ cd /home/pi/Downloads
$ sudo unzip hnc.zip -d /var/www/html

In der Datei /var/www/{html}/hnc/login.php in der Funktion get_db_pw muss bei dem mysqli_connect()-Aufruf der MySQL Benutzer und das Passwort angegeben werden. Standardmäßig ist Benutzer root ohne Passwort voreingestellt.

function get_db_pw($uname){
$con = mysqli_connect("","USER", "PASSWORD");
mysqli_select_db($con,"hnc");
$sql = "select password from account where username = '$uname'";
$res = mysqli_query($con,$sql);
$data=mysqli_fetch_assoc($res);
mysqli_close($con);
return $data["password"];
}

Nun kann die WebApp mit http://{RPi-IP-Adresse}/hnc/hnc.php geöffnet werden. In der Beispiel-Webanwendung testuser und testpassword für die Anmeldung benutzen.

hnc login
hnc-Anmeldung

Die Domäne im Kopf der Seite kann in der Datei login.php im <body>-Bereich, Zeile 53 geändert werden.

<h2 align="center">exampledomain.feste-ip.net</h2>

Nach dem Einloggen kann man über die dynamische Webseite das Zielgerät ein- und ausschalten.

hnc user interface
stayalive Benutzeroberfläche

Das Einschalten dauert bis zu 3 Minuten, bis das nächste WOL-Paket vom stayalive gesendet wird plus die Zeit, die das Gerät zum Hochfahren braucht. Das Ausschalten kann eine Verzögerung von 5 Minuten haben (gerätabhängig, hier bei Buffalo LinkStation).

 






Raspberry Pi – Zusätzliche Dienste und Programme



  1. Apache Webserver
  2. lighttpd Webserver
  3. PHP
  4. mySQL und phpMyAdmin
  5. FTP Server
    1. vsftp
    2. ProFTP
  6. SSH Server


Apache Webserver

Installation

Für die Apache2 Webserver Installation wird die www-data Benutzergruppe und der www-data Benutzer benötigt.

$ sudo groupadd www-data
$ sudo usermod -a -G www-data www-data

Nach Updates suchen und aktualisieren.

$ sudo apt-get update && sudo apt-get upgrade

Nach dem Upgrade RPi neustarten.

$ sudo reboot

Apache installieren:

$ sudo apt-get install apache2 apache2-doc apache2-utils

Nach der Installation wird der Apache-Daemon automatisch gestartet.

Installation testen

Die Raspberry Pi IP-Adresse im Internet Browser eingeben. Es sollte eine Apache2 Debian Default Page geöffnet werden mit dem Text „It Works!“ und der Konfigurationsübersicht als Bestätigung dass der Webserver fehlerfrei arbeitet.

 

lighttpd Webserver

Vor der Installation die Paketdatenbank aktualisieren und ein Upgrade ausführen:

$ sudo apt-get update && sudo apt-get upgrade

Installation

$ sudo apt-get install lighttpd

Nach der Installation wird der lighttpd-Daemon automatisch gestartet. Man kan es mit dem folgenden Befehl überprüfen.

$ sudo systemctl status lighttpd

Berechtigungen setzen

Die Benutzergruppe www-data anlegen und den Benutzer pi dieser Gruppe hinzufügen. Den Benutzer www-data als Eigentümer des /var/www bzw. /var/www/html Verzeichnisses definieren und Schreib-/Leserechte vergeben.

$ sudo groupadd www-data
$ sudo usermod -G www-data -a pi

Raspbian Weezy:

$ sudo chown -R www-data:www-data /var/www
$ sudo chmod -R 775 /var/www

Seit Raspbian Jessie (Ende 2015):

$ sudo chown -R www-data:www-data /var/www/html
$ sudo chmod -R 775 /var/www/html

 

Anzeige

PHP

PHP5 nachrüsten

$ sudo apt-get install libapache2-mod-php5 php5 php-pear php5-xcache

Installation testen

In das Webserver-Verzeichnis wechseln:

$ cd /var/www

Seit Raspbian Jessie (Ende 2015):

$ cd /var/www/html

In diesem Ordner die Datei phpinfo.php erstellen.

$ sudo nano phpinfo.php

Folgende PHP-Zeilen eintragen und speichern.

<?php phpinfo(); ?>

Im Browser die Raspberry Pi IP-Adresse gefolgt von /phpinfo.php eingeben. Die PHP Version Berichtseite sollte geöffnet werden.

 

mySQL und phpMyAdmin

mySQL installieren

$ sudo apt-get install php5-mysql mysql-server mysql-client

Ein Passwort vergeben:

MySQL root Password
mySQL root Passwort vergeben

Mit OK weiter.

Nach der Installation RPi neustarten.

$ sudo restart

phpMyAdmin installieren

$ sudo apt-get install phpmyadmin

Den installierten Webserver auswählen:

Webserverauswahl
Auswahl des installierten Webservers

Die Datenbank-Konfiguration mit dbconfig-common übernehmen:

Datenbank-Konfiguration
Datenbank-Konfiguration

phpMyAdmin Administrator-Passwort vergeben:

phpMyAdmin Passwort
phpMyAdmin Administrator Passwort

phpMyAdmin im Webserver einbinden:

$ sudo nano /etc/apache2/apache2.conf

An das Ende dieser Konfigurationsdatei

include /etc/phpmyadmin/apache.conf

eintragen.

Webserver neustarten:

$ sudo /etc/init.d/apache2 restart

 



Anzeige

FTP Server

vsftp

Paketliste aktualisieren.

$ sudo apt-get update

Installieren

$ sudo apt-get install vsftpd

Konfigurieren

Die Konfigurationsdatei öffnen:

$ sudo nano /etc/vsftpd.conf

In der Konfigurationsdatei die folgenden Parameter setzen.
Den Zugang nur für angemeldete Benutzer erlauben:

anonymous_enable=NO

Die lokale Benutzung erlauben:

local_enable=YES

Damit Dateien und Verzeichnisse angelegt werden können:

write_enable=YES

Die Datei speichern (STRG+O und RETURN), schliessen (STRG+X) und den FTP-Server neustarten.

$ sudo service vsftpd restart

Zu dem FTP-Server kann jetzt mit einem FTP-Client (z.B. FileZilla) eine Verbindung geöffnet werden.

 

ProFTP

to be continued…

SSH Server

Installieren

In den neuern Raspbian-Versionen ist der SSH-Server bereits installiert. Ledieglich muss er nur aktiviert werden. In den älteren Versionen kann er nachträglich manuell installiert werden.

$ sudo apt-get install ssh

Den SSH-Server automatisch starten.

$ sudo update-rc.d ssh defaults
$ sudo /etc/init.d/ssh start

Aktivieren

In den neueren Raspbian-Versionen wird der SSH-Server nur aktiviert.

$ sudo raspi-config
Interface Einstellungen
Konfigurationsmenüpunkt – Interface Optionen

Den Konfigurationsmenüpunkt Interfacing Options auswählen.

SSH-Server aktivieren und deaktivieren
SSH-Server aktivieren/deaktivieren

Mit ENTER weiter.

SSH-Server Aktivierung bestätigen
SSH-Server Aktivierung bestätigen

„Ja“ wählen und mit ENTER bestätigen.

SSH-Server Status
SSH-Server Status

Mit ENTER beenden.

 

Da es bis zu diesem Zeitpunkt kein SSH-Zugriff gab, muss die ganze Prozedur mit angeschlossenem Monitor und einer Tastatur direkt am Raspberry Pi durchgeführt werden werden. Nach der Installation bzw. Aktivierung kann der SSH-Client putty genutzt werden.

 







Lokaler DNS Server mit BIND



Inhalt

  1. 1. Einführung
  2. 2. Installation
  3. 3. Konfiguration
    1. 3.1 Forward- und Reverse-Lookup Zonen
    2. 3.2 BIND-Konfiguration
    3. 3.3 BIND DNS-Server beim Booten automatisch starten
  4. 4. DNS-Server im Router eintragen
  5. 5. DNS-Server testen
    1. 5.1 Linux
    2. 5.2 Windows


1. Einführung

Ein lokaler Domain Name System (DNS) Server ist nützlich wenn man die Netzwerkgeräte wie Server, PC’s usw. im lokalen Heimnetzwerk (Intranet) mit der Domäne anstelle mit der IP-Adresse ansprechen möchte oder wie im Falle von Unitymedia Horizon HD Recorder die eigene öffentliche Domäne lokal nicht aufgelöst bekommt.

Einer der bekanntesten DNS-Server ist der von der Universität Berkeley (USA) entwickelte und inzwischen vom Internet Systems Consortium (ISC) übernommenen BIND Server. Als Open Source erhältlich, eignet er sich auch für private Zwecke wie eben einen lokalen Heimnetzwerk-DNS-Server.

2. Installation

Zuerst wird das Raspberry Pi Betriebsystem auf den neusten Stand gebracht:

$ sudo apt-get update && sudo apt-get upgrade

Der Raspberry Pi muss eine statische IP-Adresse besitzen. Das Interface (/etc/network/interfaces) sollte wie folgt konfiguriert sein:

# Ethernet
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.2.105
netmask 255.255.255.0
gateway 192.168.2.1
dns-nameservers localhost 192.168.2.1
dns-domain beispiel-domain.home # optional

Jetzt wird BIND 9 mit dem folgenden Befehl installiert:

$ sudo apt-get install bind9 bind9utils dnsutils

Die Pakete bind9utils und dnsutils sind optional, sie enthalten aber nützliche Tools für die Wartung, das Testen und die Fehleranalyse eines DNS-Servers.

Nach der Installation startet der DNS-Server automatisch. Um dies zu überprüfen kann man mit dem dig-Befehl aus dem dnsutils-Paket folgendes ausführen:

$ dig @127.0.0.1 www.google.de

Die Ausgabe sollte ungefähr so aussehen:

DNS-Server-Test mit dig

3. Konfiguration

Die Konfigurationsdateien liegen im /etc/bind/ Verzeichnis. Die /etc/bind/named.conf importiert nur weitere Dateien wie /etc/bind/named.conf.options, /etc/bind/named.conf.local und /etc/bind/named.conf.default-zones. Für die eigene Konfiguration und Zonen sollte die /etc/bind/named.conf.local verwendet werden.

3.1 Forward- und Reverse-Lookup Zonen

Für jede Domäne sollte es zwei Zonen-Dateien geben. Eine für den Forward- und eine für den Reverse-Lookup.

Zuerst muss in der Datei /etc/bind/named.conf.local die Konfiguration der beiden Zonen eingetragen werden:

$ sudo nano /etc/bind/named.conf.local

Am Ende der Datei hinzufügen:

// Forward-Lookup
zone "beispiel-domain.home" {
      type master;
      file "/etc/bind/zones/db.beispiel-domain.home";
      allow-transfer { acl_trusted_transfer; };
};

// Reverse-Lookup
zone "2.168.192.in-addr.arpa" {
      type master;
      file "/etc/bind/zones/db.2.168.192";
};

Die Datei speichern und ein Unterverzeichnis für die Zone-Dateien erstellen:

$ sudo mkdir /etc/bind/zones

In diesem Ordner die Forward-Lookup-Datei erstellen:

$ sudo nano /etc/bind/zones/db.beispiel-domain.home

In dieser Datei folgende Einträge erstellen:

;;
;; BIND forward data file for zone beispiel-domain.home
;;

$TTL    86400 ; time-to-live - 24 hours
@     IN    SOA   ns1.beispiel-domain.home. mail.beispiel-domain.home. (
                  2016122601 ; Serial - Muster YYYYMMDD01
                  604800 ; Refresh (every 7 days)
                  86400 ; Retry (every 24h)
                  2419200 ; Expire (after 28 days)
                  604800 ) ; TTL Negativ Cache (7 days)
      IN    NS    ns1.beispiel-domain.home. ; nameserver
      IN    A     192.168.2.105 ; nameserver's loop-back address
ns1   IN    A     192.168.2.105 ; nameserver self
beispiel-domain.home.  IN      A     192.168.2.105

www   IN    CNAME beispiel-domain.home.

Für den Reverse-Lookup wird eine weitere Datei angelegt:

$ sudo nano /etc/bind/zones/db.2.169.192

und mit folgendem Inhalt gefüllt:

;;
;; BIND reverse data file for zone db.2.168.192
;;

$TTL      86400 ; time-to-live - 24 h
@     IN    SOA   ns1.beispiel-domain.home. mail.beispiel-domain.home. (
                  2016122701 ; Serial
                  604800 ; Refresh (every 7 days)
                  86400 ; Retry (every 24h)
                  2419200 ; Expire (after 28 days)
                  604800 ) ; TTL Negativ Cache (7 days)
      IN    NS    ns1.beispiel-domain.home. ; nameserver

105   IN    PTR   www.beispiel-domain.home. ; webserver 192.168.2.105
103   IN    PTR   nas.beispiel.domain.home. ; NAS Server 192.168.2.103

3.2 BIND-Konfiguration

Nachdem die Zonen-Dateien erstellt wurden, muss noch die Zugriffssteuerung in die BIND-Konfiguration eingetragen werden.

Die BIND-Konfigurationsdatei öffnen:

$ sudo nano /etc/bind/named.conf.options

Der Access Control List (ACL) Eintrag acl_trusted_transfer steuert für welche IP’s ein DNS-Zonen-Transfer erlaubt ist.

acl "acl_trusted_transfer" {
      none;
};

Der Eintrag acl_trusted_clients steuert, von welchen IP’s aus Anfragen an den DNS-Server erlaubt sind.

acl "acl_trusted_clients" {
      // localhost (RFC 3330) - Loopback-Device addresses
      127.0.0.0/8; // 127.0.0.0 - 127.255.255.255

      // Private Network (RFC 1918) - LAN, WLAN etc.
      192.168.2.0/24; // 192.168.2.0 - 192.168.2.255

      // Private Network (RFC 1918) - VPN etc.
      // 10.0.0.0/8; // 10.0.0.0 - 10.255.255.255
};

Um Anfragen des DNS-Servers von Zonen außerhalb des lokalen Netzwerkes beantworten zu können, ist es möglich weitere, öffentliche DNS-Server als Forwarders einzutragen.

forwarders {
      // Router DNS
      // 192.168.2.1;

      // Google Public DNS
      8.8.8.8;
      8.8.4.4;

      // OpenDNS
      208.67.222.222;
      208.67.220.220;
};

Die angelegte Konfiguration kann mit dem Programm named-checkconf geprüft werden:

$ sudo named-checkconf -z

Werden ausschließlich IPv4-Adressen benutzt, soll es dem DNS-Server mitgeteilt werden um die Performance zu steigern. Dazu den Optionsparameter „-4“ in dem folgenden Eintrag in der Datei /etc/default/bind9 anhängen:

OPTIONS="-u bind -4"

Abschließend den DNS-Server neu starten:

$ sudo service bind9 restart

oder

$ sudo service bind9 stop
$ sudo service bind9 start

3.3 BIND DNS-Server beim Booten automatisch starten

Damit der BIND DNS-Server-Prozess beim Booten des Systems automatisch gestartet wird, muss der Autostart mit folgendem Befehl aktiviert werden:

$ sudo update-rc.d bind9 defaults

4. DNS-Server im Router eintragen

Die DNS-Server IP-Adresse (in diesem Beispiel 192.168.2.105) sollte in der Router-Konfiguration als primärer lokaler DNS-Server eingetragen werden.

5. DNS-Server testen

5.1 Linux

Forward-Lookup testen

dig @192.168.2.105 +noall +answer beispiel-domain.home
dig @192.168.2.105 +noall +answer www.beispiel-domain.home
dig @192.168.2.105 +noall +answer ns1.beispiel-domain.home
dig @192.168.2.105 +noall +answer nas.beispiel-domain.home

Für jede Anfrage sollte der DNS-Eintrag mit der korrekten IP-Adresse ausgegeben werden.

Reverse-Lookup testen

dig @192.168.2.105 +noall +answer -x 192.168.2.105
dig @192.168.2.105 +noall +answer -x 192.168.2.103

Für jede Anfrage sollte der DNS-Eintrag mit dem korrekten Domain-Namen ausgegeben werden.

5.2 Windows

Forward-Lookup testen

nslookup beispiel-domain.home
nslookup www.beispiel-domain.home
nslookup ns1.beispiel-domain.home
nslookup nas.beispiel-domain.home

Für jede Anfrage sollte die korrekten IP-Adresse ausgegeben werden.

Reverse-Lookup testen

nslookup 192.168.2.105
nslookup 192.168.2.103

Für jede Anfrage sollte der korrekte Domain-Name ausgegeben werden.