Ваш собственный DNS-сервер с Raspberry Pi: Как

Для того чтобы компьютеры могли общаться друг с другом через Интернет, все участники сети имеют уникальный адрес: Благодаря IP-адресам клиенты точно знают, к каким серверам им следует обращаться. Но ни от одного пользователя нельзя ожидать запоминания числовой последовательности адреса, поэтому вместо этого используются доменные имена. Для этого существует система доменных имен (DNS): Она преобразует числа в домены и наоборот. Для этого клиентам сначала приходится запрашивать один или несколько DNS-серверов, прежде чем они получат правильный адрес. Это может стоить драгоценного времени. Поэтому может быть полезно ускорить интернет-соединение, установив выделенный DNS-сервер. Raspberry Pi, маленький, но многогранный компьютер, является хорошей основой для этого. Здесь мы объясним вам, как работает DNS и как вы можете настроить свой собственный домашний DNS-сервер.

Что такое DNS?

Система доменных имен помогает вам ориентироваться в сетях, основанных на IP-адресах. В адресной строке браузера вы обычно вводите домен, например www.example.org. Для связи через Интернет компьютеры используют адреса IPv4 или IPv6. Однако, чтобы связь функционировала, запоминающийся домен необходимо преобразовать. Для преобразования имен используются серверы DNS. Для этого браузер сначала должен обратиться к кэшу. Возможно, адрес отдельной системы уже известен, и поэтому его не нужно запрашивать.

Если это не так, то запрос направляется на один или несколько DNS-серверов. Первым обычно запрашивается DNS-сервер интернет-провайдера. Он сравнивает запрос со своей базой данных и выдает идеальный результат. Если в ней нет записи для домена, то запрашивается непосредственно один из 13 корневых серверов имен Интернета. Здесь хранятся все адреса Всемирной паутины.

Наряду с DNS важно также отметить, что большинство пользователей Интернета, особенно клиенты обычных интернет-пользователей, не имеют статического IP-адреса. Интернет-провайдеры назначают IP-адреса в своей сети, как правило, не более чем на 24 часа. После этого происходит очень короткое принудительное разделение, сетевое соединение разрывается, и пользователю присваивается новый IP-адрес. Обычно это не является проблемой, так как клиенты редко обращаются за пределами локальной сети и посылают запросы только на сервер, а не наоборот.

Однако в некоторых случаях необходимо установить выделенный сервер: Удаленные рабочие столы или отдельные, небольшие игровые серверы — хорошие примеры. В таких случаях используется динамический DNS. С помощью сервера DDNS домашнему серверу присваивается домен, через который он доступен. Если вы также хотите установить размещенный DNS-сервер, к которому в любой момент можно обратиться из-за пределов локальной сети, вам стоит подумать о DynDNS.

Что обеспечивает DNS-сервер?

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

  • Скорость: Если нет записи в кэше, веб-запрос иногда проходит через несколько маршрутизаторов и серверов, прежде чем веб-контент будет доставлен пользователю. Время ожидания обычно исчисляется миллисекундами, но если нет необходимости устанавливать соединение с DNS-сервером интернет-провайдера, то процесс можно ускорить.
  • Конфиденциальность: Чтобы система доменных имен работала, запросы должны перенаправляться на внешние серверы. Это создает следы в Интернете, которых некоторые пользователи хотели бы избежать. При использовании выделенного DNS-сервера большая часть данных остается у вас.
  • Безопасность: Те, кто хочет разместить свой собственный DNS-сервер, также имеют контроль над записями. Киберпреступники любят пытаться вмешиваться в запросы к DNS-серверам провайдеров и выдавать неверные IP-адреса. Вместо предназначенного для посещения сайта выдается другой. Это чрезвычайно рискованно при использовании онлайн-банкинга: Если ввести конфиденциальные данные счета в точную копию сайта банка, преступники могут быстро получить доступ к вашим счетам и вашим деньгам.
  • Блокировка рекламы: Блокировщики рекламы получают доступ к списку коммерческих серверов, которые необходимо заблокировать. Это также может быть сделано отдельным DNS-сервером. Вы даже можете одновременно освободить все устройства в вашей домашней сети от встроенной рекламы, не устанавливая дополнительное программное обеспечение на каждое устройство.
  • Детские фильтры: Как и в случае с рекламой, имеет смысл установить детские фильтры. Серверы, предоставляющие контент, небезопасный для детей, могут быть просто заблокированы с помощью отдельного DNS-сервера.
  • Кривая обучения: Многие пользователи просто устанавливают свой собственный DNS-сервер, чтобы лучше понять, как функционирует Интернет. Энергия поступает из розеток, а веб-сайты — из браузера: Но если вы хотите понять, что стоит за технологией, такой DIY-проект, как этот, будет иметь крутую кривую обучения — как и многие другие идеи для Raspberry Pi.

Установка DNS-сервера на Raspberry Pi

Если вы хотите установить DNS-сервер на Raspberry Pi, вам понадобится несколько вещей в дополнение к мини-компьютеру:

  • SD-карта с установленным Rasbian
  • Ethernet-подключение к интернет-маршрутизатору
  • Питание через кабель micro-USB
  • SSH-клиент (например, PuTTY).

В качестве основы для настройки DNS на Raspberry Pi в этом примере мы будем использовать BIND. BIND — это программа с открытым исходным кодом, которая обращается к серверу Berkeley Internet Name Domain. В настоящее время программа находится в девятой версии, и ее дальнейшее развитие осуществляется Консорциумом программного обеспечения Интернета (ISC).

Сначала необходимо убедиться, что Raspberry Pi присвоен статический IP-адрес в локальной сети. Для этого откройте конфигурацию сети:

sudo nano /etc/network/interfaces

Там назначьте Raspberry Pi уникальный IP-адрес.

Совет

Nano — это простой редактор Linux, который всегда должен быть установлен на Raspberry Pi.

Теперь вы можете установить BIND. Помимо собственно программы bind9, полезно установить два пакета bind9utils и dnsutils. Они ни в коем случае не являются обязательными, но содержат некоторые полезные инструменты для обслуживания вашего нового DNS-сервера. Используйте следующую команду:

sudo apt-get install bind9 bind9utils dnsutils

bind9 теперь установлен в вашей системе. Но прежде чем вы сможете использовать ваш Raspberry Pi в качестве DNS-сервера, необходимо задать несколько настроек. Откройте конфигурационный файл bind9:

sudo nano /etc/bind/named.conf.local

Теперь настройте там две зоны: Одну для прямого поиска, где ищется IP-адрес домена, и обратный поиск для обратного запроса.

sudo nano /etc/bind/named.conf.local 

    zone "home.lan" IN {
            type master;
            file "/etc/bind/db.home.lan";
      };
    zone "1.168.192.in-addr.arpa" {
            type master;
            file "/etc/bind/db.rev.1.168.192.in-addr.arpa";
      };

Код показывает, что вы используете два файла (db.home.lan и db.rev.1.168.192.in-addr.arpa) для определения зон. Но сначала их нужно создать. Поскольку вы сами создаете эти файлы, вы можете назвать их как угодно, при условии, что в соответствующих местах они будут указаны одинаково. Сначала создайте файл для прямого поиска:

sudo nano /etc/bind/db.home.lan
  
    home.lan. IN SOA raspberry.home.lan. hostmaster.home.lan. (
       2017081401 ; serial
        8H ; refresh
        4H ; retry
        4W ; expire
        1D ; minimum
    )
    home.lan. IN NS raspberry.home.lan.
    home.lan. IN MX 10 raspberry.home.lan.
    localhost    IN A 127.0.0.1
    raspberry    IN A 192.168.1.31
    router       IN A 192.168.1.1

Последние две записи в файле должны быть настроены. Введите IP-адрес вашего Raspberry Pi (статический IP-адрес, который вы назначили в начале) и вашего маршрутизатора. Убедитесь, что имена доменов всегда заканчиваются точкой. В начале файла, после серийного номера, задайте, сколько времени должно пройти между регулярными действиями. Два объявления NS и MX указывают, что и сервер имен, и почтовый сервер предоставляются Raspberry Pi.

Совет

В начале файла всегда указывайте серийный номер: он использует формат YYYYMMDDXX, дата (в порядке год, месяц, день) плюс порядковый номер по возрастанию — на случай, если вы создадите несколько версий в один день.

Теперь создайте файл обратной зоны:

sudo nano /etc/bind/db.rev.1.168.192.in-addr.arpa

    @ IN SOA raspberry.home.lan. hostmaster.home.lan. (
        2017081401 ; serial
        8H ; refresh
        4H ; retry
        4W ; expire
        1D ; minimum
    )
               IN NS raspberry.home.lan.
    1         IN PTR router.home.lan.
    31        IN PTR raspberry.home.lan.

В этом примере предполагается, что адрес вашей локальной сети начинается с 192.168.1. Если это не так, то вам нужно ввести правильный адрес в файл и определить имя файла. Помните, что имя другого файла также должно быть введено в соответствующую позицию в файле /etc/bind/named.conf.local.

Если вы установили на Raspberry Pi DNS-сервер, то он функционирует как кэш DNS-запросов. Это означает, что как только вы сделали запрос на разрешение имени, запись сохраняется на вашем DNS-сервере. На данный момент DNS-запросы по-прежнему перенаправляются на другой сервер. Расположение которого можно задать в файле /etc/bind/named.conf.options. Откройте этот файл и измените IP-адрес в записи «Forwarders»:

sudo nano /etc/bind/named.conf.options 

    forwarders {
      1.2.3.4;
      5.6.7.8;
    };

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

Теперь вы настроили DNS-сервер с BIND на вашем Raspberry Pi. Чтобы изменения вступили в силу, вам следует перезапустить программу с этого момента:

sudo service bind9 restart

Или:

sudo service bind9 stop
sudo service bind9 start

Если при запуске DNS-сервера вы столкнулись с ошибкой, возможно, стоит заглянуть в файл журнала в каталоге /var/log/syslog. Чтобы вам не пришлось перезапускать DNS-сервер вручную после перезагрузки Raspberry Pi, вы можете ввести его в автозапуск системы:

sudo update-rc.d bind9 defaults

Теперь вам осталось ввести новый DNS-сервер в настройки маршрутизатора, чтобы запросы на разрешение имен проходили через ваш Raspberry Pi. В настройках устройства (обычно доступ к ним осуществляется через веб-интерфейс) введите IP-адрес Raspberry Pi. Теперь вы имеете контроль над записями DNS и можете блокировать определенные серверы, например, чтобы защитить себя от страниц, которые хотят навредить вам или получить доступ к вашей информации. Для этого необходимо настроить блоки DNS. Это делается в файле, который вы сначала вносите в конфигурационный файл bind9:

sudo nano /etc/bind/named.conf

Файл добавляется как новая запись под ранее существующим файлом и закрывается точкой с запятой:

include „/etc/bin/named.conf.blocked“;

В этом файле введите только те домены, которые вы хотите заблокировать. Чтобы узнать, какие домены должны быть заблокированы, вы можете обратиться к нескольким различным спискам. В данном примере мы используем список из проекта DNS-BH, который содержит готовый файл зоны для BIND. Его можно скачать и открыть с помощью текстового редактора. Записи уже имеют правильный формат, поэтому их можно просто скопировать в свой собственный список блоков. Записи должны иметь такой формат — даже если вы используете разные источники:

zone "malware-example.ga"  {type master; file "/etc/namedb/blockeddomain.hosts";};

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

sudo nano /etc/namedb/blockeddomain.hosts

Там введите следующий код:

$TTL    86400
@       IN      SOA     raspberry.home.lan. hostmaster.home.lan. (
                            2017081401 ; serial
                            8H ; refresh
                            2H ; retry
                            10D ; expire
                            1D ; minimum
)
  NS raspberry.home.lan.
  A 127.0.0.1
* IN      A       127.0.0.1

Еще раз убедитесь, что вы ввели здесь правильные значения для вашего домена (в данном случае raspberry.home.lan). Снова перезапустите bind9. Теперь ваш DNS-сервер должен быть правильно настроен и готов к работе.

Совет

На Raspberry Pi можно настроить и другие серверы: Узнайте, как создать веб-сервер или почтовый сервер с помощью этого мини-компьютера!

Оцените статью
cdelat.ru
Добавить комментарий