Mikrotik. 2 Провайдера. Балансировка исходящего трафика из локальной сети в интернет между двумя провайдерами: различия между версиями
Cless (обсуждение | вклад) (Новая страница: «Категория:Mikrotik __ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__») |
Cless (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
[[Категория:Mikrotik]] | [[Категория:Mikrotik]] | ||
__ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__ | __ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__ | ||
== Ссылки == | |||
https://habr.com/ru/post/244385/ | |||
== Входные данные == | |||
Имеется 2 провайдера, у обоих есть статический внешний IP-адрес | |||
* '''''192.168.1.0/24''''' - локальная сеть | |||
* '''''bridge-local (192.168.1.1)''''' - интерфейс микротика, смотрящий в локалку | |||
* '''''ether3-wan1''''' - интерфейс ISP1 | |||
* '''''ether4-wan2''''' - интерфейс ISP2 | |||
* '''''193.34.13.97''''' - шлюз ISP1 | |||
* '''''172.18.0.129''''' - шлюз ISP2 | |||
== Задача == | |||
Балансировка трафика исходящих соединений из локальной сети через SRC-NAT между двумя провайдерами | |||
== Настройка == | |||
=== Каждое '''n-ое''' соединение ('''per-connection-classifier''') === | |||
'''PCC''' разделяет трафик по группам, основываясь на данных TCP заголовка (src-address, dst-address, src-port, dst-port). | |||
Маркируем соединения (для gw1 маркировать каждое 1-е соединение, для gw2 маркировать только каждое 2-е соединение) | |||
<code>/ip firewall mangle</code> | |||
<code>add action=mark-routing chain=prerouting in-interface=bridge-local new-routing-mark=from-local-route-via-ISP1 per-connection-classifier=src-address-and-port:2/0</code> | |||
<code>add action=mark-routing chain=prerouting in-interface=bridge-local new-routing-mark=from-local-route-via-ISP2 per-connection-classifier=src-address-and-port:2/1</code> | |||
'''ИЛИ''' (для gw1 маркировать каждое 1-е и 2-е соединение, для gw2 маркировать только каждое 3-е соединение) | |||
<code>/ip firewall mangle</code> | |||
<code>add action=mark-routing chain=prerouting in-interface=bridge-local new-routing-mark=from-local-route-via-ISP1 per-connection-classifier=src-address-and-port:3/0</code> | |||
<code>add action=mark-routing chain=prerouting in-interface=bridge-local new-routing-mark=from-local-route-via-ISP1 per-connection-classifier=src-address-and-port:3/1</code> | |||
<code>add action=mark-routing chain=prerouting in-interface=bridge-local new-routing-mark=from-local-route-via-ISP2 per-connection-classifier=src-address-and-port:3/2</code> | |||
Отправляем соединения с соответствующей маркировкой в соответствующий шлюз | |||
<code>/ip route</code> | |||
<code>add comment=from-local-icmp-route-via-ISP1 distance=1 gateway=193.34.13.97 routing-mark=from-local-icmp-route-via-ISP1</code> | |||
<code>add comment=from-local-udp-route-via-ISP2 distance=1 gateway=172.18.0.129 routing-mark=from-local-udp-route-via-ISP2</code> | |||
=== Каждое n-ое соединение (nth) === | |||
<blockquote>ДЛЯ МАРКИРОВКИ КАЖДОГО N-ГО СОЕДИНЕНИЯ ЛУЧШЕ ИСПОЛЬЗОВАТЬ "'''PER-CONNECTION-CLASSIFIER'''"! РАБОТАЕТ СТАБИЛЬНЕЕ!</blockquote>Маркируем каждое '''1-е''' и каждое '''2-е''' соединение из локалки во внешку соответствующей маркировкой используя '''in-interface=bridge-local''' | |||
<code>/ip firewall mangle</code> | |||
<code>add action=mark-routing chain=prerouting comment=from-local-route-via-ISP1 in-interface=bridge-local new-routing-mark=from-local-route-via-ISP1 nth=2,1 passthrough=yes</code> | |||
<code>add action=mark-routing chain=prerouting comment=from-local-route-via-ISP2 in-interface=bridge-local new-routing-mark=from-local-route-via-ISP2 nth=2,2 passthrough=yes</code> | |||
'''ИЛИ''' ( используя '''src-address=192.168.1.0/24''' ) | |||
<code>/ip firewall mangle</code> | |||
<code>add action=mark-routing chain=prerouting comment=from-local-route-via-ISP1 src-address=192.168.1.0/24 new-routing-mark=from-local-route-via-ISP1 nth=2,1 passthrough=yes</code> | |||
<code>add action=mark-routing chain=prerouting comment=from-local-route-via-ISP2 src-address=192.168.1.0/24 new-routing-mark=from-local-route-via-ISP2 nth=2,2 passthrough=yes</code> | |||
Отправляем каждое 1-е и 2-е отмаркированные соединения через соответствующие шлюзы ISP1 и ISP2 | |||
<code>/ip route</code> | |||
<code>add comment=from-local-route-via-ISP1 distance=1 gateway=193.34.13.97 routing-mark=from-local-route-via-ISP1</code> | |||
<code>add comment=from-local-route-via-ISP2 distance=1 gateway=172.18.0.129 routing-mark=from-local-route-via-ISP2</code> | |||
=== Распределение по протоколам === | |||
Соединение каждого протокола отправляем через определенный шлюз | |||
Маркируем соединения по протоколам ICMP и UDP | |||
<code>/ip firewall mangle</code> | |||
<code>add action=mark-routing chain=prerouting comment=from-local-icmp-route-via-ISP1 in-interface=bridge-local new-routing-mark=from-local-icmp-route-via-ISP1 passthrough=yes protocol=icmp</code> | |||
<code>add action=mark-routing chain=prerouting comment=from-local-udp-route-via-ISP2 in-interface=bridge-local new-routing-mark=from-local-udp-route-via-ISP2 passthrough=yes protocol=udp</code> | |||
Отправляем соединения с соответствующей маркировкой в соответствующий шлюз | |||
<code>/ip route</code> | |||
<code>add comment=from-local-icmp-route-via-ISP1 distance=1 gateway=193.34.13.97 routing-mark=from-local-icmp-route-via-ISP1</code> | |||
<code>add comment=from-local-udp-route-via-ISP2 distance=1 gateway=172.18.0.129 routing-mark=from-local-udp-route-via-ISP2</code> | |||
=== ??? Делим исходящий трафик, используя ecmp (equal cost multipath routing) === | |||
<blockquote>??? СПОСОБ НЕ ЗАРАБОТАЛ, ВЕСЬ ТРАФИК ВСЁ РАВНО ИДЕТ ЧЕРЕЗ GW1 - РАЗОБРАТЬСЯ</blockquote><code>/ip firewall mangle</code> | |||
<code>add action=mark-routing chain=prerouting in-interface=bridge-local new-routing-mark=mixed</code> | |||
<code>/ip route</code> | |||
<code>add distance=1 gateway=193.34.13.97,172.18.0.129 routing-mark=mixed</code> | |||
Версия 11:08, 23 января 2022
Ссылки
https://habr.com/ru/post/244385/
Входные данные
Имеется 2 провайдера, у обоих есть статический внешний IP-адрес
- 192.168.1.0/24 - локальная сеть
- bridge-local (192.168.1.1) - интерфейс микротика, смотрящий в локалку
- ether3-wan1 - интерфейс ISP1
- ether4-wan2 - интерфейс ISP2
- 193.34.13.97 - шлюз ISP1
- 172.18.0.129 - шлюз ISP2
Задача
Балансировка трафика исходящих соединений из локальной сети через SRC-NAT между двумя провайдерами
Настройка
Каждое n-ое соединение (per-connection-classifier)
PCC разделяет трафик по группам, основываясь на данных TCP заголовка (src-address, dst-address, src-port, dst-port).
Маркируем соединения (для gw1 маркировать каждое 1-е соединение, для gw2 маркировать только каждое 2-е соединение)
/ip firewall mangle
add action=mark-routing chain=prerouting in-interface=bridge-local new-routing-mark=from-local-route-via-ISP1 per-connection-classifier=src-address-and-port:2/0
add action=mark-routing chain=prerouting in-interface=bridge-local new-routing-mark=from-local-route-via-ISP2 per-connection-classifier=src-address-and-port:2/1
ИЛИ (для gw1 маркировать каждое 1-е и 2-е соединение, для gw2 маркировать только каждое 3-е соединение)
/ip firewall mangle
add action=mark-routing chain=prerouting in-interface=bridge-local new-routing-mark=from-local-route-via-ISP1 per-connection-classifier=src-address-and-port:3/0
add action=mark-routing chain=prerouting in-interface=bridge-local new-routing-mark=from-local-route-via-ISP1 per-connection-classifier=src-address-and-port:3/1
add action=mark-routing chain=prerouting in-interface=bridge-local new-routing-mark=from-local-route-via-ISP2 per-connection-classifier=src-address-and-port:3/2
Отправляем соединения с соответствующей маркировкой в соответствующий шлюз
/ip route
add comment=from-local-icmp-route-via-ISP1 distance=1 gateway=193.34.13.97 routing-mark=from-local-icmp-route-via-ISP1
add comment=from-local-udp-route-via-ISP2 distance=1 gateway=172.18.0.129 routing-mark=from-local-udp-route-via-ISP2
Каждое n-ое соединение (nth)
ДЛЯ МАРКИРОВКИ КАЖДОГО N-ГО СОЕДИНЕНИЯ ЛУЧШЕ ИСПОЛЬЗОВАТЬ "PER-CONNECTION-CLASSIFIER"! РАБОТАЕТ СТАБИЛЬНЕЕ!
Маркируем каждое 1-е и каждое 2-е соединение из локалки во внешку соответствующей маркировкой используя in-interface=bridge-local
/ip firewall mangle
add action=mark-routing chain=prerouting comment=from-local-route-via-ISP1 in-interface=bridge-local new-routing-mark=from-local-route-via-ISP1 nth=2,1 passthrough=yes
add action=mark-routing chain=prerouting comment=from-local-route-via-ISP2 in-interface=bridge-local new-routing-mark=from-local-route-via-ISP2 nth=2,2 passthrough=yes
ИЛИ ( используя src-address=192.168.1.0/24 )
/ip firewall mangle
add action=mark-routing chain=prerouting comment=from-local-route-via-ISP1 src-address=192.168.1.0/24 new-routing-mark=from-local-route-via-ISP1 nth=2,1 passthrough=yes
add action=mark-routing chain=prerouting comment=from-local-route-via-ISP2 src-address=192.168.1.0/24 new-routing-mark=from-local-route-via-ISP2 nth=2,2 passthrough=yes
Отправляем каждое 1-е и 2-е отмаркированные соединения через соответствующие шлюзы ISP1 и ISP2
/ip route
add comment=from-local-route-via-ISP1 distance=1 gateway=193.34.13.97 routing-mark=from-local-route-via-ISP1
add comment=from-local-route-via-ISP2 distance=1 gateway=172.18.0.129 routing-mark=from-local-route-via-ISP2
Распределение по протоколам
Соединение каждого протокола отправляем через определенный шлюз
Маркируем соединения по протоколам ICMP и UDP
/ip firewall mangle
add action=mark-routing chain=prerouting comment=from-local-icmp-route-via-ISP1 in-interface=bridge-local new-routing-mark=from-local-icmp-route-via-ISP1 passthrough=yes protocol=icmp
add action=mark-routing chain=prerouting comment=from-local-udp-route-via-ISP2 in-interface=bridge-local new-routing-mark=from-local-udp-route-via-ISP2 passthrough=yes protocol=udp
Отправляем соединения с соответствующей маркировкой в соответствующий шлюз
/ip route
add comment=from-local-icmp-route-via-ISP1 distance=1 gateway=193.34.13.97 routing-mark=from-local-icmp-route-via-ISP1
add comment=from-local-udp-route-via-ISP2 distance=1 gateway=172.18.0.129 routing-mark=from-local-udp-route-via-ISP2
??? Делим исходящий трафик, используя ecmp (equal cost multipath routing)
??? СПОСОБ НЕ ЗАРАБОТАЛ, ВЕСЬ ТРАФИК ВСЁ РАВНО ИДЕТ ЧЕРЕЗ GW1 - РАЗОБРАТЬСЯ
/ip firewall mangle
add action=mark-routing chain=prerouting in-interface=bridge-local new-routing-mark=mixed
/ip route
add distance=1 gateway=193.34.13.97,172.18.0.129 routing-mark=mixed