Как создать точку доступа Wi-Fi в Windows 7 + перенаправление на локальную веб-страницу?
Перед тем, как погрузиться в этот вопрос, немного краткой справочной информации:
Я построил небольшой эксперимент, который работает вместе с компьютером под управлением Windows 7. На этом компьютере есть небольшой веб-сервер, обслуживающий веб-страницу, постоянно обновляемую информацией о состоянии, поступающей из эксперимента. Теперь этот эксперимент будет отображаться на некоторых мероприятиях (представьте, MakerFaire, ...), и я хотел бы, чтобы люди могли использовать свои смартфоны (или ноутбуки) для непосредственного отображения этой веб-страницы с минимально возможной конфигурацией на своей стороне.
В основном то, что я пытаюсь достичь, это:
Создайте точку доступа Wi-Fi, используя встроенный в компьютер адаптер Wi-Fi, к которому можно подключиться (открытый или защищенный паролем).
Перехватывать и перенаправлять запросы DNS и / или HTTP, чтобы веб-страница эксперимента отображалась при открытии браузера (например, портала авторизации)
До сих пор мне удавалось достичь пункта 1 с помощью функции размещенной сети Windows 7, которая прекрасно работает для части Wi-Fi AP. Тем не менее, я застрял, когда дело доходит до изменения ответов DHCP для предоставления пользовательских DNS-сервера, который, в свою очередь, будет перенаправлять весь трафик на мой веб-сервер: есть ли способ сделать это?
Несколько ограничений, которые у меня есть (иначе это было бы слишком легко;-)):
- Я застрял с Windows 7 (я знаю, с Linux проблема была бы решена давно!)
- Компьютер является автономной машиной, то есть нет доступа к другим сетям или Интернету. Что также означает отсутствие маршрутизатора или любого другого внешнего устройства!
Любая помощь или предложения с благодарностью!
1 ответ
- Получить MaraDNS
MaraDNS - это бесплатный, легкий и относительно простой в настройке DNS-сервер для Windows и Linux. Загрузите его отсюда и распакуйте в какую-нибудь папку.
- Настроить 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-серверы вашего интернет-провайдера.
Готово!
- Запустите 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-сервера вашего провайдера?), А если вы получили ошибку во втором запросе, вы испортили официальные настройки.
- Измените 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 снова и оставьте его включенным.
- Настройте свой маршрутизатор, чтобы раздавать новый DNS-сервер
Откройте веб-интерфейс вашего маршрутизатора и найдите настройки DHCP-сервера. Должна быть возможность настроить DNS-сервер. Запишите IP-адрес компьютера, на котором будет работать DNS-сервер.
Для каждого из ваших компьютеров отключите сеть (например, отключив и включив ее в Windows или используя "ifconfig eth0 down" / "ifconfig eth0 up" в Linux).
Вот и все, теперь вы должны иметь возможность ссылаться на компьютеры локальной сети по их доменным именам.