Как в Firwall Filter сделать конструкцию If-else последовально несколько раз?

Выкладываем здесь готовые конфигурации под определенные типовые задачи
tkachen
Сообщения: 7
Зарегистрирован: 19 сен 2016, 20:10

Как в Firrwall Filter сделать конструкцию If-else последовально несколько раз?
Помогите сделать набор правил в Firrwall Filter для получения следующего результата:
1) К роутеру подключился хост.
Проверяем его адрес на принадлежность к Address-List 1, если "да" то пропускаем на acept, если "нет", то
2) Проверяем его на принадлежность к Address-List 2 если "да" то пропускаем на acept, если нет, то
2) Проверяем его на принадлежность к Address-List 3 если "да" то пропускаем на acept, если нет, то
.... хотя бы три раза, после проверки на принадлежность к Address-List n если "да" то пропускаем на acept, если нет,
то записываем его в Address-List Error на 3 минуты.
Дальше остальные штатные правила.
Всю голову себе измучил- не могу сообразить как такую конструкцию из правил соорудить? Помогите коллеги?


KARaS'b
Сообщения: 1199
Зарегистрирован: 29 сен 2011, 09:16

Может ошибаюсь с идеей, но правила в адрес листе работают последовательно, соответственно если первое правило не отработало (не разрешило! это важно), то пошла проверка на следующие правила ниже, пока не наткнетесь на запрещающее правило. Получается что вы просто делаете свои правила и все, они сами по очереди будут отрабатывать, так как они разрешающие. Но вот как с помощью фаервола что-то куда-то записать не знаю и немного не понял, в каждом правиле "если нет" должно записывать что то куда то, или же после проверки всех правил по очереди должна произойти запись?


Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Есть ли смысл в подобном нагромождении? Просто несколько адрес-листов в набором правил доступа не прокатят? Адреса в списках могут пересекаться...


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
tkachen
Сообщения: 7
Зарегистрирован: 19 сен 2016, 20:10

Спасибо за обмен мнениями. Вопрос уточню: Если написать например, 3 правила:
chain=forward action=accept protocol=tcp dst-address-list=tariff1 in-interface=bridgeInet100
chain=forward action=accept protocol=tcp dst-address-list=tariff2 in-interface=bridgeInet100
chain=forward action=accept protocol=tcp dst-address-list=tariff3 in-interface=bridgeInet100

Это пропустит в Интернет три группы абонентов, входящих в адрес-листы tariff1, tariff2, tariff3.
Теперь пишем такое правило, которое помещает в временный лист не вошедших эти листы абонентов, это чтобы их переправить например, на сайт-заглушку на 2 минуты:

chain=forward action=add-src-to-address-list protocol=tcp src-address-list=!tariff1 address-list=Zaglyshka
address-list-timeout=2m in-interface=bridgeInet100
А вот тут надо чтобы таких правил тоже было 3, потому что в написанном варианте сработает только оправка в Zaglyshka только тех, кто не в адрес-листе tariff1,
это значит что если ниже находятся абоненты с другими адрес листами, все пойдут в заглушку.
А надо чтобы туда пошли только те, кто НЕ tariff1, НЕ tariff2, НЕ tariff3 - а остальных фильтр должен пропустить на другие правила, что будут ниже.
Вот в чем вопрос!


KARaS'b
Сообщения: 1199
Зарегистрирован: 29 сен 2011, 09:16

Возможно бывалые меня закидают шапками, ибо костыль как мне кажется, но все же решение
Если вам не нужно именно 3 адрес листа "не прошедших" и вы смиритесь с одним, то - создаете 3 правила(в каждом по вашему списку разрешенных) которые занесут ваши адреса в 4й, например тоже временный список, дальше четвертым правилом вы разрешите этому четвертому списку пройти, а уже 5м правилом, все что не вошло в 4й временный список будет занесено в 5й список, который вы и отправите на заглушку.


tkachen
Сообщения: 7
Зарегистрирован: 19 сен 2016, 20:10

Не, идея не в том что нужно занести как угодно хосты не вошедшие в tariff1 -3 в черный список, а в том, чтобы кто из хостов не вошел в эти тарифы tariff1, tariff2, tariff3 - отправился в список-заглушку, а вошедшие в эти три списка могли проследовать в нижние правила, которые могут быть индивидуальные для этих хостов, скажем так:
Убираем эту конструкцию
chain=forward action=accept protocol=tcp dst-address-list=tariff1 in-interface=bridgeInet100
chain=forward action=accept protocol=tcp dst-address-list=tariff2 in-interface=bridgeInet100
chain=forward action=accept protocol=tcp dst-address-list=tariff3 in-interface=bridgeInet100

и оставляем только
chain=forward action=add-src-to-address-list protocol=tcp src-address-list=!tariff1 address-list=Zaglyshka
address-list-timeout=2m in-interface=bridgeInet100

Только таких нужно 3- tariff1, tariff2, tariff3, или больше чем три может быть.
Может быть есть какая то конструкция в фаерволе которая последовательно передает по условию от от 1 го правила до 3-го, как пока не проверит что хост не входит в три этих адрес-листа, только тогда выкинет клиента в заглушку. А если клиент-хост принадлежит хотя бы одному из этих - tariff1, tariff2, tariff3 листов, то он попалает не в заглушку а проследует на правила которые ниже по списку?


KARaS'b
Сообщения: 1199
Зарегистрирован: 29 сен 2011, 09:16

Писал же, правила отрабатывают друг за другом, если первое не влияет, то идет проверка на второе и т.д., пока какое-то не разрешит, или не запретит, или если вообще все не повлияло, то трафик просто пройдет.
На пальцах...
chain=forward action=add-src-to-address-list src-address-list=tariff1 address-list=tmptariff address-list-timeout=1m
chain=forward action=add-src-to-address-list src-address-list=tariff2 address-list=tmptariff address-list-timeout=1m
chain=forward action=add-src-to-address-list src-address-list=tariff3 address-list=tmptariff address-list-timeout=1m
chain=forward action=add-src-to-address-list src-address-list=!tmptariff address-list=Zaglyshka address-list-timeout=2m in-interface=bridgeInet100
Получается, что если после 4х правил ничего не повлияло, а ваши 3 адрес листа не изменились, мы просто дополнительно собрали их для проверки в четвертый лист и не прошедших эту проверку запихали в пятый лист, ваши клиенты из 3 листов пойдут дальше по списку, по остальным правилам которые у вас имеются.


tkachen
Сообщения: 7
Зарегистрирован: 19 сен 2016, 20:10

Должен возразить, тут в вашем примере нет ключевого знака- !
По идее, я хочу добиться от вам помощи в такой вот конструкции:
chain=forward action=add-src-to-address-list src-address-list=!tariff1 address-list=tmptariff address-list-timeout=1m
chain=forward action=add-src-to-address-list src-address-list=!tariff2 address-list=tmptariff address-list-timeout=1m
chain=forward action=add-src-to-address-list src-address-list=!tariff3 address-list=tmptariff address-list-timeout=1m
chain=forward action=add-src-to-address-list src-address-list=!tmptariff address-list=Zaglyshka address-list-timeout=2m in-interface=bridgeInet100

Но такая конструкция заклинит всех НЕ-tariff1 на первой записи, а мне надо чтобы логика была типа что я написал, но такая конструкция неработоспособна в таком решении. Вот и хочу чтобы посоветовали работоспособную конструкцию вместо этой.
Мне надо чтобы проходили ниже на другие правила только tariff1,tariff2,tariff3 а остальные в Заглушку на 1 минуту.


tkachen
Сообщения: 7
Зарегистрирован: 19 сен 2016, 20:10

Ту фишка в том, чтобы все, кто в tariff1 -3 так и остались в этих адрес-листах, потому что шейпер обрабатывает эти группы по соответсвующим - разным скоростным режимом. А перевести их потом в один общий лист- это нарушит логику других правил.


Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Да как вы не поймете, не перевести, а занести! Ваши старые списки как обрабатывались, так и будут обрабатываться. А новый список это просто костыль для создания последнего правила переадресации тех, кто не вошел в ваши списки.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Ответить