LINUX.ORG.RU
ФорумAdmin

Настройка DNS сервера pdnsd

 , , , ,


1

4

Всех приветствую! Сразу к делу. Нужно настроить pdnsd сервер на Ubuntu 16.04. Скачал, установил, этот процесс описывать не буду. Дальше пошел в настройки

sudo gedit /etc/pdnsd.conf
сделал вот так
global {
        perm_cache=10240;                             // Максимальный размер кэша в килобайтах
        cache_dir="/var/cache/pdnsd";                 // Директория кэша записей DNS                           
        server_ip = 0.0.0.0;                          // Слушать запросы на всех сетевых интерфейсах
        status_ctl = on;                              // Разрешить утилиты pdnsd-ctl для управления кэшем
        min_ttl=15m;                                  // Минимальное время жизни записи в кэше
        max_ttl=1w;                                   // Максимальное время жизни записи в кэше
        timeout=10;                                   // Тайм-аут DNS-запроса
        par_queries=2;                                // Количество одновременно опрашиваемых DNS-серверов
}
// DNS-отвечающий за локальные ресурсы
server {
        label = ".localdomain";                      // Метка секции server
        ip = 10.0.1.2, 10.0.1.3;                     // Адреса локальных DNS
        timeout = 10;                                // Тайм-аут DNS-запроса
        uptest = query;                              // Метод проверки доступности сервера
        interval = 10m;                              // Интервал для теста доступности сервера
        ping_timeout = 300;                          // Тайм-аут для теста ping
}
// Google DNS
server {
        label = "recurse";
        root_server=on;
        randomize_servers = on;
        ip = 8.8.8.8, 8.8.8.4; // Метка секции server
        timeout = 10;                                // Тайм-аут DNS-запроса
        uptest = query;                              // Метод проверки доступности сервера
        interval = 10m;                              // Интервал для теста доступности сервера
        ping_timeout = 300;                          // Тайм-аут для теста ping
        exclude = .localdomain;                      // Исключить запросы по доменному имени
        policy = included;                           // Включающие/исключающие списки для секции server
        preset = off;                                // Состояние удаленного сервера после запуска
}
Затем прописал в resolv.conf nameserver 0.0.0.0 Далее запускаю командой
sudo pdnsq
он ругается и говорит
* 12/19 17:51:53| pdnsd: error: Could not bind tcp socket: Address already in use
* 12/19 17:51:53| pdnsd: error: Could not bind to udp socket: Address already in use
* 12/19 17:51:53| pdnsd: error: tcp and udp initialization failed. Exiting.
На команду
sudo pdnsd-ctl status
говорит
Error: could not open socket /var/cache/pdnsd/pdnsd.status: No such file or directory
На команду
sudo netstat -lnp
говорит
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      1091/named      
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      919/cupsd       
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      1091/named      
tcp6       0      0 :::53                   :::*                    LISTEN      1091/named      
tcp6       0      0 ::1:631                 :::*                    LISTEN      919/cupsd       
tcp6       0      0 ::1:953                 :::*                    LISTEN      1091/named      
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           898/avahi-daemon: r
udp        0      0 127.0.0.1:53            0.0.0.0:*                           1091/named      
udp        0      0 0.0.0.0:68              0.0.0.0:*                           1385/dhclient   
udp        0      0 0.0.0.0:51464           0.0.0.0:*                           898/avahi-daemon: r
udp        0      0 0.0.0.0:631             0.0.0.0:*                           999/cups-browsed
udp6       0      0 :::5353                 :::*                                898/avahi-daemon: r
udp6       0      0 :::53                   :::*                                1091/named      
udp6       0      0 :::45562                :::*                                898/avahi-daemon: r
raw6       0      0 :::58                   :::*                    7           
Я начал разбираться, в качестве основного сервера был Bind9, пишу команду
invoke-rc.d bind9 stop
и закомментировал в NetworkManager.conf dns=dnsmasq на всякий случай. После этого стало вот так: на команду
sudo pdnsd
говорит
* 12/19 20:29:44| pdnsd: info: pdnsd-1.2.9a-par starting.
и начинает молчать, пока ctrl+c не разлучит его. На
pdnsd-ctl status
ничего не изменилось, так же не может найти файл. Вроде все рассказал. Что подскажите в данной ситуации?

UDP: Рассказывать зачем мне нужен pdnsd, если у меня уже стоит Bind9, очень долго и муторно, если кому-то сильно надо - расскажу.

ничего не изменилось, так же не может найти файл.

могу предложить, разве что, запустить со strace и посмотреть, что происходит, какие файлы ищет и где

conformist ★★★ ()

прописал в resolv.conf nameserver 0.0.0.0

Вот этот момент выглядит как-то не очень...

Davyd ★★ ()
Ответ на: комментарий от conformist

На команду

strace sudo pdnsd
выдает следующее log.txt(мега). Если я все сделал и понял правильно, то ему много чего не хватает...

Davyd а что вы предлагаете вместо этого?

Pindos ()
Ответ на: комментарий от Pindos

а что вы предлагаете вместо этого?

реальный ip или 127.0.0.1

Davyd ★★ ()

и начинает молчать, пока ctrl+c не разлучит его

По ctrl+c приложение завершается, что вы хотите от него после этого услышать по команде pdnsd-ctl status?

  • Убрать из автозагрузки сервис bind, dnsmasq (как я понимаю, это уже сделано), остановить их
  • Запустить сервис pdnsd как это принято в вашем дистрибутиве
  • Потом уже смотреть ss на предмет занятого порта, status, dig-ом проверять запросы.
pod ★★ ()
Ответ на: комментарий от pod

По ctrl+c приложение завершается, что вы хотите от него после этого услышать по команде pdnsd-ctl status?

Что я хотел услышать? Конечно же, что все хорошо и все работает как надо, без ошибок))). За инструкцию спасибо, поковыряюсь сегодня.

Davyd спасибо за подсказку

реальный ip или 127.0.0.1

приму во внимание

Pindos ()
Ответ на: комментарий от pod

Только что пытался настроить. Опишу все как делал. Как вы уже сказали ранее dns сервера отключены(bind9, dnsmasq). Убрал их из автозагрузки. Изменил в pdnsd.conf строку

server_ip =
с 0.0.0.0 на 127.0.0.1. Прописал в resolv.conf
nameserver 127.0.0.1
Запустил терминал, прописал
sudo pdnsd
он выдал
* 12/22 14:10:34| pdnsd: info: pdnsd-1.2.9a-par starting.
кстати пришлось переместить pdnsd в
/etc/pdnsd
а то ругался что нет файла. Затем открываю еще одну вкладку в терминале, ибо другая висит на
* 12/22 14:10:34| pdnsd: info: pdnsd-1.2.9a-par starting.
пишу
sudo netstat -lnp
вижу следующую картину
tcp6       0      0 127.0.0.1:53            :::*                    LISTEN      6809/pdnsd      
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           954/avahi-daemon: r
udp        0      0 0.0.0.0:49063           0.0.0.0:*                           954/avahi-daemon: r
udp        0      0 0.0.0.0:68              0.0.0.0:*                           1372/dhclient   
udp        0      0 0.0.0.0:631             0.0.0.0:*                           2708/cups-browsed
udp6       0      0 :::5353                 :::*                                954/avahi-daemon: r
udp6       0      0 :::38122                :::*                                954/avahi-daemon: r
udp6       0      0 127.0.0.1:53            :::*                                6809/pdnsd      
raw6       0      0 :::58                   :::*                    7           903/NetworkManager
появился pdnsd и вроде как все должно работать, на команду
dig google.com
говорит
; <<>> DiG 9.10.3-P4-Ubuntu <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 33947
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com.			IN	A

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Dec 22 14:15:27 +05 2016
;; MSG SIZE  rcvd: 28

идет через 127.0.0.1, но ничерта не работает. Интернета нет, ping не работает.... У меня вопрос, да не один. Первое, так и должно быть, что терминал должен висеть включенным со строками
* 12/22 14:10:34| pdnsd: info: pdnsd-1.2.9a-par starting.
на команду
sudo /etc/init.d/pdnsd start
ничего не происходит и сервер не запускается. Второе правильно ли настроен pdnsd.conf? Может проблема в нем? Ну третье почему все таки не работает? И да чуть не забыл, на команду при запущенном терминале с pdnsd
sudo pdnsd-ctl status
говорит вот что
pdnsd-1.2.9a-par running on %username%.

Cache status:
=============
10240 kB maximum disk cache size.
0 of 10496000 bytes (0%) memory cache used in 0 entries (avg -nan bytes/entry).

Thread status:
==============
server status thread is running.
pdnsd control thread is running.
tcp server thread is running.
udp server thread is running.
205 query threads spawned in total (0 queries dropped).
0 running query threads (0 active, 0 queued).

Configuration:
==============
Global:
-------
	Cache size: 10240 kB
	Server directory: /var/cache/pdnsd
	Scheme file (for Linux pcmcia support): /var/lib/pcmcia/scheme
	Server port: 53
	Server IP (::=any available one): ::ffff:127.0.0.1
	IPv4 to IPv6 prefix: ::ffff:0.0.0.0
	Ignore cache when link is down: off
	Maximum ttl: 604800
	Minimum ttl: 900
	Negative ttl: 900
	Negative RRS policy: default
	Negative domain policy: auth
	Run as: 
	Strict run as: on
	Use NSS: on
	Paranoid mode (cache pollution prevention): off
	Control socket permissions (mode): 600
	Maximum parallel queries served: 40
	Maximum queries queued for serving: 60
	Global timeout setting: 10
	Parallel queries increment: 2
	Randomize records in answer: on
	Query method: udp_only
	Query port start: 1024
	Query port end: 65535
	TCP server thread: on
	TCP query timeout: 30
	Maximum udp buffer size: 1024
	Delegation-only zones: (none)
Server 0:
------
	label: recurse
	ip: ::ffff:8.8.8.8
	server assumed available: no
	ip: ::ffff:8.8.8.4
	server assumed available: no
	port: 53
	uptest: query
	timeout: 10
	uptest interval: 600
	ping timeout: 300
	ping ip: (using server ip)
	force cache purging: off
	server is cached: on
	lean query: on
	Use EDNS in outgoing queries: off
	Use only proxy?: off
	Assumed root server: yes
	Randomize server query order: yes
	Default policy: included
	Policies:
		exclude: .localdomain.
Succeeded

Pindos ()
Ответ на: комментарий от Pindos

Я смогу ответить только на часть вопросов, потому что сам сервисом pdnsd не пользовался и как его правильно настроить - не знаю.

Первое, так и должно быть, что терминал должен висеть включенным со строками ...

Приложение, запущенное из командой строки, будет продолжать работать и выводить на stdout/stderr сообщения и ошибки до тех пор, пока само не закончит работу. То, что ты видишь в командой строке как «приложение висит» - оно не висит, а работает, а сообщения скорее всего перенаправляет в лог-файл. Однако, некоторые приложение и системные демоны могут запуститься и форкнуть себя в бэкграунд самостоятельно - тогда эффект будет другой, ты не увидишь «зависания», но в списке процессов твой процесс останется.

Собственно, логика запуска сервиса и описана в /etc/init.d/pdnsd - там создаются нужные файлы\директории, приложение запускается и форкается в бэкграунд, где и продолжает работать.

Почему на «sudo /etc/init.d/pdnsd start» ничего не происходит - ну не знаю, смотри ошибки в лог-файлах, опять же проверь, какую систему инициализации используешь, если systemd - то запускает сервис неправильно.

В netstat-е видно, что сервис слушает 53-ий порт, а в статусе видно, что даже какие сообщения приходили к сервису. Осталось разобраться с конфигом сервиса и настроить его верно.

pod ★★ ()
17 апреля 2017 г.

Pindos Настройка DNS сервера pdnsd

Иду буквально по пятам :) И точно такие же грабли! У вас что-то получилось спустя год?

Red7 ()
Ответ на: комментарий от Red7

Хм. Разобрался. Виной оказалася его кривой дефолтовый конфиг в Debian-8 - и какая только ключница его делала?

Во-первых, установка этого pdnsd в Debian-8 интересная и даже русифицированная, при установке задает шибко умный вопрос:

Выберите способ настройки pdnsd. который больше всего вам подходит.

- использовать resolvconf: использовать данные, предоставляемые resolvconf.

- использовать корневые серверы: сделать из pdnsd кеширующий, рекурсивный DNS сервер.

- вручную: настройка вручную. Демон pdnsd не запустится, пока вы не отредактируете файлы /etc/pdnsd.conf и /etc/default/pdnsd.

Ебстесно, мне нужен «кеширующий и рекурсивный» поэтому выбираю 2-й вариант. Хотя подозреваю, что здесь переводчик му$ак, поскольку pdnsd всегда должен быть кеширующим и рекурсивным, иначе нахрен он вообще нужен. Бился с ним, бился, плюнул и переустановил на 1-й вариант.

Тут же заметил, что конфиги ничем не отличаются, т.е имеем элементарное надувательство. Руки того, кто делал этот порт для Debian, явно не из того места выросли, помимо этого есть и другие косячки при запуске, хотя pdnsd уже не развивается 5 лет, могли бы уже и все баги за это время пофиксить.

Близимся к финишу. Конфиг не большой, но и не маленький, поэтому не сразу заметил в нем неприкаянные строки:

server {
    label="resolvconf";
}

Тоже, блин, недоработка. Вписал в нее первый попавший DNS - и все заработало:

server {
    label="resolvconf";
    ip = 192.168.1.5
}

PS. Хотя странно - ниже этих строк была вписана по дефолту туча серверов, но пока не вписал выше свой, ни хрена не работало.

/*
// This section is meant for resolving from root servers.
server {
	label = "root-servers";
	root_server=on;
	ip = 	198.41.0.4
	,	192.228.79.201
	,	192.33.4.12
	,	128.8.10.90
	,	192.203.230.10
	,	192.5.5.241
	,	192.112.36.4
	,	128.63.2.53
	,	...............
}

Пошел накапливать кеш :)

Red7 ()
Ответ на: комментарий от Red7

Ууу, я даже не помню зачем он мне был нужен тогда, однако точно помню, что кровью и потом обошелся Bind-ом. Однако Вы молодец)!! Если настроили его.

Pindos ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.