Редирект при подключении к вайфай
У меня есть поднятый на локальной сети одностраничный Python Simple Server, куда человека предлагается оставить отзыв об обслуживании. Он находится по ip адресу 192.168.40.130:8000 и разумеется доступен тольо внутри сети. Я пытаюсь сделать так, что бы при подключении к Wifi эта страница открывалась автоматический у каждого человека (тобеж login page). В качестве роутера используется компьютер с Linux Mint. Попытке гуглежа находят готовые сервисы, а я птаюсь сделать это без них. Может кто нибудь сможет мне подсказать в какую сторону мне копать.
Ответы (1 шт):
Роутер на Linux Mint - это жестоко)
Решение без костылей:
Самое простое - поставь coova-chilli и вставь страничку фреймом в логин-пэйдж чили. Там можно оставить кнопку для входа в настоящий интернет и авторизацию по смс.
Решение на костылях:
Поднимаешь второй сервер на новом порту, допустим 8010. Сервер должен всегда выдавать 302 редирект на страницу с отзывами.
from http.server import HTTPServer, BaseHTTPRequestHandler
class Redirect(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(302)
self.send_header('Location', "http://192.168.0.1:8080/index.html")
self.end_headers()
HTTPServer(("", 8010), Redirect).serve_forever()
Фаерволом заворачиваем http трафик на новый сервер.
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8010
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8011
Для порта 443 не обязательно, но для устройств с отключенным порталом авторизации можно бы. Для этого запустим stunnel
sudo apt-get install stunnel4
с таким конфигом
[https]
accept = 8011
connect = 8010
cert = example.pem
Сертификат сойдет самоподписный - тут главное обмануть браузер.
Подключившись к сети пользователь перебросится на сервер редиректа, а с него на вашу страничку.
Решение можно сделать менее костыльным если редирект делать через squid, но там больше настроек.