6 заметок с тегом

mikrotik

Два провайдера и распределение по каналам

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

На пример веб сервер, выведенный через NAT на IP адрес первого провайдера получает запрос, а вот вероятность того, что ответ пойдет по нужному каналу уже не 100%. Какой же он после этого веб сервер?

Решить эту проблему нам поможет механизм маркировки пакетов.

Таблица MANGLE предназначена для операций по классификации и маркировке пакетов и соединений, а также модификации заголовков пакетов. В частности нас интересует цепочка PREROUTING, которая позволяет маркировать пакет до маршрутизации.

Попробуем разобраться с веб сервером.

Допустим у нас настроен NAT 80 порта с внешнего IP 192.168.1.116 (ISP1, первый провайдер) на 80 порт веб сервера в локальной сети и необходимо гарантировать, что все ответы, которые буду идти от веб сервера попадали на шлюз первого провайдера.

Вот правило для таблицы NAT.

[mkt@MikroTik] > ip firewall nat add chain=dstnat dst-address=192.168.1.116
protocol=tcp dst-port=80 action=dst-nat to-addresses=192.168.0.2 to-ports=80
comment="NAT 80 port from ISP1 to local web server"

[mkt@MikroTik] > ip firewall nat print
Flags: X - disabled, I - invalid, D - dynamic
0   chain=srcnat action=masquerade out-interface=!LOCAL

1   ;;; NAT 80 port from ISP1 to local web server
chain=dstnat action=dst-nat to-addresses=192.168.0.2 to-ports=80
protocol=tcp dst-address=192.168.1.116 dst-port=80

Первым шагом создадим правило в таблице MANGLE.

[mkt@MikroTik] > ip firewall mangle add chain=prerouting  src-address=192.168.0.2
protocol=tcp src-port=80 action=mark-routing new-routing-mark=to-isp1

[mkt@MikroTik] > ip firewall mangle print
Flags: X - disabled, I - invalid, D - dynamic
0   chain=prerouting action=add-src-to-address-list protocol=tcp
address-list=test_list address-list-timeout=0s dst-port=23

1   chain=prerouting action=mark-routing new-routing-mark=to-isp1
passthrough=yes protocol=tcp src-address=192.168.0.2 src-port=80

Пакеты с локального адреса 192.168.0.2 с 80 порта буду маркироваться как to-isp1.

Вторым шагом добавим правило в таблицу маршрутизации.

[mkt@MikroTik] > ip route add gateway=192.168.1.249 routing-mark=to-isp1

[mkt@MikroTik] > ip route print      
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,
B - blackhole, U - unreachable, P - prohibit
#      DST-ADDRESS        PREF-SRC        GATEWAY            DISTANCE
0 A S  0.0.0.0/0                          192.168.1.249 r... 1
1 A S  0.0.0.0/0                          192.168.1.249 r... 1
                                        192.168.1.249 r...
                                        192.168.222.1 r...
2 ADC  192.168.0.0/24     192.168.0.1     LOCAL              0
3 ADC  192.168.1.0/24     192.168.1.116   ISP1               0
4 ADC  192.168.222.0/24   192.168.222.100 ISP2               0

Все что приходит с маркером to-isp1 отправляется на шлюз первого провайдера.

Теперь усложним ситуацию, допустим второй провайдер предоставят на выгодных условиях большую локальную сеть по всему городу и через эту сеть объединены все 10 филиалов вашей фирмы. Все филиалы и офис пользуются тем же сайтом, но какой смысл ходить на него через первого провайдера, когда можно настроить доступ к нему практически локально.

В первую очередь добавляем правило в таблицу NAT, по которому все запросы, пришедшие на внешний IP адрес, который предоставляет 2-ой провайдер, на 80 порт будут переадресовываться на 80 порт локального веб сервера.

[mkt@MikroTik] > ip firewall nat add chain=dstnat dst-address=192.168.222.100
protocol=tcp dst-port=80 action=dst-nat to-addresses=192.168.0.2 to-ports=80
comment="NAT 80 port from ISP2 to local web server"

[mkt@MikroTik] > ip firewall nat print
Flags: X - disabled, I - invalid, D - dynamic
0   chain=srcnat action=masquerade out-interface=!LOCAL

1   ;;; NAT 80 port from ISP1 to local web server
chain=dstnat action=dst-nat to-addresses=192.168.0.2 to-ports=80
protocol=tcp dst-address=192.168.1.116 dst-port=80

2   ;;; NAT 80 port from ISP2 to local web server
chain=dstnat action=dst-nat to-addresses=192.168.0.2 to-ports=80
protocol=tcp dst-address=192.168.222.100 dst-port=80

Следующим шагом добавим в таблицу MANGLE еще одно правило:

[mkt@MikroTik] > ip firewall mangle add chain=prerouting src-address=192.168.0.2
protocol=tcp src-port=80 dst-address=192.168.222.0/24 action=mark-routing
new-routing-mark=to-isp2

[mkt@MikroTik] > ip firewall mangle print
Flags: X - disabled, I - invalid, D - dynamic
0   chain=prerouting action=add-src-to-address-list protocol=tcp
address-list=test_list address-list-timeout=0s dst-port=23

1   chain=prerouting action=mark-routing new-routing-mark=to-isp2
passthrough=yes protocol=tcp src-address=192.168.0.2
dst-address=192.168.222.0/24 src-port=80

2   chain=prerouting action=mark-routing new-routing-mark=to-isp1
passthrough=yes protocol=tcp src-address=192.168.0.2 src-port=80

Пакеты с локального адреса 192.168.0.2 с 80 порта буду маркироваться как to-isp2 если они предназначены для подсети второго провайдера.

Ну и в заключении правило в таблице маршрутизации:

[mkt@MikroTik] > ip route add gateway=192.168.222.1 routing-mark=to-isp2
                                                              
[mkt@MikroTik] > ip route print      
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,
B - blackhole, U - unreachable, P - prohibit
#      DST-ADDRESS        PREF-SRC        GATEWAY            DISTANCE
0 A S  0.0.0.0/0                          192.168.1.249 r... 1
1 A S  0.0.0.0/0                          192.168.222.1 r... 1
2 A S  0.0.0.0/0                          192.168.1.249 r... 1
                                        192.168.1.249 r...
                                        192.168.222.1 r...
3 ADC  192.168.0.0/24     192.168.0.1     LOCAL              0
4 ADC  192.168.1.0/24     192.168.1.116   ISP1               0
5 ADC  192.168.222.0/24   192.168.222.100 ISP2               0

Теперь на запросы, пришедшие со стороны первого провайдера, ответ пойдет на шлюз первого провайдера, а на запросы со стороны второго провайдера и из подсети второго провайдера ответ пойдет на шлюз второго провайдера.

(c) slagovskiy.blogspot.ru

 22   2014   mikrotik   network

Два провайдера и балансировка нагрузки

В последнее время ситуация, когда доступны несколько провайдеров не нова, MikroTik Router OS позволяет настроить доступ сразу по нескольким сетевым интерфейсам, а так же настроить балансировку нагрузки в зависимости от ограничений, которые выставляет провайдер.

Первым шагом настроим дополнительный интерфейс.
Инициализируем сам интерфейс.

[mkt@MikroTik] /interface> print
Flags: D - dynamic, X - disabled, R - running, S - slave
#     NAME                      TYPE             MTU
0  R  ether1                    ether            1500
1  R  ether2                    ether            1500
2  X  ether3                    ether            1500

[mkt@MikroTik] /interface> enable 2

[mkt@MikroTik] /interface> print
Flags: D - dynamic, X - disabled, R - running, S - slave
#     NAME                      TYPE             MTU
0  R  ether1                    ether            1500
1  R  ether2                    ether            1500
2  R  ether3                    ether            1500

Для удобства все же пора дать более понятные имена интерфейсам.

[mkt@MikroTik] /interface> set ether1 name="ISP1"

[mkt@MikroTik] /interface> set ether2 name="LOCAL"

[mkt@MikroTik] /interface> set ether3 name="ISP2"

[mkt@MikroTik] /interface> print
Flags: D - dynamic, X - disabled, R - running, S - slave
#     NAME                       TYPE             MTU
0  R  ISP1                       ether            1500
1  R  LOCAL                      ether            1500
2  R  ISP2                       ether            1500

Теперь назначим IP адрес новому интерфейсу.

[mkt@MikroTik] > ip address add address=192.168.222.100/24 interface=ISP2

[mkt@MikroTik] > ip address print
Flags: X - disabled, I - invalid, D - dynamic
#   ADDRESS            NETWORK         BROADCAST       INTERFACE
0   192.168.1.116/24   192.168.1.0     192.168.1.255   ISP1
1   192.168.0.1/24     192.168.0.0     192.168.0.255   LOCAL
2   192.168.222.100/24 192.168.222.0   192.168.222.255 ISP2

Настало время изменить маршрутизацию по умолчанию. Для начала допустим, что оба провайдера предоставляют одинаковую скорость доступа к сети Internet, значит настроим балансировку (это когда для исходящих соединений каналы чередуются), так что бы запросы распеределялись равномерно, т. е. 50/50. Прежде всего удалим старый шлюз по умолчанию.

[mkt@MikroTik] > ip route print
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,
B - blackhole, U - unreachable, P - prohibit
#      DST-ADDRESS        PREF-SRC        GATEWAY            DISTANCE
0 A S  0.0.0.0/0                          192.168.1.249 r... 1
1 ADC  192.168.0.0/24     192.168.0.1     LOCAL              0
2 ADC  192.168.1.0/24     192.168.1.116   ISP1               0
3 ADC  192.168.222.0/24   192.168.222.100 ISP2               0

[mkt@MikroTik] > ip route remove 0

[mkt@MikroTik] > ip route print
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,
B - blackhole, U - unreachable, P - prohibit
#      DST-ADDRESS        PREF-SRC        GATEWAY            DISTANCE
0 ADC  192.168.0.0/24     192.168.0.1     LOCAL              0
1 ADC  192.168.1.0/24     192.168.1.116   ISP1               0
2 ADC  192.168.222.0/24   192.168.222.100 ISP2               0

И добавим новый, точнее новые.

[mkt@MikroTik] > ip route add dst-address=0.0.0.0/0
gateway=192.168.1.249,192.168.222.1

[mkt@MikroTik] > ip route print                                    
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,
B - blackhole, U - unreachable, P - prohibit
#      DST-ADDRESS        PREF-SRC        GATEWAY            DISTANCE
0 A S  0.0.0.0/0                          192.168.1.249 r... 1
                                       192.168.222.1 r...
1 ADC  192.168.0.0/24     192.168.0.1     LOCAL              0
2 ADC  192.168.1.0/24     192.168.1.116   ISP1               0
3 ADC  192.168.222.0/24   192.168.222.100 ISP2               0

Предположим, что у первого провайдера скорость доступа в два раза выше чем у второго, тогда 2/3 исходящих запросов надо направить на первого, а оставшиеся 1/3 на второго.

[mkt@MikroTik] > ip route add dst-address=0.0.0.0/0
gateway=192.168.1.249,192.168.1.249,192.168.222.1

[mkt@MikroTik] > ip route print                                    
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,
B - blackhole, U - unreachable, P - prohibit
#      DST-ADDRESS        PREF-SRC        GATEWAY            DISTANCE
0 A S  0.0.0.0/0                          192.168.222.1 r... 1
                                       192.168.1.249 r...
                                       192.168.1.249 r...
1 ADC  192.168.0.0/24     192.168.0.1     LOCAL              0
2 ADC  192.168.1.0/24     192.168.1.116   ISP1               0
3 ADC  192.168.222.0/24   192.168.222.100 ISP2               0

Это простейший вариант настройки, при котором получаем выход в интернет с балансировкой нагрузки, но у такого подхода есть ряд недостатков, на пример не будет работать доступ через на NAT к локальному серверу (сервисы web, smtp, pop, которые были настроены ранее), но не такая большая проблема, но об этом в следующий раз.

(c) slagovskiy.blogspot.ru

 27   2014   mikrotik   network

Настройка Firewall на Mikrotik

Межсетевой экран, брендмауэр или Firewall выполняет фильтрацию пакетов являясь таким образом инструментом обеспечивающим безопасность и управление потоками данных, проходящими через маршрутизатор. Вместе с трансляцией сетевых адресов NAT файервол служит инструментом предотвращения несанкционированного проникновения в сеть компании. Возможно и наоборот применением фильтрации пакетов совместно с транспарентными Proxy серверами и NAT добиться запрета на использование определённых ресурсов и внешних сетей. Полезно Firewall использовать для ограничения доступа к заведомо незащищенным службам. Он может служить препятствием для внедрения ложных данных с помощью уязвимых служб злоумышленником. Также через него возможен контроль доступа к узлам сети, регистрирование попыток доступа как извне, так и из внутренней сети. Можно регламентировать порядок доступа к сети, осуществлять уведомление о подозрительной деятельности, попытках зондирования или атаки на узлы сети или сам экран.

Файервол Mikrotik RouterOS обладает мощными функциями и включает следующие возможности:
1 Фильтрация пакетов;
2 Фильтрация p2p протоколов
3 Классификация трафика по:
3.1 исходный MAC-адрес;
3.2 IP-адрес (сеть или список) и тип адреса (бродкаст, локальный, мультикаст, юникаст);
3.3 Порт или список портов;
3.4 IP-протокол;
3.5 Опции протокола (ICMP тип и другие коды, TCP флаги, IP опции и MSS);
3.6 Интерфейс, откуда получен пакет или куда он назначается;
3.7 Внутренний поток или маркированное подключение;
3.8 Байт ToS (DSCP);
3.9 Содержимое пакета;
3.10 Скорость получения пакетов и количество последовательностей;
3.11 Размер пакета;
3.12 Время получения пакета.

Основные принципы фильтрации

Оперирование файерволом осуществляется посредством правил. Правило определяет выражение, которое говорит роутеру что делать с индивидуальным IP-пакетом. Каждое правило состоит из двух частей: первое описывает параметры, по которым должны классифицироваться приходящие пакеты, второе отвечает за действие над пакетом. Правила, для лучшего управления, организованы в цепочки.
Устройство фильтра по-умолчанию имеет три цепочки: input, forward и output, которые отвечают за приходяший, перемещаемый внутри роутера и исходящий трафик соответственно. Пользователь может добавить новые цепочки, если это будет нужно.
Под эти цепочки трафик по-умолчанию не попадает. Для этого используется метод action=jump с параметром jump-target в одной из предустановленных цепочек.

Цепочки фильтра

Как говорилось раньше, правила фильтрации в файерволе сгруппированы в цепочки. Это позволяет пакету попавшему под некий критерий в одной цепочке переходить к следующему правилу и следующим цепочкам. К примеру пакетам с определённого адреса и порта нужно применить много правил. Конечно, эти правила можно перечислить в цепочке forward, однако правильнее будет создать для них отдельную цепочку, перебросить туда попавшие под условие пакеты и выполнить над ними нужные нам действия: /ip firewall filter add src-address=1.1.1.2/32 jump-target=«mychain». Это правило создаст новую цепочку mychain, в которую попадут все пакеты с адресом источника 1.1.1.2/32.

Три предустановленных цепочки, которые не могут быть удалены:
Input — применимо к пакетам, приходящим на маршрутизатор, у которых адрес получателя такой же, как и у интерфейса, на который этот пакет поступил. Пакеты, проходящие через маршрутизатор не попадают под действие правил цепочки input.
Forward — применимо к пакетам, проходящим через маршрутизатор;
Output — применимо к пакетам созданным маршратизатором, которые покидают его через один из интерфейсов. Пакеты, проходящие через маршрутизатор не попадают под действие цепочки output.
При попадании пакета в одну из цепочек, правила применяются от верхего к нижнему. Если пакет попадает под критерий одного из правил, над ним выполняется указанное в правиле действие и этот пакет не попадает больше под действие других правил из этой цепочки (исключение составляет только действие passthrough). Если пакет не попадает под действие ни одного из правил цепочки, к нему по умолчанию применяется действие Accept.

Описание параметров

action (accept | add-dst-to-address-list | add-src-to-address-list | drop | jump | log | passthrough | reject | return | tarpit; default: accept) — применяемое действие, если пакет совпал с правилом
accept — принять пакет. Не подразумевает каких-либо действий. Если пакет был принят, к нему больше не применяется никаких действий в цепочке.
add-dst-to-address-list — добавить адрес назначения пакета в address list , указанный в параметре address-list
add-src-to-address-list — добавить адрес источника пакета в address list , указанный в параметре address-list
drop — разрушить пакет (без посылки сообщения ICMP reject)
jump — перепрыгнуть в цепочку, указанную в параметре jump-target
log — каждое совпадение с этим действием добавит в системный лог сообщение
passthrough — игнорировать это правило и перейти к следующему
reject —отбросить этот пакет и постать сообщение ICMP reject
return — вернуть пакет в цепочку, из которой он был переброшен
tarpit — захватить и удерживать входящие TCP подключения (отвечать SYN/ACK на входящий TCP SYN пакет)
address-list (name) — указывает имя списка адресов, в которых хранятся IP-адреса из действий action=add-dst-to-address-list или action=add-src-to-address-list. Эти списки могут быть похже использованы в других правилах.
address-list-timeout (time; default: 00:00:00) — интервал времени, через который адреса будут удалены из списка, указанного в параметре address-list . Используется в сочетании с действиями add-dst-to-address-list или add-src-to-address-list .00:00:00 — означает оставить адреса в списке навсегда.
chain (forward | input | output | name) — указывает цепочку, в которую следует поместить правило. Разные типы трафика проходят через разные цепочки, поэтому будьте в курсе своего выбора, указывая то или иное значение этого параметра. Если указанное значение цепочки не совпадает ни с одним из уже существующих, система создаст новое правило с указанным именем.
comment (text) — комментарий описывает правило. В скриптах комментарии обычно служат для идентификации правил.
connection-bytes (integer-integer) — применять правило, если количество переданных байт через подключение превысило указанное значение. 0 — не ограничено, пример: connection-bytes=2000000-0 сработает в том случае, если количество данных, переданных через открытое подключение превысило 2MB;
connection-limit (integer,netmask) — ограничивает количество доступных подключений на адрес или блок адресов;
connection-mark (name) —пакеты, попавшие под действие правил в mangle и названные в соответствии с параметром connection mark
connection-state (established | invalid | new | related) — интерпретация состояния подключения посредством анализа данных из connection tracking .
established — пакет, принадлежащийa уже установленному подключению. К примеру ответ от маршрутизатора.
invalid — пакет, который не может быть идентифицирован по какой-либо причине. К примеру это может быть переполнение памяти и ICMP ошибки. К таким пакетам нужно применять действие DROP
new — пакет, начинающий создание TCP подключения
related — запрошенный пакет, который не принадлежит уже установленным подключениям. К примеру ICMP ошибки, или пакет, начинающий передачу данных по протоколу FTP( /ip firewall service-port)
connection-type (ftp | gre | h323 | irc | mms | pptp | quake3 | tftp) — определение типа подключения, базирующееся на использовании данных из connection tracking. Конфигурирование производится в /ip firewall service-port
content (text) — содержимое текстового пакета
dst-address (IP address/netmask | IP address-IP address) — указывает диапазон адресов, у которых IP-адрес назначения совпадает с параметром. При неправильном введении пары address/netmask система сама подстроит эти параметры. К примеру:1.1.1.1/24 будет заменено на 1.1.1.0/24
dst-address-list (name) — совпадение адреса назначения пакета с определенными ранее значениями в address list
dst-address-type (unicast | local | broadcast | multicast) — совпадение типа адреса назначения пакета с заданным предустановленным значением:
unicast — IP-адреса, используемые ля передачи от одной точки к другой. В таком типе пакетов существует только один отправитель и один получатель
local — совпадеине с адресами, назначенными сетевым интерфейсам маршрутизатора
broadcast — IP-пакет, посылаемый сразу всем членам подсети
multicast — этот тип пакета используется для передачи данных от одного отправителя многим получателям в сети.
dst-limit (integer/time{0,1},integer,dst-address | dst-port | src-address{+},time{0,1}) — ограничивает скорость пакетов в секунду (packet per second (pps)) на IP-адрес или порт.
В результате работы правила каждый IP-адрес или порт назначения получает свой лимит.
Параметр имеет следующие опции:
Count — среднее количество пакетов в секунду (packets per second (pps))за время Time
Time — интервал времени, за который производится подсчёт среднего количества пакетов
Burst — количество пакетов в пике
Mode — классификатор для ограничения скорости пакетов
Expire — указывает интервал, через который записанные IP адреса /порты будут удалены
dst-port (integer: 0..65535-integer: 0..65535{*}) — интервал портов назначения
hotspot (multiple choice: from-client | auth | local-dst | http) — сравнивает пакеты полученные от клиентов с различными хот-спотами. все значения могут быть отклонены/инвертированы
from-client — true, если пакеты получены от Hot-Spot клиента
auth — true, если пакеты получены от авторизированного Hot-Spot клиента
local-dst — true, если пакет имеет локальный адрес назначения
hotspot — true, если TCP пакет от клиента и назначается на 80 порт прозрачного прокси сервера или клиент имеет адрес прокси сконфигурированный и аналогичный адресу:порту пакета
icmp-options (integer:integer) — совпадение полей ICMP Type:Code
in-interface (name) — интерфейс, с которого пакет поступил в маршратизатор
ipv4-options (any | loose-source-routing | no-record-route | no-router-alert | no-source-routing | no-timestamp | none | record-route | router-alert | strict-source-routing | timestamp) — совпадение параметров заголовка ipv4
any — совпадает по крайней мере один пакет с установленной ipv4 опцией
loose-source-routing — пакеты с опцией loose source routing. Эта опция используется для направления интернет дейтаграм основаных на информации поставляемой источником
no-record-route — пакеты с опцией no record route. Эта опция используется для направления интернет дейтаграм основаных на информации поставляемой источником
no-router-alert — совпадение пакетов с опцией no router alter
no-source-routing — совпадение пакетов с опцией no source routing
no-timestamp — совпадение пакетов с опцией with no timestamp
record-route — совпадение пакетов с опцией record route
router-alert — совпадение пакетов с опцией router alter
strict-source-routing — совпадение пакетов с опцией strict source routing
timestamp — совпадение пакетов со штампом времени
jump-target (forward | input | output | name) — имя целевой цепочки куда должен быть отправлен пакет при использовании action=jump.
limit (integer/time{0,1},integer) — ограничивает поток пакетов. Используется для уменьшения количества сообщений в логах
Count — максимальное среднее количество пакетов, указанное в пакетах в секунду (PPS Packet Per Second) за время в опции Time
Time — указывает интервал времени за который будет производиться подсчёт среднего количества пакетов
Burst — количество пакетов при пике
log-prefix (text) — все сообщения, записываемые в лог, будут иметь этот префикс. Используется вместе с опцией action=log
nth (integer,integer: 0..15,integer{0,1}) — совпадение каждого n-ного пакета, попавшего в правило. Всего доступно 16 счётчиков
Every — совпадение каждого Every+1th пакета. К примеру, если Every=1 тогда под действие правила попадёт каждый второй пакет
Counter — указывает какой счётчик будет использоваться. Счётчик увеличивается на 1 с каждым новым правилом где указанна опция nth
Packet -совпадает с номером данного пакета. Значение по очевидным причинам должно быть между нулем и Every. Если опиция используется для данного счетчика, тогда должно быть по крайней мере Every+1 правило с этой опцией, охватывающее все значения между 0 и Every включительно out-interface (name) — интерфейс, через который пакеты будут покидать маршрутизатор
p2p (all-p2p | bit-torrent | blubster | direct-connect | edonkey | fasttrack | gnutella | soulseek | warez | winmx) — совпадение пакетов протоколов peer-to-peer (P2P)
packet-mark (text) — цепочка пакетов, промаркированная в разделе mangle файервола
packet-size (integer: 0..65535-integer: 0..65535{0,1}) — размер пакета в байтах
Min — указывает нижний предел диапазона размера пакета
Max — указывает верхний предел диапазона размера пакета

phys-in-interface (name) — физический интерфейс, указанный в качестве порта моста, по которому пакет поступил в маршрутизатор
phys-out-interface (name) — физический интерфейс, указанный в качестве порта моста, по которому пакет выйдет из маршрутизатора
protocol (ddp | egp | encap | ggp | gre | hmp | icmp | idrp-cmtp | igmp | ipencap | ipip | ipsec-ah | ipsec-esp | iso-tp4 | ospf | pup | rdp | rspf | st | tcp | udp | vmtp | xns-idp | xtp | integer) — совпадение IP протокола. Указывается имя протокола или его номер. Вы должны указать эту опцию, чтобы получить доступ к специфическим параметрам для каждого протокола.
psd (integer,time,integer,integer) — попытка определения сканирования TCP и UDP портов. Необходимо назначить меньшее значение портам с высокими номерами для того, чтобы уменьшить количество ложных срабатываний. К примеру, при использовании пассивного режима FTP.
WeightThreshold — полный вес последних TCP/UDP пакетов с различными портами назначения, поступающими с одного хоста, которые распознанные как один из методов сканирования
DelayThreshold — задержка между пакетами с разными портами назначения, поступающие с одного хоста и распознанные как возможная последовательность сканирования
LowPortWeight — вес пакетов при сканировании привилегированных портов (<=1024)
HighPortWeight — вес пакетов на непривилегированные порты назначения
random (integer: 1..99) — совпадение пакетов с заданным уровнем случайности
reject-with (icmp-admin-prohibited | icmp-echo-reply | icmp-host-prohibited | icmp-host-unreachable | icmp-net-prohibited | icmp-network-unreachable | icmp-port-unreachable | icmp-protocol-unreachable | tcp-reset | integer) — указывает причину по которой был отброшен пакет в action=reject
routing-mark (name) — совпадение пакетов, обозначенных в цепочке mangle параметром routing mark
src-address (IP address/netmask | IP address-IP address) — указывает диапазон адресов IP пакетов поступивших извне. Замечание: консоль конвертирует неправильно набранные IP значения address/netmask в правильный сетевой адрес. К примеру:1.1.1.1/24 будет конвертирован в 1.1.1.0/24
src-address-list (name) — совпадение адреса источника с списком IP-адресов в предустановленном пользователе address list
src-address-type (unicast | local | broadcast | multicast) — совпадение типа IP-адреса:
unicast — IP адрес используется для передачи данных между двумя узлами, где только один отправитель и один получатель
local — совпадение адреса, назначенного одному из интерфейсов маршрутизатора
broadcast — IP пакет был отправлен из одной точки всем получателям и IP подсети
multicast — этот типа IP адресации ответственен за передачу между одной или несколькими точками одной или набору других точек
src-mac-address (MAC address) — MAC адрес источника
src-port (integer: 0..65535-integer: 0..65535{*}) — диапазон портов источника
tcp-flags (ack | cwr | ece | fin | psh | rst | syn | urg) — tcp флаги
ack — запрос данных
cwr — принимающее окно уменьшено
ece — ECN-флаг echo (explicit congestion notification)
fin — закрытие подключения
psh — функция push
rst — разорвать подключение
syn — новое подключение
urg — urgent data
tcp-mss (integer: 0..65535) — совпадение значения TCP MSS IP пакета
time (time-time,sat | fri | thu | wed | tue | mon | sun{+}) — позволяет создать фильтр, базирующийся на времени получения пакета или дате. Для локально созданных пакетов дате отправки
tos (max-reliability | max-throughput | min-cost | min-delay | normal) — совпадение с полем «тип сервиса» Type of Service (ToS) в IP загаловке
max-reliability — максимальная надёжность (ToS=4)
max-throughput — максимальная пропускная способность (ToS=8)
min-cost — минимальная стоимость (ToS=2)
min-delay — минимальная задержка (ToS=16)
normal — нормальное обслуживание (ToS=0)

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

Примеры применения

Защита вашего маршрутизатора RouterOS

Для защиты вашего маршрутизатора сменить пароль администратора недостаточно и нужно воспользоваться фильтрацией пакетов. Все пакеты с адресом назначения маршрутизатора попадают во входную цепочку файервола INPUT. Заметьте, что попавшие в цепочку INPUT пакеты не будут проходить через маршрутизатор.

/ip firewall filter
add chain=input connection-state=invalid action=drop comment="Drop Invalid connections"
add chain=input connection-state=established action=accept comment="Allow Established connections"
add chain=input protocol=udp action=accept comment="Allow UDP"
add chain=input protocol=icmp action=accept comment="Allow ICMP"
add chain=input src-address=192.168.0.0/24 action=accept comment="Allow access to router from known network"
add chain=input action=drop comment="Drop anything else"

Для защиты сети проверяется весь трафик проходящий через маршрутизатор и блокировать нежелательные пакеты:

/ip firewall filter
add chain=forward protocol=tcp connection-state=invalid action=drop comment="drop invalid connections"
add chain=forward connection-state=established action=accept comment="allow already established connections"
add chain=forward connection-state=related action=accept comment="allow related connections"

Блокировать IP адреса, названные «bogons»:

add chain=forward src-address=0.0.0.0/8 action=drop
add chain=forward dst-address=0.0.0.0/8 action=drop
add chain=forward src-address=127.0.0.0/8 action=drop
add chain=forward dst-address=127.0.0.0/8 action=drop
add chain=forward src-address=224.0.0.0/3 action=drop
add chain=forward dst-address=224.0.0.0/3 action=drop

Перебросить их в другую цепочку:

add chain=forward protocol=tcp action=jump jump-target=tcp
add chain=forward protocol=udp action=jump jump-target=udp
add chain=forward protocol=icmp action=jump jump-target=icmp

Создать цепочку tcp и запретить некоторые tcp порты:

add chain=tcp protocol=tcp dst-port=69 action=drop comment="deny TFTP"
add chain=tcp protocol=tcp dst-port=111 action=drop comment="deny RPC portmapper"
add chain=tcp protocol=tcp dst-port=135 action=drop comment="deny RPC portmapper"
add chain=tcp protocol=tcp dst-port=137-139 action=drop comment="deny NBT"
add chain=tcp protocol=tcp dst-port=445 action=drop comment="deny cifs"
add chain=tcp protocol=tcp dst-port=2049 action=drop comment="deny NFS"
add chain=tcp protocol=tcp dst-port=12345-12346 action=drop comment="deny NetBus"
add chain=tcp protocol=tcp dst-port=20034 action=drop comment="deny NetBus"
add chain=tcp protocol=tcp dst-port=3133 action=drop comment="deny BackOriffice"
add chain=tcp protocol=tcp dst-port=67-68 action=drop comment="deny DHCP"

Запретить udp порты в цепочке udp:

add chain=udp protocol=udp dst-port=69 action=drop comment="deny TFTP"
add chain=udp protocol=udp dst-port=111 action=drop comment="deny PRC portmapper"
add chain=udp protocol=udp dst-port=135 action=drop comment="deny PRC portmapper"
add chain=udp protocol=udp dst-port=137-139 action=drop comment="deny NBT"
add chain=udp protocol=udp dst-port=2049 action=drop comment="deny NFS"
add chain=udp protocol=udp dst-port=3133 action=drop comment="deny BackOriffice"

Разрешить только необходимые коды icmp в цепочке с именем icmp:

add chain=icmp protocol=icmp icmp-options=0:0 action=accept comment="drop invalid connections"
add chain=icmp protocol=icmp icmp-options=3:0 action=accept comment="allow established connections"
add chain=icmp protocol=icmp icmp-options=3:1 action=accept comment="allow already established connections"
add chain=icmp protocol=icmp icmp-options=4:0 action=accept comment="allow source quench"
add chain=icmp protocol=icmp icmp-options=8:0 action=accept comment="allow echo request"
add chain=icmp protocol=icmp icmp-options=11:0 action=accept comment="allow time exceed"
add chain=icmp protocol=icmp icmp-options=12:0 action=accept comment="allow parameter bad"
add chain=icmp action=drop comment="deny all other types"

(c) netflow.by

 25   2014   mikrotik   network

Настройка GRE моста между двумя Mikrotik

The goal of this example is to get Layer 3 connectivity between two remote sites over the internet.

We have two sites, Site1 with local network range 10.1.101.0/24 and Site2 with local network range 10.1.202.0/24.

First step is to create GRE tunnels.
Router on site 1:

/interface gre add name=myGre remote-address=192.168.90.1 local-address=192.168.80.1

Router on site 2:

/interface gre add name=myGre remote-address=192.168.80.1 local-address=192.168.90.1

As you can see tunnel configuration is quite simple.

Note: In this example keepalive is not configured, so tunnel interface will have running flag even if remote tunnel end is not reachable

Now we just need to set up tunnel addresses and proper routing.

Router on site 1:

/ip address
add address=172.16.1.1/30 interface=myGre
/ip route
add dst-address=10.1.202.0/24 gateway=172.16.1.2

Router on site 2:

/ip address
add address=172.16.1.2/30 interface=myGre
/ip route
add dst-address=10.1.101.0/24 gateway=172.16.1.1

At this point both sites have Layer 3 connectivity over GRE tunnel.

wiki.mikrotik.com

 11   2014   mikrotik   network

Подобие IIS Web farm на Mikrotik

Задача: Заменить IIS Web farm на mikriotik.
Минус реализации: Если на одном из серверов упадет веб-сервер, то этот сервер не исключается, т. к. используются icmp запросы.

IP — Web Proxy
Chack «Enable»
Src. Address: xxx.xxx.xxx.xxx (external mikrotik)
Port: 8080
Cache Administrator: webmaster
Max. Cache Size: unlimited KiB
Uncheck «Cache On Disk»
Max. Client Connections: 600
Max. Server Connections: 600
Max Fresh Time: 00:00:01
Uncheck «Serialize Connections» & «Always From Cache»
Cache Hit DSCP (TOS): 4
Cache Drive: system

IP — Web Proxy — Access
Add
Dst. Port: 80
Action: allow
Comment: Enable HTTP Connection

Add
Dst. Port: 23-25
Action: deny
Comment: block telnet & spam e-mail relaying

DNS — Static — min 2 servers
Add
Name: example.contos.com
Address: xxx.xxx.xxx.xxx (internal server)
TTL: 00:00:05

Tools — Netwatch — min 2 servers
Add
Host
Host: xxx.xxx.xxx.xxx (internal server)
Interval: 00:00:05
Timeout: 100 ms
Status: up
Up
/ip dns static enable numbers=[find where address=xxx.xxx.xxx.xxx (internal server)]
Down
/ip dns static disable numbers=[find where address=xxx.xxx.xxx.xxx (internal server)]

IP — Firewall — Nat
Add
General
Chain: dstnat
Dst: Address: xxx.xxx.xxx.xxx (external mikrotik)
Protokol: 6 (tcp)
dst. Port: 80
Action
Action: redirect
To Ports: 8080

 7   2013   iis   mikrotik

Отправка бекапа настроек Mikrotik на e-mail

Задумался о бекапах Mikrotika. Нужно их не просто создавать, но и куда-то складывать.
Есть несколько вариантов:
1 — забирать по ftp с девайса
2 — забирать по ssh
3 — забирать со своего мыла

Были найдены статьи:
Резервирование настроек по E-mail и Automated_Backups

Из которых я соорудил рабочий вариант с костылем.
Костыль такой: с микротика отсылаем на служебный ящик бекап, а уже с него рассылаем куда надо. Плюс такого решения — у нас всегда есть, как минимум, два хранилища (служебная и личная почта).

 12   2013   mikrotik   network