Wydrukuj dokumentację Pokaż jako slajdy
Spis Treści
Instalacja serwera DNS
Serwer DNS to pdostawowa usługa. W zależności od potrzeb jest możliwe zainstalowanie:
- bind - serwer autorytatywny oraz resolver (jednocześnie)
- unbound - resolver z możliwością wprowadzenia DNS Blackholing (patrz niżej)
- nsd - tylko autorytatywny serwer dla domen (bez funkcji resolvera)
Instalacja bind9.14
Za pomocą własnego repozytorium pakietów należy zainstalować named-a:
pkg install -Uy dns/bind914
Wpisy w /etc/rc.conf
named_chrootdir=""
named_enable="YES"
named_conf="/usr/local/etc/namedb/named.conf"
named_confdir="/usr/local/etc/namedb/"
named_uid="bind"
named_default_zone_to_reload="bsdserwis.com"
named_views="dmz internal external"
rndc_program=/usr/local/sbin/rndc
Dodatkowo można skorzystać z repozytorium skryptów w celu doinstalowania niezbędnych plików Makefile.
Ustawienie uprawnień do katalogów
Konfiguracja serwera bind jest w katalogu /usr/local/etc/namedb/. Jak widać powyżej serwer jest uruchamiany jako użytkownik bind. W związku z powyższym konieczne jest ustawienie odpowiednich uprawnień, aby bind był w stanie wystartować:
chown bind:bind /usr/local/etc/namedb/
# opcjonalnie na podstawie komunikatów z logów
chown bind:bind /usr/local/etc/namedb/*.jnl
Instalacja unbound
unbound jest serwerem DNS pełniącym jedynie funkcję resolvera. Posiada również możliwość wprowadzenia DNS Blackholing dla np. malware domains. unbound posiada możliwość sprawdzenia odpowiedzi DNSowych dla domen zabezpieczonych za pomocą DNSSEC
Sam unbound nie posiada w sobie narzędzi do obsługi DNS: host, dig, obsługi dnssec, etc. Dlatego trzeba doinstalować pakiet bind-tools.
pkg install -Uy dns/unbound dns/bind-tools
Konfiguracja serwera
Główny plik konfiguracyjny unbound oraz pliki do lokalnego konfiguracji (local-*.conf) znajdują się w repozytorium skryptów. Wszystkie pliki konfiguracyjne posiadają odpowiednie komentarze pozwalające na uruchomienie serwera.
/etc/rc.conf
unbound_enable="YES"
unbound_pidfile="/var/run/unbound/unbound.pid"
Instalacja nsd
nsd to autorytatywny serwer DNS (bez resolvera). Więcej na jego temat na stronie domowej projektu. Analogicznie do unbound nie posiada narzędzi DNS (dns/bind-tools):
pkg install -Uy dns/nsd converters/base64
/etc/rc.conf
nsd_enable="YES"
/var/cron/tabs/nsd
Plik instalowany z repozytorium skryptów:
# --- definicje zmiennych lokalnych ----------------------------------------
#
NULL=/dev/null
LOCAL_PREFIX=/usr/local
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
#
#minute hour mday month wday command
#
# --- aktualizacja drzewa ports --------------------------------------------
#
43 07 * * * /usr/local/bin/nsd_zone_write | /usr/bin/grep -v ok
# --- koniec crontaba ------------------------------------------------------
Konfiguracja serwera
Główny plik konfiguracyjny nsd oraz pliki do lokalnego konfiguracji (local-*.conf) znajdują się w repozytorium skryptów. Wszystkie pliki konfiguracyjne posiadają odpowiednie komentarze pozwalające na uruchomienie serwera.
Poniżej podana jest konfiguracja serwera pełniącego rolę serwera master oraz slave - to zaczątek konfiguracji.
master DNS
# --- konfiguracja serwera NSD jako master-a ---------------------
#
server:
ip-address: 192.168.1.200
port: 53
server-count: 1
ip4-only: yes
hide-version: yes
identity: "unidentified server"
username: bind
ip-transparent: no
debug-mode: no
zonesdir: /usr/local/etc/nsd/master
verbosity: 0
zonelistfile: "/var/db/nsd/zone.list"
database: "/var/db/nsd/nsd.db"
logfile: "/var/log/nsd/nsd.log"
pidfile: "/var/run/nsd/nsd.pid"
xfrdfile: "/var/db/nsd/xfrd.state"
xfrdir: "/tmp"
# nsid: "aabbccdd"
tcp-count: 100
tcp-query-count: 0
tcp-timeout: 120
ipv4-edns-size: 4096
# ipv6-edns-size: 4096
statistics: 3600
xfrd-reload-timeout: 1
zonefiles-check: yes
rrl-size: 1000000
rrl-ratelimit: 200
rrl-slip: 2
rrl-ipv4-prefix-length: 24
rrl-ipv6-prefix-length: 64
# Remote control config section.
remote-control:
control-enable: yes
control-interface: 127.0.0.1
control-port: 8952
server-key-file: "/usr/local/etc/nsd/nsd_server.key"
server-cert-file: "/usr/local/etc/nsd/nsd_server.pem"
control-key-file: "/usr/local/etc/nsd/nsd_control.key"
control-cert-file: "/usr/local/etc/nsd/nsd_control.pem"
key:
name: "sec_key"
algorithm: hmac-sha256
# dd if=/dev/random of=/dev/stdout count=1 bs=32 | base64
secret: "fvv9fAUpd06CW9Tv+/NBheW7BGYFXI91Eeuipf+eYRM="
zone:
name: wtps0n.local
zonefile: wtps0n.local.cf
# notify: __IP_SEC__@53 sec_key
# provide-xfr: __IP_SEC__ sec_key
# notify: __IP_SEC__@53 NOKEY
# provide-xfr: __IP_SEC__ NOKEY
slave DNS
Ustawienia globalne mogą być wspólne jak dla master DNS, natomiast różnica będzie dla pliku strefy:
key:
name: "sec_key"
algorithm: hmac-sha256
# dd if=/dev/random of=/dev/stdout count=1 bs=32 | base64
secret: "fvv9fAUpd06CW9Tv+/NBheW7BGYFXI91Eeuipf+eYRM="
zone:
name: wtps0n.local
zonefile: wtps0n.local.cf
# allow-notify: __IP_PRI__@53 sec_key
# request-xfr: AXFR __IP_SEC__ sec_key
Składnia plików stref
Zasadniczo jest to składnia jak w named-zie. Ale są drobne różnice:
dyrektywa $include nie zawiera znaków cudzysłowia,
dyrektywa $include nie musi się kończyć znakiem średnika,
dyrektywa $include zawiera ścieżkę "relatywną" do pliku nsd.conf (czyli np. master/include/localhost.cf),
- jedyny dozwolony znak komentarza to średnik,
Żródła w sieci internet
Inne dokumentacje
(c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.
