DNS/DHCP

DNS/DHCP, tedy struktura doménových serverů a dynamického přidělování IP adres. U malých sítí je možné použít uvedené nastavení přímo, pokud by se jednalo o několik serverů které se synchronizují, byl bych již opatrnější. Nejsou zde řešeny otázky bezpečnosti, jedná se čistě o rozběhnutí struktury, se kterou je možné dále experimentovat.


Jako DNS server používám BIND, který je součástí systému. Jako DHCP jsem si vybral ISC-DHCP - http://www.isc.org/index.pl?/sw/dhcp

DNS server

Nejdůležitější součástí struktury DNS serveru, který je již obsažen ve FreeBSD, jsou následující soubory a adresáře.
/etc/namedb/named.conf - konfigurační soubor named
/etc/namedb/master - slouží pro statické master zóny
/etc/namedb/slave - slouží pro slave (replikované z hlavního serveru) zóny
/etc/namedb/dynamic - slouží pro dynamické master zóny a jejich aktualizace, např. pomocí DHCP

Konfigurace testovacího systému je:
192.168.1.0/24 - doména firma.local
192.168.254.0/24
Pro základní nastevení jsem použil originální soubor z FreeBSD, zde je ukázka jak by měl vypadat. Tato konfigurace je funkční, pro další experimenty doporučuji man named.conf

1) Příprava konfiguračního souboru pro NAME Daemon /etc/namedb/named.conf

controls {
   inet 127.0.0.1 allow { any; };
   };

options {
   directory "/etc/namedb";
   pid-file "/var/run/named/pid";
   dump-file "/var/dump/named_dump.db";
   statistics-file "/var/stats/named.stats";
   listen-on { 127.0.0.1; 192.168.1.1; };
   notify yes;
   forwarders {
      172.16.1.1; // prni nameserver providera, nutno upravit
      172.16.1.2; // druhy nameserver providera, nutno upravit
      };
   sortlist {
      { localhost; localnets; };
      { localnets; };
      };
};

acl loopback { 127.0.0.1; };
acl vpn { 192.168.1.1; 192.168.254.1; };

// Forward záznamy zóny
zone "firma.local" {
   type master;
   file "dynamic/firma.local";
   allow-transfer { loopback; vpn; };
   allow-update { loopback; };
};

// Reverzní záznamy zóny
zone "1.168.192.in-addr.arpa" {
   type master;
   file "dynamic/1.168.192.in-addr.arpa";
   allow-transfer { loopback; vpn; };
   allow-update { loopback; };
};

// tato zóna slouží pouze pro replikaci
zone "firma.cz" {
   type slave;
   file "slave/firma.cz";
   masters {
      172.20.0.1; // první DNS server, který udržuje doménu
      172.20.0.2; // druhý DNS server, který udržuje doménu
   };
   notify no;
};

zone "." {
   type slave;
   file "slave/root.slave";
   masters {
      192.5.5.241; // F.ROOT-SERVERS.NET.
   };
   notify no;
};
zone "arpa" {
   type slave;
   file "slave/arpa.slave";
   masters {
      192.5.5.241; // F.ROOT-SERVERS.NET.
   };
   notify no;
};
zone "in-addr.arpa" {
   type slave;
   file "slave/in-addr.arpa.slave";
   masters {
      192.5.5.241; // F.ROOT-SERVERS.NET.
   };
   notify no;
};

// RFC 1912
zone "localhost" { type master; file "master/localhost-forward.db"; };
zone "127.in-addr.arpa" { type master; file "master/localhost-reverse.db"; };
zone "255.in-addr.arpa" { type master; file "master/empty.db"; };

// RFC 1912-style zone for IPv6 localhost address
zone "0.ip6.arpa" { type master; file "master/localhost-reverse.db"; };

// "This" Network (RFCs 1912 and 3330)
zone "0.in-addr.arpa" { type master; file "master/empty.db"; };

// IANA Reserved - Unlikely to ever be assigned
zone "1.in-addr.arpa" { type master; file "master/empty.db"; };
zone "2.in-addr.arpa" { type master; file "master/empty.db"; };
zone "223.in-addr.arpa" { type master; file "master/empty.db"; };

// Public Data Networks (RFC 3330)
zone "14.in-addr.arpa" { type master; file "master/empty.db"; };

// Private Use Networks (RFC 1918)
zone "10.in-addr.arpa" { type master; file "master/empty.db"; };
zone "16.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "17.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "18.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "19.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "20.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "21.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "22.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "23.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "24.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "25.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "26.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "27.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "28.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "29.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "30.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "31.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "168.192.in-addr.arpa" { type master; file "master/empty.db"; };

// Link-local/APIPA (RFCs 3330 and 3927)
zone "254.169.in-addr.arpa" { type master; file "master/empty.db"; };

// TEST-NET for Documentation (RFC 3330)
zone "2.0.192.in-addr.arpa" { type master; file "master/empty.db"; };

// Router Benchmark Testing (RFC 3330)
zone "18.198.in-addr.arpa" { type master; file "master/empty.db"; };
zone "19.198.in-addr.arpa" { type master; file "master/empty.db"; };

// IANA Reserved - Old Class E Space
zone "240.in-addr.arpa" { type master; file "master/empty.db"; };
zone "241.in-addr.arpa" { type master; file "master/empty.db"; };
zone "242.in-addr.arpa" { type master; file "master/empty.db"; };
zone "243.in-addr.arpa" { type master; file "master/empty.db"; };
zone "244.in-addr.arpa" { type master; file "master/empty.db"; };
zone "245.in-addr.arpa" { type master; file "master/empty.db"; };
zone "246.in-addr.arpa" { type master; file "master/empty.db"; };
zone "247.in-addr.arpa" { type master; file "master/empty.db"; };
zone "248.in-addr.arpa" { type master; file "master/empty.db"; };
zone "249.in-addr.arpa" { type master; file "master/empty.db"; };
zone "250.in-addr.arpa" { type master; file "master/empty.db"; };
zone "251.in-addr.arpa" { type master; file "master/empty.db"; };
zone "252.in-addr.arpa" { type master; file "master/empty.db"; };
zone "253.in-addr.arpa" { type master; file "master/empty.db"; };
zone "254.in-addr.arpa" { type master; file "master/empty.db"; };

// IPv6 Unassigned Addresses (RFC 4291)
zone "1.ip6.arpa" { type master; file "master/empty.db"; };
zone "3.ip6.arpa" { type master; file "master/empty.db"; };
zone "4.ip6.arpa" { type master; file "master/empty.db"; };
zone "5.ip6.arpa" { type master; file "master/empty.db"; };
zone "6.ip6.arpa" { type master; file "master/empty.db"; };
zone "7.ip6.arpa" { type master; file "master/empty.db"; };
zone "8.ip6.arpa" { type master; file "master/empty.db"; };
zone "9.ip6.arpa" { type master; file "master/empty.db"; };
zone "a.ip6.arpa" { type master; file "master/empty.db"; };
zone "b.ip6.arpa" { type master; file "master/empty.db"; };
zone "c.ip6.arpa" { type master; file "master/empty.db"; };
zone "d.ip6.arpa" { type master; file "master/empty.db"; };
zone "e.ip6.arpa" { type master; file "master/empty.db"; };
zone "0.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "1.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "2.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "3.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "4.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "5.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "6.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "7.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "8.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "9.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "a.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "b.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "0.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "1.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "2.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "3.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "4.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "5.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "6.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "7.e.f.ip6.arpa" { type master; file "master/empty.db"; };

// IPv6 ULA (RFC 4193)
zone "c.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "d.f.ip6.arpa" { type master; file "master/empty.db"; };

// IPv6 Link Local (RFC 4291)
zone "8.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "9.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "a.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "b.e.f.ip6.arpa" { type master; file "master/empty.db"; };

// IPv6 Deprecated Site-Local Addresses (RFC 3879)
zone "c.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "d.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "e.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "f.e.f.ip6.arpa" { type master; file "master/empty.db"; };

// IP6.INT is Deprecated (RFC 4159)
zone "ip6.int" { type master; file "master/empty.db"; };

2) Příprava konfiguračního souboru forward zóny /etc/namedb/dynamic/firma.local, který může vypadat například následovně

$ORIGIN .
$TTL 3600 ; 1 hour
firma.local IN SOA server.firma.local. root. (
      20071253 ; serial
      3600 ; refresh (1 hour)
      900 ; retry (15 minutes)
      3600000 ; expire (5 weeks 6 days 16 hours)
      3600 ; minimum (1 hour)
      )
   NS server.
   MX 10 mail.
   TXT "Local Area Network, powered by FreeBSD"
$ORIGIN firma.local.
server A 192.168.1.1
mail CNAME server
proxy CNAME server
wpad CNAME server
www CNAME server

3) A příprava posledního souboru pro reversní zónu /etc/namedb/dynamic/1.168.192.in-addr.arpa (číslo uvedené je adresa zóny pozpátku)

$ORIGIN .
$TTL 3600 ; 1 hour
1.168.192.in-addr.arpa IN SOA server. root.server. (
      20071240 ; serial
      3600 ; refresh (1 hour)
      900 ; retry (15 minutes)
      3600000 ; expire (5 weeks 6 days 16 hours)
      3600 ; minimum (1 hour)
      )
   NS server.
   MX 10 mail.
   TXT "Local Area Network, powered by FreeBSD"
$ORIGIN 1.168.192.in-addr.arpa.
1 PTR server

4) Dále je nutné povolit spouštění NAMED v souboru /etc-rc.conf
named_enable="YES"

a nakonfigurovat správně soubor /etc/resolv.conf
domain firma.local
search firma.local
nameserver 127.0.0.1

5) A zbývá spuštění NAMED a monitorování logů
/etc/rc.d/named restart
tail -f /var/log/messages


DNS server a Active Directory
6) Pro zajištění možnosti instalace Active Directory v síti, kde pracuje BIND nameserver jako hlavní názvový server, je nutné upravit záznamy v souboru /etc/namedb/dynamic/firma.local. Potřebný zásah je uveden zde:

_ldap._tcp.dc._msdcs.firma.local
_ldap._tcp.dc._msdcs.firma.local SRV service location:
    priority = 0
    weight = 0
    port = 135
    svr hostname = ad.firma.local

A restartovat nameserver. Pokud se při monitorování systémového logu neobjeví žádný problém , je možné pokračovat s konfigurací DHCP.


DHCP server

1) Instalace DHCP serveru
portinstall isc-dhcp3-server
Při konfiguraci se objeví dotaz na nastavení konfigurace portu. Konfiguraci nechávám v standardním nastavení, pouze přidávám volbu DHCP_LQ a v případě problémů občas vypínám DHCP_SOCKETS. Pokud by bylo připojeno více interface do jedné sítě, je nutné tuto volbu vypnout.

2) Příprava konfiguračního souboru pro ISC-DHCP Daemon /usr/local/etc/dhcpd.conf, bližší informace o jednotlivých nastaveních lze získat v man dhcpd.conf

authoritative;
min-lease-time 28800;
default-lease-time 86400;
max-lease-time 604800;
ddns-update-style interim;
allow declines;
allow booting;
allow bootp;
server-name "server";
allow unknown-clients;
one-lease-per-client true;
option primary-dns-suffix code 81 = string;
option custom-proxy-server code 252 = string;
local-address 192.168.1.1;
log-facility local7;
ping-check true;

# Lokalni sit
subnet 192.168.1.0 netmask 255.255.255.0 {
   authoritative;
   allow client-updates;
   max-lease-time 2419200;
   default-lease-time 604800;
   ddns-domainname "firma.local";
   ddns-rev-domainname "in-addr.arpa";
   range 192.168.1.129 192.168.1.248;
   option broadcast-address 192.168.1.255;
   option subnet-mask 255.255.255.0;
   option netbios-node-type 8;
   option domain-name "firma.local";
   option primary-dns-suffix "firma.local";
   option domain-name-servers 192.168.1.1;
   option slp-directory-agent true 192.168.1.1;
   option netbios-name-servers 192.168.1.1;
   option routers 192.168.1.1;
   option ntp-servers 192.168.1.1;
   option time-servers 192.168.1.1;
   option ntp-servers 192.168.1.1;
   option smtp-server 192.168.1.1;
   option pop-server 192.168.1.1;
   option nntp-server 192.168.1.1;
   option custom-proxy-server "http://proxy.firma.local/proxy.pac ";
   zone firma.local {
      primary 127.0.0.1;
      }
   zone 1.168.192.in-addr.arpa {
      primary 127.0.0.1;
      }
   }

host staticky.firma.local {
   hardware ethernet 00:16:27:38:49:5a;
   fixed-address 192.168.1.254;
}

3) Povolení spuštění DHCP serveru v souboru /etc/rc.conf, kde do volby dhcp_ifaces je nutno vložit název interface, na kterém bude DHCP server naslouchat. Název interface je možný získat například příkazem ifconfig -a

dhcpd_enable="YES"
dhcpd_flags="-q"
dhcpd_conf="/usr/local/etc/dhcpd.conf"
dhcpd_ifaces="fxp0"
dhcpd_withumask="022"

4) Spuštění DHCP serveru
/usr/local/etc/rc.d/isc-dhcpd start

A celá konfigurace by měla být funkční.
V případě nutnosti řešení problémů doporučuji použít software WebAdmin, bližší na http://www.dusatko.org/index.php?q=node/79

Powered by Drupal - Design by artinet