DNS strežnik na Synology NAS
Že od nekdaj sem imel v svojem domačem omrežju lasten DNS strežnik. Iz dveh razlogov:
- gostoval je moje lastne domene in
- pospešil je resolvanje internetnih naslovov.
Ko sem pred nekaj meseci ugasnil svoj stari Windows strežnik, je bil DNS edina stvar, ki mi je ni uspelo preseliti na NAS. Ker pa moje potrebe po lastnem gostovanju DNS zon niso bile več nujne, sem jih preselil k registrarju - Domenci, ki gostovanje ponuja zastonj in tako je bil problem rešen.
Vsaj kazalo je tako.
DNS strežnik (oz. posrednik) je postal moj stari router, ki pa ni bil DHCP strežnik. In to je pomenilo, da je prihajalo do težav pri resolvanju domačih naslovov, saj router ni vedel za vse naprave v omrežju. Pomagal sem si z dodajanjem .local pripone k imenom naprav, a vseeno sem želel, da mi za statične naslove tega ne bi bilo potrebno.
Tako sem poskušal poiskati ali morda obstaja DNS strežnik za moj NAS. In glej ga zlomka, obstaja! Imenuje se BIND, ki je stalnica na Linux (Unix) okoljih. Žal privzeto v Synologyjevi implementaciji ni naložen in ga je potrebno naložiti ročno. Synology ima odlično zastavljeno nalaganje aplikacij in ostalih komponent v t.i. Package Centru, a tam BINDa, žal, ne najdemo.
Iskanje z Googlom mi je povedalo, da bo potrebno na NAS najprej naložiti Bootstrap. Bootstrap je skripta, ki omogoči nalaganje paketov kot to poznajo uporabniki Linuxov z ukazom "apt-get", le da se tu imenuje ipkg. Sam postopek nalaganja Bootstrapa je dobro razložen na Synology Wiki strani:
- Najprej omogočimo SSH login na NAS,
- se priljavimo na NAS z uporabnikom root,
- naložimo Bootstrap z ukazom WGET (POZOR! biti mora pravi za našo napravo!!),
- zaženemo Bootsrap,
- pobrišemo Bootstrap datoteko,
- zaženemo "ipkg update" in
- "ipkg upgrade".
Ko je Bootstrap naložen, sledi še ukaz:
ipkg install bind
in BIND je naložen na NAS. Vendar to še ni dovolj. BIND je potrebno konfigurirati in vpisati zone. Konfiguracija BINDa se nahaja v tekstualnih datotekah, ki jih lahko pripravimo na svojem računalniku ali jih kreiramo na NAS z urejevalnikom vi. Ko so vse konfiguracijske datoteke na svojem mestu (na lokaciji /opt/etc/named) zaženemo DNS strežnik z ukazom:
/opt/etc/init.d/S09named start
Da pa ne bo vse zgledalo preveč učeno, sledijo konkretni ukazi, ki jih je potrebno izvesti na NAS. Z rdečo barvo so označeni tisti elementi, ki jih moramo spremeniti glede na svoj NAS oz. svoje potrebe.
cd /volume1/@tmp
wget http://wizjos.endofinternet.net/synology/archief/syno-mvkw-bootstrap_1.2-7_arm-ds111.xsh
chmod +x syno-mvkw-bootstrap_1.2-7_arm-ds111.xsh
sh syno-mvkw-bootstrap_1.2-7_arm-ds111.xsh
rm syno-mvkw-bootstrap_1.2-7_arm-ds111.xsh
vi /root/.profile
# v PATH=.... dodaj PATH=$PATH:...
ipkg update
ipkg upgrade
ipkg install bind
/opt/etc/named/named.conf
//define the local area network here which is allowed to submit query acl "home" { 192.168.1.0/24; 127.0.0.1; }; //to make the name server public accessible, replace "home" to "any" for all allow statement, e.g. // allow-query { "any"; }; // allow-recursion { "any"; }; options { directory "/opt/etc/named"; allow-query { "home"; }; allow-recursion { "home"; }; // forward to google dns forwarders { 8.8.8.8; }; }; controls { inet 127.0.0.1 allow { localhost; } ; }; logging { channel dns_log { file "/opt/var/log/dns.log" versions 3 size 2m; severity info; print-severity yes; print-time yes; print-category yes; }; category default { dns_log; }; }; // Add local zone definitions here. zone "localhost" { type master; file "db.localhost"; allow-update { none; }; notify no; }; zone "0.0.127.in-addr.arpa" { type master; file "db.localhost.rev"; allow-update { none; }; notify no; }; //only allow local network to query mydomain.com to preven leaking local network information to public zone "mydomain.com" { type master; file "db.mydomain.com"; allow-query { "home"; }; allow-update { none; }; notify yes; }; zone "1.168.192.in-addr.arpa" { type master; file "db.192.168.1.rev"; allow-query { "home"; }; allow-update { none; }; notify yes; }; zone "." { type hint; file "root.servers"; };
/opt/etc/named/db.localhost
$TTL 86400 ; 24 hours could have been written as 24h $ORIGIN localhost. ; line below = localhost 1D IN SOA localhost root.localhost @ 1D IN SOA @ root ( 2012110101 ; serial 3H ; refresh 15 ; retry 1w ; expire 3h ; minimum ) @ 1D IN NS @ 1D IN A 127.0.0.1
/opt/etc/named/db.localhost.rev
$TTL 86400 ; ; could use $ORIGIN 0.0.127.IN-ADDR.ARPA. @ IN SOA localhost. root.localhost. ( 2012110101 ; Serial 3h ; Refresh 15 ; Retry 1w ; Expire 3h ) ; Minimum IN NS localhost. 1 IN PTR localhost.
/opt/etc/named/db.mydomain.com
$TTL 604800 @ IN SOA lan.mydomain.com. root.mydomain.com. ( 2012110101 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800) ; Negative Cache TTL ; @ IN NS nas//assign NAS IP to nas subdomain nas IN A 192.168.1.100
router IN A 192.168.1.1//define the rest of the machine of the local network here
/opt/etc/named/db.192.168.1.rev
$TTL 86400 ; 1 day $ORIGIN 1.168.192.in-addr.arpa. @ 1D IN SOA lan.mydomain.com. root.mydomain.com. ( 2012110101 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800) ; Negative Cache TTL IN NS nas.mydomain.com. //define 192.168.1.1 1 IN PTR router.lan.mydomain.com. //define the rest of the machine in the LAN 100 IN PTR nas.lan.mydomain.com.
/opt/etc/named/root.servers
. 3600000 IN NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 . 3600000 NS B.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. 3600000 A 192.228.79.201 . 3600000 NS C.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 . 3600000 NS D.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90 . 3600000 NS E.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10 . 3600000 NS F.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241 . 3600000 NS G.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 . 3600000 NS H.ROOT-SERVERS.NET. H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53 . 3600000 NS I.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17 . 3600000 NS J.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30 . 3600000 NS K.ROOT-SERVERS.NET. K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129 . 3600000 NS L.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12 . 3600000 NS M.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
- Lokalno omrežje je 192.168.1.0/24
- IP naslov NAS naprave je 192.168.1.100
- Lastna domena se imenuje mydomain.com
- Privzeti prehod v omrežju je 192.168.1.1
- Dodeljena lokalna poddomena je lan.mydomain.com
- Imenski strežnik odgovarja na povpraševanja le iz lokalnega omrežja.