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

Правильный редирект Автоматический перевод абона на информационную страницу

Нужно, чтобы при истечении срока оплаты пользователя заворачивало на инфо страницу (скажем, вход в личный кабинет) при попытке зайти на любую другую страницу.

 

$IPTABLES -m set -t nat -A PREROUTING -p TCP --dport 80 --match-set disallow_nat src -j DNAT --to-destination 192.168.10.1:80

$IPTABLES -m set -t nat -A PREROUTING -p TCP --dport 443 --match-set disallow_nat src -j DNAT --to-destination 192.168.10.1:80

 

 

192.168.10.1 - веб, он же шлюз (временно на одном тазике для теста). web - lighhttpd (все что 404 автоматом уходит на /index.php)

 

Проблема в том, что наблюдаются жуткие тормоза при перенаправлении. ДНС для тестируемого адреса доступен.

Периодически правда, "пробивается" и редирект происходит практичски моментально.

 

Вот не могу понять в каком месте и что поправить.

Может кто уже настраивал такую схему.

Share this post


Link to post
Share on other sites

Может не в резолвере дело?

Не понял, простите.

Share this post


Link to post
Share on other sites

Не понял, простите.

 

443 порт нельзя редиректить.

 

Правильно делать редирект на микротике через вебпрокси, тогда не требуется держать включенным функционал НАТа, что увеличивает производительность.

Share this post


Link to post
Share on other sites

Не понял, простите.

 

443 порт нельзя редиректить.

 

Правильно делать редирект на микротике через вебпрокси, тогда не требуется держать включенным функционал НАТа, что увеличивает производительность.

 

 

Ок, можно сделать так

$IPTABLES -m set -t nat -A PREROUTING -p TCP --dport 80 --match-set disallow_nat src -j DNAT --to-destination 192.168.10.1

$IPTABLES -m set -t nat -A PREROUTING -p TCP --dport 443 --match-set disallow_nat src -j DNAT --to-destination 192.168.10.1

 

Но проблема сейчас даже при попытке зайти на адрес http://8.8.8.8 браузер долго тупит, и открывает нужную страницу через раз.

Share this post


Link to post
Share on other sites

Правильно редиректить через -j REDIRECT + nginx.

Как-то так: http://forum.nag.ru/forum/index.php?showtopic=77543 .

 

1) Пытаюсь сделать так:

(попеременно оба варианта)

#$IPTABLES -m set -t nat -A PREROUTING -p TCP --dport 80 --match-set disallow_nat src -j DNAT --to-destination 192.168.0.1:80

#$IPTABLES -m set -t nat -A PREROUTING -p TCP --dport 443 --match-set disallow_nat src -j DNAT --to-destination 192.168.0.1:80

 

$IPTABLES -m set -t nat -A PREROUTING -i eth1.3400 -p tcp --dport 80 --match-set disallow_nat src -j REDIRECT --to-ports 80

$IPTABLES -m set -t nat -A PREROUTING -i eth1.3400 -p tcp --dport 443 --match-set disallow_nat src -j REDIRECT --to-ports 80

 

(сеть 192.168.0.0/24)------> eth1.3400[192.168.0.1=NAT+lighttpd]

 

Есть 2 сета - одному доступ разрешен, а disallow_nat нужно перенаправлять.

 

с 80 портом бывает нормально, а вот 443 ...

"тупняки" такого плана- долгое открытие, вообще не открывает, net::ERR_TIMED_OUT (443)

 

есть у кого рабочая схема?

Share this post


Link to post
Share on other sites

да не пытайтесь редиректить 443 порт, либо браузер начнет визжать про подмену сертификата, либо просто не сработает.

Share this post


Link to post
Share on other sites

да не пытайтесь редиректить 443 порт, либо браузер начнет визжать про подмену сертификата, либо просто не сработает.

 

443 - ладно, хоть бы для 80 заставить работать хорошо.

Share this post


Link to post
Share on other sites

ну с айпитейблсом не помогу, я адепт другой религии, где с редиректом попроще :)

Share this post


Link to post
Share on other sites

iptables -t nat -I PREROUTING -i eth1.3400 -p tcp -m set --match-set disallow_nat src --dport 80 -j DNAT --to-destination 192.168.0.1:80

Share this post


Link to post
Share on other sites

Правьте sysctl у вас сокиты забиваются :) netstat -anp , там наверняка куча в таймвейтов

Share this post


Link to post
Share on other sites

Правьте sysctl у вас сокиты забиваются :) netstat -anp , там наверняка куча в таймвейтов

совсем немного, причина не в этом(

Share this post


Link to post
Share on other sites

запустите tcpdum, если увидите syn но не увидите syn,ack то проблема в ядре, если будет syn-syn,ack,ack но не будет редиректа , то проблема в софте.

У вас нат на этом же сервере делается , таблица connrtack не переполняется ?

Share this post


Link to post
Share on other sites

у меня это вот так работает

 

iptables -t nat -A POSTROUTING -s 172.22.0.0/20 -d 10.0.0.1 -o eth1 -j SNAT --to-source 192.168.1.9

iptables -t nat -A PREROUTING -s 172.22.0.0/20 ! -d 10.0.0.0/8 -p tcp --dport 80 -j REDIRECT --to-port 80

Share this post


Link to post
Share on other sites

у меня это вот так работает

 

iptables -t nat -A POSTROUTING -s 172.22.0.0/20 -d 10.0.0.1 -o eth1 -j SNAT --to-source 192.168.1.9

iptables -t nat -A PREROUTING -s 172.22.0.0/20 ! -d 10.0.0.0/8 -p tcp --dport 80 -j REDIRECT --to-port 80

 

А в чем смысл делать SNAT ? У вас же все клиенты будут на веб сервере светиться с одним и темже сорцом, Я понимаю что возможно вам это не принципиально , но в чем смысл ?

Share this post


Link to post
Share on other sites

у меня так

iptables -t nat -A PREROUTING ! -d ip-адрес веб сервера компании/32 -p tcp -m set --match-set block src -m tcp --dport 80 -j DNAT --to-destination ip-странички-блокировки:80

Share this post


Link to post
Share on other sites

А чего такие сложности с этим-то? Прям, такое обсуждение. :)

Share this post


Link to post
Share on other sites

А чего такие сложности с этим-то? Прям, такое обсуждение. :)

Для кого-то видимо да ))

Share this post


Link to post
Share on other sites

Для кого-то видимо да ))

 

Там, в принципе, не так уж и много вариантов. Если страница "заплати, скотина!" находится за роутером (на другом интерфейсе), то надо ставить DNAT. В ином случае REDIRECT. При этом, если страница на самом же роутере (оптимальный вариант), то больше ничего не надо делать. Если в том же сегменте (за тем же интерфесом), откуда пришел клиент, то либо делаем редирект на коленке (через nc и inetd), либо используется встроенный редирект от xinetd, либо ставим прокси/nginx. Похоже, что это весь список вариантов.

 

PS Для варианта "на том же интерфейсе" можно еще сделать тоннель к серверу со страницей. Тогда можно и DNAT поставить.

Edited by vop

Share this post


Link to post
Share on other sites

Товарищ Saab95, поделитесь "правильным" редиректом для RouterOs. Задача редиректить на инфостраницу каждые 3 часа.

Share this post


Link to post
Share on other sites

Попробуйте сделать ещё дополнительно реджект на соединения во внешку на 443 порт.

У меня в тестах тупило т.к. некоторые браузеры лезли проверять каждый урл на предмет фишинга

или чего-то подобного по ssl на своих сервисах. REJECT решил проблему.

 

И ещё, если пускать в свой ЛК по SSL с серых адресов без внешки, то тоже нужно делать реджект на 443 во внешку,

т.к. есть проверка сертификата в браузерах, тупит очень долго.

Share this post


Link to post
Share on other sites

Всем неплательщикам реджектить 443 порт во внешку?

Share this post


Link to post
Share on other sites

Никогда не понимал эти глупости со страницами. Кроме 80 есть еще другие порты. Все не затерминируешь.

 

Достаточно перекрыть доступ в инет, оставив доступ к ЛК. Абоны сами баланс посмотрят и сразу внесут обещанный.

Share this post


Link to post
Share on other sites

Мы просто режем скорость до 100кбит, а вверх всех страничек(которые по http) вставляем информацию о том, что баланс отрицательный и неплохо бы положить денег.

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