- У меня есть сервер 192.168.0.3 (СЕРВЕР). Работает Ubuntu Server + DHCP server + Apache;
- Маршрутизатор 192.168.0.1 (ROUTER) (у меня нет к нему доступа);
- У меня есть веб-приложение на СЕРВЕРЕ для регистрации пользователей в сети путем применения к ним определенной конфигурации (на DHCP-сервере);
- Пользователи находятся в подсети 192.168.0.0/16;
Я могу настроить DHCP-сервер так, чтобы он давал незарегистрированным машинам мой СЕРВЕР в качестве шлюза по умолчанию.
Так как я могуперенаправитьвсе входящие http-запросы от незарегистрированных машин на мойлокальное веб-приложение192.168.0.3 ?
решение1
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A ПРЕДВАРИТЕЛЬНАЯ МАРШРУТИЗАЦИЯ -p tcp -dport 80 -j DNAT –to-destination 1.2.3.4:80 iptables -t nat -A ПОСЛЕДУЮЩАЯ МАРШРУТИЗАЦИЯ -j МАСКАРАД
решение2
Вам придется настроить специальный DNS-сервер, который будет отвечать на все DNS-запросы IP-адресом вашего сервера, и настроить виртуальный сервер Apache на прием запросов для любого хоста (например, *:80 + *:443).
Хитрость в том, что после входа в систему DNS-сервер должен начать предоставлять правильные результаты DNS, а не поддельные. Вы не можете просто снова изменить настройки в DHCP, потому что время аренды по умолчанию будет слишком долгим и/или пользователям придется отключаться, чтобы получить новые настройки.
Многие системы входа в систему Wi-Fi используют эту архитектуру, поэтому вы можете найти решение с открытым исходным кодом.
решение3
Я нашел еще один способ.
- Назначить незарегистрированным машинам СЕРВЕР в качестве шлюза по умолчанию.
- перенаправитьпорт 80к веб-серверу с помощьюiptables
Но я не знаю точно, как это сделать :)