7

Перед тем, как погрузиться в этот вопрос, немного краткой справочной информации:
Я построил небольшой эксперимент, который работает вместе с компьютером под управлением Windows 7. На этом компьютере есть небольшой веб-сервер, обслуживающий веб-страницу, постоянно обновляемую информацией о состоянии, полученной в результате эксперимента. Теперь этот эксперимент будет отображаться на некоторых мероприятиях (представьте, MakerFaire, ...), и я хотел бы, чтобы люди могли использовать свои смартфоны (или ноутбуки) для непосредственного отображения этой веб-страницы с минимальной конфигурацией на своей стороне, насколько это возможно.

В основном то, что я пытаюсь достичь, это:

  1. Создайте точку доступа Wi-Fi, используя встроенный в компьютер адаптер Wi-Fi, к которому можно подключиться (открытый или защищенный паролем).

  2. Перехватывать и перенаправлять запросы DNS и / или HTTP, чтобы веб-страница эксперимента отображалась при открытии браузера (например, портала авторизации)

До сих пор я был в состоянии достичь пункта 1 с помощью функции размещенной сети Windows 7, которая прекрасно работает для части Wi-Fi AP. Тем не менее, я застрял, когда дело доходит до изменения ответов DHCP для предоставления пользовательских DNS-сервера, который, в свою очередь, будет перенаправлять весь трафик на мой веб-сервер: есть ли способ сделать это?

Несколько ограничений, которые у меня есть (иначе это было бы слишком легко ;-)):

  • Я застрял с Windows 7 (я знаю, с Linux проблема была бы решена давно!)
  • Компьютер является автономной машиной, то есть нет доступа к другим сетям или Интернету. Что также означает отсутствие маршрутизатора или любого другого внешнего устройства!

Любая помощь или предложения с благодарностью!

1 ответ1

2
  1. Получить MaraDNS

MaraDNS - это бесплатный, легкий и относительно простой в настройке DNS-сервер для Windows и Linux. Загрузите его отсюда и распакуйте в какую-нибудь папку.

  1. Настроить MaraDNS

Откройте «secret.txt» и измените значение на другое (случайные символы).

Конфигурация MaraDNS находится в файле «mararc» в том же каталоге. DNS-серверы имеют два набора функций. Они могут функционировать как «Официальный сервер имен» или «Рекурсивный / кеширующий сервер имен».

Официальные серверы имен определяют IP-адреса для доменных имен. Рекурсивные серверы имен хранят информацию от авторитетных серверов имен и передают запросы рекурсивным способом.

Мы будем настраивать как официальные, так и рекурсивные функции в MaraDNS.

2.1 Официальная конфигурация

Мы настроим сервер для предоставления достоверных имен доменных имен локальной сети. Выберите любой домен, я выбрал «local.com» (учтите, что вы не сможете получить доступ к реальному сайту «local.com», если выберете существующее доменное имя).

Добавьте строки конфигурации в «mararc» следующим образом:

csv2 = {}
csv2["local.com."] = "db.lan.txt"

Где local.com - это выбранное вами имя домена, а db.lan.txt - это имя второго файла конфигурации, который мы создадим следующим (измените его, если хотите назвать второй файл конфигурации).

Создайте новый файл с именем «db.lan.txt» в том же каталоге, что и MaraDNS.

Для каждого из компьютеров, которые вы хотите преобразовать в имя, добавьте строку в «db.lan.txt». Например, для двух машин, одного «dev.local.com» и другого «blog.local.com», добавьте следующие строки:

dev.%       192.168.1.4 ~
blog.%        192.168.1.6 ~

Готово!

2.2 Рекурсивная конфигурация

Мы настроим MaraDNS, чтобы он запрашивал у ваших серверов имен по умолчанию все остальные домены, чтобы вы могли преобразовать все другие доменные имена в их правильные IP-адреса.

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

Теперь добавьте DNS-серверы вашего провайдера в качестве вышестоящих серверов в «mararc»:

upstream_servers = {}
upstream_servers["."] = "xxx.xxx.xxx.xxx, yyy.yyy.yyy.yyy"

Где xxx.xxx.xxx.xxx и yyy.yyy.yyy.yyy - это DNS-серверы вашего интернет-провайдера.

Готово!

  1. Запустите MaraDNS и протестируйте его, используя askmara.exe

Дважды щелкните «runmara.bat» и оставьте сервер включенным.

Откройте командную строку, перейдите в каталог MaraDNS и попробуйте запустить:

askmara.exe Agoogle.com.

а также

askmara.exe Ablog.local.com.

Вы должны получить ответы как это:

# Querying the server with the IP 127.0.0.1
# Question: Agoogle.com.
google.com. +300 a 74.125.67.100
google.com. +300 a 74.125.53.100
google.com. +300 a 74.125.45.100
# NS replies:
# AR replies:

а также:

# Querying the server with the IP 127.0.0.1
# Question: Ablog.local.com.
blog.local.com. +86400 a 192.168.1.6
# NS replies:
#local.com. +86400 ns synth-ip-7f000001.local.com.
# AR replies:
#synth-ip-7f000001.local.com. +86400 a 127.0.0.1

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

  1. Измените MaraDNS, чтобы отвечать на запросы из вашей локальной сети

Закройте окно MaraDNS и измените первые две строки «mararc» на что-то вроде:

ipv4_bind_addresses = "192.168.1.2
recursive_acl = "192.168.1.0/24"

Где 192.168.1.2 - это IP-адрес компьютера, на котором будет работать сервер, а часть «192.168.1» в recursive_acl такая же, как в вашей сети (может быть 192.168.0.0/24).

Запустите MaraDNS снова и оставьте его включенным.

  1. Настройте свой маршрутизатор, чтобы раздавать новый DNS-сервер

Откройте веб-интерфейс вашего маршрутизатора и найдите настройки DHCP-сервера. Должна быть возможность настроить DNS-сервер. Запишите IP-адрес компьютера, на котором будет работать DNS-сервер.

Для каждого из ваших компьютеров отключите сеть (например, отключив и включив ее в Windows или используя «ifconfig eth0 down» /«ifconfig eth0 up» в Linux).

Вот и все, теперь вы должны иметь возможность ссылаться на компьютеры локальной сети по их доменным именам.

Источник

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .