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

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

При том, что средняя скорость была неплохая, пики торможения доходили почти до секунды, что, несомненно, безобразие. Конечно, дешево и сердито просто поменять DNS на более другой, например гугловый 8.8.8.8 / 8.8.4.4 или opendns или какой другой по вкусу (namebench предлагает список альтернатив), но раз уж я за это дело взялся, то решил довести до логического конца - завести свой собственный кэширующий DNS.

Ставить руками bind или его альтернативы - это конечно не наш путь. Проще всего поискать подходящий docker image и, если не найден, сделать его самому.

К счастью, такой уже есть и он даже работает. Там внутри bind и webmin для GUI управления. Я немного добавил в его docker-compose.yml , чтоб передать пароль для webmin и запретил IPv6, который приводил к ошибкам резолвинга. Вот такой compose получился в результате:

Bind: image: sameersbn/bind:latest container_name: bind log_driver: "json-file" log_opt: max-size: "10m" max-file: "5" environment: - ROOT_PASSWORD=something-very-secure ports: - "53:53/udp" - "10000:10000" volumes: - ./data:/data restart: always command: /usr/sbin/named -4

Если вам не мешает IPv6, просто удалите строку command .

Чтоб это дело поднять у себя, надо просто сохранить это в подходящем месте (у меня /srv/bind) как docker-compose.yml и запустить примерно так:

Cd /srv/bind docker-compose up -d

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

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

P.S. Я, конечно, пробовал воспользоваться DNS поддержкой которую обеспечивает мой ZyWall USG20 , но оно работало медленно и как-то странно.

Приветствую, мозгоинженеры ! А не объединить ли нам наши интернет-устройства в доме с помощью DNS-сервера, сделанного своими руками из WiFi-модуля и интерфейса веб-камеры Foscam? Думаю будет интересно, поэтому поехали!

Выбранная для этой самоделки веб-камера Foscam управляется прямо со смартфона, имеет собственный веб-интерфейс, работает в любом браузере и на любом девайсе, даже с 3G-соединением вашего телефона, сторонних приложений не требует и защищается паролем.

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

Хочу предупредить сразу - Я НЕ НЕСУ ОТВЕТСТВЕННОСТИ за неправильное использование или ущерб, причиненный этим проектом, любым способом! Вы действуете на свой страх и риск!

Что для этого мозгопроекта необходимо:

  • веб-сервер с поддержкой PHP c доменным именем,
  • wi-fi модуль Esp8266 ESP-01,
  • нажимная кнопка - 2шт.,
  • подтягивающий резистор 2к2 или аналогичный - 2шт.,
  • адаптер USB-TTL (для программирования wi-fi модуля) и несколько пин-разъемов («мама»),
  • регулятор напряжения Ams1117 3.3В (для снижения напряжения 5В до 3.3В, чтобы запитать wi-fi модуль),
  • блок питания 5В 1-2А (желательно 2А),
  • в первом варианте компоновки: если внутри корпуса блока питания есть достаточно места, то wi-fi модуль помещается внутрь этого корпуса,
  • во втором варианте компоновки: блок питания имеет USB-разъем «мама», тогда придется к плате модуля добавить USB-разъем «папа» и с помощью него подавать питание,
  • сломанная USB-флешка,
  • обновленная программа Arduino IDE
  • дополнительно: веб-камеры Foscam для работы с веб-интерфейсом
  • для обеспечения: мерцающий светодиод, для индикации успешной загрузки и ожидания загрузки
  • внутренний сервер разрешающий WAN IP (данная версия соединяется с внешним сайтом для получения IP: checkip.dyndns.org).

Шаг 1: Подготовка Wi-Fi модуля для программирования

Для того, чтобы модуль можно было программировать его нужно слегка доработать:

  • припаять два резистора — один к контакту CH-PD, второй к RST, оба свободных вывода резисторов припаять к контакту 3.3V,
  • припаять две нажимные кнопки - одну между контактами GPIO0 и Ground, а другую между RST и Ground.

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

В следующем шаге будет дорабатываться блок питания, но сразу предупреждаю: USB-выход вашего компьютера не подходит для запитывания модуля ESP!!!

Шаг 2: Доработка блока питания - понижение напряжения с 5 до 3.3В

5В-й блок питания должен выдавать «надежный» 1А, а лучше 2А, так как во время передачи Wi-Fi-сигнала модуль довольно «прожорлив».

В самоделке используем регулятор напряжения Ams1117 3.3В, потому что делитель напряжения, собранный из посредством резисторов, вероятней всего, «выдаст» слишком малый ток, и даже если для питания модуля мы получим 3.3В, то все равно будем разочарованы. А этот регулятор является недорогим и лучшим решением.

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

контакт 3 — 5В (оранжевый провод)
контакт 2 - 3.3В (желтый провод)
контакт 1 — GND (два синих провода)

К контактам можно припаять несколько проводов со штырьковыми разъемами, тем самым получить одновременно два источника напряжения на 5В и 3.3В, что весьма полезно при сборке на макетной плате. В таком случае не забываем добавить и два заземляющих провода, для +3 и +5В, а для надежности все проводки скрепить пластиковым хомутом-стяжкой.

Для подключения этих проводов к модулю ESP (имеющего «папа»-разъемы) понадобятся промежуточные провода со штырьковыми «мама»-разъемами на концах.

Шаг 3: Подключение Wi-Fi модуля к USB-TTL-адаптеру и регулятору напряжения 3.3В

Соединения (модуль - адаптер — регулятор)

GND — — — — GND- — — — GND
ТХ — — — — — RX
RX — — — — — ТХ
3,3 — — — — — — — — — — — — — 3,3

Контакты заземления (Ground) регулятона напряжения, модуля и адаптера соединяем вместе, 3.3В идущие от регулятора соединяем ко входу ESP-модуля.

Ни в коем случае не соединяем модуль ESP c контактом 3.3В адаптера, даже если они на нем имеются, так как тем самым можно испортить USB-порт компьютера, ведь он не имеет защиты от тока такого номинала, которые используется в этой мозгоподелке ! А для запитывания ESP-модуля всегда используйте источник питания с требуемыми параметрами.

Следует знать, что некоторые TTL-USB адаптеры имеют 5В-ю логическую схему, которая для нашей поделки не подходит, нужна только 3.3В-я логика, иначе повредится ESP-модуль. Тип логики можно определить с помощью вольтметра, подсоединив его щупы к контактам ТХ и Ground, и при необходимости понизить напряжение можно добавлением сдвига уровня или делителя напряжения.

Шаг 4: Настройка файлов на веб-хостинге

Создаем папку «/ip» (имя чувствительно к регистру) в корневом каталоге вашей папки public_html, и распаковываем в нее /ip файлы с разрешением 644.

Ограничение.htaccess не позволяет пользователям составлять список файлов этой папки, потому что она не может быть запаролена, в противном случае модуль ESP8266 не мог бы получить к ней доступ и исполнять файлы внутри нее.

input.php и input2.php генерируют согласно URL-адреса браузера ip.txt и ip2.txt с обновленным IP модуля ESP8266, текущий код поддерживает 2-е разных локации, и чтобы добавить что-то еще вам нужно лишь отредактировать эти файлы.

Для управления FOSCAM-камеры необходимо создать папку «/cam» (опять же, регистр чувствителен) в корневом каталоге папки public_html, и распаковать в нее /cam-файлы с разрешением 644. Эту папку защитить мозгопаролем , если на вашем сервере доступна cpanel, то можете найти иконку «защита паролем» и задать пароль, который будет запрашиваться при указании браузеру перейти на www.yourhost/cam, тогда в любой браузере будет всплывать диалоговое окно с запросом этого пароля, все это защитит доступ к камерам.

foscam.php содержит интерфейс камерр, а еще метку дата/время ip-файлов и текущий ip локации. По метке дата/время можно видеть работает ли модуль. При этом часовой пояс может отображаться не верно, так как он показываетт время на сервере.

IP можно изменить вручную, он будет записан в ip.txt и ip2.txt, и для этого нужно ввести ip в поле и нажать обновление ip.

interface.png и interface2.png это прозрачные изображения задающие интерфейсу как будет отображаться экран. Необходимо подредактировать foscam.php и задать значение, static или ptz, соответствующее вашей FOSCAM-камере. По умолчанию разрешение 320х240, но кликнув на центр управления, открывается только эта камера с лучшей частотой обновления при разрешении 640х480.

Для редактирования foscam.php можно воспользоваться редактором кода или HTML-редактором, который может работать в режиме WYSWYG.

Во время работы мозгоплаты будут автоматически записываться файлы ip.txt и ip2.txt, содержащие обновленные ip двух локаций, где могут работать две разные платы. Каждый час (или когда вы зададите) плата будет подключаться к роутеру по wi-fi, получать ip-адрес и прописывать его в txt-файле на сервере. И даже в случае потери соединения с интернетом или отключения питание, то после устранения этих неполадок, ip будет периодически обновляться.

Шаг 5: Настройка FOSCAM-камер и роутера

На странице конфигурации TP-LINK-роутера:

Смотрим настройки на фото, они помогут избежать конфликта при связывании МАС-адреса и LAN-ip, роутер будет предоставлять для этого МАС-адреса только закрепленные LAN-ip.

Virtual servers (виртуальные серверы) - необходимо добавить локальные ip вашей камеры и соответствующие порты.

DHCP сервер выставляем включенным, а также проверяем включен ли UpnP.

Можно также настроить удаленное управление вашим роутером, для TP-Link-роутера есть соответствующий подпункт брандмауэра.

Не изменяйте логин по умолчанию, так как роутер должен быть публичен. Далее в соответствующих мозгополях следует выставить 255.255.255.255 и порт, как правило, 8080.
На странице настроек FOSCAM камер:

Имя и пароль - следует задать новое имя и пароль, и не забыть «найти и заменить» их в foscam.php вместо admin и password.

Для «Основных параметров сети (Basic Network settings)» задать: «Obtain IP from DHCP Server» (Получать IP от DHCP-сервера).
В пункте Http Port задать: 8081, 8082 8083 последовательно на ваши камеры.
В UPnP Settings выставить: Using UPnP to Map Port. Это поможет восстановить соединение после отключения питания.

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

Если камеры и роутер настроены верно, то к ним можно удаленно получить доступ с вашего Wan IP-адреса, например такого: http://187.34.157.22:8081 . Свой Wan IP можно проверить на https://www.whatismyip.com/

Шаг 6: Кодирование и программирование модуля ESP8266 с помощью Arduino IDE

Для программинга самоделки необходимо в Arduino IDE открыть прилагаемый скетч, и в соответствующих строках задать ssid «//your wifi ssid» и пароль «//your wifi pwd» вашего WiFi-роутера, а также имя вашего хоста «//your host without /IP» и путь к папке «/ip», содержащей файлы сервера, ее менять не нужно.

Возможно понадобится изменить строку

url += «input.php?ip=»;

которая дважды встречается в скетче, и если у вас есть второй модуль, то просто измените на input2.php.

Перед началом загрузки кода необходимо правильно выставить тип платы, для этого подменю инструментов следует выбрать «Generic ESP8266», а если такого нет, то в предпочтениях добавить дополнительные платы.

Для загрузки нужно, удерживая нажатой кнопку GPIO0, быстро нажать кнопку RST, а потом отпустить и предыдущую (кнопку GPIO0). Далее в IDE запустить компиляцию и мозгозагрузку .

Если все идет правильно, то открыв монитор последовательного порта со скоростью 9600 бод (бит/с), вы увидите следующее:

Connected To:
IP address: 192.168.0.103 (LAN IP)
Connected — Acquiring WAN IP:

connecting to
Requesting IP Update: /ip/input.php?ip=xxx.xxx.xxx.xxx
Ok

Шаг 7: Монтаж плат в корпус

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

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

Первый вариант: Размещение внутри корпуса
Для этого нужно вскрыть корпус старого блока питания, выпаять черный (выходящий) провод с разъемом, а затем поместить в корпус плату модуля и регулятор напряжения, предварительно заизолировав их, и «запитать» от тех контактов, к которым был припаян выходящий провод. Заизолировать компоненты можно с помощью подходящей пористой ленты или горячего клея.
В итоге должен получиться блок питания, без каких-либо проводов, и в данном варианте блок питания может быть 5В 1А.

Вариацией данного способа компоновки может быть размещение плат внутри блока питания, имеющего на выходе USB-разъем «мама». Тогда платы также следует закрепить внутри корпуса, заизолировать, и запитать их от контактов USB-разъема. Тем самым посредством этого доработанного блока питания вы все еще сможете заряжать свой телефон, но правда блок питания должен выдавать 5В 2А.

Вариант 2: Размещение снаружи
Если у вас есть нерабочая флешка, в корпус которой могут поместиться платы самоделки , то можно использовать ее.

Нужно разобрать флешку, вынуть плату памяти, а на ее место поместить WiFi-модуль и регулятор напряжения, и запитать их через USB-разъем этой флешки. При этом понадобится еще подрезать штырьковые контакты модуля, чтобы он поместился в корпус флешки. И НИКОГДА НЕ ПОДКЛЮЧАЙТЕ эту доработанную флешку к USB-порту компьютера!

Затем флешку с модулем внутри нужно подключить к блоку питания и проверить наличие WiFi сигнала с помощью вашего смартфона. А в целом проверить работоспособность готовой мозгоподелки можно посредством вашего брузера зайдя на /cam/foscam.php вашего сервера. И еще, следует обновится с текущим ip и меткой дата/времени.
На этом все, надеюсь информация этой мозгостатьи будет вам полезна!

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

Встроенный DNS-сервер существует в серверной версии Windows, но благодаря стараниям маркетологов Microsoft его нет в десктоп-редакции (Windows 2000/XP/Vista), поэтому, как это часто бывает, обратимся к щедрому миру Unix. Самые известные DNS-сервера - это BIND , djbdns , PowerDNS , MaraDNS и Unbound . BIND рассматривать нет желания, djbdns в силу своих особенностей жестко привязан к Unix, у PowerDNS Windows-версия не обновляется, поэтому остаются MaraDNS и Unbound. Вы можете попробовать или один или другой, однако, следует помнить, что одновременно они работать не будут.

Руководство будет в стиле краткого HowTo для подготовленного пользователя (скорее, системного администратора), поэтому, если ничего не понятно - позовите знакомого «компутерщика».

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

Unbound

Заходим на сайт http://unbound.net/ в раздел Downloads , находим строки:

Windows 32-bit version compiled from the source.
Installer:

По ссылке (на момент написания статьи - unbound_setup_1.3.0) скачиваем дистрибутив. Запускаем файл, нажимаем «Next», читаем лицензионное соглашение, если согласны нажимаем «I Agree», убираем галочку с «DLV - dlv.isc.org» (проверять DNSSEC-сигнатуры нам не нужно), нажимаем «Next», «Next», «Install», «Finish». Сервис автоматически устанавливается и стартует. Все что нужно для работы (включая README.txt) находится в C:\Program Files\Unbound.

MaraDNS

Запуск MaraDNS под Windows, как оказалось, довольно нетрививальное занятие, поэтому, если очень хочется - можете попробовать сами.

Настройка Windows

Итак, DNS-сервер мы установили и запустили, необходимо теперь настроить Windows.

В свойствах соединения с интернетом («Пуск», «Настройка», «Сетевые подключения», нужное соединение, контекстное меню, «Свойства») на вкладке «Общие» открываем «Протокол интернета TCP/IP», если стоит настройка «Получить адрес DNS-сервера автоматически» необходимо сменить её на «Использовать следующие адреса DNS-серверов» и прописать адрес 127.0.0.1. В случае если у вас активирован параметр «Использовать следующие адреса DNS-серверов» и указаны адреса DNS-серверов провайдера, удалить или оба или один из них (предварительно записав на бумажку) и прописать тот же 127.0.0.1. Указывать один и тот же адрес (127.0.0.1) два раза нет необходимости. Нажимаем «OK», «OK», ждем пока все сохранится и пробуем открыть какой-нибудь сайт. Другой метод проверки - для настоящих админов. Заходим в консоль, запускаем nslookup, далее выполняем:

> server 127.0.0.1 Default Server: localhost Address: 127.0.0.1 > www.mail.ru Server: localhost Address: 127.0.0.1 Non-authoritative answer: Name: www.mail.ru Addresses: 194.67.57.26, 194.67.57.126, 194.67.57.226, 194.67.57.20 > exit

В данном случае у нас успешно разрешилась запись (A-типа) для www.mail.ru.

Если не получается, проверяем что у вас подключен интернет, сделав ping на шлюз провайдера (узнать можно через ipconfig /all). Если подключен, смотрим в Диспетчере задач, чтобы был запущен процесс DNS-сервера. Если не запущен, смотрим оснастку «Службы» (в консоли запустить services.msc): пробуем запустить сервис и проверяем, чтобы стоял автоматический запуск. Если не помогает - либо читаем документацию (DNS-сервера), включаем лог и проверяем свой firewall и конфигурационный файл DNS-сервера (хотя, он должен быть по умолчанию уже настроен), либо зовем кого-то более квалифицированного, либо удаляем программу, возвращаем настройки назад, и [грустим | идем гулять | пить пиво | ...].

Однако, теоретически ничего сложного в описанном процессе нет, поэтому должно заработать (как у автора).

Примечания:

  • Обычно все сервера идут со сравнительно безопасными настройками по-умолчанию, но нелишним будет проверить, что ваш DNS-сервер слушает 53 порты TCP и UDP на 127.0.0.1, а не на 0.0.0.0 (все локальные адреса). Сделать это можно с помощью TCPView . В «Options» активируйте параметр «Show Unconnected Endpoints» и деактивируйте «Resolve Adresses». Найдите процесс DNS-сервера, для него должно быть две записи: TCP с Local Adress 127.0.0.1:53 и State LISTENING и UDP с тем же адресом и пустым полем State.
  • Автор не пользуется DNS-серверами под Windows, и соответственно материалом этой статьи на практике, поэтому просьба не писать писем в стиле «у меня не работает, что делать?».
  • Для написания статьи автор использовал Windows XP, если у вас другая версия Windows - адаптируйте пути и команды под свою версию ОС.
  • Если вы пытаетесь сделать это на компьютере в организации, то лучшим решением будет попросить вашего сисадмина настроить офисный шлюз в Интернет под GNU Linux/*BSD с настоящим (под Unix) DNS-сервером, а если он этого не может - найти такого человека.
  • Статья предельно упрощена, поэтому если вы нашли ошибку, неточность или неясный момент - пишите, если вам кажется, что материал раскрыт недостаточно широко (например, не описано в чем разница между рекурсивными и авторитетным/полномочным/authoritative DNS-сервером) - писать не стоит, в Интернете достаточно руководств по устройству DNS (включая документацию на сайтах программ).
  • Windows - не лучшая платформа для работы DNS-сервера (как минимум - портированного из Unix) поэтому все это может работать не идеально (в первую очередь, в плане скорости).
  • В обычном случае общения «десктоп - DNS-сервер провайдера» для разрешения имени в подавляющем большинстве случаев отсылается один запрос и получается один ответ. В нашем случае запросов и ответов будет в несколько раз больше, т. к. мы берем функции провайдерского DNS-сервера на себя. На общем трафике это скажется незначительно, поскольку DNS-запросы и ответы очень маленькие, но может сказаться на скорости начала открытия сайтов. Но, поскольку запросы кэшируются, заметно это будет, скорее всего, только в первые минуты работе в Интернете.

Вот и все, спасибо за внимание.

Наличие DNS сервера в сети значительно облегчает жизнь системным администраторам и пользователям. DNS преобразует полные имена узлов (FQDN) в IP-адреса. Благодаря этому пользователям для доступа к ресурсам сервера не нужно вводить его числовой адрес (например, 192.168.15.250). Достаточно написать что-то вроде "server1" или любое другое имя, которое задал администратор. Запомнить его гораздо проще, чем набор чисел.

DNS и Active Directory, доменные зоны

Служба DNS входит в базовый комплект компонентов серверных операционных систем от компании Microsoft, начиная с самых первых версий. Ее инсталляция, как и установка DHCP, не занимает много времени. Предварительная установка DNS сервера является базовым условием для развертывания мощнейшего комплекса инструментов администрирования сетевых пользователей и компьютеров – домена Active Directory.

Предварительная подготовка

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

Нами должна быть выполнена активация роли DNS-сервера на активной в данный момент станции, чтобы получить доступ к соответствующей оснастке и управляющим командам. Искомое находится в оснастке "Управление сервером" (Панель управления>>Администрирование>>УС). Раскрываем вкладку и щелкаем мышью по надписи "Роли". Жмем "Добавить" и в появившемся списке указываем нужный нам пункт. Мы активировали установку DNS в Windows Server.

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

Всего существует 3 типа зон:

  • основная (для записи и чтения);
  • дополнительная (только для чтения; нужна, чтобы обеспечить отказоустойчивость и распределить нагрузку);
  • зона-заглушка (хранит минимальный объем записей).

Кроме того, зоны могут быть:


Сегодня поговорим о создании локальной доменной зоны внутри локальной сети. Для чего нужна локальная доменная зона и DNS-сервер? Чтобы расшарить (сделать доступными) свои локальные сайты для всех пользователей сети.

Я создам сеть, где все устройства моей локальной сети смогут пользоваться ресурсами формата site.lan. В моем случае устройства локальной сети подключаются к интернету через роутер. Серверная машина - на Linux Mint (desktop), клиенты: ПК под управлением Windows, Linux, телевизор со Smart TV, а также смартфоны и планшет. Для начала убедитесь, что в роутере для сервера (машины, на которой будет установлен DNS сервер) зарезервирован статический внутренний IP адрес. Это очень важно, чтобы потом указать всем сетевым устройствам, где именно находится наш DNS сервер.

Установка DNS неймсервера:

Для начала необходимо установить пакет Bind:

Sudo apt-get install bind

Кроме того, для нормальной работы веб-сайтов нам потребуется LAMP (Linux Apache MySQL PHP). О том как установить LAMP в Ubuntu читайте в моей статье . А также по ссылке внизу статьи можете настроить локальный сайт. Единственное, что не прописывайте в /etc/hosts адрес сайта, т.к. этими вопросами будет заниматься неймсервер. На этом этап подготовки окончен.

Настройка Bind

Входим в директорию Bind и делаем резервные копии конфигурируемых файлов:

Cd /etc/bind/ cp named.conf.local named.conf.local.back cp named.conf.options named.conf.options.back

Создаём локальную доменную зону.lan:

Nano named.conf.local

И дописываем в конец файла следующие строки:

Zone "lan" { type master; file "/etc/bind/db.lan"; };

Теперь создаем соответствующий файл для доменной зоны.lan и открываем его на редактирование:

Touch db.lan nano db.lan

Наполняем его содержимым:

@ IN SOA lan. root.lan. (201605019 ;Serial 4h 1h 1w 1d @ IN NS ns1.lan. @ IN A 192.168.0.100 ns1 IN A 192.168.0.100 slicks IN A 192.168.0.100 site IN A 192.168.0.100 * IN CNAME @

Обратите внимание на Serial 201605019. Это значение нужно увеличивать каждый раз при редактировании файла доменной зоны. Я пишу YY-MM-DD + наращиваю порядковый номер на 1. 192.168.0.100 - IP адрес сервера. Запись формата "slicks IN A" означает, что в зоне.lan существует доменное имя slicks и что этот сайт расположен по IP адресу 192.168.0.100. В apache2 создан, соответственно веб-сайт с ServerName slicks.lan . Если бы сайт располагался на ином IP, чем DNS сервер, то запись бы имела вид slicks IN A _IP-ПК-с-сайтом_ Редактируем named.conf.options :

Nano named.conf.options

В него нужно дописать выделенные строки:

Acl "home" {192.168.0.0/24; 127.0.0.1;}; options { directory "/var/cache/bind"; dnssec-validation auto; allow-recursion {127.0.0.1/32; 192.168.0.0/24; 192.168.1.0/24; }; allow-transfer { none; }; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { none; }; allow-query {"home";}; };

Первая строка создаёт локальную DNS группу home, с диапазоном IP адресов от 192.168.0.0 до 192.168.0.255, а также 127.0.0.1. Вторая добавляемая строка содержит параметр allow-query (разрешить запросы) и мы указываем, что нужно разрешить запросы от группы home. С конфигурацией закончили, можем перезапустить сервер

Sudo /etc/init.d/bind9 restart

Указываем локальный DNS в роутере

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

  • Модель роутера: Dir-615;
  • Internet Connection Type: Dynamic IP (DHCP);

Для указания локального DNS сервера в моем случае я вхожу в Setup -> Network Settings -> Manual Internet Connection Setup и в поле Primary DNS Address прописываю IP адрес сервера локальной доменной зоны 192.168.0.100, он же будет теперь выступать основным DNS сервером в локальной сети. А в качестве Secondary DNS адреса пишем 8.8.8.8. Это адреса DNS Google. На скрине у меня Primary и Secondary DNS адреса ведут на мой сервер. Почему-то вначале казалось, что роутер не перенаправлял запросы на мой DNS и прописал так. Вторым DNS лучше указать гугловский сервер, чтобы в случае если локальный сервер 192.168.0.100 будет выключен - не пропадал интернет у всех остальных устройств!

Проверка работоспособности

Запускаю клиентский ПК под управлением Windows Xp и тестирую подключение. Первым делом нужно очистить DNS кеш. Заходим в командндую строку виндовс и пишем:

Ipconfig /flushdns

1. Теперь уже проверяю видимость в сети сервера DNS, ping 192.168.0.100 :

C:\\Documents and Settings\\www>ping 192.168.0.100 Обмен пакетами с 192.168.0.100 по 32 байт: Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64 Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64 Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64 Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64 Статистика Ping для 192.168.0.100: Пакетов: отправлено = 4, получено = 4, потеряно = 0 (0% потерь), Приблизительное время приема-передачи в мс: Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек

Проверяю локальный сайт: nslookup slicks.lan :

C:\\Documents and Settings\\www>nslookup slicks.lan *** Can"t find server name for address 192.168.0.1: Non-existent domain *** Default servers are not available Server: UnKnown Address: 192.168.0.1 Name: slicks.lan Address: 192.168.0.100

ping slicks.lan :

C:\\Documents and Settings\\www>ping slicks.lan Обмен пакетами с slicks.lan по 32 байт: Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64 Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64 Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64 Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64 Статистика Ping для 192.168.0.100: Пакетов: отправлено = 4, получено = 4, потеряно = 0 (0% потерь), Приблизительное время приема-передачи в мс: Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек

Наслаждаемся результатами!