Как настроить смартфоны и ПК. Информационный портал

Лучшие dns сервера для игр. IgorKa - Информационный ресурс

Иногда необходимо прописать 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 для компьютера с динамическим 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

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

Статья более не актуальна. Яндекс всех поголовно переводит на Яндекс.Коннект. В 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

Компьютеры в сети (в том числе Интернет) не имеют имен, передача данных осуществляется с использованием IP-адресов.

IP-адрес (Internet Protocol Address) — числовой адрес в сети интернет, имеющий вид 123.123.123.123. IP-адреса трудно запомнить человеку, особенно когда вы посещаете десятки сайтов в день с разными IP-адресами.

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

На самом деле, на DNS-серверах хранится не только IP-адрес сервера, но и другие данные, такие как ресурсные DNS-записи «MX», «TXT», «A», «CNAME», «SOA».

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

Зачем прописывать DNS-серверы для домена

Когда вы регистрируете новое доменное имя, ни один DNS-сервер в Интернет о нём не знает. И пока на DNS-серверах Интернета не появится информация о вашем домене, ни сайт, ни почта, никакие другие сервисы работать не будут.

Чтобы DNS-серверы в Интернет узнали о вашем домене, им это должен кто-то рассказать, и этот кто-то — DNS-сервер, который вы прописываете для своего домена. Он играет роль «глашатая», который всегда хранит самую свежую информацию о вашем домене. Например, DNS-серверы хостинга ns1.hosting.сайт и ns2.hosting.сайт хранят информацию о доменах, которые подключены к хостингу сайт.

О различиях между DNS-серверами ns1.hosting..hosting.сайт и ns1..сайт и о том, какая из этих пар подойдёт вам, читайте в .

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

Схема определения IP-адреса по имени домена

На данной схеме коротко объясняется, что происходит, когда вы хотите зайти на тот или иной сайт.

  1. 1 Ваш компьютер связывается с DNS-серверами вашего Интернет-провайдера (стрелка 1 ). DNS-серверы провайдера ищут IP адрес в своем кэше (промежуточный буфер с быстрым доступом) и, если находят, то выдают вам этот IP и по IP ваш компьютер обращается к серверу, на котором размещен сайт (стрелка 7 ).
  2. 2 Если пара «домен — IP-адрес» отсутствует в кэше, то DNS-сервер провайдера делает рекурсивные запросы к корневым DNS-серверам (стрелка 2 ), которых всего несколько по всему миру. Изменения настроек домена на корневых серверах обновляется не моментально, а раз в несколько часов. Так, например, изменения в корневых DNS серверах зоны RU обновляются всего 4 раза в сутки. Корневые сервера возвращают адреса DNS-серверов домена (стрелка 3 ), на которых хранится DNS зона домена.
  3. 3 Получив адреса DNS-серверов, провайдер делает запрос к одному из них (стрелка 4 ), получает в ответ искомый IP-адрес (стрелка 5 ), запоминает его в кэше (чтобы впоследствии не обращаться каждый раз к корневому DNS-серверу) и передает вашему браузеру (стрелка 6 ).
  4. 4 И только теперь, когда у браузера есть IP-адрес сайта, он может обратиться к хостинг-серверу, на котором расположен сайт (стрелка 7 ), и может отобразить его на экране вашего компьютера (стрелка 8 ).

Итак:

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

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

Лучшие статьи по теме