Пошаговая инструкция тридцатая: DNS-клиент, настройка и устранение неполадок.
Настроить DNS-клиент для рабочей станции или сервера правильнее графическими конфигураторами. Основной и дополнительный DNS-сервер провайдера получаем автоматически, если используем DHCP-клиент или прописываем вручную при статике.
Рассмотрим на примерах, как поступать, если происходят сбои, не удалось подключится или не хочется часто менять записи на локальных машинах.
Конечно много написано, но когда не работает, готов прочитать и больше. Лишнего мало, а когда уже все испробовал и ничего не помогает — полезно почитать инструкцию.
Итак:
Графика нам не поможет, поэтому придется использовать консоль. Все что вам нужно, это мышкой копировать команды из этой инструкции, вставлять их и нажимать Ввод.
Для начала нам надо убедиться, что проблема в DNS.
Открываем консоль и пингуем публичный сервер в инете.
vova@vova ~]$ping ya.ru
если пинги не проходят, то пробуем пропинговать по IP-адресу
vova@vova ~]$ping 77.88.21.8
пинги проходят.
Выносим приговор: У нас действительно проблемы с DNS доступом к провайдеру. ( для окончательного диагноза надо продублировать команды на разные публичные сервера, если и по IP не проходят, то проблема общего подключения.)
DNS- сервера провайдера сообщаются цифрами и никогда не бывают типа
http://dns.ruКак узнать их? Спросить у провайдера, обычно они сообщают. Однако не факт, что телефонная барышня техподдержки назовет их правильно. Можно подсмотреть на работающей машине виндос: Пуск - Программы — Стандартные — Командная строка, даем команду ipconfig /all и читаем вывод, до соединения VPN, после, если оно есть.
Итак у нас, для примера, два IP
Основной DNS - 81.81.81.81
Дополнительный — 82.82.82.82
их два, потому что не может не работать, хотя бы один.
Попробуем пропинговать, обычно они не закрыты от пинга. Если пинги проходят, проверим каким маршрутом идут пакеты. Показываю свой пример:
vova@vova ~]$ traceroute 77.247.208.70
traceroute to 77.247.208.70 (77.247.208.70), 30 hops max, 40 byte packets
1 10.0.0.1 (10.0.0.1) 0.161 ms 0.130 ms 0.152 ms
2 77.247.209.129 (77.247.209.129) 1.414 ms 0.737 ms 1.001 ms
3 77.247.211.25 (77.247.211.25) 1.574 ms 0.947 ms 0.855 ms
4 mx.ural-it.com (77.247.208.70) 0.867 ms 1.025 ms 0.639 ms
Если вывод с точками, то лучше применить команду tracepath.
Мы видим, что пакет проходит через шлюз локальной сети, шлюз провайдера, еще пару шагов по его сети и на месте.
Это правильно. Неправильно, если таких шагов много и вы обращаетесь к DNS-серверу как бы снаружи, из инета. Получается либо вы обращаетесь к чужому DNS, либо у вас ошибка в маршрутизации.
Что еще можно проверить: Должен быть открыт 53 порт и сервер его слушает.
[vova@vova ~]$ nmap -p 53 77.247.208.70
Starting Nmap 4.20 ( http://insecure.org ) at 2009-11-06 12:06 YEKT
Interesting ports on ural-net.ru (77.247.208.70):
PORT STATE SERVICE
53/tcp open domain
Nmap finished: 1 IP address (1 host up) scanned in 0.375 seconds
Мы видим что открыт 53 порт. Это правильно.
Если там строка
53/tcp closed unknown значит ошибка, если не отвечает ничего можем проверить еще и
[vova@vova ~]$ netcat -v -w 4 -z 77.247.208.70 53
Connection to 77.247.208.70 53 port [tcp/domain] succeeded!
#это правильно
[vova@vova ~]$ netcat -v -w 4 -z 77.247.208.70 53
netcat: connect to 77.247.208.70 port 53 (tcp) failed: Connection refused
Connection to 77.247.208.70 53 port [tcp/*] failed : Connection refused
Это не правильно. Надо разбираться почему.
Если все хорошо, продолжаем:
Заходим суперпользователем, т.е даем команду
[vova@vova ~]$ su -l
Password: набираем пароль root'a
[root@vova ~]# получаем приглашение в виде решетки # а не $ как было раньше
Нам надо проверить к какому dns фактически обращается наш компьютер. Информация хранится в
[root@vova ~]# cat /etc/resolv.conf
# Generated by dhcpcd for interface eth0
nameserver 81.81.81.81
search domain.org
Если там нет ничего похожего на известные нам IP, то разбираемся почему путаница, может дали не то.
Попробуем прописать сами.
На всякий случай сохраняем файл этот файл в каталоге roor, удалим и создадим новый.
[root@vova ~]# cp /etc/resolv.conf /root
[root@vova ~]#rm /etc/resolv.conf
[root@vova ~]#cat >>/etc/resolv.conf
nameserver 81.81.81.81
nameserver 82.82.82.82
сохранить (ctrl+d)
запускаем специальный скрипт resolv.all командой
[root@vova ~]#/etc/chroot.d/resolv.all
Все должно работать. DNS настроен. Попробуйте открыть домашнюю страничку провайдера. Если открывает только ее, то значит у вас внутренний dns. Если заработало, но опять сбилось, можем прибить гвоздями.
Причин много, обновлялись, подгружали пакеты, потянулись связи, редактируют новые интерфейсы.
Даем команду
[root@vova ~]#chmod u-w /etc/resolv.conf
и уже никто не сможет редактировать этот файл, даже сам root, пока право на запись не восстановит.
Это радикальный способ, если сбоев не будет и вас все устраивает, то можно на этом и все остановиться.
Как делать правильней:
Правильней поручить специальному сервису BIND. Сам это часто делаю на машинах ALT. Так проще, чем разбираться.
Для этого проделаем всего четыре простых шага:
Шаг № 1 Ставим bind
[root@vova ~]# apt-get install bind bind-utils
Шаг 2: правим /var/lib/bind/etc/options.conf
Нас интересуют всего две строки, мы их раскомментируем и запишем
listen-on {127.0.0.1; 10.0.0.1; };
127.0.0.1 чтобы наш сервер мог обращаться к bind и 10.0.0.1 обязательно IP адрес той сетевой карты, которая стоит на нашем сервере и которую потом будем указывать на хостах локальной сети как сервер DNS
и вторая строка
forwarders {81.81.81.81; 82.82.82.82; 83.83.83.83; };
указываем все DNS, которые нам дал провайдер. Провайдер может быть не один. BIND это не интересует, он будет перебирать по порядку указанные DNS, пока не получит ответ.
Шаг 3: запускаем bind и включаем его в список для автозагрузки
[root@vova ~]#service bind restart
[root@vova ~]#rndc reload
[root@vova ~]#chkconfig --level 35 bind on
Шаг № 4: уже нам знаком
[root@vova ~]#rm /etc/resolv.conf
[root@vova ~]#cat >>/etc/resolv.conf
nameserver 127.0.0.1
сохранить (ctrl+d)
и можем прибить гвоздями
[root@vova ~]#chmod u-w /etc/resolv.conf
Тестируем пингуя публичный сервер.
Останавливаем bind
[root@vova ~]#service bind stop
не можем пинговать
Запускаем
[root@vova ~]#service bind stаrt
пингуем, оставляем в строке forwarders всего один 81.81.81.81 и перезапускаем
[root@vova ~]#service bind restart
таким образом выявляем нерабочие DNS, разбираемся и оставляем рабочие.
Теперь, если вы поменяли провайдера, вам не надо ничего менять на машинах локально сети, вносите изменения в /var/lib/bind/etc/options.conf , строку forwarders {та — та }, затем
[root@vova ~]#service bind restart
и все опять работает.
Работает надежно, как правило, больше к этому не возвращаешься.
Если и после выполнения этой инструкции у вас не заработало, то значит скорее всего вы невнимательно ей следовали, и только в самую последнюю очередь дело в чем-то другом.
Описание тестовое, прошу подсказать увиденные ошибки и замечания.
Благодарю за внимание.