Jump to content
Калькуляторы

Хомячьи проблемы с браузерами И что-то вроде "guest vlan"

Когда-то тут уже писал, как реализовано 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 by GFORGX

Share this post


Link to post
Share on other sites

Кэши...

 

Вроде можно как-то броузеру сказать, что страница динамическая и кэшировать ее нельзя. Но деталей не знаю.

Share this post


Link to post
Share on other sites

Смотрите в сторону заголовков Cache-control и Expires

Share this post


Link to post
Share on other sites

Дёргать порт чтобы заставить клиента обновить адрес - это, конечно, хорошо. А всякие CPE'шки нормально это обрабатывают? Свитчика у пользователя не может оказаться?

Share this post


Link to post
Share on other sites

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

Дёргать порт чтобы заставить клиента обновить адрес - это, конечно, хорошо. А всякие CPE'шки нормально это обрабатывают? Свитчика у пользователя не может оказаться?

Это очень малое количество абонентов, таким несложно объяснить, что нужно переподключить сетевое подключение.

 

P.S. Спасибо всем за хэдеры.

Share this post


Link to post
Share on other sites

Смотрите в сторону заголовков Cache-control и Expires

С Оперой не поможет, она любит игнорировать поля управления кешем

Share this post


Link to post
Share on other sites

Как вариант, вместо дёргания порта - давать по дхцп аренду на 3 минуты, с обновлением (ренью) каждую минуту.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this