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

переадресация на страничку при отрицательном балансе

при отрицательном балансе биллинг успешно авторизует пользователя и выдаёт ему ипешник из специального серого пула адресов. Требуется при попытке пользователя открыть какой либо сайт показать ему страничку, на которой написано про его отрицательный баланс. В качестве BRAS применяется Cisco ASR1000 биллинг не поддерживает ISG, по какой технологии целесообразнее реализовать данную задачу?

Share this post


Link to post
Share on other sites

PBR, роутить эту подсеть на какой-нибудь сервер (можно в виртуалке), там -j REDIRECT на локальный nginx, который отдает Temporary Redirect. Таким образом обходится cache poisoning браузера юзера.

Share this post


Link to post
Share on other sites

сделал, почти заработало, сможете поделиться строчкой из конфига nginx, которой редирект делаете?

при такой конфигурации

 

server {
       listen       10.0.0.3:81 default rcvbuf=8192 sndbuf=16384 backlog=32000 accept_filter=httpready;
       server_name  localhost;
       access_log  off;
       rewrite  ^  http://host.su/uri  permanent;
}

таки происходит cache poisoning (((

Edited by mousus

Share this post


Link to post
Share on other sites

permanent попробуйте убрать, он говорит, что перенаправление должно быть постоянное.

Share this post


Link to post
Share on other sites

всё получилось))

если кому то надо то вот решение:

 

interface Virtual-Template1
...
ip policy route-map blocked-users-rm
...

access-list 110 deny   ip any host BILLING-HOST
access-list 110 deny   ip any host SITE-HOST
access-list 110 permit tcp 10.0.10.0 0.0.1.255 any eq www

route-map blocked-users-rm permit 10
match ip address 110
set ip next-hop 10.0.0.3

 

на узле 10.0.0.3:

 

ipfw add 100 fwd 10.0.0.3,81 tcp from 10.0.10.0/23 to any 80 via vlan7

конфиг nginx:

 

        server {
       listen       10.0.0.3:81 default rcvbuf=8192 sndbuf=16384 backlog=32000 accept_filter=httpready;
       server_name  localhost;
       access_log  off;
       rewrite  ^  http://host.su/uri  ;
       }

Edited by mousus

Share this post


Link to post
Share on other sites

mousus,

Именно так. Правда, у меня после URL-а еще redirect стоит.

Еще вот такое перед rewrite есть:

if ( $http_user_agent ~ ^uTorrent ) {
                           return 404;
           }
           if ( $http_user_agent ~ Windows-Update-Agent ) {
                           return 404;
           }
           if ( $http_user_agent ~ "Microsoft NCSI" ) {
                           return 404;
           }
           if ( $http_user_agent ~ "ESS Update" ) {
                           return 404;
           }
           if ( $http_user_agent ~ "Google Update" ) {
                           return 404;
           }
           if ( $http_user_agent ~ "Microsoft-CryptoAPI" ) {
                           return 404;
           }
           if ( $http_user_agent ~ "Microsoft BITS" ) {
                           return 404;
           }
           if ( $http_user_agent ~ MSDW ) {
                           return 404;
           }
           if ( $http_user_agent ~ ^SeaPort ) {
                           return 404;
           }
           if ( $http_user_agent ~ ^Windows-Media-Player ) {
                           return 404;
           }
           if ( $http_user_agent ~ "Google Update" ) {
                           return 404;
           }
           if ( $http_user_agent ~ ^GoogleEarth ) {
                           return 404;
           }
           if ( $http_user_agent ~ ^Skype ) {
                           return 404;
           }
           if ( $http_user_agent = "MailRuSputnik" ) {
                           return 404;
           }
           if ( $http_user_agent ~ ^Ya\.Online ) {
                           return 404;
           }
           if ( $http_user_agent ~ ^MRA ) {
                           return 404;
           }
           if ( $http_user_agent ~* ^MediaGet ) {
                           return 404;
           }
           if ( $http_user_agent ~ ^BTWebClient ) {
                           return 404;
           }
           # Avast updater
           if ( $http_user_agent ~ ^Syncer ) {
                           return 404;
           }
           # Trend Micro updater
           if ( $http_user_agent = "TMUFE" ) {
                           return 404;
           }
           if ( $http_user_agent ~ ^Akamai\ NetSession\ Interface ) {
                           return 404;
           }
           if ( $http_user_agent ~ ^VKSaver ) {
                           return 404;
           }
           if ( $http_user_agent ~ DrWebUpdate ) {
                           return 404;
           }
           if ( $http_user_agent = "" ) {
                           return 404;
           }
           if ( $host ~ geo\.kaspersky\.com ) {
                           return 404;
           }
           if ( $host ~ (su|download|webrep).*\.avast\.com ) {
                           return 404;
           }

           if ( $host = wi2geo.mobile.yandex.net ) {
                           return 404;
           }
           if ( $host ~ bar.*\.yandex\.ru ) {
                           return 404;
           }
           if ( $host ~ (ping|master)\d*\.(dyngate|teamviewer)\.com ) {
                           return 404;
           }
           if ( $host ~ sitecheck\d*\.opera\.com ) {
                           return 404;
           }
           if ( $host ~ (xml\.my|mailsputnik|maps)\.mail\.ru ) {
                           return 404;
           }
           if ( $host = onlineconfigservice.ubi.com ) {
                           return 404;
           }
           if ( $host = com-services.pandonetworks.com ) {
                           return 404;
           }
           if ( $host ~ ticno\.com ) {
                           return 404;
           }
           if ( $host ~ conduit ) {
                           return 404;
           }
           if ( $host ~ cbox\.ws ) {
                           return 404;
           }
           if ( $host ~ (pricelist|metrics)\.skype\.com ) {
                           return 404;
           }
           if ( $host = weather.service.msn.com ) {
                           return 404;
           }
           if ( $host = advstat.letitbit.net ) {
                           return 404;
           }
           if ( $host = skymonk.net ) {
                           return 404;
           }
           if ( $host ~ counter ) {
                           return 404;
           }
           if ( $request_uri ~* (update|feed|announce|rss|xml|json|oauth) ) {
                           return 404;
           }
           if ( $request_uri ~* (toolbar|suggest) ) {
                           return 404;
           }
           if ( $request_filename ~ \.(ico|gif|jpg|png) ) {
                           return 404;
           }
           if ( $request_filename ~ \.(css|xml|js|swf|flv) ) {
                           return 404;
           }
           if ( $request_filename ~ \.(crl|txt|cab|msi|jar) ) {
                           return 404;
           }

Share this post


Link to post
Share on other sites

interface Virtual-Template1
...
ip policy route-map blocked-users-rm
...

access-list 110 deny   ip any host BILLING-HOST
access-list 110 deny   ip any host SITE-HOST
access-list 110 permit tcp 10.0.10.0 0.0.1.255 any eq www

route-map blocked-users-rm permit 10
match ip address 110
set ip next-hop 10.0.0.3

wccp c ACL + oops разрулят это в автоматическом режиме. Приятное то, что на проксе сможете именами хостов сказать куда можно ходить, а куда нельзя.

 

Для страницы-заглушки можно сделать как-нить так:

server {
   listen      80 default;
   server_name localhost;

   root       /path/to/error/page/docroot;
   access_log /dev/null;
   error_log  /dev/null;

   add_header Cache-Control no-store;
   add_header Last-Modified "Thu, 01 Jan 1970 00:00:01 GMT";
   expires    epoch;

   location / {
       index index.html;

       error_page 400 401 403 404 500 501 502 503 504 = @rewrite;
   }

   location @rewrite {
       rewrite ^.*$ /index.html break;
   }
}

Share this post


Link to post
Share on other sites

Всем добрый день. У меня точно такая же задача. При отрицательном балансе, выдаётся ip сети 172.17.0.0/16

..
interface Virtual-Template1 
ip policy route-map blocked
...

access-list 101 permit ip 172.17.0.0 0.0.255.255 any

Route-map blocked permit 5
match ip address 101
set ip next-hop 172.17.0.100

 

 

На серваке поднят апач со строничкой index.html.Но после получения ip из данной сети, он не переходит на него. Что я сделал не так?

Edited by letnab

Share this post


Link to post
Share on other sites

Отлично, вы подменяете нексхоп, но сервер-то не готов к такому трафику. На самом сервере нужно сделать iptables ... DNAT/REDIRECT(самый простой способ)

Share this post


Link to post
Share on other sites

Отлично, вы подменяете нексхоп, но сервер-то не готов к такому трафику. На самом сервере нужно сделать iptables ... DNAT/REDIRECT(самый простой способ)

Не поможете примером, или где про это можно почитать?

Share this post


Link to post
Share on other sites

это делается примерно так:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 80

 

или

 

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-port 10.1.1.1:80

 

где eth0 - интерфейс куда приходит трафик с вашей cisco, 10.1.1.1 принадлежит самому веб-серверу (вешается на лупбек или ещё куда-нибудь)

Share this post


Link to post
Share on other sites

Спасибо большое. Попробую. Отпишу по результатам.

Share this post


Link to post
Share on other sites

Что то пока не получается. Делаю tracert первый хоп стоит адрес который висит на interface Loopback0, дальше ни одного хопа... Что не так?

Share this post


Link to post
Share on other sites

Некстхоп там зачем?

 

Если должникам выдается ип из пула 172.17.0.0/16, тогда

 

iptables -t nat -A PREROUTING -s 172.17.0.0/16 -p tcp -j DNAT --to-destination 10.10.10.10:80

Где 10.10.10.10 - айпишник сервака со страничкой index.html.

 

В конфиге веб-сервера - реврайт отовсюду на index.html, либо ErrorDocument 404 /index.html

Share this post


Link to post
Share on other sites

Некстхоп там зачем?

 

Если должникам выдается ип из пула 172.17.0.0/16, тогда

 

iptables -t nat -A PREROUTING -s 172.17.0.0/16 -p tcp -j DNAT --to-destination 10.10.10.10:80

Где 10.10.10.10 - айпишник сервака со страничкой index.html.

 

В конфиге веб-сервера - реврайт отовсюду на index.html, либо ErrorDocument 404 /index.html

Я понимаю, а где это тогда реализовать? На каком сервере?

Я смотрел в сторону DNS. стоит bind. Но как?!

Share this post


Link to post
Share on other sites

Некстхоп там зачем?

 

Если должникам выдается ип из пула 172.17.0.0/16, тогда

 

iptables -t nat -A PREROUTING -s 172.17.0.0/16 -p tcp -j DNAT --to-destination 10.10.10.10:80

Где 10.10.10.10 - айпишник сервака со страничкой index.html.

 

В конфиге веб-сервера - реврайт отовсюду на index.html, либо ErrorDocument 404 /index.html

Я понимаю, а где это тогда реализовать? На каком сервере?

Я смотрел в сторону DNS. стоит bind. Но как?!

На роутере своем. Ессно, команда для ната будет другая, если у вас не софтроутер, а железка.

Share this post


Link to post
Share on other sites

Некстхоп там зачем?

 

Если должникам выдается ип из пула 172.17.0.0/16, тогда

 

iptables -t nat -A PREROUTING -s 172.17.0.0/16 -p tcp -j DNAT --to-destination 10.10.10.10:80

Где 10.10.10.10 - айпишник сервака со страничкой index.html.

 

В конфиге веб-сервера - реврайт отовсюду на index.html, либо ErrorDocument 404 /index.html

Я понимаю, а где это тогда реализовать? На каком сервере?

Я смотрел в сторону DNS. стоит bind. Но как?!

На роутере своем. Ессно, команда для ната будет другая, если у вас не софтроутер, а железка.

у меня cisco стоит как концентратор. По мимо этого на чём можно сделать?

Share this post


Link to post
Share on other sites

Вопрос по поводу серого пула айпи для так называемой гостевой сети, необходмо выдавать в IPoE сети не зарегистрированным абонентам. Сетки разделены на сегменты с vlan per switch. Как советуете поделить сети для гостевых пулов ? Адреса взяли из нового rfc6598 100.64.0.0/10. Выделить общий гостевой пул например 100.1.0.0/16 для всех не привязанных юзеров или лучше для каждого VLAN свою сеть (100.1.0.0/24, 100.1.1.0/24, 100.1.2.0/24) чтобы саппорт знал откуда звонит юзер по его ip адресу? И дальше уже что то типа

 

fwd 127.0.0.1,8080 tcp from 100.1.0.0/24, 100.1.1.0/24, 100.1.2.0/24 to any dst-port 80,443 

Edited by hsvt

Share this post


Link to post
Share on other sites

Чего-то не получается. Разве 100.1.0.0/16 входит в 100.64.0.0/10?

Share this post


Link to post
Share on other sites

Чего-то не получается. Разве 100.1.0.0/16 входит в 100.64.0.0/10?

 

Смысл не в этом, наверное не правильно выразился, я написал в общем, что за адресное пространство была взята сеть из 100.64/10, а конкретно из неё /15 уже для NAT. Вопрос именно в том как лучше выделить теперь сети\сеть для не авторизованных клиентов.

Edited by hsvt

Share this post


Link to post
Share on other sites
Вопрос именно в том как лучше выделить теперь сети\сеть для не авторизованных клиентов.

 

Ну можно приватные сетки выбрать для не авторизованных.

Share this post


Link to post
Share on other sites
Вопрос именно в том как лучше выделить теперь сети\сеть для не авторизованных клиентов.

 

Ну можно приватные сетки выбрать для не авторизованных.

 

Да, согласен. Я про это и спрашиваю какие сетки лучше взять для не авторизованных и как их поделить. По сегментно /24 или общий /16 ?

Share this post


Link to post
Share on other sites
Да, согласен. Я про это и спрашиваю какие сетки лучше взять для не авторизованных и как их поделить. По сегментно /24 или общий /16 ?

 

Ну, так это уже как удобнее. Можно и 10.0.0.0/8 попилить по /24. Просто, ежели не авторизованных ожидается относительно не очень много, то и делать большие сети нет особого смысла.

 

PS Я бы тем, у кого нет авторизации, вообще раздавал бы ipv6. Заодно и тренинг хороший. :)

Share this post


Link to post
Share on other sites

PBR, роутить эту подсеть на какой-нибудь сервер (можно в виртуалке), там -j REDIRECT на локальный nginx, который отдает Temporary Redirect. Таким образом обходится cache poisoning браузера юзера.

Скажите, а проявление этого всего - долгое открытие страниц?

 

Сейчас так : $IPTABLES -m set -t nat -A PREROUTING -p TCP --dport 80 --match-set setdisallow src -j DNAT --to-destination 192.168.1.1:80

на 192.168.1.1 крутится lighttpd.

 

Для 80 порта наблюдаю иногда подтормаживания и не пойму причину.

Edited by mrsaygo

Share this post


Link to post
Share on other sites

В связи с постепенным переходом на https, как в таком случае реализовать перенаправление?

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