GFORGX Posted March 11, 2011 (edited) · Report post Когда-то тут уже писал, как реализовано guest vlan (банально переключение PVID с выключением порта ненадолго по SNMP из биллинга). На отдаваемом по DHCP шлюзе: # Guest VLAN stuff iptables -A FORWARD -p tcp -s 10.255.0.0/16 -d $personal_page --dport 443 -j ACCEPT iptables -A FORWARD -p tcp -s 10.255.0.0/16 --dport 80 -j ACCEPT iptables -A FORWARD -p udp -s 10.255.0.0/16 -m multiport --dport 53,123 -j ACCEPT iptables -A FORWARD -d 10.255.0.0/16 -j ACCEPT iptables -t nat -A PREROUTING -p tcp -d $myself --dport 80 -j RETURN iptables -t nat -A PREROUTING -p tcp -d ! $personal_page --dport 80 -j REDIRECT --to-port 80 На 80 порту висит апач со статической страничкой, которая жабоскриптом редиректит на страничку биллинга. Так вот, при внедрении в продакшн вылезло следующее: у хомячков после переключения статуса обратно в 1 нормально переполучается адрес (10 секунд венде на осознание выключения порта хватает), но браузеры (уже были и с IE, и с огнелисом, и с Оперой) по какой-то странной причине продолжают показывать страничку редиректа на личный кабинет для тех страниц, которые они пытались открывать, находясь в минусе :) Смена браузера чудом спасает, ребут - уже у двух не помог. Нервов уже не хватает, а проверить негде - венды под рукой нет, на FF и Midori в Debian-е воспроизвести не удалось. Как можно видеть выше, никакой подмены DNS не делается. Edited March 11, 2011 by GFORGX Share this post Link to post Share on other sites
Tosha Posted March 11, 2011 · Report post Кэши... Вроде можно как-то броузеру сказать, что страница динамическая и кэшировать ее нельзя. Но деталей не знаю. Share this post Link to post Share on other sites
marikoda Posted March 11, 2011 · Report post Смотрите в сторону заголовков Cache-control и Expires Share this post Link to post Share on other sites
[ip] Posted March 11, 2011 · Report post Дёргать порт чтобы заставить клиента обновить адрес - это, конечно, хорошо. А всякие CPE'шки нормально это обрабатывают? Свитчика у пользователя не может оказаться? Share this post Link to post Share on other sites
a_andry Posted March 11, 2011 · Report post Cache-control и Expires это не все. Обязательно нужно Connection: close. Полностью у меня заголовки выглядят так -- print "Content-Type: text/html; charset=koi8-r\nExpires: Wed, 1 Oct 2000 00:00:00 GMT\nLast-modified: @{[scalar gmtime() . \" GMT\"]} Cache-Control: no-cache, must-revalidate\nCache-Control: post-check=0, pre-check=0\nCache-Control: max-age=0\nPragma: no-cache\nConnection: close\r\n\r\n"; пс. каждые пол часа должникам выдается редирект на страницу "не забудь заплатить", на странице после нажатия кнопки "не забуду" редирект на нужный урл. Обычно, после 2-3 дней редиректов мало кто уже повторно хочет залазить в долг :) Share this post Link to post Share on other sites
GFORGX Posted March 11, 2011 · Report post Дёргать порт чтобы заставить клиента обновить адрес - это, конечно, хорошо. А всякие CPE'шки нормально это обрабатывают? Свитчика у пользователя не может оказаться?Это очень малое количество абонентов, таким несложно объяснить, что нужно переподключить сетевое подключение. P.S. Спасибо всем за хэдеры. Share this post Link to post Share on other sites
-Px- Posted March 11, 2011 · Report post Смотрите в сторону заголовков Cache-control и Expires С Оперой не поможет, она любит игнорировать поля управления кешем Share this post Link to post Share on other sites
Ivan_83 Posted March 15, 2011 · Report post Как вариант, вместо дёргания порта - давать по дхцп аренду на 3 минуты, с обновлением (ренью) каждую минуту. Share this post Link to post Share on other sites