Jump to content

Recommended Posts

Posted

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

 

$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)

 

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

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

 

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

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

Posted

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

 

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

 

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

Posted

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

 

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 браузер долго тупит, и открывает нужную страницу через раз.

  • 3 weeks later...
Posted

Правильно редиректить через -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)

 

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

Posted

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

 

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

Posted

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

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

Posted

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

 

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

Posted

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

 

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 ? У вас же все клиенты будут на веб сервере светиться с одним и темже сорцом, Я понимаю что возможно вам это не принципиально , но в чем смысл ?

Posted (edited)

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

 

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

 

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

Edited by vop
  • 2 months later...
Posted

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

Posted

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

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

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

 

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

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

Posted

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

 

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

Posted

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

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...