Серверы · 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
Get new posts in your inbox
No spam. Unsubscribe anytime.