Я создал захватывающий портал с iptables
Я использую то, что многие люди, кажется, используют: пользователи могут запрашивать DNS, пакет помечен как 99. 99 означает, что у пользователя нет доступа к Интернету.
Когда пользователь посещает страницу при посещении, например, переполнение стека. Пользователь получает отказ от ответственности. Он / она нажимает "ОК". Случилось так, что сервер выполняет следующие правила:
`sudo /sbin/iptables -t mangle -I captivePortal 1 -m mac --mac-source {$mac} -j RETURN`;
`sudo /sbin/iptables -t mangle -I captivePortal 1 -s {$_SERVER['REMOTE_ADDR']} -j RETURN`;
Что я пробовал:
Использовал sinatra в одиночку с тонким. Визуализируйте шаблон с помощью erb. Когда пользователь перезагружается после аутентификации, он получает отказ от ответственности при посещении исходного домена. При посещении другого они не получают страницу отказа от ответственности.
Настроил apache2 на php, все переписал на php. добавлены мета-теги для предотвращения кеширования в браузере, но результат тот же. исходный домен всегда перенаправляет на отказ от ответственности, но другие сайты в порядке.
Чего я хочу достичь
Прежде чем использовать WIFI, пользователям необходимо нажать «Принять» в заявлении об отказе от ответственности.
Перезагрузка apache2 или перезапуск Sinatra действительно решает эту проблему, но это не подходящее решение для низкопроизводительной платы alix.
Выяснилось, что после вставки MAC-адреса в iptables мне нужно было использовать conntrack.
/usr/sbin/conntrack -L \
|grep $1 \
|grep ESTAB \
|grep 'dport=80' \
|awk \
"{ system(\"conntrack -D --orig-src $1 --orig-dst \" \
substr(\$6,5) \" -p tcp --orig-port-src \" substr(\$7,7) \" \
--orig-port-dst 80\"); }"
http://aryo.info/labs/captive-portal-using-php-and-iptables.html