Отображение всплывающего окна на клиентах, которые входят в точку доступа Wi-Fi

Я настроил Raspberry Pi в качестве точки доступа Wi-Fi. Все работает, включая портал авторизации. Веб-браузер на каждом клиенте перенаправляется на страницу входа, которая работает правильно. Я хочу изменить конфигурацию iptables и / или dnsmasq, чтобы клиент автоматически открывал веб-браузер на адаптивном портале. Starbucks, McDonald's и т. Д. Могут все это сделать; Пытаюсь понять, как это сделать.

Здесь, здесь и здесь частичное объяснение того, как этого добиться, но я хочу понять это, а не просто следовать чьим-то инструкциям, чтобы Я могу это сделать самостоятельно. Я хотел бы написать HOWTO по этой теме, отчасти потому, что его еще не существует (а если есть, то я не могу его найти).

Существуют сторонние приложения, такие как Wifidog и Coovachilli, которые, похоже, справляются со своей задачей, но мне не удалось понять, как они это делают. Я считаю, что этого можно достичь, изменив конфигурацию dnsmasq и iptables, но это все, что я получил. он должен делать что-то вроде этого: -

1) Отрегулируйте пакеты данных таким образом, чтобы веб-браузер клиента понимал, что существует скрытый портал; это приведет к тому, что клиентский веб-браузер откроет окно и направит его на захватывающий портал.

2) Обработайте плененный портал; разрешить вход; изменить настройки iptables для облегчения входа в систему; и Т. Д.

3) Прозрачно перенаправлять весь трафик после входа в систему

Пункты 2 и 3 не проблема. Я застрял на пункте 1. Приветствуются все советы, включая перенаправление на существующую документацию. Спасибо.


person Hugo R.    schedule 11.01.2016    source источник
comment
Я застрял с той же проблемой. Можете ли вы опубликовать свой прогресс? С чем вы рассчитались?   -  person 55597    schedule 05.05.2016
comment
Решение заключалось в том, чтобы промежуточный ящик прекратил попытки определить, находится ли он на адаптивном портале или нет, и просто пересылал данные. Клиент (Mac, ПК, что угодно) попытается получить доступ к соответствующей странице (apple.com / ... или что-то еще) и будет перенаправлен в другое место (например, на страницу входа в Starbucks). Все происходит автоматически. Решением было перестать вмешиваться. :)   -  person Hugo R.    schedule 07.05.2016


Ответы (1)


Я не знаю, как WifiDog и CoovaChilli делают свое дело, но ChilliSpot (на котором изначально был основан CoovaChilli) сделал что-то в этом роде:

  1. Откройте необработанный сокет, привязанный к внутреннему интерфейсу
  2. Захватить весь трафик, привязанный к этому интерфейсу
  3. Если он был авторизован (например, вошел в систему), обработать NAT и пересылать дальше
  4. Если не авторизован, заблокировать трафик

    ПОКА НЕ

  5. Если он не был авторизован И HTTP, используйте некоторый настраиваемый код, чтобы ответить на запрос HTTP GET с 301 Redirect, чтобы указать на саму страницу портала, которая затем позволит войти в систему.

Это очень упрощенная версия, но я ожидаю, что большинство других связанных порталов будут использовать очень похожие методы (особенно 301 Redirect). Самый лучший способ узнать это - прочитать много кода :)

Удачи!

person Joel C    schedule 13.01.2016