Перейти к содержимому
Калькуляторы

Чем организовать? Как бы выкрутить redirect и block

буду краток:

iptables -t nat -A PREROUTING -s 192.168.50.55 -p tcp --dport 80 -j REDIRECT --to-ports 8080

хочу, чтобы его редиректило на мою страничку где ему говорится связаться ТП.

на 8080 повесил обычный lighttpd, но как всегда кумкалки не хватило, на 404 повесил свою index.html, но как-то все не понятно и не работает

Как правильно такое реализовывается?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

DNAT-ом делайте:

# Packets to port 80 redirecting to local HTTPD
/sbin/iptables -t nat -A PREROUTING -i $GUEST_INTERFACE -s $LOCAL_NETWORK -p tcp --dport www -j DNAT --to-destination $GUEST_SYSTEM_IP

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо тебе добрый человек.

Теперь я обретаю новое понятие для счастья.

А те кому интересно:

скрипт, раз в 10 минут выгребает из базы всех зверей в utm у которых стоит статус выкл., сравнивает предыдущию выгрузку и если она изменилась то применяет обновленную версию правил.

при чем: правила вносятся в отдельную цепочку но в таблице nat, тем самым убиваем кучу времени.

почему так? да кто его знает, только учусь.

Ну а так как надо делится, то вот:

 

SQL="SELECT inet_ntoa(ig.ip &4294967295) AS FIELD_1, inet_ntoa(ig.mask &4294967295) AS FIELD_2 FROM accounts a, service_links sl, iptraffic_service_links il, ip_groups ig WHERE  sl.account_id = a.id AND  sl.id = il.id AND  il.ip_group_id = ig.ip_group_id AND  sl.is_deleted = 0 AND  il.is_deleted = 0 AND  ig.is_deleted = 0 AND   a.int_status = 0"
mysql --user="$user" --password="$password" -e "$SQL INTO outfile '/tmp/blockusers.txt';" utm5

iptables -t nat -F BLOCKUSERS
iptables -t nat -N BLOCKUSERS

cat /tmp/blockusers.txt | while read ip mac; do
   iptables -t nat -A BLOCKUSERS -s $ip -p tcp --dport 80 -j DNAT --to-destination myhost:port
done

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

через ipset делайте будет и красивее в iptables и проще добавлять/удалять ip-ы из цепочек, +производительность не потеряете если будет несколько тысяч ip

 

а теперь вопрос:

у меня такая же схема работает для предупреждения о задолженности, на странице можно нажать кнопку "Продолжить" правило удаляется из ipset-a и пользователь продолжает ходить в сеть

на странице запоминается куда абонент пытался достучаться (к примеру на ya.ru) и пытается переадресовать через php header("Location: ...") и вот тут или какой-то кэш или conntrack записи, помнят что была переадресация и по нажатию на кнопку "Продолжить" перекидывает опять на эту же страницу с кнопкой "Продолжить" (запоминается именно 1 адрес куда нужно переадресовывать), тут особенность если попытаться вручную открыть к примеру google.ru все уже успешно открывается

 

никто не сталкивался с такой проблемой?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

никто не сталкивался с такой проблемой?

Модифицируйте строку запроса и сделайте задержку в 15 секунд

 

$redirect = $_POST['url'].(preg_match('/\?/', $_POST['url']) ? '&' : '?').'r='.rand();

<meta http-equiv="refresh" content="15; url=<?php echo $redirect;?>">

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Редирект через файрволл - не очень хорошо, потому если биллинг начнёт отвечать напрямую,

то TCP-сессия подвиснет, а если через BRAS, то это изврат.

 

Как вариант, можно запускать на 81 порту BRAS'a вот такой сценарий:

http://forum.nag.ru/forum/index.php?showtopic=61117&view=findpost&p=547399

Файрволл заворачивает на него обращения заблокированных клиентов к 80 порту,

сценарий делает HTTP-редирект на биллинг, после чего биллинг общается с клиентом напрямую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Редирект через файрволл - не очень хорошо, потому если биллинг начнёт отвечать напрямую,

то TCP-сессия подвиснет, а если через BRAS, то это изврат.

После того как у меня откроется Опера с 50-ю вкладками, в которых появится в адресной строке адрес биллинга - я скажу вам "спасибо".

зыж Но тем не менее решение красивое.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Редирект через файрволл - не очень хорошо, потому если биллинг начнёт отвечать напрямую,

то TCP-сессия подвиснет, а если через BRAS, то это изврат.

После того как у меня откроется Опера с 50-ю вкладками, в которых появится в адресной строке адрес биллинга - я скажу вам "спасибо".

зыж Но тем не менее решение красивое.

 

А лучше чтоб вообще ничего не открылось?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А лучше чтоб вообще ничего не открылось?

У меня %времени это чтение из браузера, и открыто там много, это представляет для меня ценность, потому что на это потрачено моё время и это сохраняет моё время.

Зачем провайдеру злить/делать плохо человеку, который ему платит деньги?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Зачем провайдеру злить/делать плохо человеку, который ему платит деньги?

Редирект на биллинг делается только у должников, которые как раз _не_ платят.

Это делается для их удобства, чтобы сразу был ответ на вопрос "почему пропал Интернет?".

Заплатили - нажимают в браузере backspace и радуются жизни.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

через ipset делайте будет и красивее в iptables и проще добавлять/удалять ip-ы из цепочек, +производительность не потеряете если будет несколько тысяч ip

 

а теперь вопрос:

у меня такая же схема работает для предупреждения о задолженности, на странице можно нажать кнопку "Продолжить" правило удаляется из ipset-a и пользователь продолжает ходить в сеть

на странице запоминается куда абонент пытался достучаться (к примеру на ya.ru) и пытается переадресовать через php header("Location: ...") и вот тут или какой-то кэш или conntrack записи, помнят что была переадресация и по нажатию на кнопку "Продолжить" перекидывает опять на эту же страницу с кнопкой "Продолжить" (запоминается именно 1 адрес куда нужно переадресовывать), тут особенность если попытаться вручную открыть к примеру google.ru все уже успешно открывается

 

никто не сталкивался с такой проблемой?

 

Помнит броузер пользователя. На странице с редиректом добавьте в заголовки connection: close . Я еще на всякий случай добавлял запреты для кеширования страницы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Редирект на биллинг делается только у должников, которые как раз _не_ платят.Это делается для их удобства, чтобы сразу был ответ на вопрос "почему пропал Интернет?".Заплатили - нажимают в браузере backspace и радуются жизни.

Сомнительное удовольствие нажимать 400-800 раз НАЗАД.

Не все должники умышленно не платят.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Редирект на биллинг делается только у должников, которые как раз _не_ платят.Это делается для их удобства, чтобы сразу был ответ на вопрос "почему пропал Интернет?".Заплатили - нажимают в браузере backspace и радуются жизни.

Сомнительное удовольствие нажимать 400-800 раз НАЗАД.

Не все должники умышленно не платят.

 

Если http-редиректа не будет и url изменяться не будет, то после оплаты можно перезапустить браузер.

 

P.S. 400-800 вкладок это какой браузер и сколько памяти на компе?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Гммм, не дочитал.

А зачем вообще "назад"?

На сервере с редиректом через rewrite заворачиваем все на свой index.чего-то-там . В индексе запоминаем оригинальный запрос пользователя в hidden форму. На нажатие кнопки "продолжить" ставим что-то вроде <script type=\"text/javascript\"> setTimeout( document.location = '$fulluri' , 500); </script> - сразу редирект по ранее запрашиваемому адресу с нужными параметрами запроса.

 

Для GET работает на ура со всеми броузерами. Для POST не делал, просто лениво, но тоже должно работать.

 

Отдельный демон считает таймауты показа для каждого должника страницы и добавляет адреса в ipset - нагрузка "размазана" по времени, нету редиректа одновременно сотен абонентов (можно и через таймауты в самом ipset + cron).

 

Один раз эта радость поломалась, народ некоторый даже жаловаться по телефону начал - не предупредили мы их, понимаешь, о задолженности :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

P.S. 400-800 вкладок это какой браузер и сколько памяти на компе?

фаерфокс ~ 300-350, опера ~150-300.

Win7 x64, Е8500, 8Гб, без свопа, можно поставить 16Гб, тк ддр3 4 слота, EP43 чипсет. На 2к3х64 тоже самое укладывалось в 4-5 Гб легко, теперь вот 6+.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А что Вы в этих вкладках делаете ? 8-[]

 

Еще помню была жалоба от абонента "Интернет не работает".. Выяснилось, что там была опера с 666 запомненными вкладками (их конечно никто не считал, но дюже дохрена), и в каких то, типа 10 15 33 и 55 попались помершие по таймауту сайты и еще пара просто тормозящих. В итоге оно уперлось в количество параллельно открываемых УРЛов и до его 666 вкладки дело доходило минуты через 3, если не дольше.... Дядя не дожидался. Настроили забывать открытые вкладки, и настало дяде счастье. А то он в тындексе что найдет, новая вкладка. А что это вкладка, и там старая осталась он не в курсе, браузер закроет, откроет а они все снова там. А там, где авторефреш, где анимация навернутая, где еще что...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.