Mikrotik. 2 Провайдера. Балансировка исходящего трафика из локальной сети в интернет между двумя провайдерами: различия между версиями
Cless (обсуждение | вклад) |
Cless (обсуждение | вклад) |
||
| Строка 49: | Строка 49: | ||
<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> | <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) === | === Каждое n-ое соединение ('''nth''') === | ||
<blockquote>ДЛЯ МАРКИРОВКИ КАЖДОГО N-ГО СОЕДИНЕНИЯ ЛУЧШЕ ИСПОЛЬЗОВАТЬ "'''PER-CONNECTION-CLASSIFIER'''"! РАБОТАЕТ СТАБИЛЬНЕЕ!</blockquote>Маркируем каждое '''1-е''' и каждое '''2-е''' соединение из локалки во внешку соответствующей маркировкой используя '''in-interface=bridge-local''' | <blockquote>ДЛЯ МАРКИРОВКИ КАЖДОГО N-ГО СОЕДИНЕНИЯ ЛУЧШЕ ИСПОЛЬЗОВАТЬ "'''PER-CONNECTION-CLASSIFIER'''"! РАБОТАЕТ СТАБИЛЬНЕЕ!</blockquote>Маркируем каждое '''1-е''' и каждое '''2-е''' соединение из локалки во внешку соответствующей маркировкой используя '''in-interface=bridge-local''' | ||
| Строка 74: | Строка 74: | ||
<code>add comment=from-local-route-via-ISP2 distance=1 gateway=172.18.0.129 routing-mark=from-local-route-via-ISP2</code> | <code>add comment=from-local-route-via-ISP2 distance=1 gateway=172.18.0.129 routing-mark=from-local-route-via-ISP2</code> | ||
=== Распределение по протоколам === | === Распределение '''по протоколам''' === | ||
Соединение каждого протокола отправляем через определенный шлюз | Соединение каждого протокола отправляем через определенный шлюз | ||
| Строка 93: | Строка 93: | ||
<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> | <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) === | === ??? Делим исходящий трафик, используя '''ecmp''' ('''equal cost multipath routing''') === | ||
<blockquote>??? СПОСОБ НЕ ЗАРАБОТАЛ, ВЕСЬ ТРАФИК ВСЁ РАВНО ИДЕТ ЧЕРЕЗ GW1 - РАЗОБРАТЬСЯ</blockquote><code>/ip firewall mangle</code> | <blockquote>??? СПОСОБ НЕ ЗАРАБОТАЛ, ВЕСЬ ТРАФИК ВСЁ РАВНО ИДЕТ ЧЕРЕЗ GW1 - РАЗОБРАТЬСЯ</blockquote><code>/ip firewall mangle</code> | ||
Версия 11:09, 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