вам нужен местный днс
добавить 2 зоны в локальный DNS (сервер связывания также разрешает IP-адрес UAMLISTEN, порт UDP 53)
Пример:
HS_UAMLISTEN = 10.10.10.1
HS_DNS1 = 10.10.10.1
Windows 10 и выше используют http://www.msftconnecttest.com/connecttest.txt
Windows 8.1 и более ранние версии используют http://www.msftncsi.com/ncsi.txt
зона: msftncsi.com
www IN A 190.46.255.40 (или любой публичный IP)
зона: msftconnecttest.com
www IN 13.107.4.52 (или любой публичный IP)
Другой и лучший вариант, использует RPZ (зоны политики ответа)
в локальной зоне:
response-policy {зона "rpz"; } qname-wait-recurse no;
зона "рпз" {
тип мастер;
файл "/etc/bind/db.rpz";
};
файл db.rpz:
www.msftconnecttest.com В 13.107.4.52
www.msftncsi.com В 190.46.255.40
190.46.255.40 и 13.107.4.52 являются реальными IP-адресами каждого URL. Неважно, что у вас нет Интернета, так как coovachilli перед входом в систему всегда отвечает на порты TCP 80 для любого IP (не сбрасывается на брандмауэр или IPTABLES)
Таким образом DNS разрешает хосты, а браузер перенаправляет страницу.
Windows 10 работает отлично.
Для устройств Android:
connectivitycheck.gstatic.com В 216.58.222.163
connectivitycheck.android.com В 216.58.222.174
clients1.google.com В A 216.58.222.174
clients3.google.com В 216.58.222.174
У меня есть скрипы, которые проверяют состояние интернета, поэтому при отсутствии соединения он перенаправляет на страницу "Интернет временно не работает". Пленный портал также имеет несколько вмешательств в соответствии с потребностями моих клиентов.
https://github.com/coova/coova-chilli/issues/212