2 ISP и простейшее деление LAN-клиентов на выход через них

Тема в разделе "Маршрутизация", создана пользователем Roman Markov, 12 окт 2016.

  1. Roman Markov

    Roman Markov Участник

    Одна группа (серверы) выходит через WAN-1, вторая (клиенты) - через WAN-2

    Настроено вот так. Так всё работает. Но когда ЯВНО указываю в route для WAN-1 , что это правило для
    routing-mark=WAN-1-out - пропадает доступ к самому Микротику СНАРУЖИ.

    IP-address самого Микротика не входит ни в одну группу (192.168.0.254)

    Все остальное работает, как положено.
    Что я забыл сделать?

    /ip firewall address-list add address-list=WAN-1-Clients address=192.168.0.1-192.168.0.100
    /ip firewall address-list add address-list=WAN-2-Clients address=192.168.0.101-192.168.0.200

    /ip firewall mangle add chain=prerouting action=mark-routing new-routing-mark="WAN-1-out" passthrough=no src-address-list=WAN-1-Clients comment="Mark outgoing packets through WAN-1"

    /ip firewall mangle add chain=prerouting action=mark-routing new-routing-mark="WAN-2-out" passthrough=no src-address-list=WAN-2-Clients comment="Mark outgoing packets through WAN-2"

    /ip route add distance=1 gateway=1.1.1.1 check-gateway=ping
    /ip route add distance=1 gateway=2.2.2.2 routing-mark=WAN-2-out check-gateway=ping


    /ip firewall nat add chain=srcnat action=masquerade src-address-list=WAN-1-Clients out-interface=WAN-1 log=no comment="WAN default masquerade for WAN-1"
    /ip firewall nat add chain=srcnat action=masquerade src-address-list=WAN-2-Clients out-interface=WAN-2 log=no comment="WAN default masquerade for WAN-2"
     
  2. Илья Князев

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

    Классически. В mangle input надо отметить соединения и назад машруты, чтобы пакет уходил откуда пришел
    Т.е.
    /ip firewall mangle
    add chain=input in-interface=WAN1 action=mark-connection new-connection-mark=con-WAN1
    add chain=input in-interface=WAN2 action=mark-connection new-connection-mark=con-WAN2
    add chain=output con-mark=con-WAN1 action=mark-routing new-routing-mark=WAN1
    add chain=output con-mark=con-WAN2 action=mark-routing new-routing-mark=WAN2
    /ip route
    add gateway=1.1.1.1 route-mark=WAN1
    add gateway=2.2.2.2 route-mark=WAN2

    В синтаксисе могут быть ошибки, микрота под руками нет, пишу по памяти. Но мысль думаю понятна.
     
  3. Roman Markov

    Roman Markov Участник

    Ага, понятно, проверю.

    Про это помню, но делать не стал, так как решил, что эта схема нужна только при случайной балансировке нагрузки и пр, а когда явно указаны SRC-ADDRESS-LIST - то и так будет работать.

    И работает в обе стороны - то есть и из LAN наружу все уходит именно через требуемый канал, и внутрь новые соединения (например, управление серверами или входящая почта) - отрабатывают, как положено.

    Получается, что в моем случае только сам Микротик не знает - куда ему отвечать на входящие соединения именно INPUT, а не FORWARD?
    Или что-то должно работать не так в итоге и с серверами?
     
  4. Илья Князев

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

    Так вы сами пишете:
    Он не то что не знает. Он понятия не имеет. Маршрутизатор при отправке ответа руководствуется исключительно таблицей маршрутизации.
    И обратите внимание, что на input мы маркируем СОЕДИНЕНИЕ. А маршрут маркируется в Output.
     
  5. Roman Markov

    Roman Markov Участник

    Да, это я все понял и заранее прочитал.
    Собственно, дополнительный вопрос был именно в том, что если забыть про сам Микротик, то в моей простейшей схеме достаточно маркировать маршрут через SRC-ADDRESS-LIST, выделив таким образом клиентов, которые пойдут через WAN-2 (он только что добавился, раньше был только WAN-1), а все остальное, соответственно, просто так и останется работать через дефолтный шлюз.

    То есть в принципе можно в такой схеме никакие дополнительные входящие соединения не маркировать, просто создав правило route для второго канала с указанием, что оно только для конкретного routing-mark:

    /ip route add distance=1 gateway=2.2.2.2 routing-mark=WAN-2-out check-gateway=ping
    /ip route add distance=1 gateway=1.1.1.1 check-gateway=ping

    И тогда все, что не соответствует задаче выпустить через второй канал определённый список адресов, по дефолту пойдёт через первый, как и сам Микротик будет через WAN-1 доступен.

    Понимаю, что это частный случай, но экспериментировать на УДАЛЕННОМ рабочем роутере - примета плохая. "К дальней дороге"
    %о))

    Соответственно, спасибо за ответ, суть полноценной настройки для всех вариантов понял, но для этого оставлю так пока.

    Лучше потом потренируюсь на тестовом

    PS: Кстати, в такой схеме Микротик доступен по обоим IP %о))
     
    Последнее редактирование: 13 окт 2016
  6. Илья Князев

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

    Для этого кнопку [Safe Mode] придумали.
     
  7. Roman Markov

    Roman Markov Участник

    *стыдливо гуглит*:
    Блин... Спасибо.
    Я давно люблю Микротик, но он не перестаёт меня удивлять. Видимо потому что у меня нет времени на курсы. %о(((
     
  8. Илья Князев

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

    Я иногда на собственных тренингах узнаю что-то новое и интересное :D
     
  9. Roman Markov

    Roman Markov Участник

    Чего-то всё-таки не хватает.

    Добавил, но после добавления пропал любой доступ (и к самому роутеру, и к сети за ним) по обоим IP , если в add route указывается конкретный интерфейс:

    /ip firewall mangle add chain=input in-interface=WAN-1 action=mark-connection new-connection-mark=incoming-WAN-1
    /ip firewall mangle add chain=input in-interface=WAN-2 action=mark-connection new-connection-mark=incoming-WAN-2
    /ip firewall mangle add chain=output connection-mark=incoming-WAN-1 action=mark-routing new-routing-mark=WAN-1-out
    /ip firewall mangle add chain=output connection-mark=incoming-WAN-2 action=mark-routing new-routing-mark=WAN-2-out

    /ip route add gateway=1.1.1.1 routing-mark=WAN-1-out
    /ip route add gateway=2.2.2.2 routing-mark=WAN-2-out
     
  10. Roman Markov

    Roman Markov Участник

    Кстати, добавил команды именно в Save Mode:

    [admin@MikroTik-Router] <SAFE> /ip firewall mangle
    [admin@MikroTik-Router] /ip firewall mangle<SAFE> /ip firewall mangle add chain=input in-interface=WAN-1 action=mark-connection new-connection-mark=incoming-WAN-1
    [admin@MikroTik-Router] /ip firewall mangle<SAFE> /ip firewall mangle add chain=input in-interface=WAN-2 action=mark-connection new-connection-mark=incoming-WAN-2
    [admin@MikroTik-Router] /ip firewall mangle<SAFE> /ip route
    [admin@MikroTik-Router] /ip route<SAFE> /ip route
    [admin@MikroTik-Router] /ip route<SAFE> /ip route add gateway=1.1.1.1 routing-mark=WAN-1-out
    [admin@MikroTik-Router] /ip route<SAFE> /ip route add gateway=2.2.2.2 routing-mark=WAN-2-out
    [admin@MikroTik-Router] /ip route<SAFE> /ip firewall mangle add chain=output connection-mark=incoming-WAN-1 action=mark-routing new-routing-mark=WAN-1-out
    [admin@MikroTik-Router] /ip route<SAFE> /ip firewall mangle add chain=output connection-mark=incoming-WAN-2 action=mark-routing new-routing-mark=WAN-2-out
    [admin@MikroTik-Router] /ip route<SAFE>

    Подключение к узлу утеряно.

    Доступ отвалился, уже 20 минут никаких изменений.

    Видимо не так этот режим хорош, как обещалось %о((((
     
  11. Илья Князев

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

    Хм..
    Вы Safe включили в терминале из винбокса?
    И зачем вы мои шлюзы запихнули )))
     
  12. Roman Markov

    Roman Markov Участник

    Нет, конечно! Телнетом подключался и оттуда CTRL+X жал.
    Убедился, что <SAFE> появилось (для этого и цитировал вывод).

    А шлюзы я запихнул свои, просто здесь откорректировал. Но суть то не меняется - даже если бы я запихнул "ваши" шлюзы - уже через 9 минут все должно было вернуться, а прошло более получаса.

    В общем, "к дороге" %о)))

    Вспоминается анекдот про лося: "А я то зачем полез, я же читать не умею" %о)))
     
  13. Илья Князев

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

    Должно было сработать по разрыву сессии.
    Я обычно в winbox кнопку давлю. 10 минут и откат.
    Интерфейсы не надо указывать в качестве шлюза, если они Ethernet. Это приводит к тому, что при отправке пакета, например на 8.8.8.8 роутер будет искать это на интерфейсе, выполняя ARP-запрос. Если с другой стороны включен arp-proxy то оно возможно сработает. Иначе облом.
    А вот в случае туннельных интерфейсов, вполне в качестве шлюза можно указать интерфейс. Ибо там искать не надо, что с этой стороны в туннель засунешь, то только на другой стороне туннеля вылезет.
     
  14. Roman Markov

    Roman Markov Участник

    А это про что?
     
  15. Илья Князев

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

    Вот к этому.
     
  16. Roman Markov

    Roman Markov Участник

    Я неправильно выразился. Имел в виду указание во второй строчке аналогичного routing-mark=WAN-1-out.

    /ip route add distance=1 gateway=2.2.2.2 routing-mark=WAN-2-out check-gateway=ping
    /ip route add distance=1 gateway=1.1.1.1 check-gateway=ping
    Если это сделать - пропадает доступ снаружи к самому Микротику, но остается доступ к серверам (поэтому я и смог вернуть назад до этого)

    Но были жалобы, что интернет стал тормозить после введения второго канала.
    Я подумал, что ответы снаружи тоже надо промаркировать и добавил указанную конструкцию, понадеявшись на SAFE-MODE

    В итоге доступ пропал ОТОВСЮДУ, даже не пингуется ни один из внешних интерфейсов
     
  17. Илья Князев

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

    Ну логично.
    Если вы замаркировали маршрутом входящий пакет, угадайте куда он улетит )
     
  18. Roman Markov

    Roman Markov Участник

    Так вроде сделал так, как вы советовали...

     
  19. Илья Князев

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

    А маршруты без маркировок оставили?
     
  20. Roman Markov

    Roman Markov Участник

    Вроде бы нет.
    В этом и трабл?

    Тогда непонятно, почему не отрабатывают правила удаленного доступа к серверам, которые явно прописаны по src-address-list, которые до этого и спасли, позволив подключиться к серверам и оттуда убрать во втором маршруте mark-route