Что такое DNS, принципы работы DNS и почему домены начинают работать не сразу. Что такое ДНС-сервер, как узнать предпочитаемый адрес провайдера, заменить на Google Public DNS или альтернативные варианты

Или глобальной сетях, целью которой является получение информации о доменах.

БД DNS поддерживается с помощью иерархии DNS-серверов, которые взаимодействуют по определенному протоколу.

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

Для чего же используется DNS -сервер?

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

Интересно! Одному доменному имени может принадлежать группа из нескольких IP-адресов т.к. крупный почтовый сервер это зачастую не один сервер, а несколько. Целью такого подхода является создание избыточности - если возникает проблема с одним сервером, другой выполняет его функции. Все эти технологические особенности скрыты от глаз рядового пользователя, а задача предоставления нужного ресурса согласно запросу лежит на DNS-сервере.

Наиболее важным показателем при выборе DNS -сервера является его доступность во времени.

Например, если выбранный вами сервер не будет работать, то зайти в интернет можно будет только используя IP -адреса сайтов или указав другой DNS -сервер.

Исходя из практики, скажем, что для решения большинства задач вам необходимо будет запомнить лишь 2 IP-адреса: 8.8.8.8 и 8.8.4.4.

Преимуществом данных серверов является, во-первых, высокая степень доступности, а во-вторых, их очень просто запомнить.

Каким DNS-сервером вы пользуетесь?

Чтобы узнать какой DNS -сервер используется, необходимо:

    Набрать на клавиатуре Win + R .

  • В поле «Открыть» необходимо вписать или скопировать с сайта команду вызова командной строки – «control /name Microsoft.NetworkAndSharingCenter » (без кавычек) и нажать «ОК ».

    В появившемся окне, выбрать необходимый профиль (если их несколько) и перейти в меню «Подключение по локальной сети».

  • В окне «Состояние подключения по локальной сети» кликнуть пункт «Сведения» и перейти в окно с информацией о нашем подключении, после чего найти строку «DNS-серверы IPv4».

Алгоритм решения проблем с DNS

Иногда, может случиться ситуация, когда DNS -сервер недоступен. Данная ситуация может возникнуть по двум причинам:

    Проблема на стороне клиента, как правило, - это остановка службы DNS-клиента на компьютере. Необходимо запустить службу DNS-клиента .

    Проблема на стороне провайдера или организации DNS -сервером, которой вы пользуетесь. Необходимо сменить DNS-сервер.

Для запуска службы DNS -клиента, необходимо:

    Нажать «Пуск», в поле поиска пишем «службы» (без кавычек) и переходим в данное меню.

    В открывшемся окне мы увидим все службы, которые задействованы в системе. Ищем службу «DNS-клиент». Нам необходимо убедиться в том, что служба DNS работает. В поле «Состояние» должна быть надпись «Работает».

    Если поле пустое, значит служба DNS остановлена и ее необходимо запустить. Для запуска DNS-службы необходимо кликнуть правой кнопкой мыши на службе и в контекстном меню нажать «Запустить».

    После запуска, обратите внимание на поле «Состояние», должна появиться надпись «Работает».

    Если служба DNS-клиента работает, а зайти на сайт удается только по его IP-адресу, попробуйте сменить DNS-сервер.

Иногда необходимо прописать DNS для компьютера с динамическим IP адресом. Простым путем для этого являются сервисы по типу dyndns , описанные в недавнем топике . Иногда такой подход работает достаточно плохо.

Напрмер в моей ситуации, провайдер иногда меняет мой публичный IP адрес. Это иногда случается обычно раз в несколько месяцев. Кроме того, мой домашний компьютер перезагружается крайне редко. За это время сервис dyndns, которым я пользовался ранее успевал пару раз прислать мне оповещения о неактивности с целью отключить «неиспользуемый» аккаунт. Перейти на вручную прописываемую DNS зону также не получается, потому что иногда адрес все же меняется. Причем обычно об этом узнаешь когда нужен доступ к домашнему компьютеру здесь и сейчас.

Для реализации описываемого метода понадобится сервер в интернете с DNS сервером bind на нем. А так же доменная зона, субдомен которой мы будем выделять для нашего компьютера. Описывается вариант с подключением Linux-компьютера к Linux-серверу. Для использования других операционных систем понадобится почитать мануалы и модифицировать некоторые шаги.

Итак:
1. Имеем установленный сервер bind9 с доменом server.org
2. Создаем зону client.server.org.zone:

$ORIGIN .
$TTL 10 ; 10 seconds
client.server.net IN SOA ns1.server.net. hostmaster.server.net. (
18 ; serial
10800 ; refresh (3 hours)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10 ; minimum (10 seconds)
$TTL 3600 ; 1 hour
NS ns1.server.net.
NS ns2.server.net.
MX 10 client.server.net.

Здесь сервера ns1.server.net и ns2.server.net - DNS сервера для нашей зоны, client.server.net - адрес нашего домашнего компьютера

3. генерим ключи на клиенте:
client# cd /etc/namedb/keys
client# dnssec-keygen -b 512 -a HMAC-MD5 -v 2 -n HOST client.server.net.

4. Создаем фаил с ключем на сервере:
server# cd /var/named/chroot/etc
server# vim keys.conf:

Key client.server.net. {
algorithm "HMAC-MD5";
secret "omr5O5so/tZB5XeGuBBf42rrRJRQZB8I9f+uIIxxei8qm7AVgNBprxtcU+FQMzBvU/Y+nyM2xbs/C8kF3eJQUA==";
};

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

Выставляем права доступа к фаилу с ключами:
server# chmod 640 keys.conf
server# chown root:named keys.conf

5. добавляем нашу зону в named.conf:
include "/etc/keys.conf"
zone "client.server.net" {
type master;
file "zones/client.server.net";
allow-update{
key client.server.net;
};
};

Здесь прописан параметр, который позволяет обновлять данные зоны. Вообще, почитав мануалы, можно найти опции этого параметра, позволяющие обновлять только одну запись в зоне для данного ключа. Т.е можно иметь зону с прописанными в ней поддоменами client1, client2, etc. которые будут авторизоваться с ключами key1, key2, etc.

6. Перезапускаем DNS сервер:
server# /etc/init.d/named reload

7. Создаем на клиенте скрипт, который будет обновлять данные зоны:
#!/bin/bash
IFACE="wlan0"
TTL=3600
SERVER=ns1.example.com
HOSTNAME=foo.example.com
ZONE=example.com
KEYFILE=/root/ddns-keys/Kfoo.example.com.+157+12345.private

New_ip_address=`ifconfig $IFACE | grep "inet addr:" | awk "{print $2}" | awk -F ":" "{print $2}"`
new_ip_address=${new_ip_address/ /}

Nsupdate -v -k $KEYFILE << EOF
server $SERVER
zone $ZONE
update delete $HOSTNAME A
update add $HOSTNAME $TTL A $new_ip_address
send
EOF

В начале скрипта описаны соответствующие параметры: интерфейс, имена сервера и зоны, местоположение фаила с ключем.

8. Осталось только настроить автозапуск/автоматическую смену адреса при смене DNS.
Мы это сделаем при помощи скрипта для NetworkManager:
создадим фаил /etc/NetworkManager/dispatcher.d/20-dyndns.sh:
#!/bin/sh

Iface=$1
state=$2

If [ "x$state" == "xup" ] ; then
/etc/namedb/ddns-update
elif [ "x$state" == "xdown" ]; then
true
fi

Сделаем его исполняемым и принадлежащим пользователю root.

Запускаем-проверяем-пользуемся.

Upd: Если не работает - проверяем (устанавливаем) на сервере права named на записть в папку в которой лежит фаил client.server.org.zone
named будет создавать там фаил client.server.org.zone.jnl

Использованы следующие материалы.

DNS-сервер – чрезвычайно полезная возможность обезопасить собственный компьютер от вредоносных сайтов. Процесс работы новичкам кажется нелегким, но на деле все намного проще, и процедура установки dns-сервера не займет много времени.

DNS – аббревиатура, образованная от Domain Name System. С английского языка на русский это переводится как «Система доменных имен», изменяющая их в IP-адреса. А днс-сервер хранит в базе данных соответствующие адреса.

Работа осуществляется таким образом: браузер, переходя на сайт, обращается к ДНС-серверу, чтобы узнать искомый адрес. Server определяет сайт, посылает ему запрос и передает полученный ответ обратно пользователю.

Как узнать, включен ли DNS-сервер на компьютере

Текущие настройки DNS-server определяются так:

  1. «Панель управления» -> «Сеть и интернет» -> «Просмотр состояния сети и задач». Выделить свое подключение по сети, перейти в панель «Общее», затем — в свойства.
  2. Зайти в свойства «Протокола Интернета версии 4 (TCP/IPv4)».
  3. Открыть вкладку «Общие». Если активирован пункт использования следующих адресов DNS-серверов, значит, он находится в рабочем режиме.

Повторить предыдущие шаги, активировать «Использовать DNS-сервер». После этого потребуется указание первичного DNS-сервера, а затем вторичного.

Как настроить/изменить DNS

При изменении или дополнительной настройке не потребуется совершать много действий. Необходимо использовать окно, открытое ранее, зайти в пункт «Дополнительно». Здесь производится детальная наладка обращения к DNS-серверам. В Windows 7 это все возможно настроить самостоятельно. Поэтому вопрос, как самим изменить dns-сервер, не вызовет проблем.

Еще для управления доступны DNS-суффиксы. Рядовому пользователю они не требуются. Эта настройка, помогающая удобно разделять ресурсы, создана для провайдеров.

На wi-fi роутере

При использовании роутера в опциях ДНС необходимо выставить его IP-адрес. Чтобы выполнить эти манипуляции, потребуются включенные DNS-relay и DHCP-server.

Интерфейс роутера предназначен для проверки и последующих детальных настроек. Сначала необходимо проверить ДНС в WAN-порте. DNS-relay активируется в параметрах LAN-порта.

На компьютере

Настройка ДНС-сервера в Windows 10 схожа с аналогичной ситуацией в ранних версиях ОС. Сначала нужно выбрать свойства «Протокола интернета версии 4 (TCP/IPv4)». Перейти в дополнительные опции и настроить список серверов.

Настройка сервера ДНС на компьютере и на ноутбуке одинаковая.

На планшете

В зависимости от установленной «операционки» действия несколько различаются, но их все объединяют следующие моменты:

  • Открыть меню «Wi-Fi», находящееся в «Настройках».
  • Зайти в свойства текущего подключения к интернету.
  • Кликнуть «Изменить сеть», после – «Показать дополнительные параметры».
  • Пролистать до пункта ДНС-серверов, потом их прописать.

На смартфоне

Так как сейчас особой разницы между операционными системами телефона и планшета нет, чтобы настроить нужные dns-серверы, достаточно знать инструкции, описанные выше.

Возможные ошибки и как их исправить

Проблемы с работой интернета возникают при неправильных настройках DNS-сервера, в том числе при их неожиданном сбое.

Что делать, если сервер не отвечает или не обнаружен

Чаще всего эта неполадка возникает при серверном отключении или сбившихся настройках. Для этого нужно открыть «Панель управления», перейти в «Систему и безопасность», затем — «Администрирование». Кликнуть на «Службы», найти «ДНС-клиент» и дважды щелкнуть по нему. В строке состояния отмечается команда «Выполняется». В ином случае нужно выбрать автоматический тип запуска из выпадающего списка выше.

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

Неправильно разрешает имена

При такой ошибке необходимо проверить правильность параметров своего DNS-server. А лучше просто прибегнуть к смене адреса dns-сервера, чтобы избавиться от возникшей проблемы.

Также неполадки возможны на серверах оператора, и решается задача тем же способом – изменением ДНС.

Для неискушенного пользователя существует список качественных и бесплатных servers:

Адреса: 8.8.8.8; 8.8.4.4

Как и все сервисы Google, качественно выполняет свои задачи, но обладает известным минусом – собирает и хранит статистику пользователя. Несмотря на это, server не имеет никакого доступа к персональным данным, поэтому волноваться о безопасности не стоит.

Если хочется узнать подробнее о server-работе, существует официальная документация на информационном сайте.

OpenDNS

Адреса: 208.67.222.222; 208.67.220.220

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

DNS.WATCH

Адреса: 84.200.69.80; 84.200.70.40

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

Norton ConnectSafe

Адреса: 199.85.126.10; 199.85.127.10

Тоже не «просит» предварительную регистрацию, надежно хранит данные пользователя. Создан разработчиками антивируса Norton, не требуя себе дополнительной рекламы.

Level3 DNS

Адреса: 4.2.2.1; 4.2.2.2

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

Comodo Secure DNS

Адреса: 8.26.56.26; 8.20.247.20

Базовая версия бесплатная, но за некоторые денежные средства возможно приобрести большое количество полезных услуг. Как в платном, так и бесплатном вариантах предоставляет надежную защиту данных.

OpenNIC DNS

Адреса: следует зайти на сайт проекта, он подберет наилучшие в зависимости от местонахождения пользователя.

Ввиду своего огромного покрытия позволяет удобно исследовать интернет в любой точке мира.

DHCP-сервер: что это и в чем его особенности

Больше всего подходит для сеток с наличием большого количества компьютеров по причине передачи своих сетевых настроек всем подключенным устройствам.

Такой server позволяет администратору задать диапазон хостов серверов и избежать большой траты времени на детальную оптимизацию.

Работает он только с настройками IP-адресов и самими адресами.

Заключение

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

Статья более не актуальна. Яндекс всех поголовно переводит на Яндекс.Коннект. В API Коннекта на данный момент отсутствует возможность управлять DNS-записями. API pdd.yandex уже не работает.
Можно использовать api Telegram для получения динамических ip. Инструкция

Я давно пользовался услугами dyndns для подключения из вне к домашней файлопомойке-торрентокачалке на фряхе, у которой динамический ip от провайдера. Хотя уже давно у dyndns эта услуга платная для вновь зарегистрировавшихся пользователей, но я пользовался бесплатно, т.к зарегистрировался ещё до того как они стали за это просить денег. Но на днях мне пришло письмо что они не могут больше предоставлять эту услугу мне бесплатно и со следующего месяца я должен буду за неё платить. Меня это не устроило и я стал искать выход из текущего положения.

Т. к. домены у меня делегированы на Яндекс DNS я стал читать мануалы для их API и выход был найден. Расскажу о нём ниже.

Чтобы использовать яндекс api нам нужно получить токен. Получить его довольно просто, в браузере вводим.

Https://pddimp.yandex.ru/get_token.xml?domain_name=domen.ru

Где domen.ru - ваш домен делегированный на яндекс. Вводим капчу и в выводе ищем:

Token="XXXXXX"

В кавычках будет ваш токен. Копируем его куда-нибудь, он нам потребуется чуть позже.
Теперь нам нужно добавить к нашему домену сабдомен, который будет ссылаться на машину с динамическим ip. Переходим на https://pdd.yandex.ru , выбираем домен и кликаем «Редактор DNS» там добавляем А-запись для домена:

В поле «Хост» вводите сабдомен, а в поле «Значение записи» пишете любой ip(в последствии он будет меняться, когда будет изменятся ip вашей тачки).

Теперь нам нужно получить id нашей записи. Для этого в браузере вводим:

Https://pddimp.yandex.ru/nsapi/get_domain_records.xml?token=XXXXXX&domain=domen.ru

Где ХХХХХХ-ваш токен, а domen.ru - ваш домен делегированный на яндекс.

В выводе ищем строку с нашей записью myhome.domen.ru и в этой строке находим:

Id="1234567"

В кавычках id записи, так же копируем его куда-нибудь.

Теперь пишем скрипт на тачке на которой динамический ip. Скрипт будет проверять внешний ip тачки раз в пол часа и если он изменился, то будет изменять А-запись на Яндекс DNS.

# ee /usr/local/bin/dyndns.sh

#!/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin; export PATH DOMEN="domen.ru" # ваш домен делегированный на яндекс SUB=myhome # сабдомен TOKEN=XXXXXX # токен RECID=1234567 # id записи while true; do IP="curl -s http://ip..domen.ru dns1.yandex.ru | grep has | awk "{print $4}"` # замените myhome.domen.ru на ваш сабдомен if [ $IP != $YAIP ] then curl -s "https://pddimp.yandex.ru/nsapi/edit_a_record.xml?token=$TOKEN&domain=$DOMEN&subdomain=$SUB&record_id=$RECID&content=$IP&ttl=1800" fi sleep 1800; done;

Значения переменных измените в соответствии с комментариями.

Делаем скрипт исполняемым:

# chmod +x /usr/local/bin/dyndns.sh

И добавляем соответствующую запись в крон:

# crontab -e @reboot /usr/local/bin/dyndns.sh

Всё, теперь после перезагрузки скрипт будет автоматически запускаться. Перезагружаемся или запускаем скрипт вручную и проверяем на https://pdd.yandex.ru изменилось ли значение записи для нашего сабдомена.

P.S. Чтобы было совсем все бесплатно, можно не покупать домен а использовать бесплатный домен в зоне.tk. Получить его можно на сайте www.dot.tk

Иногда необходимо прописать DNS для компьютера с динамическим IP адресом. Простым путем для этого являются сервисы по типу dyndns , описанные в недавнем топике Связываем домен и динамический IP . Иногда такой подход работает достаточно плохо.

Напрмер в моей ситуации, провайдер иногда меняет мой публичный IP адрес. Это иногда случается обычно раз в несколько месяцев. Кроме того, мой домашний компьютер перезагружается крайне редко. За это время сервис dyndns, которым я пользовался ранее успевал пару раз прислать мне оповещения о неактивности с целью отключить «неиспользуемый» аккаунт. Перейти на вручную прописываемую DNS зону также не получается, потому что иногда адрес все же меняется. Причем обычно об этом узнаешь когда нужен доступ к домашнему компьютеру здесь и сейчас.

Для реализации описываемого метода понадобится сервер в интернете с DNS сервером bind на нем. А так же доменная зона, субдомен которой мы будем выделять для нашего компьютера. Описывается вариант с подключением Linux-компьютера к Linux-серверу. Для использования других операционных систем понадобится почитать мануалы и модифицировать некоторые шаги.

Итак:
1. Имеем установленный сервер bind9 с доменом server.org
2. Создаем зону client.server.org.zone:

$ORIGIN .
$TTL 10 ; 10 seconds
client.server.net IN SOA ns1.server.net. hostmaster.server.net. (
18 ; serial
10800 ; refresh (3 hours)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10 ; minimum (10 seconds)
$TTL 3600 ; 1 hour
NS ns1.server.net.
NS ns2.server.net.
MX 10 client.server.net.

Здесь сервера ns1.server.net и ns2.server.net - DNS сервера для нашей зоны, client.server.net - адрес нашего домашнего компьютера

3. генерим ключи на клиенте:
client# cd /etc/namedb/keys
client# dnssec-keygen -b 512 -a HMAC-MD5 -v 2 -n HOST client.server.net.

4. Создаем фаил с ключем на сервере:
server# cd /var/named/chroot/etc
server# vim keys.conf:

Key client.server.net. {
algorithm "HMAC-MD5";
secret "omr5O5so/tZB5XeGuBBf42rrRJRQZB8I9f+uIIxxei8qm7AVgNBprxtcU+FQMzBvU/Y+nyM2xbs/C8kF3eJQUA==";
};

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

Выставляем права доступа к фаилу с ключами:
server# chmod 640 keys.conf
server# chown root:named keys.conf

5. добавляем нашу зону в named.conf:
include "/etc/keys.conf"
zone "client.server.net" {
type master;
file "zones/client.server.net";
allow-update{
key client.server.net;
};
};

Здесь прописан параметр, который позволяет обновлять данные зоны. Вообще, почитав мануалы, можно найти опции этого параметра, позволяющие обновлять только одну запись в зоне для данного ключа. Т.е можно иметь зону с прописанными в ней поддоменами client1, client2, etc. которые будут авторизоваться с ключами key1, key2, etc.

6. Перезапускаем DNS сервер:
server# /etc/init.d/named reload

7. Создаем на клиенте скрипт, который будет обновлять данные зоны:
#!/bin/bash
IFACE="wlan0"
TTL=3600
SERVER=ns1.example.com
HOSTNAME=foo.example.com
ZONE=example.com
KEYFILE=/root/ddns-keys/Kfoo.example.com.+157+12345.private

New_ip_address=`ifconfig $IFACE | grep "inet addr:" | awk "{print $2}" | awk -F ":" "{print $2}"`
new_ip_address=${new_ip_address/ /}

Nsupdate -v -k $KEYFILE << EOF
server $SERVER
zone $ZONE
update delete $HOSTNAME A
update add $HOSTNAME $TTL A $new_ip_address
send
EOF

В начале скрипта описаны соответствующие параметры: интерфейс, имена сервера и зоны, местоположение фаила с ключем.

8. Осталось только настроить автозапуск/автоматическую смену адреса при смене DNS.
Мы это сделаем при помощи скрипта для NetworkManager:
создадим фаил /etc/NetworkManager/dispatcher.d/20-dyndns.sh:
#!/bin/sh

Iface=$1
state=$2

If [ "x$state" == "xup" ] ; then
/etc/namedb/ddns-update
elif [ "x$state" == "xdown" ]; then
true
fi

Сделаем его исполняемым и принадлежащим пользователю root.

Запускаем-проверяем-пользуемся.

Upd: Если не работает - проверяем (устанавливаем) на сервере права named на записть в папку в которой лежит фаил client.server.org.zone
named будет создавать там фаил client.server.org.zone.jnl

Использованы следующие материалы.