Понадобилось организовать работу с двумя подключениями к интернету одновременно. Один провайдер Эр-Телеком, второй – Ростелеком. Оба подключаются по PPPOE. Заявленная скорость подключения примерно одинаковая.
Опишу кратко настройку маршрутизатора Mikrotik для одновременной работы с двумя провайдерами. В Сети можно немало найти руководств о настройке одновременной работы двух подключений. Однако не все они подходили именно под мой случай.
На самом деле не так важно два провайдера или больше, смысл настроек аналогичный.
В моём случае:
Эр-Телеком: pppoe-out1, ip-адрес: 94.144.177.177, routing-mark: to-isp1, connection-mark: to-isp1c
Ростелеком: pppoe-out2, ip-адрес: 85.237.51.51, routing-mark: to-isp2, connection-mark: to-isp2c
Локальная сеть: 192.168.1.0/24
Сервер: 192.168.1.15
Таким образом требовалось:
1) разделить нагрузку по подключениям поровну (!).
2) обеспечить возможность подключения к компьютеру из интернет (DNAT)
С первым всё относительно просто. Предполагается что маскарадинг для локальной сети уже настроен.
/ip firewall nat add chain=srcnat action=masquerade src-address=192.168.1.0/24
Нужно создать статическое правило маршрутизации:
/ip route add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=pppoe-out1,pppoe-out2
В случае статической маршрутизации в качестве gateway указываются IP-адреса шлюза. А вот для туннельных протоколов лучше будет использовать имя интерфейса. Это нужно если шлюз назначается автоматически при установлении сессии.
Если с доступом к интернет-ресурсам все относительно просто, то с подключением из глобальной сети к компьютеру немного сложнее.
Во-первых придется создать правила NAT для второго подключения (читай второго IP-адреса) аналогично первому.
/ip firewall nat add chain=dstnat action=dst-nat to-addresses=192.168.1.15 to-ports=80 protocol=tcp dst-address=94.144.177.177 dst-port=80 add chain=dstnat action=dst-nat to-addresses=192.168.1.15 to-ports=80 protocol=tcp dst-address=85.237.51.51 dst-port=80
Теперь следует добиться того, чтобы ответ на запрос через какого-либо провайдера уходил на его же шлюз. Для этого потребуется маркировка маршрутов и соединений.
Маршрут по-умолчанию для маркированных пакетов:
/ip route add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=pppoe-out1 routing-mark=to-isp1 add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=pppoe-out2 routing-mark=to-isp2
Эти два правила промаркируют входящие соединения для каждого из провайдеров.
/ip firewall mangle add action=mark-connection chain=forward disabled=no in-interface=pppoe-out1 new-connection-mark=to-isp1c passthrough=yes add action=mark-connection chain=forward disabled=no in-interface=pppoe-out2 new-connection-mark=to-isp2c passthrough=yes
Следующая пара правил нужна если только необходимо ходить на внешние ресурсы строго через определенного провайдера. Например на локальные ресурсы, доступ на которые возможен только из «домашней» сети провайдера. Таким образом, к ресурсам Эр-Телеком подключаемся через Эр-Телеком, к Ростелеком через Ростелеком.
/ip firewall mangle add action=mark-routing chain=prerouting comment="to dom.ru" connection-state=new disabled=no dst-address=!94.144.177.177 dst-address-list=domnet \ new-routing-mark=to-isp1 passthrough=yes src-address=192.168.1.0/24 add action=mark-routing chain=prerouting comment="to rtk" connection-state=new disabled=no dst-address=!85.237.51.51 dst-address-list=rtknet \ new-routing-mark=to-isp2 passthrough=yes src-address=192.168.1.0/24
Для этих правил следует предварительно создать списки ip-адресов domnet и rtknet. Например так:
/ip firewall address-list add list=domnet address=94.181.128.0/18 disabled=no add list=rtknet address=85.237.0.0/16 disabled=no
Последняя пара правил направляет ответы на шлюз того провайдера которому принадлежат соединения:
/ip firewall mangle add action=mark-routing chain=prerouting connection-mark=to-isp1c disabled=no new-routing-mark=to-isp1 passthrough=yes src-address=192.168.1.0/24 add action=mark-routing chain=prerouting connection-mark=to-isp2c disabled=no new-routing-mark=to-isp2 passthrough=yes src-address=192.168.1.0/24
Неплохо, подмечено много актуальных тонкостей в посте. Актуально написано!