Как dns прописать в сетевых настройках. Что делать, если DNS сервер недоступен

Наше соединение с глобальной сетью Интернет обеспечиваются не только шнурами и проводами, но и программной настройкой. Большинство пользователей полностью полагаются на своего провайдера, и в принципе это правильно, там ведь не дураки работают. Но иногда и они ошибаются. Дабы меньше зависеть от ошибок нашего провайдера, попробуем немного отвязаться от его. Конечно аппаратура, шнуры, кабеля, антенны - это мы не изменим, в этом мы полностью зависим от провайдера, но вот программное подключение - в этом я больше доверяю специалистам из Google, чем местным технарям.

Что такое

DNS (простое объяснение)?

Сеть Интернет это техническое строение. Каждый компьютер пользователя или какого-либо сервиса в этой сети имеет свой цифровой IP-адрес, на подобие 24.198.15.6 На серверах в сети, как мы знаем размещают веб-сайты. Связь между компьютерами сети происходит по его цифровым значениям. Но людям легче запоминать слова (к примеру google.com), чем цифровой IP-адрес его местонахождения (24.198.15.6). Именно для того, чтобы людям не запоминать не связный набор цифр, а оперировать словами, создали сервис DNS (Domain Name Service). Его задача сообщать компьютерам сети какой цифровой IP-адрес соответствует буквенному адресу.

Как проверить работает ли DNS?

Мы можем проверить работу DNS даже на своем локальном компьютере. Для проверки наш компьютер должен быть подключен к сети Интернет. Через меню пуск выберите опцию "Выполнить", наберите команду cmd и нажмите Ввод. Откроется черное окно. Проще говоря вы перешли в командную строку. Введите:

ping google.com

и нажмите Ввод. Если идет обмен пакетами (как на изображении), то значит DNS работает. Заметьте, обмен пакетами идет именно с цифровым адресом сайта 74.125.136.113, с его IP-адресом. Ваша DNS служба основываясь на данные получаемые с управляющих DNS-серверов приняла от вас запрос на пинг сайта google.com и преобразовала его буквенное значение в цифровое.

Как узнать, что не работает DNS?

Если ваш компьютер подключен к сети Интернет, но сайты не открывает, возможно не работает DNS. Проверить работает ли у вас DNS достаточно просто. Снова открываем командную строку (черный экран) и пингуем google.com. Ответа не должно поступить (сайты то не открываются), поэтому для проверки работы DNS нужно сделать пинг не буквенных адресов, а цифровых. В командной строке делаете

ping 8.8.8.8

Таким образом, вы проверяете на доступность DNS сервер компании Google. Заметьте, для проверки работоспособности DNS необходимо пинговать именно цифровой IP-адрес. Если идет обмен пакетами (пинг) с IP адресом, а сайты с компьютера не открываются, значит у вас или вашего провайдера неполадки с DNS. Если же пинг не последует, то ищите проблему вашего выхода в Интернет в чем то другом.

Как поменять DNS провайдера?

Для смены DNS серверов, которые по умолчанию предоставляет вам ваш Интернет провайдер, необходимо на вашем устройстве, через которое вы выходите в сеть, задать DNS значения вручную. Для Windows пользователей необходимо в сетевых подключениях выбрать адаптер, через который происходит подключение с сетью, открыть свойства этого подключения и в настройках "Протокол Интернета" или для более современных устройств "Протокол IP4" задать DNS. Значения 8.8.8.8 и 8.8.4.4 это общедоступные DNS сервера от лидера современного Интернета Google.


Стоит понимать, что лишь бы какие IP задавать нельзя. DNS сервис размещается на конкретных IP-адресах. Кроме того, не стоит использовать лишь бы какие DNS. DNS это золотое место для кибермошенников. К примеру, вы используете Интернет-банкинг, если злоумышленники подменят DNS сервера и заставят вас ходить через их DNS, то они смогут перенаправлять вас на свои мошеннические сайты. К примеру, вы будете открывать сайт https://bank.com, но ложный DNS сервис будет направлять вас не на истинный Интернет-банкинг, а на сайт мошенников. В браузере вы будете видеть, что открываете нужный вам адрес, а на самом деле вы, ничего не подозревая, будете находится на сайте преступников.

Зачем менять DNS провайдера?

Используя свои DNS провайдер может создавать правила или накладывать ограничивая на доступ к какому-либо сайту своим клиентам. Кроме того, неправильные настройки провайдера могут парализовать работу клиентов. При всем уважении к местным Интернет провайдерам, я больше доверяю специалистам Google. Конечно, они наверняка работают с спецслужбами США, но и мы ведь не террористы.

Есть и другие способы изменения ваших настроек выхода в сеть, как к примеру VPN, но это уже более технически сложные, часто требующие финансовых затрат решения, впрочем конечно и более надежные, чем обычная смена DNS, так как обеспечивают полную независимость от провайдера, изменяя ваш IP, DNS, точку выхода в сеть, шифруя трафик.

Расскажет нам о настройке DNS сервера в Linux. Для начала, поговорим немного о том, для чего это нужно и как работает? DNS (Domain Name System - Система Доменных Имен) очень важна для работы Интернета, так как для соединения с конечным узлом (компьютером) необходима информация о его IP-адресе, а для людей проще запоминать буквенные (обычно осмысленные) адреса, чем последовательность цифр IP-адреса.

Чтобы мы могли использовать такие удобные имена как сайт, а не адрес вида 91.204.74.143, была давным-давно придумана DNS. В некоторых случаях это позволяет использовать виртуальные серверы, например, HTTP-серверы, различая их по имени запроса.

Первоначально преобразование между доменными и IP-адресами производилось с использованием специального текстового файла hosts , который составлялся централизованно и автоматически рассылался на каждую из машин в своей локальной сети.

С ростом Сети возникла необходимость в эффективном и автоматизированном механизме, которым и стала DNS. Хотя этот файл можно использовать и сейчас, он имеет больший приоритет при получении IP адреса чем DNS, т.е. сначала идет обращение в DNS кэш, потом в файл hosts и в самом конце - на внешний сервер DNS.

DNS обладает следующими характеристиками :

  • Распределённость администрирования. Ответственность за разные части иерархической структуры несут разные люди или организации. Т.е. нельзя так просто взять и отключить целый домен.
  • Распределённость хранения информации. Каждый узел сети в обязательном порядке должен хранить только те данные, которые входят в его зону ответственности и (возможно) адреса корневых DNS-серверов. Сервера отвечают только за свою зону или за ее часть.
  • Кеширование информации. Узел может хранить некоторое количество данных не из своей зоны ответственности для уменьшения нагрузки на сеть.
  • Иерархическая структура, в которой все узлы объединены в дерево, и каждый узел может или самостоятельно определять работу нижестоящих узлов, или делегировать (передавать) их другим узлам.
  • Резервирование. За хранение и обслуживание своих узлов (зон) отвечают обычно несколько серверов, разделённые как физически, так и логически, что обеспечивает сохранность данных и продолжение работы даже в случае сбоя одного из них.


Принцип работы рекурсивного DNS сервера.

Предположим, мы набрали в браузере адрес сайт. Наш клиент спрашивает у первого (указанного в настройках подключения к сети) сервера DNS: «какой IP-адрес у сайт»?

Однако, сервер DNS может ничего не знать не только о запрошенном имени, но даже обо всём домене сайт. В этом случае он может обратиться к другому серверу, ответственному за зону ru или корневому серверу - например, 198.41.0.4 Предположим, что этот узел сообщает - «У меня нет информации о данном адресе, но я знаю, что 204.74.112.1 является ответственным за зону ru.» Тогда сервер DNS направляет свой запрос к 204.74.112.1, но тот отвечает «У меня нет информации о данном домене, но я знаю, что 207.142.131..» Наконец, тот же запрос отправляется к третьему DNS-серверу и находится нужный ответ - IP-адрес, который и передаётся клиенту - браузеру.

Структура имен напоминает дерево, где корень (root) это его верх, а зоны - его "ветки". Выглядит это примерно так, как показано на схеме (фото ниже - кликабельно):

Из-за существовавших в прошлом ограничений на размеры DNS-пакета (512 байт) в DNS-ответ могло быть помещено всего 13 серверов (от A до M - тринадцатой буквы в алфавите), сейчас за этими 13 именами стоят более 200 серверов. Ближайший (к пользователю) адрес «зеркала» корневого сервера выбирается автоматически благодаря IP AnyCast.

Так, при обращении к K.root-servers.net, пользователь из Новосибирска, скорее всего, обратится к новосибирскому серверу (в NSK-IX).

Опровержение распространённых заблуждений :

  1. Не весь интернет-трафик проходит через корневой сервер;
  2. Не каждый DNS-запрос обрабатывается корневым узлом;
  3. Корневые зоны обслуживаются не добровольцами в качестве хобби, а профессионалами, и хорошо финансируются;
  4. Ни одна организация (коммерческая или правительственная) не контролирует всю систему.

Также есть несколько типов DNS-записей:

  • Запись A (address record) или запись адреса связывает имя компьютера или сервера с адресом IP. Например, запрос A-записи на имя referrals.icann.org вернет его IP адрес - 192.0.34.164
  • Запись AAAA (IPv6 address record) связывает имя хоста с адресом протокола IPv6. Например, запрос AAAA-записи на имя K.ROOT-SERVERS.NET вернет его IPv6 адрес - 2001:7fd::1
  • Запись CNAME (canonical name record) или каноническая запись имени (псевдоним) используется для перенаправления на другое имя. Например www..ru
  • Запись MX (mail exchange) или почтовый обменник указывает сервер(ы) обмена почтой для данного домена. Их может быть несколько, для каждого можно выставить приоритет, чем ниже цифра, тем он приоритетнее по сравнению с остальными. По умолчанию - 10
  • Запись NS (name server) указывает на DNS-сервера для данного домена.
  • Запись PTR (pointer) или запись указателя связывает IP хоста с его каноническим именем. Запрос в домене in-addr.arpa на IP хоста в reverse форме вернёт имя (FQDN) данного хоста (см. обратный DNS-запрос). Например, (на момент написания), для IP адреса 192.0.34.164: запрос записи PTR 164.34.0.192.in-addr.arpa вернет его каноническое имя referrals.icann.org. В целях уменьшения объёма нежелательной корреспонденции (спама) многие серверы-получатели электронной почты могут проверять наличие PTR записи для хоста, с которого происходит отправка. В этом случае PTR запись для IP адреса должна соответствовать имени отправляющего почтового сервера, которым он "представляется" в процессе SMTP-сессии.
  • Запись SOA (Start of Authority) или начальная запись зоны указывает, на каком узле хранится эталонная информация о данном домене, содержит контактную информацию лица, ответственного за данную зону, тайминги (параметры времени) кеширования зонной информации и взаимодействия DNS-серверов.
  • SRV-запись (server selection) указывает на серверы для сервисов. Используется, в частности, для Jabber (альтернатива ICQ) и Active Directory (групповое администрирование пользователей)

На этом покончим с теорией и перейдем к практике.

Установка и настройка bind9

Теперь давайте настроим свой DNS сервер для локального домена, например home . Вы можете выбрать любое название, но учтите, что оно не должно пересекаться с настоящими доменами, так как Вы не сможете потом обратиться к настоящим (внешним) сайтам в Интернете. Т.е. создав зону com и в ней запись о сайте vk.com вы не сможете обратиться к настоящему сайту, если конечно не укажете там правильную информацию. Рекомендую использовать выдуманную зону, как например home , office или название организации.

Так как cамым популярным для *NIX систем сервером DNS является Bind , мы тоже будем использовать его. Установим bind на наш сервер, для этого выполним команду apt-get install bind9 также будет установлен пакет bind9utils. Если все прошло хорошо, то сразу после установки он запустится, о чем будет сообщено в терминале.

* Starting domain name service... bind9

Теперь приступим к настройке сервера Bind. Перейдем в его каталог командой cd /etс/bind/ и создадим там файл с именем myzones.conf, для этого выполним команду touch myzones.conf и откроем его nano myzones.conf

Впишем в файл такую строку: zone "home" {type master; file "/etс/bind/db.home";}; эта запись значит, что для нашей зоны home данный сервер будет главным (master), а вcя информация о зоне хранится в файле /etс/bind/db.home который нам нужно будет создать чуть позже.

Сохраняем этот файл и открываем файл named.conf командой nano named.conf в конец файла дописываем include "/etс/bind/myzones.conf"; и тоже сохраняем. Эта надпись подключит при запуске служб bind файлик myszones.conf в котором мы указали наши зоны (домены).

Приступим к созданию файла зоны о котором писалось чуть выше. Для этого выполним команду nano db.home и впишем туда следующее:

Первое что нужно знать при редактировании файла зоны, это то, что при каждом внесении изменении нужно увеличивать значение serial . Общепринято и правильно это делать в таком виде YYYYMMDDRR, где YYYY текущий год, MM месяц, DD день, RR номер правки за текущий день.

Например, сегодня 9 сентября 2013 года. Это будет наша первая правка зоны за день, получаем serail равный 2013090900, так как в программировании счет начинается с ноля, первая правка будет иметь номер 00, вторая 01 и т.д. Хотя это не принципиально в данном случае, главное чтобы цифра была хотя бы на единицу больше предыдущего значения.

Строка @ IN NS ns1.home. гласит, что для текущей зоны сервер DNS имеет имя ns1.home, далее строкой ns1 IN A 127.0.0.1 мы указываем что у хоста ns1 IP-адрес равен 127.0.0.1 (т.е. он находится на этом же компьютере).

Чтобы добавить новую запись об имени хоста, добавим такую строку: server IN A 192.168.0.254 где server это имя хоста (компьютера), а 192.168.0.254 его IP-адрес, т.е. компьютер с этим IP-адресом будет иметь имя server.home. Таких записей может быть сколько угодно. Также можно назначать несколько имен для одного IP. Это бывает необходимо, если нам нужно настроить несколько виртуальных web-серверов. Сохраняем этот файл.

Для того чтобы DNS сервер применил последние наши настройки, его нужно перезапустить. Для этого используется такая команда /etс/init.d/bind9 restart Если конфигурация оказалась без ошибок, мы увидим следующее

* Stopping domain name service... bind9 [ OK ]
* Starting domain name service... bind9 [ OK ]

Если сервер не смог запуститься, проверьте конфигурационные файлы, которые мы редактировали.

Внимание : основная причина ошибок это пропущенные символы вроде точки, двоеточия или точки с запятой. Проверьте синтаксис написания, также заметьте что после все имен, кроме названия хостов, в файле db.home стоят точки, это - важно.

Если все запустилось, проверим правильно ли работает наш сервер? Для этого воспользуемся утилиткой nslookup, она есть в каждой ОС. Для этого выполним на сервере в командной строке команду nslookup

Далее введем команду server 127.0.0.1 это укажет, что мы хотим использовать сервер находящийся по адресу 127.0.0.1, после напишем имя какого-нибудь хоста, который мы указали в нашей зоне, например server.home Вот как должны выглядеть правильные ответы сервера:

roоt@CoоlServ:/etс/bind# nslookup

> server 127.0.0.1
Default server: 127.0.0.1
Address: 127.0.0.1#53

> server.home
Server: 127.0.0.1
Address: 127.0.0.1#53
server.home canonical name = home.

Если все совпадает, значит все работает правильно. Теперь можно использовать этот сервер для работы. Если не совпадает, проверьте настройки, возможно служба не запустилась или не удалось найти зону, те она была указана с ошибкой.

Также можно использовать наш DNS на нашем же сервере, для этого нужно указать его IP в файле /etс/resolv.conf. Для этого запустим nano /etс/resolv.conf и впишем в самом начале файла строку nameserver 127.0.0.1 , а в следующей строке - nameserver 8.8.8.8

Первая строчка укажет нашему серверу, что по умолчанию нужно использовать DNS-сервер на локальном хосте, в случае если он перестанет отвечать на запросы, использовать DNS по адресу 8.8.8.8 (это IP публичного DNS от Google). Сохраняем файл и на этом настройка DNS окончена.

Использование ресурсов провайдера/другой сети через свой DNS

Может возникнуть задача использовать ресурсы провайдера или имена из другой «серой» сети, которые невозможно получить через всемирные DNS. Для ее решения нужно подредактировать конфигурацию нашего сервера.

Предположим, нужно получить доступ к зоне lan Интернет провайдера. Для этого в файл myzones.conf допишем такую строку zone "lan" IN { type forward; forward only; forwarders { 10.0.0.1; 10.0.0.2;}; }; где lan название зоны, а 10.0.0.1 и 10.0.0.2 DNS сервера провайдера или другой сети. Теперь при запросе к этой зоне, компьютер будет обращаться к ней напрямую, а не тратить время на поиск того же узла в Интернете.

Настройка альтернативного (slave) DNS

Пришлось мне однажды настраивать slave сервер, чтобы поддержать друга в его начинаниях.

Slave сервера нужны для обеспечения отказоустойчивости зоны. Например, если с главным сервером что-то случится (он «упадет», повреждение Интернет магистрали и другие неприятные вещи) зона будет продолжать работать дальше на резервном, пока главный сервер не начнет нормально функционировать. Для этого на альтернативном сервере нам потребуется написать вот такую строку в файле /etс/bind9/myzones.conf

zone "home." IN { type slave; file "/etс/bind/slave/mirror.home"; masters { 192.168.0.254; }; }; где 192.168.0.254 наш первичный DNS сервер, а /etс/bind/slave/mirror.home файл в котором будет храниться копия DNS зоны основного сервера. Также нужно создать папку командой mkdir /etс/bind/slave/ и передать ее пользователю bind, для этого выполним chown bind:bind /etс/bind/slave/

Здесь меня ждал подводный камень: так как до этого мне не приходилось сталкиваться с такими серверами, я никак не предполагал, что служба не сможет писать временный файл в эту папку даже с полными правами!

На анализ логов и поиск решения ушла добрая часть ночи, было пролистано пол поисковика, пока на каком-то англоязычном форуме я не наткнулся на такое решение. Нужно открыть файл nano /etс/apparmor.d/usr.sbin.named найти строку /etс/bind/zones/** r, и заменить ее на /etс/bind/zones/** rw, т.е. дописать атрибут w чтобы bind получил право на запись в эту директорию. Перезапустить /etс/init.d/apparmor reload и /etс/init.d/bind9 restart и после этого сервер сразу заработал, как нужно!

Чаще всего DNS-сервер, предоставляемый провайдером, справляется со своими задачами. Но иногда возникают проблемы:

  1. Перестают грузиться некоторые сайты.
  2. Доступ к контенту блокируется по географическим причинам.
  3. На сервере провайдера нет надёжной защиты.

И тут рекомендуется воспользоваться сторонними сервисами. Самые популярные - Google Public DNS и OpenDNS. Google Public DNS обеспечит стабильную загрузку сайтов. OpenDNS, кроме этого, может предложить расширенную функциональность: встроенный фильтр, защиту от фишинга и функцию родительского контроля. Для этого надо зарегистрироваться .

Смена DNS-сервера на Windows

Если у вас Windows 10, кликните правой кнопкой мыши по значку соединения и выберите «Параметры сети и интернет».

Прокрутив страницу вниз, откройте «Центр управления сетями и общим доступом».

Если у вас Windows 7, 8, 8.1, так же нажмите правой кнопкой на значок сети и сразу выберите «Центр управления сетями и общим доступом». Последующие действия одинаковы для всех версий Windows.

Вам нужно попасть в меню «Изменение параметров адаптера».

Кликните правой кнопкой по нужному сетевому соединению и перейдите в его свойства. Выберите «IP версии 4», нажмите на кнопку «Свойства».

Поменяйте галочку на «Использовать следующие адреса DNS-серверов» и пропишите новые параметры. Для Google Public DNS это будут 8.8.8.8 и 8.8.4.4. Для OpenDNS - 208.67.222.222 и 208.67.220.220.

Смена DNS-сервера на macOS

Зайдите в системные настройки и кликните на иконку «Сеть». Далее выберите карточку вашей сети слева - в большинстве случаев это будет Wi-Fi. Нажмите на кнопку «Дополнительно».

Когда вы попадёте в дополнительные настройки, откройте мини-вкладку DNS. Там вы сможете добавить новый адрес сервера в список. Если увидите запись, выделенную серым цветом, просто не обращайте на неё внимания и кликните по кнопке «+» в колонке DNS-серверы, чтобы добавить новую запись.

Если вы хотите использовать серверы Google Public DNS, нужно добавить две новые записи в список DNS-серверов: 8.8.8.8 и 8.8.4.4. Если вам больше нравится OpenDNS, используйте эти два адреса: 208.67.222.222 и 208.67.220.220.

Смена DNS-сервера на Android

Зайдите в настройки Wi-Fi на своём телефоне. Длинным нажатием выберите нужное подключение и в появившемся меню выберите «Изменить сеть».


Затем нажмите «Дополнительно» и в пункте «Настройки IP» выберите «Статический».


Остаётся ввести адреса в поля DNS1 и DNS2. Для Google Public DNS это 8.8.8.8 и 8.8.4.4, для OpenDNS - 208.67.222.222 и 208.67.220.220.


Смена DNS-сервера на iOS

Зайдите в настройки Wi-Fi на своём устройстве и нажмите на синий кружок с буквой i рядом с нужным подключением.

Затем в строке DNS введите адрес сервера. Выберите один из адресов Google Public DNS (8.8.8.8 или 8.8.4.4) или OpenDNS (208.67.222.222 или 208.67.220.220).

Вот и всё! Сменить DNS оказалось просто и быстро. Можете наслаждаться стабильным интернет-соединением.