Multiwan (3 WAN по DHCP) не работает dst-nat

Тема в разделе "Маршрутизация", создана пользователем ark, 14 апр 2020.

  1. ark

    ark Новый участник

    Доброго времени суток.
    Есть 3 WAN с одной подсети 192.168.0.0/16 которые получаю по DHCP
    # ADDRESS NETWORK INTERFACE
    0 198.0.0.254/24 198.0.0.0 LANBridge
    1 D 192.168.12.237/16 192.168.0.0 ether2
    2 D 192.168.12.238/16 192.168.0.0 ether3
    3 D 192.168.1.33/16 192.168.0.0 ether1
    По презентации https://mum.mikrotik.com//presentations/RU18M/presentation_6157_1554717194.pdf настроил Multiwan.
    0 chain=prerouting action=mark-connection new-connection-mark=Input/ISP1 passthrough=yes
    connection-mark=no-mark in-interface=ether1 log=no log-prefix=""

    1 chain=prerouting action=mark-connection new-connection-mark=Input/ISP2 passthrough=yes
    connection-mark=no-mark in-interface=ether2 log=no log-prefix=""

    2 chain=prerouting action=mark-connection new-connection-mark=Input/ISP3 passthrough=yes
    connection-mark=no-mark in-interface=ether3 log=no log-prefix=""

    3 chain=prerouting action=mark-routing new-routing-mark=Next-Hop/192.168.10.1
    passthrough=yes connection-mark=Input/ISP1 in-interface-list=!WAN log=no log-prefix=""

    4 chain=prerouting action=mark-routing new-routing-mark=Next-Hop/192.168.10.3/2
    passthrough=yes connection-mark=Input/ISP2 in-interface-list=!WAN log=no log-prefix=""

    5 chain=prerouting action=mark-routing new-routing-mark=Next-Hop/192.168.10.3/3
    passthrough=no connection-mark=Input/ISP3 in-interface-list=!WAN log=no log-prefix=""

    6 chain=output action=mark-routing new-routing-mark=Next-Hop/192.168.10.1 passthrough=yes
    connection-mark=Input/ISP1 log=no log-prefix=""

    7 chain=output action=mark-routing new-routing-mark=Next-Hop/192.168.10.3/2 passthrough=yes
    connection-mark=Input/ISP2 log=no log-prefix=""

    8 chain=output action=mark-routing new-routing-mark=Next-Hop/192.168.10.3/3 passthrough=yes
    connection-mark=Input/ISP3 log=no log-prefix=""

    9 chain=prerouting action=mark-connection new-connection-mark=Input/ISP1 passthrough=yes
    src-address-list=leadership log=no log-prefix=""

    10 chain=prerouting action=mark-connection new-connection-mark=Input/ISP3 passthrough=yes
    src-address-list=usersGroup2 log=no log-prefix=""

    11 chain=prerouting action=mark-connection new-connection-mark=Input/ISP2 passthrough=yes
    src-address-list=usersGroup1 log=no log-prefix=""

    12 chain=prerouting action=mark-routing new-routing-mark=Next-Hop/192.168.10.1
    passthrough=yes connection-mark=Input/ISP1 in-interface-list=!WAN log=no log-prefix=""

    13 chain=prerouting action=mark-routing new-routing-mark=Next-Hop/192.168.10.3/3
    passthrough=yes connection-mark=Input/ISP3 in-interface-list=!WAN log=no log-prefix=""

    14 chain=prerouting action=mark-routing new-routing-mark=Next-Hop/192.168.10.3/2
    passthrough=yes connection-mark=Input/ISP2 in-interface-list=!WAN log=no log-prefix=""

    15 chain=output action=mark-routing new-routing-mark=Next-Hop/192.168.10.1 passthrough=no
    log=no log-prefix=""

    VRF
    0 routing-mark=Next-Hop/192.168.10.1 interfaces=ether1

    1 routing-mark=Next-Hop/192.168.10.3/2 interfaces=ether2

    2 routing-mark=Next-Hop/192.168.10.3/3 interfaces=ether3

    Таблица маршрутизации
    Код:
     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 ADS  0.0.0.0/0                          192.168.10.1              1
    1 ADC  192.168.0.0/16     192.168.1.33    ether1                    0
    2 A S  198.0.0.0/24                       LANBridge                 1
    3 ADS  0.0.0.0/0                          192.168.10.3              1
    4 ADC  192.168.0.0/16     192.168.12.237  ether2                    0
    5 A S  198.0.0.0/24                       LANBridge                 1
    6 ADS  0.0.0.0/0                          192.168.10.3              1
    7 ADC  192.168.0.0/16     192.168.12.238  ether3                    0
    8 A S  198.0.0.0/24                       LANBridge                 1
    9 A S  0.0.0.0/0                          Br-lookback             254
    10 ADC  198.0.0.0/24       198.0.0.254     LANBridge                 0
    

    Пользователи привязаны по MAC к IP, и разделены на 3 листа (при получении адреса попадают в Address List). Эти адрес листы выходят в интернет каждый со своего WAN.

    Прописал NAT
    ip firewall nat print
    Flags: X - disabled, I - invalid, D - dynamic
    0 chain=srcnat action=masquerade src-address=198.0.0.0/24 out-interface=ether1 log=no
    log-prefix=""

    1 chain=srcnat action=masquerade src-address=198.0.0.0/24 out-interface=ether2 log=no
    log-prefix=""

    2 chain=srcnat action=masquerade src-address=198.0.0.0/24 out-interface=ether3 log=no
    log-prefix=""

    3 ;;; port forwarding
    chain=dstnat action=dst-nat to-addresses=198.0.0.25 to-ports=9996 protocol=tcp
    in-interface-list=WAN dst-port=9996 log=no log-prefix=""

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

    Что я делаю не так?
     
  2. Илья Князев

    Илья Князев Администратор Команда форума

    Вам надо на входе такого пакета ставить routing-mark=no-mark
     
  3. ark

    ark Новый участник

    Добрый день Илья.
    Спасибо за ответ. Я уже разобрался. В Firewall Filter Rules открыл в цепочке forward порт, и заработало. Проверил на RDP и SSH, работает.
    Меня ввело в заблуждение приложение которое должно подключатся к серверу за NAT. Оно как то странно работает (при подключении к серверу снаружи через WAN по порту который открыт, получает настройки для подключения к серверу из внутренней сети и пытается снаружи по порту 138 udp найти сервер, которого там нет).
    Так как Вы и писали, где то на форуме, для multiwan достаточно 3-х правил в Mangle на провайдера.

    У меня еще вопрос по поводу статического распределения трафика (у меня правила Mangle с 9 по 14).
    Правила 12-14 дублируют правила 3-5.
    Я маркирую соединения в prerouting листа пользователей (src-address-list правила 9-11), такой же маркой (new-connection-mark=Input/ISP1) как и в соединениях на внешних интерфейсах.
    Правильно ли я понимаю, что в правилах 9-11 маркируются только соединения которые установлены с соответствующих address-list?
    Могу я маркировать эти соединения другой маркой (допустим new-connection-mark=Input/list1) и эту марку использую в mark-routing цепочки prerouting (правило 12)?
     
  4. Илья Князев

    Илья Князев Администратор Команда форума

    Тут как вам удобнее. Можно вообще сразу вешать на такой пакет маркировку маршрута.