Für diese Beschreibung habe ich mit Absicht eine Konfiguration gewählt, die etwas abweicht von einem
StandartNetz im Homebereich. Siehe auch die gewählten Adressbereiche!
Aufgabe:
--------
Zwei Netzsegmente sollen an je einem Lan Anschluß vom QNAP-NAS TS-419 eingerichtet werden.
Für beide Netze soll DHCP, DNS und PXE Boot realisiert werden.
DNS soll dynamisch durch den DHCP Server aktualisiert werden. Sowohl Clients mit dynamisch durch DHCP vergebene Adresse als auch statisch in dhcp.conf vergebene Adressen werden mit ihren Namen im DNS registriert.
- Beide Netze sollen gemeinsam einen Router im ersten Netzsegment als Zugang zum WWW nutzen.
- Clients aus beiden Netzen können über ihre Netzwerkarte mit PXEboot starten. (z.B. für netzinstallation, acronis ect.)
vorh.Hardware: NAS QNAP TS-419 FW: 3.1.2 Build 1014 Raid5
Vorbereitung:
---------------
- WinSCP und Putty instalieren
- wenn noch nicht erfolgt - Optware-ipkg installieren
(im QNAP-Web-Tool unter Anwendungen , QPK-Plug-ins)
- Für unser Beispiel beide Netzwerkanschlüsse feste IP zuweisen. DHCP NICHT aktivieren!
(im QNAP-Web-Tool unter Systemadministration , Netzwerkeinstellungen)
Beispiel:
eth0 IP: 10.128.5.174 Mask: 255.255.255.240 GW: 10.128.5.161 (IP vom Router - am Router DHCP ausschalten!)
eth1 IP: 192.168.200.0 Mask: 255.255.255.0 GW: 192.168.200.200
Haken bei "Netzwerk Port-Trunking aktivieren" entfernen. DNS Einträge nicht relevant!
- Auf dem Router eine Route zum Netz 192.168.200.0 einrichten GW: 10.128.5.174
Installation notwendiger Pakete:
-------------------------------------
- Putty starten und mit NAS verbinden.
- an der Konsole für die Installation vom DNS Paket eingeben:
ipkg install bind
- an der Konsole für die Installation vom TFTP Paket (für PXE Boot) eingeben:
ipkg install tftp-hpa
DHCP brauch nicht extra instaliert werden, da in der aktuellen Firmware schon vorhanden!
"autorun.sh" erstellen
------------------------
Die Funktion der "autorun.sh" wurde oft schon beschrieben.
In dieser Datei können alle individuelle Anpassungen vorgenommen werden, die auch nach einem Neustart verbleiben sollen.
Da ich nicht bei jeder Anpassung den im WIKI beschriebenen Weg gehen will (an der Konsole)
mount -t ext2 /dev/mtdblock5 /tmp/config
dann unter /tmp/config die autorun.sh anlegen (bzw. editieren) und anschließend (an der Konsole)
umount /tmp/config
lege ich einmalig eine "autorun.sh" nach WIKI mit folgenden Inhalt an:
autorun.sh
#!/bin/sh#sym-link /opt to /opt rm -rf /opt ln -sf /share/MD0_DATA/.qpkg/Optware /opt# Start /opt/autorun.sh /opt/autorun.sh
Eine zweite "autorun.sh" wird direkt unter /opt angelegt.
Diese kann man dann einfach mit WinSCP ohne ständiges mount und umount bearbeitet und erfüllt auch ihren Zweck!
Der Inhalt dieser zweiten "autorun.sh" wird weiter unten beschrieben.
Datei + Verzeichnisstruktur (für Beispiel)
------------------------------------------
|/tmp | /config | | autorun.sh |/opt | autorun.sh | |/etc | | dhcpd.conf | | resolve.conf | | | |/init.d | | | dhcpd.sh | | | S09named | | | |/named | | named.conf | | rndc.conf |/var |/named |zone.hm6.loc |zone.5.128.10 |zone.200.168.192 |zone.localhost |zone.0.0.127 |zone.root
Erweitern der resolv.conf
--------------------------
Die orginale resolv.conf unter /etc enthält keinen Domain Eintrag.
DNS ist ja auf dem QNAP-NAS erstmal nicht vorgesehen.
Im Beispiel ist die Domain "hm6.loc" ! Eintrag "nameserver" 127.0.0.1 (NAS soll ja DNS Server werden)
resolv.conf
Einrichten RNDC u. DDNS
-----------------------------
rndc bedeutet (remote) name daemon controller. Neben Befehlen zum Starten und Stoppen des Daemons (named über S09named) sowie zum Neuladen der Konfiguration und von Zone-Files wird der generierte Schlüssel auch für die dynamische Zone-Updates über DHCP benötigt. Dafür wird die Datei rndc.conf erstellt in der u.a. auch der Schlüssel enthalten ist.
Anlegen der rndc.conf - Eingabe Konsole (Putty):
rndc-confgen >/opt/etc/named/rndc.conf
Ihr müsst natürlich nun eure Datei rncd.conf und euren Schlüssel in der named.conf und dhcpd.conf benutzen. Nicht die aus den Beispieldateien!
Beispiel rndc.conf
# Start of rndc.confkey "rndc-key" {algorithm hmac-md5;secret "tjXskUrMW26Bd3kcZehjOw==";};options {default-key "rndc-key";default-server 127.0.0.1;default-port 953;};# End of rndc.conf# Use with the following in named.conf, adjusting the allow list as needed:# key "rndc-key" {# algorithm hmac-md5;# secret "tjXskUrMW26Bd3kcZehjOw==";# };## controls {# inet 127.0.0.1 port 953# allow { 127.0.0.1; } keys { "rndc-key"; };# };# End of named.conf
Beispiel named.conf
#/opt/etc/named/named.confkey "rndc-key" { algorithm hmac-md5; secret "tjXskUrMW26Bd3kcZehjOw==";};controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; };};options { directory "/opt/var/named"; allow-query { 10.128.5/24; 192.168.200/24; 127.0.0.1; };# forward only; forwarders { [color=#FF0000]10.128.5.161[/color]; }; notify no;};zone "hm6.loc" {type master;file "zone.hm6.loc";allow-update { key rndc-key; };};zone "5.128.10.in-addr.arpa" {type master;file "zone.5.128.10";allow-update { key rndc-key; };};zone "200.168.192.in-addr.arpa" {type master;file "zone.200.168.192";allow-update { key rndc-key; };};zone "." in {type hint;file "zone.root";};zone "localhost" {type master;file "zone.localhost";};zone "0.0.127.in-addr.arpa" {type master;file "zone.0.0.127";};
Alle Zonen-Files sind als Beispiel im Dateianhang und werden nach /opt/var/named kopiert.
Anpassungen an euer Netz vornehmen!
Einrichten DHCPD
--------------------
DHCP ist schon Bestandteil der aktuellen Firmware. Minimale Möglichkeit der Konfiguration im WEBIF vorhanden.
Für die hier vorgesehene Konfiguration kann man das Webfrontend vergessen. Dort wird DHCP DEAKTIVIERT!
Das in /etc/init.d vorhandene Script "dhcpd.sh" habe ich etwas angepasst und dieses neue Script unter
/opt/etc/dhcpd.sh abgelegt. Script ist in den Beispieldateien im Anhang vorhanden und kann zusammen mit den anderen
Files mit WINSCP zum NAS kopiert werden. Rechte auf ausführen setzen!
Beim Scriptstart vom angepassten dhcpd.sh wird die Konfiguration nur noch aus /opt/etc/dhcpd.conf ausgelesen. Die
dhcpd.conf wird nicht mehr aus den NAS Einträgen im WEBIF erstellt.
Angepasste Script "dhcpd.sh"
#!/bin/sh# dhcpd This shell script takes care of starting and stopping# dhcpd.## description: dhcpd provide access to Dynamic Host Control Protocol.#DEV="eth0 eth1"# See how we were called.case "$1" in start) # Stop daemons echo -n "Stoping dhcpd" echo "." /bin/kill -HUP `/bin/pidof dhcpd` # Start daemons echo -n "Starting dhcpd: " if [ `/sbin/getcfg Network "BONDING Support" -u -d FALSE` = TRUE ]; then DEV=bond0 else DEV= fi [ -d /etc/config/dhcp ] || /bin/mkdir /etc/config/dhcp; [ -d /var/state ] || /bin/mkdir /var/state if [ ! -L /var/state/dhcp ]; then /bin/ln -sf /etc/config/dhcp /var/state/dhcp /bin/touch /var/state/dhcp/dhcpd.leases fi /sbin/daemon_mgr dhcpd start "/usr/local/sbin/dhcpd -q -cf /opt/etc/dhcpd.conf $DEV"#2>/dev/null 1>/dev/null" echo -n "dhcpd" echo "." touch /var/lock/subsys/dhcpd# echo -n "ddns update"# /etc/init.d/ddns_update.sh > /dev/null# echo "." ;; stop) # Stop daemons. echo -n "Shutting down dhcpd: " /sbin/daemon_mgr dhcpd stop /usr/local/sbin/dhcpd #kill -HUP `/bin/pidof dhcpd`# local pid pid=`/bin/pidof dhcpd` if [ ! -z $pid ]; then kill $pid fi echo -n "dhcpd" echo "." rm -f /var/lock/subsys/dhcpd ;; restart) $0 start RETVAL=$? ;; *) echo "Usage: dhcpd { [start]|stop|[restart] }" exit 1esacexit 0
DHCP wird nur über die dhcpd.conf eingerichtet! Auch die Einträge (optionen) für den PXEBoot sind im u.a. Beispiel vorhanden.
Beispiel dhcpd.conf (Einträge anpassen! auch den Schlüssel!)
# File /etc/dhcpd.conf# Abschnitt Global (für alle Abschnitte gültig) server-identifier 10.128.5.174; option domain-name "hm6.loc"; default-lease-time 600; # zehn Minuten max-lease-time 3600; # eine Stunde authoritative;#lease-file-name "/var/lib/dhcpd/dhcpd.leases";#max-lease-time 86400;#default-lease-time 86400;# Fuer DDNS ddns-update-style interim; ddns-updates on; ignore client-updates; #allow client-updates; #allow unknown-clients; #do-forward-updates on; # Dynamischer Update DNS, statische Adressen auch im DNS updaten update-static-leases on; ddns-ttl 600; key "rndc-key" { algorithm hmac-md5; secret "tjXskUrMW26Bd3kcZehjOw=="; };zone hm6.loc { primary 127.0.0.1; key rndc-key;}zone 5.128.10.in-addr.arpa { primary 127.0.0.1; key rndc-key;}zone 200.168.192.in-addr.arpa { primary 127.0.0.1; key rndc-key;}# Fuer PXE Boot allow booting; allow bootp; next-server 10.128.5.174; filename "pxelinux.0"; # Abschnitt für Subnet 0 (an eth0) subnet 10.128.5.160 netmask 255.255.255.240 { range 10.128.5.165 10.128.5.169; option broadcast-address 10.128.5.175; option subnet-mask 255.255.255.240; option domain-name-servers 10.128.5.174, 10.128.5.161; option routers 10.128.5.161; #option netbios-name-servers 192.168.0.1; host macius { hardware ethernet 00:E0:00:18:00:00; fixed-address 10.128.5.162; } host cpl-510n { hardware ethernet 00:15:99:04:C6:26; fixed-address 10.128.5.172; } host NAS-4220 { hardware ethernet 00:01:D2:02:22:75; fixed-address 10.128.5.173; } }# Abschnitt für Subnet 1 (an eth1) subnet 192.168.200.0 netmask 255.255.255.0 { range 192.168.200.10 192.168.200.50; option broadcast-address 192.168.200.255; option subnet-mask 255.255.255.0; option domain-name-servers 10.128.5.174; option routers 192.168.200.200; #option netbios-name-servers 192.168.1.1; }
Alle Startoptionen werden sind in der "/opt/autorun.sh" eingetragen. Somit werden die Dienste nach einem Neustart vom NAS immer geladen. Rechte setzen nicht vergessen! Die USB/RS232 Unterstützung ist in einem anderen Beitrag im Forum beschrieben.
Eine Beispielkonfiguration für PXEBoot ist in den Beispieldateien im Anhang vorhanden. Ich benutze pxelinux aus dem SYSlinux Projekt.
"/opt/autorun.sh"
#!/bin/sh
#sym-link /opt to /opt
# rm -rf /opt
# ln -sf /share/MD0_DATA/.qpkg/Optware /opt
#---------------------------------------------
#export PATH
echo "export PATH=$PATH:/opt/bin:/opt/sbin:/usr/bin/X11:/usr/local/sbin:/opt/etc/init.d" >> /etc/profile
# Treiber USB to RS232 (QNAP-NAS(USB) an APC USV mit RS232 Anschluß - extra mini Howto im Forum)
# /sbin/insmod /opt/lib/modules/2.6.22.18/kernel/drivers/usb/serial/usbserial.ko
# /sbin/insmod /opt/lib/modules/2.6.22.18/kernel/drivers/usb/serial/ftdi_sio.ko
# Start APC USV Unterstuetzung
# /sbin/apcupsd -c -f /opt/etc/apcupsd/apcupsd.conf
#IP Forwarding on bzw. off
echo 1 > /proc/sys/net/ipv4/ip_forward
# echo 0 > /proc/sys/net/ipv4/ip_forward
# DynamischeDNS und DHCP
# copy custom resolv.conf
cp /opt/etc/resolv.conf /etc/resolv.conf
#Start DDNS
/opt/etc/init.d/S09named start
# Start DHCP
/opt/etc/init.d/dhcpd.sh start
# Start TFTP Server (PXE Boot)
/opt/sbin/in.tftpd -s /opt/tftpboot -u admin -l -c --ipv4
Alles anzeigen
Test DHCP/DDNS/PXE
--------------------------
Also Neustart von einem Clients, der seine IP über DHCP bekommen soll und ein "ipconfig /all" (Windows) sollte die
richtige Konfiguration anzeigen.Ist ein funktionierendes "nslookup" auf eine IP oder deren Name erfolgreich -> DDNS ist OK.
Achtung! Beim Test "nslookup" mit putty auf dem QNAP-NAS erhält man eine Ausgabe von "busybox"! Zumindestens auf den beiden QNAP-NAS TS-419U und TS-419P mit denen ich getestet habe. Ein Symlink "nslookup" unter
"/mnt/ext/usr/bin" hat eine Verknüpfung auf "/bin/busybox" ! Diesen Symlink überprüfen und wenn verknüpft mit
busybox, dann löschen!
NSLOOKUP sollte unter /share/MD0_DATA/.qpkg/Optware/bin zu finden sein!
Möchte man überprüfen ob die Clients richtig in den ZonenDateien eingetragen werden, dann vorher an der Puttyconsole z.B."S09named restart" eingeben. Dies ist notwendig da sich die Einträge erst mal temp. in den Journalfiles befinden. Erst nach einer Weile werden diese in die Zonendateien übertragen. Bei einem stop, restart bzw. start vom daemon wird dieser vorgang sofort ausgeführt.
PXEBoot- PC über Netzweradapter (bootrom) booten! Client sollte über DHCP eine IP bekommen und das Beispielmenu sollte starten! Achtung! Netzwerkkarten mit SIS900 chip machen oft Probleme. Wenn die nicht bis zum Menue kommen liegt es nicht an eurer Konfiguration!
Alle Files zum Beispiel!