Jump to content

Редирект должников на Mikrotik


Recommended Posts

Добрый день  знатоки. Вопрос к использующим Mikrotik в качестве NAS.

Мучаюсь уже не первый день, но воз и ныне там.

 

Имеется LAN на NAS Mikrotik и Ubilling FreeBSD подключенным в локалку.

На сервере биллинга, кроме собственно биллинга, поднят DHCP.

 

Проблема: не получается завернуть должников в кабинет пользователя.

 

Пробовал несколько вариантов:

  1. Маркировка трафика должников в PREROUTING (адрес-лист DENY и dst-port 80) и последующий дефолтный роутинг промаркированных пакетов на IP сервера биллинга. Но tcpdump даже не показывает, что нужные пакеты поступают на вход.
  2. DSTNAT с заменой адреса назначения на IP сервера. Пакеты на сетевой интерфейс сервера поступают и уходят к должнику (tcpdump), ipfw их заворачивает на 127.0.0.1:80 (пробовал и без заворачивания), но кабинет пользователя у должника не отображается.
chain=dstnat action=dst-nat to-addresses=10.12.255.254 to-ports=80 protocol=tcp src-address=10.12.0.0/16 src-address-list=DENY dst-port=80
chain=forward action=accept src-address=10.12.0.0/16 dst-address=10.12.255.254
chain=forward action=add-src-to-address-list src-address=10.12.0.0/16 src-address-list=!ALLOW address-list=DENY address-list-timeout=30s in-interface=bridge1 out-interface=ether1-gateway

Что я не учел? Кто-то такую функцию делал у себя в сети? Как редирект работает у вас?

 

 

Link to post
Share on other sites


/ip firewall filter
add chain=forward comment="acp> ip.drop / [dns]" dst-port=53 protocol=udp \
    src-address-list=ip.drop
add action=drop chain=forward comment="dr> ip.drop / !ip.allow" \
    dst-address-list=!ip.allow src-address-list=ip.drop
/ip firewall nat
add action=dst-nat chain=dstnat comment="dnat> ip.drop #10.12.255.254:80" dst-address-list=\
    !ip.allow dst-port=80,8080 protocol=tcp src-address-list=ip.drop \
    to-addresses=10.12.255.254 to-ports=80
add action=masquerade chain=srcnat comment="mas> ip.drop" src-address-list=ip.drop
/ip firewall address-list
add address=10.12.255.254 disabled=no list=ip.allow

 

Edited by SavPasha
Link to post
Share on other sites

SavPasha, спасибо! попробую еще так.

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

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

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

Правила такие (я не добавлял в этот список остальные правила указанные в wiki ubilling)

/ip route
add disabled=no distance=1 gateway=10.12.255.254 routing-mark=http
/ip firewall nat
chain=dstnat action=accept protocol=tcp src-address=10.12.0.0/16 src-address-list=DENY in-interface=bridge1 dst-port=80
после правил разрешающих хождение абонентов из списка ALLOW
/ip firewall filter
chain=forward action=add-src-to-address-list src-address=10.12.0.0/16 src-address-list=!ALLOW address-list=DENY \
address-list-timeout=30s in-interface=bridge1 out-interface=ether1-gateway
chain=forward action=accept src-address=10.12.0.0/16 src-address-list=DENY
/ip firewall mangle
chain=prerouting action=mark-routing new-routing-mark=http passthrough=no protocol=tcp \
src-address=10.12.0.0/16 src-address-list=DENY dst-port=80
Edited by mac
Link to post
Share on other sites
  On 12/22/2014 at 3:16 PM, mac said:

 

SavPasha, спасибо! попробую еще так.

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

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

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

Правила такие (я не добавлял в этот список остальные правила указанные в wiki ubilling)

/ip route
add disabled=no distance=1 gateway=10.12.255.254 routing-mark=http
/ip firewall nat
chain=dstnat action=accept protocol=tcp src-address=10.12.0.0/16 src-address-list=DENY in-interface=bridge1 dst-port=80
после правил разрешающих хождение абонентов из списка ALLOW
/ip firewall filter
chain=forward action=add-src-to-address-list src-address=10.12.0.0/16 src-address-list=!ALLOW address-list=DENY \
address-list-timeout=30s in-interface=bridge1 out-interface=ether1-gateway
chain=forward action=accept src-address=10.12.0.0/16 src-address-list=DENY
/ip firewall mangle
chain=prerouting action=mark-routing new-routing-mark=http passthrough=no protocol=tcp \
src-address=10.12.0.0/16 src-address-list=DENY dst-port=80

Скорее всего браузер кэширует вашу страницу заглушку.

Чтобы убедиться, попробуйте сбросить кэш браузера, или пробуйте другим браузером на сайты с которого был редирект.

Link to post
Share on other sites

 

 

  On 12/22/2014 at 3:26 PM, Ромка said:
Скорее всего браузер кэширует вашу страницу заглушку.

Тоже так сначала подумал. ОС Xubuntu, в Firefox кэш очистил. Глюк в том, что сайты не пинговались тоже. Traceroute на сайт не проходил даже до шлюза (mikrotik).

Link to post
Share on other sites

ну можете попробовать так , работает без проблем:

/ip firewall filter
add chain=forward src-address-list=ALLOW
add chain=forward dst-address-list=ALLOW
add action=add-src-to-address-list address-list=DISCON address-list-timeout=\
    30s chain=forward in-interface=bridge1 src-address-list=!ALLOW
add chain=forward dst-address-list=LAN src-address-list=DISCON
add chain=forward dst-address-list=DISCON src-address-list=LAN
add action=drop chain=forward comment="DROP FORWARD"
/ip firewall nat
add action=src-nat chain=srcnat comment=NAT dst-address-list=!LAN \
    out-interface=server2 src-address-list=ALLOW to-addresses=xx.x.x.x
add action=dst-nat chain=dstnat comment=NAT dst-port=80 protocol=tcp \
    src-address-list=DISCON to-addresses=10.10.10.10 to-ports=84

в списке LAN мои локальные префиксы.

Link to post
Share on other sites
  On 12/23/2014 at 9:01 AM, DemonidZe said:
ну можете попробовать так , работает без проблем:

Спасибо за ответ. Попробовал. Может какие-то не те свои параметры прописал в правила микротика, но проблема в следующем:

2787    101.379988000    10.12.0.254    81.19.70.3    TCP    74    [TCP Retransmission] 50492 > http [SYN] Seq=0 Win=29200 Len=0
2788    101.380372000    10.12.255.254    10.12.0.254    TCP    74    [TCP Previous segment not captured] http > 50492 [SYN, ACK] Seq=1212807420 Ack=1 Win=65535 Len=0
2789    101.380446000    10.12.0.254    10.12.255.254    TCP    54    50492 > http [RST] Seq=1 Win=0 Len=0

ИМХО, я думаю что запрос от юзера (10.12.0.254) на установку соединения идет на сайт 81.19.70.3, но подтверждение приходит от сервера биллинга (10.12.255.254), после чего соединение сбрасывается.

Edited by mac
Link to post
Share on other sites
  On 12/23/2014 at 3:48 PM, mac said:

 

  On 12/23/2014 at 9:01 AM, DemonidZe said:
ну можете попробовать так , работает без проблем:

Спасибо за ответ. Попробовал. Может какие-то не те свои параметры прописал в правила микротика, но проблема в следующем:

2787    101.379988000    10.12.0.254    81.19.70.3    TCP    74    [TCP Retransmission] 50492 > http [SYN] Seq=0 Win=29200 Len=0
2788    101.380372000    10.12.255.254    10.12.0.254    TCP    74    [TCP Previous segment not captured] http > 50492 [SYN, ACK] Seq=1212807420 Ack=1 Win=65535 Len=0
2789    101.380446000    10.12.0.254    10.12.255.254    TCP    54    50492 > http [RST] Seq=1 Win=0 Len=0

ИМХО, я думаю что запрос от юзера (10.12.0.254) на установку соединения идет на сайт 81.19.70.3, но подтверждение приходит от сервера биллинга (10.12.255.254), после чего соединение сбрасывается.

 

а с моршрутизацыей у вас все в порядке ? может сервак не знает где у вас 10,12,0,0/24 я так понимаю перенаправленные абоны уже на него без ната идут, воответственно ваш сервер должен знать куда ответить на 10,12,0,0/24 и у вас что реально /16 сеть на абонах ?извращенец вы батенька:)

Edited by DemonidZe
Link to post
Share on other sites

 

 

  On 12/24/2014 at 6:45 AM, DemonidZe said:
у вас что реально /16 сеть на абонах ?извращенец вы батенька

А если вдруг пользователей станет 256, тогда альяс городить для новой сети или маску расширять? Ну можно конечно /22 взять, но тогда есть риск где-то перепутать /24 и /22. А с /16 - не спутаешь )

Вообще это пока стенд на столе и под столом)

По проблеме. Сервер подключен к бриджу микротика (LAN), туда же включен и комп пользователя. Все находятся в одной 10.12.0.0/16. Все хосты знают маршрут в свою сеть и шлюз. Я так понимаю, если бы сервер был шлюзом, то указанной в моем предыдущем посте проблемы бы не было. Я так сразу и пытался сделать, но не получилось и начал ковырять роутинг маркированных, но есть какой-то глюк. Он устраняется - нужно выкл-вкл сетевой интерфейс и переполучить ip (ну или перегрузить комп). Как работает совет от SavPasha пока не разобирался.

Link to post
Share on other sites
  On 12/24/2014 at 9:17 AM, mac said:

 

  On 12/24/2014 at 6:45 AM, DemonidZe said:
у вас что реально /16 сеть на абонах ?извращенец вы батенька

А если вдруг пользователей станет 256, тогда альяс городить для новой сети или маску расширять? Ну можно конечно /22 взять, но тогда есть риск где-то перепутать /24 и /22. А с /16 - не спутаешь )

Вообще это пока стенд на столе и под столом)

По проблеме. Сервер подключен к бриджу микротика (LAN), туда же включен и комп пользователя. Все находятся в одной 10.12.0.0/16. Все хосты знают маршрут в свою сеть и шлюз. Я так понимаю, если бы сервер был шлюзом, то указанной в моем предыдущем посте проблемы бы не было. Я так сразу и пытался сделать, но не получилось и начал ковырять роутинг маркированных, но есть какой-то глюк. Он устраняется - нужно выкл-вкл сетевой интерфейс и переполучить ip (ну или перегрузить комп). Как работает совет от SavPasha пока не разобира

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

Link to post
Share on other sites

Микротик - шлюз.

фаер микротика:

 

  Reveal hidden contents

 

фаер сервера биллинга (FreeBSD 9.3 x64, таблица 101 - защита от брутфорс, табл 2 - сеть абонентов). пробовал и без 404 правила.

uhw работает таким образом, что, в качестве дефолтного шлюза, dhcp сервера выдает свой ip

виртуалхост биллинга на 81 порту

 

  Reveal hidden contents

 

Edited by mac
Link to post
Share on other sites
  • 4 weeks later...

Вобщем, мой вариант с маркировкой пакетов должников и последующей маршрутизацией оказался работающим без проблем на компе с windows 7 :blink: .

Может и другие варианты заработали бы, но пока не стал пробовать.
Попутно всплыл другой вопрос. Как уговорить биллинг заполнять таблицу должников? :)

Поскольку local NAS на сервере нет, соответственно table 47 не заполняется адресами должников

и редиректятся в кабинет пользователя все, кто не в таблице ALLOW, а значит и те, кто, назначил себе левый статический адрес.

Естественно в браузере у таких будет ошибка, если абонента с таким ip адресом нет.
 

Link to post
Share on other sites
  On 1/21/2015 at 10:18 AM, mac said:

...Как уговорить биллинг заполнять таблицу должников? ...

 

 

Я модифицировал себе, для включения абонента на двух серверах, для этого правил файлик 

/etc/stargazer/system/executer/mikrotik.drv

Если надо будет, на досуге могу помочь, если нет, то можете сюда выложить результат :-)

А то меня такие-же грабли скоро будут ждать :-)

 

PS: А кто знает, можно ли передать CF старгазеру. Ну что бы передать допустим особый адреслист для микротика?

Edited by SoulRoot
Link to post
Share on other sites

 

 

  On 1/21/2015 at 3:25 PM, SoulRoot said:
PS: А кто знает, можно ли передать CF старгазеру. Ну что бы передать допустим особый адреслист для микротика?

/etc/stargazer/getCF [login] [cfID]

Link to post
Share on other sites
  On 1/21/2015 at 3:49 PM, nightfly said:

 

  On 1/21/2015 at 3:25 PM, SoulRoot said:
PS: А кто знает, можно ли передать CF старгазеру. Ну что бы передать допустим особый адреслист для микротика?

/etc/stargazer/getCF [login] [cfID]

 

судя по этому, оно затёрлося где-то здеся:

# rm /etc/stargazer/Get* && rm /etc/stargazer/On* && rm /etc/stargazer/fullArp.php && rm /etc/stargazer/config
Link to post
Share on other sites
  On 1/21/2015 at 3:25 PM, SoulRoot said:

 

  On 1/21/2015 at 10:18 AM, mac said:

...Как уговорить биллинг заполнять таблицу должников? ..

 

Я модифицировал себе, для включения абонента на двух серверах, для этого правил файлик 

/etc/stargazer/system/executer/mikrotik.drv

Я думал править вот эти php скрипты:

/etc/stargazer/OnConnect
/etc/stargazer/OnDisconnect

посмотрел код и дошло :wacko: :

при адаптации под микротик table 47 заполняется только скриптом debtors.php  !? я правильно понял? локальный НАС таблицой 47 уже не управляет?

Edited by mac
Link to post
Share on other sites

сделал исправления в скриптах:

 

/etc/stargazer/OnDisconnect

добавить строчку в блок // User's IP чтобы выглядел так:

        // User's IP:
        if ( isset($argv[2]) ) {
            define('IP', $argv[2]);
            shell_exec("/sbin/ipfw -q table 47 add ".$argv[2]);
        } else define('IP', NULL);

/etc/stargazer/OnСonnect

добавить строчку в блок // User's IP чтобы выглядел так:

        // User's IP:
        if ( isset($argv[2]) ) {
            define('IP', $argv[2]);
            shell_exec("/sbin/ipfw -q table 47 delete ".$argv[2]);
        } else define('IP', NULL);

Изменил баланс пользователя в минус - добавлятся в табл 47, изменил в 0 - удаляется из таблицы. Работает!

Но есть вопрос: если при работе с табл 47 произойдет ошибка, вся остальная часть скрипта On* отработает нормально?

Edited by mac
Link to post
Share on other sites
  On 1/24/2015 at 10:44 AM, mac said:
сделал исправления в скриптах:

 

/etc/stargazer/OnDisconnect

добавить строчку в блок // User's IP чтобы выглядел так:

 

        // User's IP:

        if ( isset($argv[2]) ) {

            define('IP', $argv[2]);

            shell_exec("/sbin/ipfw -q table 47 add ".$argv[2]);

        } else define('IP', NULL);

/etc/stargazer/OnСonnect

добавить строчку в блок // User's IP чтобы выглядел так:

 

        // User's IP:

        if ( isset($argv[2]) ) {

            define('IP', $argv[2]);

            shell_exec("/sbin/ipfw -q table 47 delete ".$argv[2]);

        } else define('IP', NULL);

Изменил баланс пользователя в минус - добавлятся в табл 47, изменил в 0 - удаляется из таблицы. Работает!

Но есть вопрос: если при работе с табл 47 произойдет ошибка, вся остальная часть скрипта On* отработает нормально?

А что относительно Mikrotik? Или я темы попутал?

Link to post
Share on other sites

 

 

  On 1/23/2015 at 3:26 PM, mac said:
посмотрел код и дошло :wacko: : при адаптации под микротик table 47 заполняется только скриптом debtors.php !? я правильно понял? локальный НАС таблицой 47 уже не управляет?

фух! управляет через /etc/stargazer/system/executer/rscriptd.drv

Link to post
Share on other sites

 

 

  On 1/24/2015 at 12:08 PM, SoulRoot said:
А что относительно Mikrotik? Или я темы попутал?

А что микротик? В микротике все работает

Link to post
Share on other sites
  On 1/26/2015 at 8:35 AM, mac said:
А что относительно Mikrotik? Или я темы попутал?

А что микротик? В микротике все работает

Ну так таб. 47 вроде бы локальный нас, а редирект надо же на микротике сделать. Или я не понял как оно у вас настроено...

Link to post
Share on other sites

Так в теме три варианта редиректов. Просто микротик перенаправляет все адреса, кроме разрешенных.

А значит и те левые, что назначены пользователями самостоятельно статиком. Эти редиректы попадут на сервер, ipfw их перенаправить в кабинет пользователя. А такого пользователя нет.

Если табл 47 заполнена правильно, то ipfw будет редиректить в кабинет пользователя только табл 47, а не всех подряд.

Возможно вам это вообще не нужно если у вас IP source guard + dhcp snooping binding на абонентских портах, статич адреса свич не пропустит, значит вам табл 47 не нужна.

Edited by mac
Link to post
Share on other sites

Ну я настроил таким образом(осталось обучить этому Ubilling):

На микротике есть некий адресслист, назовём его Упс, и адреслист, к примеру, Окей.

 

Так вот те кто в листу Упс хотят получить доступ не к Окей, идут в лес за грибами.

Если они хотят получить не в Окей что-то по 80 порту, то они идут куда мне надо в зоне Окей.

Ну как-то так на пальцах.

 

В итоге сам микротик делает заворот трафика куда надо.

 

Позже ещё обучу его заворачивать 443...

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
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By x-net
      Продам вживаний Mikrotik CRS326-24S+2Q+ : 24 порти 10Г, 2 порти 40Г, 2 блоки живлення. Прошу 15 тис.
    • By Игорь2025
      Требуется ремонт  внешней точки доступа Mikrotik
      Точка доступа RBwAPG-5HacD2HnD
    • By camchatix
      Добрий день,
      створили запасний NAS із зайвою хромосомою, все працює але коли треба вбити сесію користувача - то у списку NAS серверів лише один (той що основний)
      переназначити швидкість теж не можу
      я так розумію пакети CoA Disconnect, CoA connect, PoD - ідуть на IP адресу старого NAS ?
    • By fitros
      Вітаю всіх!
      Професійно займаюсь ремонтом зварювальних апаратів, сколювачів, обладнання MikroTik та Ubiquiti. Маю великий досвід і ґрунтовні знання в ремонті та обслуговуванні вказаного обладнання. Звертайтесь із запитаннями — завжди радий допомогти!
       
       
    • By zababaha
      Всем привет.
      В один прекрасный день отвалился MikroTik RB4011GS+RM. При включении загорается индикация питания и всё. 
      Попытки сбросить до заводских настроек, играться с netisntall в надежде перезалить в него прошивку никак не помогли. Поведение не меняется.
      Пробежался по интернетам в попытках найти авторизованный сервис для диагностики и, если живой, то ремонта - не помогли.
      Несколько лет назад покупал его на ntema, позвонил им, но ребята сказали, что негарантийным ремонтом не занимаются.
       
      Подскажите, плиз, кого-нибудь, кто возьмётся за диагностику и ремонт, если он ремонтопригоден? Цацка не копеечная, сразу в утиль отправлять будет грустно.
       
      З.Ы.: За 15 лет дружбы с тиками у меня этот первый, кто взял - и сдох на ровном месте(
×
×
  • Create New...