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

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

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

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


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

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

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


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

сделал, почти заработало, сможете поделиться строчкой из конфига 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 (((

Изменено пользователем mousus

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


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

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

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


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

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

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

 

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  ;
       }

Изменено пользователем mousus

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


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

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;
           }

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


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

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;
   }
}

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


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

Всем добрый день. У меня точно такая же задача. При отрицательном балансе, выдаётся 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 из данной сети, он не переходит на него. Что я сделал не так?

Изменено пользователем letnab

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


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

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

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


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

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

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

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


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

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

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 принадлежит самому веб-серверу (вешается на лупбек или ещё куда-нибудь)

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


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

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

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


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

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

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


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

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

 

Если должникам выдается ип из пула 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

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


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

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

 

Если должникам выдается ип из пула 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. Но как?!

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


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

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

 

Если должникам выдается ип из пула 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. Но как?!

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

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


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

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

 

Если должникам выдается ип из пула 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 стоит как концентратор. По мимо этого на чём можно сделать?

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


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

Вопрос по поводу серого пула айпи для так называемой гостевой сети, необходмо выдавать в 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 

Изменено пользователем hsvt

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


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

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

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


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

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

 

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

Изменено пользователем hsvt

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


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

Вопрос именно в том как лучше выделить теперь сети\сеть для не авторизованных клиентов.

 

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

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


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

Вопрос именно в том как лучше выделить теперь сети\сеть для не авторизованных клиентов.

 

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

 

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

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


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

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

 

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

 

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

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


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

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 порта наблюдаю иногда подтормаживания и не пойму причину.

Изменено пользователем mrsaygo

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


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

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

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


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

Join the conversation

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

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

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

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

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

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

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