Якщо ви шукаєте керівництво по налаштуванню 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
Аналогічно для вхідних пакетів з боку провайдера 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.