Сервер в кармане, или просто о сложном!

главная - Статьи - Mikrotik



Микротик не отвечает на пинги через WAN, mangle настроен, интернет есть. Что может быть не так?

Дата обновления: 04.02.2022

Теги: Mikrotik

Если вы ищете руководство по настройке dual-wan failover на микротике, то среди задач вы будете решать, как сделать, чтобы при пинге через ISP1 микротик направлял бы ответ через шлюз GW1, а при пинге через ISP2 - соответственно, через GW2.

Штука в том, что даже если все правильно настроено, и NAT работает, и локальные клиенты в сеть ходят, и firewall вроде разрешает пинг снаружи, а снаружи к микротику не обратиться. Не пингуется и все тут.

Вы наверняка видели что-то вроде:

/ip firewall mangle
add chain=input action=mark-connection new-connection-mark=ISP1->Input passthrough=no dst-address=IP1 in-interface=ether1
add chain=output action=mark-routing new-routing-mark=ISP1 passthrough=no connection-mark=ISP1->Input
add chain=input action=mark-connection new-connection-mark=ISP2->Input passthrough=no dst-address=IP2 in-interface=ether2
add chain=output action=mark-routing new-routing-mark=ISP2 passthrough=no connection-mark=ISP2->Input

Т.е.:
1) если пришел пакет со стороны провайдера ISP1 (через интерфейс ether1) с конечным адресом нашего микротика IP1 (т.е. в input), то пометить это соединение меткой "ISP1->Input".
2) исходящий трафик, связанный с установленным ранее соединеним, помеченным меткой "ISP1->Input", маршрутизировать по правилам таблицы ISP1.

Аналогично для входящих пакетов со стороны провайдера ISP2.

И все бы хорошо, если у вас есть маршрут по-умолчанию без указания таблицы маршрутизации.

Но у вас могут быть только такие дефолтные машруты (до 0.0.0.0/0):

/ip route
add distance=1 gateway=GW1 routing-mark=ISP1
add distance=1 gateway=GW2 routing-mark=ISP2

и ни одного маршрута по-умолчанию без указания routing-mark. Т.е. основная таблица маршрутизации пустая.

При пинге IP1 снаружи через ISP1 (input) из примера выше входящий пакет будет принят, промаркируется соединение (new-connection-mark=ISP1->Input). А вот ответ (output) никуда не уйдет, т.к. ответный пакет не попадет в output. Вообще. И промаркирован он не будет. И микротик не отправит его никуда.

 

Решить проблему можно по-разному.

1. prerouting вместо output

Любой пакет до того, как будет принято решение о его судьбе, проходит цепочку prerouting. И если заменить output на prerouting, то еще до попадания в output пакет будет промаркирован для маршрутизации через таблицу ISP1 (new-routing-mark=ISP1), далее будет принято верное решение о необходимости отправить пакет в output.

2. добавить маршруты по-умолчанию без указания таблиц маршрутизации

Например, как-то так:

/ip route
add distance=1 gateway=GW1 distance=10
add distance=1 gateway=GW2 distance=10

Или даже просто один из них:

/ip route add distance=1 gateway=GW1 distance=10

Не важно, будет этот маршрут доступен или нет, осноная таблица маршрутизации не будет пустой и микротик начнет искать замену этому маршруту. А если в основной таблице пусто - то и микротик делать ничего не будет и дело не дойдет до момента маркировки пакета в mangle -> output.



Авторизуйтесь для добавления комментариев!


    забыли пароль?    новый пользователь?