Серверы · 5 min read · Oct 09, 2025

Идеальный балансировщик нагрузки и высокодоступный веб-кластер с 2 серверами, работающими под Xen на Ubuntu 8.04 Hardy Heron - Страница 3

8. DNS сервер (web1, web2)

8.1 Установка DNS сервера

Запустите :

apt-get install bind9

По соображениям безопасности мы хотим запустить BIND в chroot, поэтому нам нужно выполнить следующие шаги:

/etc/init.d/bind9 stop

Отредактируйте файл /etc/default/bind9 так, чтобы демон работал от непривилегированного пользователя bind, chrooted в /var/lib/named. Измените строку: OPTIONS=”-u bind” так, чтобы она выглядела как OPTIONS=”-u bind -t /var/lib/named”:

vi /etc/default/bind9

OPTIONS="-u bind -t /var/lib/named"
# Установите RESOLVCONF=no, чтобы не запускать resolvconf
RESOLVCONF=yes

Создайте необходимые директории в /var/lib:

mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run

Затем переместите конфигурационную директорию из /etc в /var/lib/named/etc:

mv /etc/bind /var/lib/named/etc

Создайте символическую ссылку на новую конфигурационную директорию из старого местоположения (чтобы избежать проблем, когда bind будет обновлен в будущем):

ln -s /var/lib/named/etc/bind /etc/bind

Создайте устройства null и random, и исправьте права доступа к директориям:

mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
chown -R bind:bind /var/lib/named/var/*
chown -R bind:bind /var/lib/named/etc/bind

Нам нужно изменить /etc/default/syslogd, чтобы мы могли по-прежнему получать важные сообщения, записываемые в системные журналы. Измените строку: SYSLOGD=”” так, чтобы она выглядела так: SYSLOGD=”-a /var/lib/named/dev/log”:

vi /etc/default/syslogd

#
# Основной конфигурационный файл для syslogd
#
# Полная документация возможных аргументов находится в manpage
# syslogd(8).
#
# Для удаленного UDP логирования используйте SYSLOGD="-r"
#
SYSLOGD="-a /var/lib/named/dev/log"

Перезапустите демон журналирования:

/etc/init.d/sysklogd restart

Запустите BIND и проверьте /var/log/syslog на наличие ошибок:

/etc/init.d/bind9 start

8.2 Настройка bind

Мы собираемся настроить bind с 2 доменами, example.com, который будет сервером имен, и мы также настроим bind для yoursite.com.

Теперь основной конфигурационный файл в BIND называется named.conf, однако named.conf.local уже включен в named.conf и предназначен для пользовательской конфигурации, поэтому мы отредактируем named.conf.local и добавим наши зоны, здесь я добавил зону camed tm.local, а также обратную зону для 192.168.1.0:

vi /etc/bind/named.conf.local

#EXAMPLE.COM
zone "example.com" {
        type master;
        file "/etc/bind/zones/example.com.db";
        };
#YOURSITE.COM
zone "yoursite.com" {
        type master;
        file "/etc/bind/zones/yoursite.com.db";
        };
# Это определение зоны для обратного DNS. замените 1.168.192 на ваш сетевой адрес в обратной нотации - например, мой сетевой адрес 192.168.1.X
zone "1.168.192.in-addr.arpa." {
     type master;
     file "/etc/bind/zones/rev.1.168.192.in-addr.arpa";
};

Примечание: Если ваш интернет-провайдер делегирует вам подсеть (например, ip 192.168.1.100 до 192.168.1.112), прочитайте это для обратной зоны (см. файл зоны клиента/пользователя):

http://www.zytrax.com/books/dns/ch9/reverse.html

8.3 Настройка зон

mkdir /etc/bind/zones
vi /etc/bind/zones/example.com.db

и сделайте его таким:

$TTL        86400
@       IN      SOA     ns1.example.com. admin.example.com. (
                        2008060902       ; серийный номер, дата сегодня + серийный номер сегодня
                        28800              ; обновление, секунды
                        7200              ; повтор, секунды
                        604800              ; истечение, секунды
                        86400 )            ; минимум, секунды
;
                NS      ns1.example.com.              ; Inet адрес сервера имен 1
                NS      ns2.example.com.              ; Inet адрес сервера имен 2
;
  MX      10 example.com.
example.com.      A        192.168.1.106
www                   A        192.168.1.106
ns1                      A        192.168.1.106
ns2                      A        192.168.1.106
dom01                 A        192.168.1.100
dom02                 A        192.168.1.101
lb1                       A        192.168.1.102
lb2                       A        192.168.1.103
web1                   A        192.168.1.104
web2                   A        192.168.1.105

example.com.       TXT  "v=spf1 ip4:192.168.1.104 ip4:192.168.1.105 a ptr a:web1.example.com a:web2.example.com ~all"

Теперь мы создадим зону для yoursite.com:

vi /etc/bind/zones/yoursite.com.db

Сделайте его таким:

$TTL        86400
@       IN      SOA     ns1.example.com. admin.yoursite.com. (
                        2008060902       ; серийный номер, дата сегодня + серийный номер сегодня
                        28800              ; обновление, секунды
                        7200              ; повтор, секунды
                        604800              ; истечение, секунды
                        86400 )            ; минимум, секунды
;
                NS      ns1.example.com.              ; Inet адрес сервера имен 1
                NS      ns2.example.com.              ; Inet адрес сервера имен 2
;
  MX      10 yoursite.com.
yoursite.com.      A        192.168.1.107
www                   A        192.168.1.107

yoursite.com.       TXT  "v=spf1 ip4:192.168.1.104 ip4:192.168.1.105 a ptr a:web1.example.com a:web2.example.com ~all"

Теперь давайте перейдем к обратной зоне.

vi /etc/bind/zones/rev.1.168.192.in-addr.arpa

$TTL        86400
@               IN      SOA     ns1.example.com. hostmaster.example.com. (
                                2008060901       ; серийный номер, дата сегодня + серийный номер сегодня
                                28800   ; Обновление
                                7200    ; Повтор
                                604800  ; Истечение
                                86400)  ; Минимальный TTL
                        NS      ns1.example.com.
                        NS      ns2.example.com.
100       PTR     dom01.example.com.
101       PTR     dom02.example.com.
102       PTR     lb1.example.com.
103       PTR     lb2.example.com.
104       PTR     web1.example.com.
105       PTR     web2.example.com.
106       PTR     example.com.
107       PTR     yoursite.com.

Теперь настройте сервер для перенаправления любых запросов на сервер вашего интернет-провайдера, чтобы он мог разрешать внешние IP-адреса.

vi /etc/bind/named.conf.options

Уберите комментарий из секции forwarder, чтобы она выглядела так:

[...]
forwarders {
      # Замените адрес ниже на адрес DNS сервера вашего интернет-провайдера
      123.123.123.123;
};
[...] 

8.4 Настройка сервера для использования себя в качестве DNS

vi /etc/resolv.conf

search example.com
nameserver localhost

Нам нужно перезапустить bind:

/etc/init.d/bind9 restart

8.5 Тестирование DNS сервера

Сначала мы установим dig, который включен в пакет dnsutils:

apt-get install dnsutils

Теперь мы увидим, дают ли наши DNS-серверы правильные ответы:

на web1

dig yoursite.com @192.168.1.105

на web2

dig yoursite.com @192.168.1.104

На обоих вы должны увидеть вывод, похожий на этот:

;  DiG 9.4.2-P1  yoursite.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4547
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;yoursite.com.                 IN      A
;; ANSWER SECTION:
yoursite.com.          86400   IN      A       192.168.1.107
;; AUTHORITY SECTION:
yoursite.com.          15090   IN      NS      ns2.example.com.
yoursite.com.          15090   IN      NS      ns1.example.com.
;; ADDITIONAL SECTION:
ns2.example.com.       162439  IN      A       192.168.1.106
ns1.example.com.       162439  IN      A       192.168.1.106
;; Query time: 27 msec
;; WHEN: Sun Sep 21 19:07:17 2008
;; MSG SIZE  rcvd: 124

Теперь мы протестируем обратный поиск:

на web1

dig -x 192.168.1.107 @192.168.1.105

на web2*

dig -x 192.168.1.107 @192.168.1.104

Вывод должен быть похож на этот:

;  DiG 9.4.2-P1  -x 192.168.1.107
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22614
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;107.1.168.192.in-addr.arpa.     IN      PTR
;; ANSWER SECTION:
;107.1.168.192.in-addr.arpa. 86400 IN PTR  yoursite.com.
;; AUTHORITY SECTION:
;1.168.192.in-addr.arpa. 86400 IN  NS      ns2.example.com.
;1.168.192.in-addr.arpa. 86400 IN  NS      ns1.example.com.
;; ADDITIONAL SECTION:
ns1.example.com.       162147  IN      A       192.168.1.106
ns2.example.com.       162147  IN      A       192.168.1.106
;; Query time: 88 msec
;; WHEN: Sun Sep 21 19:12:09 2008
;; MSG SIZE  rcvd: 172

Больше информации о том, как использовать dig:

http://www.madboa.com/geek/dig/

9. Proftpd (web1, web2)

9.1 Установка Proftpd

Чтобы установить Proftpd, выполните

apt-get install proftpd ucf

Вам будет задан вопрос:

Запустить proftpd: <– standalone

9.2 Настройка Proftpd

vi /etc/proftpd/proftpd.conf

По соображениям безопасности добавьте следующие строки в /etc/proftpd/proftpd.conf:

DefaultRoot ~
IdentLookups off
ServerIdent on "FTP Server ready."

Затем перезапустите Proftpd:

/etc/init.d/proftpd restart

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.