CONTENT
- CHANGES
Szukaj
#top Instalacja¶
- Instalacja
- Poinstalacyjna konfiguracja
- Keep oryginal start script
- Update start script
- Update start script (set config for rndc)
- Create /etc/sysconfig/named file
- Correct logrotate file
- Create config/log directory
- create/update config
- Create/Update config (CentOS 5.*)
- Create/Update config (CentOS 6.*)
- Create /etc/named/named.conf
- Create /etc/named/named.zoneroot
- Create /etc/named/named.options.conf
- named.options.conf (CentOS 5.*)
- named.options.conf (CentOS 6.*)
- Create /etc/named/named.local.conf
- Start named server
- Chroot named (version2-symbolic-links)
- Start named server (chroot named)
- Extra options for start script
Instalację serwera Named/Bind można wykonać na różne sposoby: od kompilacji ze źdródeł poprzez instalację pojedynczych paczek rpm za pomocą polecenia rpm skończywszy na instalacja z użyciem menedżera pakietów, który zainstaluje wszystkie niezbędne paczki wraz zależnościami.
Celem niniejszego dokumentu nie jest rozważanie różnych metod instalacji tylko nieco usprawnienie użyteczności konfiguracji serwera Named/Bind po zainstalowaniu oraz wprowadzenie porządku / hierarchi położenia plików z których korzysta usługa w strukturze katalogowej.
Dobrą konwencją jest przechowywanie plików konfiguracyjnych każdego demona we własnym osobnym podkatalogu w katalogu etc, w przypadku instalacji Named/Bind z paczki w systemach Linux z rodziny RedHat taki katalog należy utworzyć i przenieć do niego plik konfiguracyjny
named.conf
.Wszystko to zostało opisane poniżej.
#top Poinstalacyjna konfiguracja¶
#top Keep oryginal start script¶
mv /etc/init.d/named /etc/init.d/named-rpm cp -av /etc/init.d/named-rpm /etc/init.d/named
#top Update start script¶
Run below command only on
CentOS 5.*
system (named <= BIND 9.3.4):sed 's,/etc/rc.d/init.d/functions,/etc/rc.d/init.d/functions\n\n[ -r /etc/sysconfig/named ] \&\& . /etc/sysconfig/named,g' -i /etc/init.d/named
#top Update start script (set config for rndc)¶
sed 's,/usr/sbin/rndc stop,/usr/sbin/rndc $RNDCOPT stop,g' -i /etc/init.d/named sed 's,/usr/sbin/rndc status,/usr/sbin/rndc $RNDCOPT status,g' -i /etc/init.d/named sed 's,/usr/sbin/rndc reload,/usr/sbin/rndc $RNDCOPT reload,g' -i /etc/init.d/named
#top Create /etc/sysconfig/named file¶
echo 'OPTIONS="-c /etc/named/named.conf"' >> /etc/sysconfig/named echo 'RNDCOPT="-c /etc/named/rndc.conf"' >> /etc/sysconfig/named echo >> /etc/sysconfig/named
#top Correct logrotate file¶
sed '1s,^,/var/log/named/named.log /var/log/named/queries.log ,g' -i /etc/logrotate.d/named
#top Create config/log directory¶
mkdir /var/log/named chown named /var/log/named mkdir /etc/named mkdir /etc/named/db mkdir /etc/named/zones
#top create/update config¶
#top Create/Update config (CentOS 5.*)¶
Run below command only on
CentOS 5.*
systemrndc-confgen > rndc-tempfile.conf cat rndc-tempfile.conf | awk '{print($0);if(index($0,"End of rndc.conf")>0){exit(0);}}' > /etc/named/rndc.conf cat rndc-tempfile.conf | awk 'BEGIN{show=0;}{if(index($0,"following in named.conf")>0){show=1;print($0);getline;} if(index($0,"End of named.conf")>0){show=0;print($0);} if(show==1){print(substr($0,3));} }' > /etc/named/rndc.key rm -f rndc-tempfile.conf cp -av /usr/share/doc/bind-*/sample/etc/named.rfc1912.zones /etc/named/named.rfc1912.zones sed 's,file ",file "/etc/named/db/,g' -i /etc/named/named.rfc1912.zones touch -r /usr/share/doc/bind-*/sample/etc/named.rfc1912.zones /etc/named/named.rfc1912.zones cp -av /usr/share/doc/bind-*/sample/var/named/localdomain.zone /etc/named/db/localdomain.zone cp -av /usr/share/doc/bind-*/sample/var/named/localhost.zone /etc/named/db/localhost.zone cp -av /usr/share/doc/bind-*/sample/var/named/named.local /etc/named/db/named.local cp -av /usr/share/doc/bind-*/sample/var/named/named.ip6.local /etc/named/db/named.ip6.local cp -av /usr/share/doc/bind-*/sample/var/named/named.broadcast /etc/named/db/named.broadcast cp -av /usr/share/doc/bind-*/sample/var/named/named.zero /etc/named/db/named.zero cp -av /usr/share/doc/bind-*/sample/etc/named.root.hints /etc/named/named.zoneroot cp -av /usr/share/doc/bind-*/sample/var/named/named.root /etc/named/named.ca touch /etc/named/named.local.conf
#top Create/Update config (CentOS 6.*)¶
Run below command only on
CentOS 6.*
systemrndc-confgen -r /dev/urandom > rndc-tempfile.conf cat rndc-tempfile.conf | awk '{print($0);if(index($0,"End of rndc.conf")>0){exit(0);}}' > /etc/named/rndc.conf cat rndc-tempfile.conf | awk 'BEGIN{show=0;}{if(index($0,"following in named.conf")>0){show=1;print($0);getline;} if(index($0,"End of named.conf")>0){show=0;print($0);} if(show==1){print(substr($0,3));} }' > /etc/named/rndc.key rm -f rndc-tempfile.conf mv /etc/named.conf /etc/named/named.conf mv /etc/named.iscdlv.key /etc/named/named.iscdlv.key mv /etc/named.rfc1912.zones /etc/named/named.rfc1912.zones mv /etc/named.root.key /etc/named/named.root.key sed 's,file ",file "/etc/named/db/,g' -i /etc/named/named.rfc1912.zones cp -av /usr/share/doc/bind-*/sample/var/named/named.loopback /etc/named/db/named.loopback cp -av /usr/share/doc/bind-*/sample/var/named/named.localhost /etc/named/db/named.localhost cp -av /usr/share/doc/bind-*/sample/var/named/named.empty /etc/named/db/named.empty cp -av /usr/share/doc/bind-*/sample/var/named/named.ca /etc/named/named.ca touch /etc/named/named.local.conf
#top Create /etc/named/named.conf¶
cat > /etc/named/named.conf << EOF // // Sample named.conf BIND DNS server 'named' configuration file // for the Red Hat BIND distribution. // // See the BIND Administrator's Reference Manual (ARM) for details, in: // file:///usr/share/doc/bind-*/arm/Bv9ARM.html // Also see the BIND Configuration GUI : /usr/bin/system-config-bind and // its manual. // include "/etc/named/named.options.conf"; include "/etc/named/rndc.key"; // these are zones that contain definitions for all the localhost // names and addresses, as recommended in RFC1912 - these names should // ONLY be served to localhost clients: include "/etc/named/named.rfc1912.zones"; // all views must contain the root hints zone: include "/etc/named/named.zoneroot"; // local zones include "/etc/named/named.local.conf"; EOF
#top Create /etc/named/named.zoneroot¶
cat > /etc/named/named.zoneroot << EOF // // The 'named.root' root cache hints zone for the bind DNS 'named' nameserver. // // named's cache must be primed with the addresses of the root zone '.' nameservers. // The root zone file can be obtained by querying the root 'A' nameserver: // $ dig . ns @198.41.0.4 > named.root // Or by download via FTP / HTTP: // $ wget ftp://ftp.rs.internic.net/domain/named.root // // Every view that is to provide recursive service must include this zone. // zone "." IN { type hint; file "/etc/named/named.ca"; }; EOF sed 's, ,\t,g' -i /etc/named/named.zoneroot
#top Create /etc/named/named.options.conf¶
#top named.options.conf (CentOS 5.*)¶
cat > /etc/named/named.options.conf << EOF // // named.options.conf // // See the BIND Administrator's Reference Manual (ARM) for details, in: // file:///usr/share/doc/bind-*/arm/Bv9ARM.html // Also see the BIND Configuration GUI : /usr/bin/system-config-bind and // its manual. // options { directory "/var/named"; // the default dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; // Put pid file in working dir pid-file "/var/run/named/named.pid"; //listen-on { any; }; listen-on port 53 { any; }; listen-on-v6 port 53 { any; }; recursion yes; allow-recursion { 127.0.0.1; }; }; logging { channel named_file { file "/var/log/named/named.log"; severity dynamic; print-time yes; }; channel queries_file { file "/var/log/named/queries.log"; severity dynamic; print-time yes; }; category default { named_file; }; category queries { queries_file; }; }; EOF sed 's, ,\t,g' -i /etc/named/named.options.conf
#top named.options.conf (CentOS 6.*)¶
cat > /etc/named/named.options.conf << EOF // // named.options.conf // // See the BIND Administrator's Reference Manual (ARM) for details, in: // file:///usr/share/doc/bind-*/arm/Bv9ARM.html // Also see the BIND Configuration GUI : /usr/bin/system-config-bind and // its manual. // options { directory "/var/named"; // the default // Put pid file in working dir pid-file "/var/run/named/named.pid"; listen-on port 53 { any; }; listen-on-v6 port 53 { any; }; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; recursion yes; allow-recursion { 127.0.0.1; }; dnssec-enable yes; dnssec-validation yes; //dnssec-lookaside auto; // trouble with recursion /* Path to ISC DLV key */ bindkeys-file "/etc/named/named.iscdlv.key"; }; logging { channel named_file { file "/var/log/named/named.log"; severity dynamic; print-time yes; }; channel queries_file { file "/var/log/named/queries.log"; severity dynamic; print-time yes; }; category default { named_file; }; category queries { queries_file; }; }; EOF sed 's, ,\t,g' -i /etc/named/named.options.conf
#top Create /etc/named/named.local.conf¶
Plik
named.local.conf
jest prawidłowym miejscem na definicje domen dla zainstalowanego i skonfigurowanego serwera nazw named/bind, wszystkie obsługiwane domeny powinny być skonfigurowane w tym pliku. Położenie plików stref zależne jest roli strefy: master/slave. Pliki stref dla których serwer jest masterem dobrze jest umieścić w katalogu /etc/named/zones
. Natomiast pliki stef dla których serwer jest slave i odbiera je od mastera muszą wskazywać na katalog w którym serwer ma uprawnienia zapisu, czyli: /var/named/slaves
#top Start named server¶
/etc/init.d/named start tail -f /var/log/named/named.log tail -f /var/log/named/queries.log
#top Chroot named (version2-symbolic-links)¶
W pierwszej kolejności należy utworzyć niezbędne katalogi:
mkdir -p /srv/chrootnamed mkdir -p /srv/chrootnamed/dev/pts mkdir -p /srv/chrootnamed/etc/sysconfig mkdir -p /srv/chrootnamed/proc mkdir -p /srv/chrootnamed/sbin mkdir -p /srv/chrootnamed/usr/bin mkdir -p /srv/chrootnamed/usr/sbin mkdir -p /srv/chrootnamed/var mkdir -p /srv/chrootnamed/var/log mkdir -p /srv/chrootnamed/var/run
W zależności od architektury należy utworzyć odpowiednie katalogi na biblioteki demona.
Poniższe kroki należy wykonać dla architektury
32-bit
:# arch: 32bit mkdir -p /srv/chrootnamed/lib mkdir -p /srv/chrootnamed/usr/lib
Poniższe kroki należy wykonać dla architektury
64-bit
:# arch: 64bit mkdir -p /srv/chrootnamed/lib64 mkdir -p /srv/chrootnamed/usr/lib64
Następnie należy utworzyć specjalne pliki blokowe z których korzysta daemon:
mknod /srv/chrootnamed/dev/null c 2 2 mknod /srv/chrootnamed/dev/random c 1 8 chown root:root /srv/chrootnamed/dev/null chown root:root /srv/chrootnamed/dev/random chmod 666 /srv/chrootnamed/dev/null chmod 666 /srv/chrootnamed/dev/random
W kolejnym kroku należy skopiować niezbędne biblioteki wymagane do poprawnej inicjalizacji środowiska przez daemona named:
Poniższe kroki należy wykonać dla architektury
32-bit
:# arch: 32bit - lib cp -av /lib/libnss_compat.so.2 /srv/chrootnamed/lib/libnss_compat.so.2 cp -av /lib/`readlink /lib/libnss_compat.so.2` /srv/chrootnamed/lib/`readlink /lib/libnss_compat.so.2` cp -av /lib/libnss_files.so.2 /srv/chrootnamed/lib/libnss_files.so.2 cp -av /lib/`readlink /lib/libnss_files.so.2` /srv/chrootnamed/lib/`readlink /lib/libnss_files.so.2`
Poniższe kroki należy wykonać dla architektury
64-bit
:# arch: 64bit - lib64 cp -av /lib64/libnss_compat.so.2 /srv/chrootnamed/lib64/libnss_compat.so.2 cp -av /lib64/`readlink /lib64/libnss_compat.so.2` /srv/chrootnamed/lib64/`readlink /lib64/libnss_compat.so.2` cp -av /lib64/libnss_files.so.2 /srv/chrootnamed/lib64/libnss_files.so.2 cp -av /lib64/`readlink /lib64/libnss_files.so.2` /srv/chrootnamed/lib64/`readlink /lib64/libnss_files.so.2`
W następnym kroku należy skopiować plik binarny samego demona oraz biblioteki wymagane przez daemona do działania:
cp -av /sbin/nologin /srv/chrootnamed/sbin/nologin cp -av /usr/sbin/named /srv/chrootnamed/usr/sbin/named for libname in `ldd /usr/sbin/named | sed -e 's,^[\s\t]*,,g' -e 's,^.*=> ,,g' -e 's,(.*$,,g'`;do cp -av $libname /srv/chrootnamed$libname; if test -L $libname;then cp -av `dirname $libname`/`readlink $libname` /srv/chrootnamed`dirname $libname`/`readlink $libname`; fi; done
Następnie należy jeszcze skopiować pliki konfiguracyjne wymagane do poprawnej inicjalizacji środowiska przez daemona named:
cp -av /etc/localtime /srv/chrootnamed/etc/localtime cp -av /etc/nsswitch.conf /srv/chrootnamed/etc/nsswitch.conf cat /etc/passwd | grep -E '^root|^named' > /srv/chrootnamed/etc/passwd cat /etc/group | grep -E '^root|^named' > /srv/chrootnamed/etc/group
W kojnenym kroku należy poprawić skrypt inicjalizacyjny uruchamiający daemona, aby uruchamiał daemona w przygotowanym środowisku chroot:
sed 's,daemon /usr/sbin/\$named,daemon chroot $CHROOT /usr/sbin/$named,g' -i /etc/init.d/named sed 's,\(daemon.*/usr/sbin/"$named".*\)$,#\1\n daemon --pidfile "$ROOTDIR/$PIDFILE" chroot $CHROOT /usr/sbin/"$named" -u named ${OPTIONS};,g' -i /etc/init.d/named sed 's,^\(OPTIONS=.*\)$,CHROOT=/srv/chrootnamed\n\1,g' -i /etc/sysconfig/named
Na konieć pozostało przenieść pliki konfiguracyjne, logi, itp. do środowiska chroot oraz utworzyć dowiązania symboliczne do starej lokalizacji:
mv -v /etc/named /srv/chrootnamed/etc/named mv -v /var/named /srv/chrootnamed/var/named mv -v /var/log/named /srv/chrootnamed/var/log/named mv -v /var/run/named /srv/chrootnamed/var/run/named ln -s /srv/chrootnamed/etc/named /etc/named ln -s /srv/chrootnamed/var/named /var/named ln -s /srv/chrootnamed/var/log/named /var/log/named ln -s /srv/chrootnamed/var/run/named /var/run/named
#top Start named server (chroot named)¶
/etc/init.d/named start tail -f /var/log/named/named.log tail -f /var/log/named/queries.log
#top Extra options for start script¶
checkconfig() { [...] } -------------------- ###################### # BEGIN paste from mdv trace() { /usr/sbin/rndc $RNDCOPT trace "$1" return $? } notrace() { /usr/sbin/rndc $RNDCOPT notrace return $? } reload() { echo -n $"Reloading $named: " /usr/sbin/rndc $RNDCOPT reload "$1" >/dev/null 2>&1 || /usr/bin/killall -HUP named RETVAL=$? [ "$RETVAL" -eq 0 ] && success $"$named reload" || failure $"$named reload" echo return $RETVAL } refresh() { /usr/sbin/rndc $RNDCOPT refresh "$1" return $? } retransfer() { /usr/sbin/rndc $RNDCOPT retransfer "$1" return $? } freeze() { /usr/sbin/rndc $RNDCOPT freeze "$1" return $? } thaw() { /usr/sbin/rndc $RNDCOPT thaw "$1" return $? } probe() { # named knows how to reload intelligently; we don't want linuxconf # to offer to restart every time /usr/sbin/rndc $RNDCOPT reload >/dev/null 2>&1 || echo start return $? } reconfig() { /usr/sbin/rndc $RNDCOPT reconfig return $? } stats() { /usr/sbin/rndc $RNDCOPT stats return $? } querylog() { /usr/sbin/rndc $RNDCOPT querylog return $? } dumpdb() { /usr/sbin/rndc $RNDCOPT dumpdb return $? } flush() { /usr/sbin/rndc $RNDCOPT flush "$1" return $? } flushname() { /usr/sbin/rndc $RNDCOPT flushname "$1" return $? } recursing() { /usr/sbin/rndc $RNDCOPT recursing return $? } # END paste from mdv ####################
# See how we were called. [...] checkconfig|configtest|check|test) checkconfig ;; -------------------- ###################### # BEGIN paste from mdv trace) trace "$2" ;; notrace) notrace ;; reload) reload "$2" ;; refresh) refresh "$2" ;; retransfer) retransfer "$2" ;; freeze) freeze "$2" ;; thaw) thaw "$2" ;; probe) probe ;; reconfig) reconfig ;; stats) stats ;; querylog) querylog ;; dumpdb) dumpdb ;; flush) flush "$2" ;; flushname) flushname "$2" ;; recursing) recursing ;; # END paste from mdv #################### -------------------- *) echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|configtest|probe}" exit 2 [...]
Zmodyfikowany ostatnio: 2013/11/20 22:42:06 (11 lat temu),
textsize: 16,0 kB,
htmlsize: 31,1 kB
Zapraszam do komentowania, zgłaszania sugestii, propozycji, własnych przykładów, ...
Dodaj komentarzKomentarze użytkowników