289 lines
13 KiB
Markdown
289 lines
13 KiB
Markdown
# Настройка MultiWAN на MikroTik RouterOS v7
|
|
|
|
## Описание конфигурации
|
|
|
|
Данная инструкция описывает настройку MultiWAN с тремя провайдерами для обеспечения отказоустойчивости и распределения VPN соединений по разным внешним IP адресам.
|
|
|
|
### Провайдеры:
|
|
1. **Ростелеком (RTK-Internet)** - ether8, PPPoE, внешний IP: 87.103.241.8
|
|
2. **Электронный город** - ether1, DHCP, внешний IP: 178.49.24.65
|
|
3. **МТС** - ether7, DHCP, внешний IP: 109.174.26.78
|
|
|
|
## Схема подключения
|
|
|
|
```
|
|
[Ростелеком] ---- ether8 ---- [MikroTik Router]
|
|
[Эл.Город] ---- ether1 ---- [MikroTik Router] ---- LAN
|
|
[МТС] ---- ether7 ---- [MikroTik Router]
|
|
```
|
|
|
|
## Базовые настройки
|
|
|
|
### 1. Настройка интерфейсов
|
|
|
|
```bash
|
|
# Настройка интерфейсов
|
|
/interface ethernet
|
|
set [ find default-name=ether1 ] comment="Электронный город"
|
|
set [ find default-name=ether7 ] comment="МТС"
|
|
set [ find default-name=ether8 ] comment="Ростелеком"
|
|
|
|
# Создание списка WAN интерфейсов
|
|
/interface list
|
|
add name=WAN
|
|
|
|
# Добавление интерфейсов в WAN список
|
|
/interface list member
|
|
add interface=ether1 list=WAN
|
|
add interface=ether7 list=WAN
|
|
add interface=ether8 list=WAN
|
|
|
|
# Настройка локальной сети
|
|
/interface bridge
|
|
add name=br-lan
|
|
/interface bridge port
|
|
add bridge=br-lan interface=ether2
|
|
add bridge=br-lan interface=ether3
|
|
add bridge=br-lan interface=ether4
|
|
add bridge=br-lan interface=ether5
|
|
add bridge=br-lan interface=ether6
|
|
```
|
|
|
|
### 2. Настройка IP адресов
|
|
|
|
```bash
|
|
# IP адреса для провайдеров
|
|
/ip address
|
|
add address=192.168.88.254/24 interface=br-lan comment="LAN"
|
|
|
|
# PPPoE для Ростелеком
|
|
/interface pppoe-client
|
|
add name=RTK-Internet interface=ether8 user=your_username password=your_password
|
|
add address=87.103.241.8/32 interface=RTK-Internet comment="Ростелеком"
|
|
|
|
# DHCP для Электронного города
|
|
/ip dhcp-client
|
|
add interface=ether1 name=dhcp-elcity
|
|
add address=178.49.24.65/32 interface=ether1 comment="Электронный город"
|
|
|
|
# DHCP для МТС
|
|
/ip dhcp-client
|
|
add interface=ether7 name=dhcp-mts
|
|
add address=109.174.26.78/32 interface=ether7 comment="МТС"
|
|
```
|
|
|
|
### 3. Настройка NAT
|
|
|
|
```bash
|
|
# Включение masquerading для всех WAN интерфейсов
|
|
/ip firewall nat
|
|
add action=masquerade chain=srcnat out-interface-list=WAN
|
|
```
|
|
|
|
## Создание таблиц маршрутизации
|
|
|
|
### 1. Дополнительные routing tables
|
|
|
|
```bash
|
|
# Создание таблиц маршрутизации для каждого провайдера
|
|
/routing table
|
|
add disabled=no fib name=rtab-rtk comment="Ростелеком"
|
|
add disabled=no fib name=rtab-elcity comment="Электронный город"
|
|
add disabled=no fib name=rtab-mts comment="МТС"
|
|
```
|
|
|
|
### 2. Маршруты по умолчанию
|
|
|
|
```bash
|
|
# Основные маршруты по умолчанию в таблице main
|
|
/ip route
|
|
add distance=251 gateway=87.103.241.1 comment="Ростелеком основной"
|
|
add distance=252 gateway=178.49.24.1 comment="Эл.Город основной"
|
|
add distance=253 gateway=109.174.26.1 comment="МТС основной"
|
|
|
|
# Маршруты в отдельных таблицах
|
|
/ip route
|
|
add gateway=87.103.241.1 routing-table=rtab-rtk comment="Ростелеком таблица"
|
|
add gateway=178.49.24.1 routing-table=rtab-elcity comment="Эл.Город таблица"
|
|
add gateway=109.174.26.1 routing-table=rtab-mts comment="МТС таблица"
|
|
|
|
# Настройка таблицы main для отказоустойчивости
|
|
/ip route
|
|
add distance=1 gateway=87.103.241.1 routing-table=main comment="Main Ростелеком"
|
|
add distance=2 gateway=178.49.24.1 routing-table=main comment="Main Эл.Город"
|
|
add distance=3 gateway=109.174.26.1 routing-table=main comment="Main МТС"
|
|
```
|
|
|
|
## Настройка маркировки (Mangle)
|
|
|
|
### 1. Маркировка соединений по интерфейсам
|
|
|
|
```bash
|
|
# Маркировка соединений по входящим интерфейсам
|
|
/ip firewall mangle
|
|
add action=mark-connection chain=prerouting connection-mark=no-mark in-interface=RTK-Internet new-connection-mark=con-rtk passthrough=yes comment="Маркировка Ростелеком"
|
|
add action=mark-connection chain=prerouting connection-mark=no-mark in-interface=ether1 new-connection-mark=con-elcity passthrough=yes comment="Маркировка Эл.Город"
|
|
add action=mark-connection chain=prerouting connection-mark=no-mark in-interface=ether7 new-connection-mark=con-mts passthrough=yes comment="Маркировка МТС"
|
|
```
|
|
|
|
### 2. Маркировка маршрутизации
|
|
|
|
```bash
|
|
# Маркировка маршрутизации для исходящего трафика
|
|
/ip firewall mangle
|
|
add action=mark-routing chain=prerouting connection-mark=con-rtk in-interface-list=!WAN new-routing-mark=rtab-rtk passthrough=yes comment="Роутинг Ростелеком"
|
|
add action=mark-routing chain=prerouting connection-mark=con-elcity in-interface-list=!WAN new-routing-mark=rtab-elcity passthrough=yes comment="Роутинг Эл.Город"
|
|
add action=mark-routing chain=prerouting connection-mark=con-mts in-interface-list=!WAN new-routing-mark=rtab-mts passthrough=yes comment="Роутинг МТС"
|
|
|
|
# Маркировка для исходящих соединений
|
|
/ip firewall mangle
|
|
add action=mark-routing chain=output connection-mark=con-rtk new-routing-mark=rtab-rtk passthrough=yes comment="Output Ростелеком"
|
|
add action=mark-routing chain=output connection-mark=con-elcity new-routing-mark=rtab-elcity passthrough=yes comment="Output Эл.Город"
|
|
add action=mark-routing chain=output connection-mark=con-mts new-routing-mark=rtab-mts passthrough=yes comment="Output МТС"
|
|
```
|
|
|
|
## Настройка отказоустойчивости
|
|
|
|
### 1. Рекурсивные маршруты для failover
|
|
|
|
```bash
|
|
# Рекурсивные маршруты для автоматического переключения
|
|
/ip route
|
|
add distance=1 gateway=87.103.241.1 routing-table=rtab-elcity comment="Failover Ростелеком->Эл.Город"
|
|
add distance=1 gateway=87.103.241.1 routing-table=rtab-mts comment="Failover Ростелеком->МТС"
|
|
add distance=1 gateway=178.49.24.1 routing-table=rtab-rtk comment="Failover Эл.Город->Ростелеком"
|
|
add distance=1 gateway=178.49.24.1 routing-table=rtab-mts comment="Failover Эл.Город->МТС"
|
|
add distance=1 gateway=109.174.26.1 routing-table=rtab-rtk comment="Failover МТС->Ростелеком"
|
|
add distance=1 gateway=109.174.26.1 routing-table=rtab-elcity comment="Failover МТС->Эл.Город"
|
|
|
|
# Рекурсивные маршруты для таблицы main
|
|
/ip route
|
|
add distance=1 gateway=178.49.24.1 routing-table=main comment="Main failover Эл.Город"
|
|
add distance=1 gateway=109.174.26.1 routing-table=main comment="Main failover МТС"
|
|
```
|
|
|
|
### 2. Настройка health check
|
|
|
|
```bash
|
|
# Создание health check для провайдеров
|
|
/tool ping
|
|
add address=8.8.8.8 interval=10s name=ping-rtk
|
|
add address=8.8.8.8 interval=10s name=ping-elcity
|
|
add address=8.8.8.8 interval=10s name=ping-mts
|
|
|
|
# Настройка автоматического переключения при недоступности
|
|
/ip route
|
|
add distance=1 gateway=87.103.241.1 routing-table=rtab-rtk check-gateway=ping
|
|
add distance=1 gateway=178.49.24.1 routing-table=rtab-elcity check-gateway=ping
|
|
add distance=1 gateway=109.174.26.1 routing-table=rtab-mts check-gateway=ping
|
|
|
|
# Health check для таблицы main
|
|
/ip route
|
|
add distance=1 gateway=87.103.241.1 routing-table=main check-gateway=ping comment="Main health check Ростелеком"
|
|
add distance=2 gateway=178.49.24.1 routing-table=main check-gateway=ping comment="Main health check Эл.Город"
|
|
add distance=3 gateway=109.174.26.1 routing-table=main check-gateway=ping comment="Main health check МТС"
|
|
```
|
|
|
|
## Настройка VPN соединений
|
|
|
|
### 1. Создание VPN интерфейсов для каждого провайдера
|
|
|
|
```bash
|
|
# VPN интерфейсы для разных провайдеров
|
|
/interface ovpn-client
|
|
add name=ovpn-rtk connect-to=your_vpn_server_rtk user=your_vpn_user password=your_vpn_password
|
|
add name=ovpn-elcity connect-to=your_vpn_server_elcity user=your_vpn_user password=your_vpn_password
|
|
add name=ovpn-mts connect-to=your_vpn_server_mts user=your_vpn_user password=your_vpn_password
|
|
```
|
|
|
|
### 2. Маркировка VPN трафика
|
|
|
|
```bash
|
|
# Маркировка VPN соединений по провайдерам
|
|
/ip firewall mangle
|
|
add action=mark-connection chain=prerouting connection-mark=no-mark in-interface=ovpn-rtk new-connection-mark=con-rtk passthrough=yes comment="VPN Ростелеком"
|
|
add action=mark-connection chain=prerouting connection-mark=no-mark in-interface=ovpn-elcity new-connection-mark=con-elcity passthrough=yes comment="VPN Эл.Город"
|
|
add action=mark-connection chain=prerouting connection-mark=no-mark in-interface=ovpn-mts new-connection-mark=con-mts passthrough=yes comment="VPN МТС"
|
|
```
|
|
|
|
## Настройка балансировки нагрузки
|
|
|
|
### 1. Политика балансировки
|
|
|
|
```bash
|
|
# Настройка политики для распределения трафика
|
|
/ip firewall mangle
|
|
add action=mark-connection chain=prerouting connection-mark=no-mark in-interface-list=!WAN new-connection-mark=con-rtk passthrough=yes src-address=192.168.88.0/24 dst-address=0.0.0.0/0 comment="Балансировка Ростелеком"
|
|
add action=mark-connection chain=prerouting connection-mark=no-mark in-interface-list=!WAN new-connection-mark=con-elcity passthrough=yes src-address=192.168.88.0/24 dst-address=0.0.0.0/0 comment="Балансировка Эл.Город"
|
|
add action=mark-connection chain=prerouting connection-mark=no-mark in-interface-list=!WAN new-connection-mark=con-mts passthrough=yes src-address=192.168.88.0/24 dst-address=0.0.0.0/0 comment="Балансировка МТС"
|
|
```
|
|
|
|
## Проверка конфигурации
|
|
|
|
### 1. Проверка таблиц маршрутизации
|
|
|
|
```bash
|
|
# Просмотр таблиц маршрутизации
|
|
/routing table print
|
|
|
|
# Просмотр маршрутов в каждой таблице
|
|
/ip route print where routing-table=rtab-rtk
|
|
/ip route print where routing-table=rtab-elcity
|
|
/ip route print where routing-table=rtab-mts
|
|
|
|
# Просмотр маршрутов в основной таблице
|
|
/ip route print where routing-table=main
|
|
```
|
|
|
|
### 2. Проверка маркировки
|
|
|
|
```bash
|
|
# Просмотр правил mangle
|
|
/ip firewall mangle print
|
|
|
|
# Проверка connection marks
|
|
/ip firewall connection print
|
|
```
|
|
|
|
### 3. Тестирование подключения
|
|
|
|
```bash
|
|
# Тест подключения через разные провайдеры
|
|
/tool traceroute 8.8.8.8 routing-table=rtab-rtk
|
|
/tool traceroute 8.8.8.8 routing-table=rtab-elcity
|
|
/tool traceroute 8.8.8.8 routing-table=rtab-mts
|
|
```
|
|
|
|
## Мониторинг и логирование
|
|
|
|
### 1. Настройка логирования
|
|
|
|
```bash
|
|
# Логирование изменений маршрутизации
|
|
/system logging
|
|
add action=memory topics=route
|
|
add action=memory topics=firewall
|
|
```
|
|
|
|
### 2. Мониторинг интерфейсов
|
|
|
|
```bash
|
|
# Мониторинг состояния интерфейсов
|
|
/interface monitor-traffic interface=RTK-Internet
|
|
/interface monitor-traffic interface=ether1
|
|
/interface monitor-traffic interface=ether7
|
|
```
|
|
|
|
## Заключение
|
|
|
|
Данная конфигурация обеспечивает:
|
|
- Отказоустойчивость при выходе из строя одного из провайдеров
|
|
- Распределение VPN соединений по разным внешним IP адресам
|
|
- Балансировку нагрузки между провайдерами
|
|
- Автоматическое переключение при недоступности каналов
|
|
|
|
Для применения конфигурации выполните команды последовательно, начиная с базовых настроек интерфейсов и заканчивая настройкой VPN соединений.
|
|
|
|
## Источники
|
|
|
|
- [Multiwan and routing in MikroTik ROS v7](https://mikrotik-training.ru/files/MUoM/2021/kuznetsov.pdf) - Владимир Кузнецов, Yandex |