den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
В общем, я надумал поставить кэширующий сервер имен. Ну вот мне захотелось. Ничего нового или особенного тут нет. Но я никогда бы не подумал, что на настройку самого сервера я потрачу минут 5, а на борьбу с Ubuntu - около часа
Суть проблемы в следующем. ДНС поставил, прописал в /etc/resolv.conf строчку nameserver 127.0.0.1, но при перезапуске она заменяется адресом ДНС моего провайдера.
Первое, что пришло в голову — запретить перезапись файла resolv.conf. Решение не очень оригинальное, но мне казалось, что оно сразу заработает:
sudo chmod 444 /etc/resolv.conf
Но при очередной перезагрузке файл /etc/resolv.conf был возвращен в «исходное положение». Следующий кандидат на ковыряние - DHCP-клиент. Открыл файл /etc/dhcp3/dhclient.conf. Вот его фрагмент:
Код: |
#prepend domain-name-servers 127.0.0.1;
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-search, domain-name-servers, host-name,
netbios-name-servers, netbios-scope, interface-mtu;
|
Заменил следующей строками:
Код: |
prepend domain-name-servers 127.0.0.1;
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-search, host-name,
netbios-name-servers, netbios-scope, interface-mtu; |
Явно указали, какой DNS-сервер используется и удалил опцию domain-name-servers, то есть теперь DHCP-клиент не будет получать от DHCP-сервера информацию о DNS-серверах. Прописал опять в /etc/resolv.conf строчку nameserver 127.0.0.1 и перезагрузил комп.
После перезагрузки ввожу nslookup и ... снова наблюдаю, как ответ приходит от провайдера.
Пришлось устанавливать пакет resolvconf, управляющий перезаписью файла /etc/resolv.conf:
sudo apt-get intall resolvconf
В каталоге /etc/resolvconf/resolv.conf.d есть несколько конфигов. Прописал строчку «nameserver 127.0.0.1» в файлах base и original.
Кстати, после установки пакета resolvconf файл /etc/resolv.conf был удален и заменен ссылкой на файл /etc/resolvconf/run/resolv.conf. Но редактировать этот файл не нужно, так как он тоже будет динамически перезаписан.
Я решил перестраховаться и проверить другие конфигурационные файлы resolvconf (не хотелось лишний раз перезагружать компьютер). В каталоге /etc/resolvconf/update-libc.d был обнаружен сценарий avahi-daemon, в котором производился запуск сценария проверки DNS-адреса:
if [ -x /usr/lib/avahi/avahi-daemon-check-dns.sh ]; then
exec /usr/lib/avahi/avahi-daemon-check-dns.sh
fi
Демон Avahi предоставляет информацию о сети и вполне возможно, что перезапись /etc/resolv.conf производилась с его «подачи». Поэтому файл avahi-daemon-check-dns.sh был удален, а секция publish файла /etc/avahi/avahi-daemon.conf была отредактирована следующим образом:
Код: |
[publish]
#disable-publishing=no
#disable-user-service-publishing=no
#add-service-cookie=no
#publish-addresses=yes
#publish-hinfo=yes
#publish-workstation=yes
#publish-domain=yes
[b]publish-dns-servers=127.0.0.1
publish-resolv-conf-dns-servers=yes[/b]
#publish-aaaa-on-ipv4=yes
#publish-a-on-ipv6=no
|
После этого я перезагрузил компьютер. После перезагрузки выполнил команду nskookup для проверки текущего DNS-сервера. Чудо свершилось: мне ответил мой локальный DNS-сервер
> dkws.org.ua
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: dkws.org.ua
Address: 91.203.4.180
Может кому-то пригодится |
|