Настройка переключения на резервный канал микротик. Mikrotik. Два провайдера. Автоматическое переключение между шлюзами (без скриптов)

В этой статье описана самая полная инструкция, как настроить роутер MikroTik на два провайдера.

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

Для обеспечения отказоустойчивого интернет-канала вам понадобится роутер, который поддерживает настройку на несколько провайдеров. Роутеры MikroTik прекрасно подходят для данной задачи.

Описание подключений

В примере мы будем использовать роутер MikroTik RB951Ui-2HnD .

В 1-ый порт роутера подключен кабель от 1-го провайдера, во 2-ой порт подключен кабель от 2-го провайдера, порты 3-5 и Wi-Fi используются для подключения компьютеров локальной сети.

1-й порт будет настроен на динамическое получение сетевых настроек от провайдера по DHCP. Провайдер выдает роутеру динамический IP-адрес 10.10.10.10

2-й порт будет настроен вручную на статический IP-адрес 20.20.20.20, шлюз 20.20.20.1 и маску 255.255.255.0

Сброс конфигурации по умолчанию

С помощью программы Winbox сбрасываем заводскую конфигурацию по умолчанию, чтобы настроить роутер MikroTik на два провайдера с нуля:


После перезагрузки в Winbox выберите в списке MAC адрес устройства, и подключитесь с пользователем admin без пароля.

Настройка 1-го WAN порта

Настраиваем 1-й порт на динамическое получение сетевых настроек от провайдера по DHCP.

  1. Откройте меню IP - DHCP Client ;
  2. В появившемся окне в списке Interface выберите интерфейс ether1 ;
  3. Add Default Route выберите No ;
  4. Нажмите кнопку OK .

Теперь мы получили IP адрес от провайдера, который отображается в столбце IP Address .

Проверим, что есть подключение к интернет. Откройте меню New Terminal и введите команду ping ya.ru . Как видите, пинг есть.

Настройка 2-го WAN порта

2-й порт настраиваем на статический IP-адрес 20.20.20.20, шлюз 20.20.20.1 и маску 255.255.255.0

  1. Откройте меню IP - Addresses ;
  2. Нажмите кнопку Add (синий крестик);
  3. В появившемся окне в поле Address пропишите статический IP адрес / маску подсети 20.20.20.20/24 ;
  4. В списке Interface выберите интерфейс ether2 ;
  5. Нажмите кнопку OK .

Настоим IP-адрес интернет шлюза:

  1. Откройте меню IP - Routes ;
  2. Нажмите кнопку Add (синий крестик);
  3. В появившемся окне в поле Gateway пропишите IP адрес шлюза 20.20.20.1 ;
  4. Нажмите кнопку OK .

Добавим IP-адрес DNS сервера:

  1. Откройте меню IP - DNS ;
  2. В поле Servers пропишите IP адрес DNS сервера, например 8.8.8.8 ;
  3. Уберите галочку Allow Remote Requests ;
  4. Нажмите кнопку OK .

Проверим, что есть подключение к интернет. Отключите кабель первого провайдера, откройте меню New Terminal и введите команду ping ya.ru .

Пинги идут, значит все настроено правильно. Можно подключить кабель первого провайдера обратно.

Настройка LAN портов 3-5 и Wi-Fi

LAN порты 3-5 будут объединены с Wi-Fi интерфейсом в единую локальную сеть, к которой будут подключаться компьютеры.

Объединяем LAN порты 3-5 в свитч

  1. Откройте меню Interface ;
  2. Сделайте двойной щелчок мыши по интерфейсу ether4;
  3. В списке Master Port выберите ether3 (главный порт нашего свитча);
  4. Нажмите кнопку ОК .

Повторите тоже самое для интерфейса ether5 .

Напротив портов ether4 и ether5 появится буква S (Slave - ведомый).

Создаем интерфейс Bridge-local и объединяем в нем LAN порты и Wi-Fi

Чтобы LAN порты 3-5 объединить с Wi-Fi в одну сеть, нужно создать bridge интерфейс, и добавить в него мастер порт свитча ether3 и Wi-Fi интерфейс wlan1 .

Создаем интерфейс bridge-local :

  1. Откройте меню Bridge ;
  2. Нажмите кнопку Add (синий крестик);
  3. В поле Name пропишите имя интерфейса bridge-local ;
  4. Нажмите кнопку OK .

Добавляем главный порт свитча ether3 в bridge-local :

  1. Перейдите на вкладку Ports и нажмите кнопку Add (синий крестик);
  2. В списке Interface выберите главный ethernet порт свитча ether3 ;
  3. В списке Bridge выберите интерфейс bridge-local ;
  4. Нажмите кнопку OK .

Добавляем Wi-Fi интерфейс в bridge-local :

  1. На вкладке Ports нажмите кнопку Add (синий крестик);
  2. В списке Interface выберите беспроводной интерфейс wlan1 ;
  3. В списке Bridge выберите интерфейс bridge-local ;
  4. Нажмите кнопку OK .

Назначаем IP-адрес интерфейсу bridge-local :

  1. Откройте меню IP - Addresses ;
  2. Нажмите кнопку Add (синий крестик);
  3. В поле Address введите IP-адрес и маску локальной сети 192.168.88.1/24 ;
  4. В списке Interface выберите интерфейс локальной сети bridge-local ;
  5. Нажмите кнопку OK .

Настраиваем DHCP сервер локальной сети.

Чтобы компьютеры, подключенные к роутеру, получали сетевые настройки автоматически, настроим DHCP сервер:


Настройка Wi-Fi

Сначала включим Wi-Fi:

  1. Откройте меню Wireless ;
  2. Нажмите левой кнопкой мыши на интерфейсе wlan1 и нажмите кнопку Enable (синяя галочка).

Создаем пароль для подключения к точке доступа MikroTik:

  1. Откройте вкладку Security Profiles и сделайте двойной щелчок левой кнопкой мыши по default ;
  2. В появившемся окне в списке Mode выберите dynamic keys ;
  3. Поставьте галочку напротив регистрации по протоколу WPA2 PSK ;
  4. В поле WPA2 Pre-Shared Key введите пароль для подключения к Wi-Fi точке;
  5. Нажмите кнопку OK .

Настраиваем параметры Wi-Fi точки MikroTik:

  1. Откройте вкладку Interfaces и сделайте двойной щелчок левой кнопкой мыши на Wi-Fi интерфейсе wlan1 , чтобы зайти в его настройки;
  2. Перейдите на вкладку Wireless ;
  3. В списке Mode выберите режим работы ap bridge ;
  4. В списке Band выберите 2GHz-B/G/N (в каких стандартах будет работать Wi-Fi точка);
  5. В списке Channel Width укажите ширину канала 20/40Mhz HT Above , чтобы беспроводные устройства смогли подключиться на максимальной скорости с шириной канала 40 МГц;
  6. В списке Frequency укажите, на какой частоте будет работать Wi-Fi;
  7. В поле SSID укажите имя Wi-Fi сети;
  8. Нажмите кнопку OK .

Настройка NAT

Чтобы компьютеры получили выход в интернет, необходимо настроить NAT.

Добавляем правило NAT для первого провайдера:


Добавляем правило NAT для второго провайдера:


Теперь на подключенных к роутеру компьютерах должен появиться интернет. Проверьте это.

Настройка переключения интернет каналов между двумя провайдерами

Для настройки переключения интернет каналов между двумя провайдерами будем использовать маршруты (Routes) и встроенную утилиту Netwatch .

У нас будет два маршрута, через которые может идти интернет трафик. Весь трафик будет идти по умолчанию через 1-го провайдера.

Если вдруг пропадет связь с 1-ым провайдером, то мы активируем 2-ой маршрут, и весь трафик пойдет через 2-го провайдера.

Как только восстановится связь через 1-го провайдера, мы деактивируем 2-ой маршрут, и весь трафик пойдет через 1-го провайдера.

Утилита Netwatch поможет пинговать ip-адрес в интернете и выполнять скрипты, если ip-адрес перестал пинговаться или снова начал. Она будет выполнять активацию и деактивацию маршрута.

Сначала удалим маршрут через первого провайдера, который создался автоматически, поскольку мы не можем редактировать его свойства.

  1. Откройте меню IP - Routes ;
  2. Кликните левой кнопкой мыши по маршруту первого провайдера со шлюзом 10.10.10.1 unrechable ;
  3. Нажмите кнопку удалить (красный минус).

Теперь изменим параметры маршрута второго провайдера:


  1. Откройте меню IP - DHCP Client ;
  2. Сделайте двойной щелчок левой кнопкой мыши на интерфейсе ether1 ;
  3. Перейдите на вкладку Status ;
  4. Выпишите IP-адрес шлюза из поля Gateway . Он будет нужен при создании маршрута через первого провайдера.

Теперь добавляем маршрут через первого провайдера:


3-й маршрут понадобится для того, чтобы сервер Google по умолчанию пинговался только через 1-го провайдера.


Также добавим в Firewall правило, которое запретит пинговать ip-адрес 8.8.4.4 через 2-го провайдера. Иначе утилита Netwatch подумает, что связь с 1-ым провайдером восстановилась, и будет постоянно переключать маршруты по кругу.


Netwatch будет проверять связь с интернетом путем пингования сервера Google с IP-адресом 8.8.4.4. Как только сервер перестанет пинговаться, выполнится скрипт, который активирует 2-й маршрут и трафик пойдет через 2-го провайдера. Как только связь через 1-го провайдера восстановится, то выполнится другой скрипт, который деактивирует 2-й маршрут и трафик пойдет через 1-го провайдера.


Проверка переключения интернета между двумя провайдерами

Проверим, как работает переключение между двумя провайдерами.


Настройка роутера MikroTik на два провайдера работает правильно. Теперь можно увеличить интервал пингования сервера Google.


На этом настройка маршрутизатора Микротик на два провайдера завершена.

В статье описана подробная инструкция как настроить резервирование канала интернет от двух мобильных операторв на роутере Mikrotik.

Интернет Mikrotik будет получать от двух встраиваемых роутеров Tandem-4GL-OEM . В роутерах будут использованы SIM-карты двух различных мобильных операторов. Один из операторов будет использован в качестве основного канала интернет, второй - в качестве резервного. При пропадании интернета на основном канале, Mikrotik должен переключить интернет на резервный канал. При возобновлении работы основного - автоматически переключить на основной канал. В результате получится очень стабильный интернет-канал от двух мобильных операторов, который может быть использован на удаленных объектах, где используется 3G/4G интернет.

Интересно:


Комплект для усиления мобильного итнернета
Роутер Tandem-4GL-OEM
Роутер Tandem-4GR
Модем Tandem-4G+

Установка роутера в автомобиль

Для интернета задействуем два порта роутера Mikrotik: 1-й и 5-й. 5-й порт (POE out) имеет возможность запитывать устройства по витой паре (Power over Ethernet), поэтому удобно использовать его, роутер Tandem-4GL-OEM имеет возможность питания по PoE.

Оба порта будут настроены на динамическое получение сетевых настроек по DHCP. По умолчанию роутеры Tandem-4GL-OEM имеют собственный IP адрес 192.168.1.1. Мы будем использовать 2 таких роутера, поэтому один из них необходимо настроить на другую подсеть.

Для этого подключите Tandem-4GL-OEM напрямую к компьютеру и зайдите в Web-интерфейс по адресу 192.168.1.1. Перейдите в меню Сеть - Интерфейсы - нажать кнопку Редактировать интерфейса LAN.

Пропишите новый IP-адрес для роутера. Мы вводим 192.168.2.1. При этом роутер автоматически будет раздавать IP адреса уже в этой подсети. Нажмите Сохранить.

Переходим к настройке Mikrotik . Роутер с IP 192.168.2.1 будет резервным каналом интернет, подключим его в 1-й порт роутера Mikrotik. 5-й порт с PoE будет основным интернетом.

Запускаем Winbox и подключаемся к роутеру по MAC адресу. (написан на самом роутере). По умолчанию пароль - admin, пароль не задан

С помощью программы Winbox сбрасываем заводскую конфигурацию по умолчанию, чтобы настроить роутер MikroTik на два провайдера с нуля:

  1. Откройте меню System - Reset Configuration;
  2. Поставьте галочку No Default Configuration;
  3. Нажмите Reset Configuration.

Переподключитесь к Mikrotik с помощью Winbox.

Настроим LAN порты 2-4 и Wi-Fi. Эти порты будут объединены в единую локальную сеть. Для этого создадим интерфейс Bridge и добавим в него интерфейсы ethe2-ether4 и wlan1.

Открываем меню Bridge, нажимаем +, в поле Name прописываем имя интерфейса, нажимаем ОК.

Переходим во вкладку Ports меню Bridge. Добавим все порты ether2-erher4 и wlan1.

  1. Для этого нажимаем +;
  2. В списке Interface выберите ether2;
  3. В списке Bridge выберите интерфейс bridge-local, нажмите ОК.

Повторите операцию для остальных портов ether и для Wi-Fi - wlan1.

Назначаем IP-адрес интерфейсу bridge:

  1. Откройте меню IP - Addresses;
  2. Нажмите кнопку +;
  3. В поле Address введите IP-адрес и маску локальной сети 192.168.88.1/24;
  4. В списке Interface выберите интерфейс локальной сети bridge, нажмите ОК.

Настраиваем DHCP сервер локальной сети.

Чтобы компьютеры, подключенные к роутеру, получали сетевые настройки автоматически, настроим DHCP сервер:

Откройте меню IP - DHCP Server и нажмите кнопку DHCP Setup

  1. В первом окне выбираем интерфейс bridge, нажимаем Next;
  2. Во втором окне настраивается сеть для раздачи DHCP, оставим без изменения, Next;
  3. В третьем окне указывается адрес шлюза, оставляем без изменения, Next;
  4. Диапазон IP адресов, можно оставить без изменения, Next;
  5. Время аренды DHCP, можно оставить без изменения, Next, OK.

Настройка Wi-Fi

  1. Откройте меню Wireless;
  2. Нажмите на интерфейсе wlan1 и нажмите кнопку Enable (синяя галочка).

Создаем пароль для подключения к точке доступа MikroTik:

  1. Откройте вкладку Security Profiles и сделайте двойной щелчок левой кнопкой мыши по default;
  2. В появившемся окне в списке Mode выберите dynamic keys;
  3. Поставьте галочку напротив регистрации по протоколу WPA2 PSK;
  4. В поле WPA2 Pre-Shared Key введите пароль для подключения к Wi-Fi точке; OK.

Настраиваем параметры Wi-Fi точки MikroTik:

  1. Откройте вкладку Interfaces и сделайте двойной щелчок левой кнопкой мыши на Wi-Fi интерфейсе wlan1, чтобы зайти в его настройки;
  2. Перейдите на вкладку Wireless, в списке Mode выберите режим работы ap bridge;
  3. В поле SSID укажите имя Wi-Fi сети, ОК. Также можете настроить другие параметры.

Настройка портов интернета

Настраиваем 5-й порт на динамическое получение сетевых настроек от провайдера по DHCP.

  1. Откройте меню IP - DHCP Client;
  2. Нажмите кнопку Add (синий крестик);
  3. В появившемся окне в списке Interface выберите интерфейс ether1;
  4. Add Default Route выберите No; ОК.

Проделаем то же самое для порта ether1

Настройка переключения интернет каналов между двумя провайдерами

Для настройки переключения интернет каналов между двумя провайдерами будем использовать маршруты (Routes) и встроенную утилиту Netwatch.

У нас будет два маршрута, через которые может идти интернет трафик. Весь трафик будет идти по умолчанию через 1-го провайдера.

Если вдруг пропадет связь с 1-ым провайдером, то мы активируем 2-ой маршрут, и весь трафик пойдет через 2-го провайдера.

Как только восстановится связь через 1-го провайдера, мы деактивируем 2-ой маршрут, и весь трафик пойдет через 1-го провайдера.

Утилита Netwatch поможет пинговать ip-адрес в интернете и выполнять скрипты, если ip-адрес перестал пинговаться или снова начал. Она будет выполнять активацию и деактивацию маршрута.

Добавим 2 маршрута. Для этого зайдем в меню IP - Routes. Нажмите +, чтобы добавить новый маршрут

Введите параметры как на рисунке и нажмите кнопку Comment.

В поле Comment введите ISP1. Это нужно для того, чтобы определить маршрут при переключении на резерв и обратно.

Нажмите ОК в обоих окнах, снова добавьте новый маршрут и повторите действия для второго интернета.

  • В поле Gateway впишем 192.168.2.1
  • В поле Distance - 3
  • В Comment - ISP2

Добавим маршрут для команды ping. Снова добавьте новый маршрут кнопкой +. Введите данные как на изображении, нажмите Comment. Мы назвали интерфейс Google, т.к. именно этот адрес будем пинговать.

Добавим в Firewall правило, которое запретит пинговать ip-адрес 8.8.4.4 через 2-го провайдера. Иначе утилита Netwatch подумает, что связь с 1-ым провайдером восстановилась, и будет постоянно переключать маршруты по кругу.

  1. Откройте меню IP - Firewall и перейдите на вкладку Filter Rules;
  2. Нажмите кнопку +;
  3. В списке Chain выберите Output;
  4. В поле Dst. Address введите адрес сервера 8.8.4.4;
  5. В списке Out. Interface выберите ether1;
  6. Перейдите на вкладку Action;

В списке Action выберите Drop, нажмите ОК.

Настройка скрипта переключения на резервный канал

Netwatch будет проверять связь с интернетом путем пингования сервера Google с IP-адресом 8.8.4.4. Как только сервер перестанет пинговаться, выполнится скрипт, который активирует 2-й маршрут и трафик пойдет через 2-го провайдера. Как только связь через 1-го провайдера восстановится, то выполнится другой скрипт, который деактивирует 2-й маршрут и трафик пойдет через 1-го провайдера.

  1. Откройте меню Tools - Netwatch;
  2. Нажмите кнопку добавить (синий плюсик);
  3. В поле Host укажите сервер Google 8.8.4.4, который утилита будет пинговать;
  4. В поле Interval укажите интервал времени, через который будет пинговаться сервер, мы установили 15 с.
  5. Перейдите на вкладку Down;

На вкладке Down вставляем скрипт /ip route enable

Этот скрипт будет активировать маршрут через второго провайдера, если перестанет пинговаться сервер Google. Перейдите на вкладку Up.

На вкладке Up вставляем скрипт /ip route disable .

Этот скрипт будет деактивировать маршрут через второго провайдера, если восстановится связь через первого провайдера. Нажмите кнопку OK.

Проверка переключения интернета между двумя провайдерами

Откройте меню IP - Routes. Маршрут второго провайдера должен быть серого цвета, т.е. не активен.

Отсоедините от роутера кабель 1-го провайдера. В Routes маршрут второго провайдера должен активироваться.

Проверьте, появился ли интернет. Подключите обратно кабель от основного интернета. В течение 15 с должно произойти переключение.

Для экономии трафика желательно увеличить время пингования от 1 мин.

Возможны так же и другие варинаты резервирования.

> Резервирование каналов на Mikrotik без скриптов

Mikrotik. Failover. Load Balancing

Когда у меня встала необходимость разобраться, как сделать failover или load balancing, имея два и более каналов в мир, я нашел множество статей и инструкций, в которых описывались рабочие конфигурации. Но почти нигде не нашел разъяснения, как все работает, и описания отличий разных вариантов. Хочу исправить эту несправедливость и собрать простейшие варианты построения failover и load balancing конфигураций в одной статье.

Итак, у нас есть роутер, который соединяет нашу локальную сеть и два канала в интернет (основной ISP1 и резервный ISP2).

Давайте рассмотрим что же мы можем сделать:

У нас появился резервный канал, в который можно направить трафик при отказе основного. Но как сделать, чтобы mikrotik понял, что канал упал?

Простейшее резервирование каналов

Простейший failover можно настроить, используя приоритет маршрута (distance у mikrotik/cisco, metric в linux/windows), а так же механизм проверки доступности шлюза - check-gateway.

В приведенной ниже конфигурации весь интернет трафик по умолчанию ходит через 10.100.1.254 (ISP1). Но как только адрес 10.100.1.254 станет недоступным (а маршрут через него неактивным) - трафик пойдет через 10.200.1.254 (ISP2).

конфигурация: простейший failover


# Настроим сети провайдеров:





#Обеспечение резервирования каналов традиционным способом#
# укажем 2 default gateway с разными приоритетами
/ip route add dst-address=0.0.0.0/0 gateway=10.100.1.254 distance=1 check-gateway=ping
/ip route add dst-address=0.0.0.0/0 gateway=10.200.1.254 distance=2 check-gateway=ping

Check-gateway=ping для mikrotik обрабатывается так:
Периодически (каждые 10 секунд) шлюз проверяется отсылкой на него ICMP пакета (ping). Потерянным пакет считается, если он не вернулся в течении 10 секунд. После двух потерянных пакетов шлюз считается недоступным. После получения ответа от шлюза он становится доступным и счетчик потерянных пакетов сбрасывается.

Обеспечение failover с более глубоким анализом канала.

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

Я знаю два варианта решения этой инженерной задачи. Первый и самый распространенный - использовать скрипты, но так как в этой статье мы скрипты не трогаем, остановимся подробнее на втором. Он подразумевает не совсем корректное использование параметра scope, но поможет нам прощупать канал провайдера глубже, чем до шлюза.
Принцип прост:
Вместо традиционного указания default gateway=шлюз провайдера, мы скажем роутеру что default gateway это какой-то из всегда_доступных_узлов (например 8.8.8.8 или 8.8.4.4) и он в свою очередь доступен через шлюз провайдера.

конфигурация: failover с более глубоким анализом канала

# Настроим сети провайдеров:
/ip address add address=10.100.1.1/24 interface=ISP1
/ip address add address=10.200.1.1/24 interface=ISP2
# Настроим локальный интерфейс
/ip address add address=10.1.1.1/24 interface=LAN
# скроем за NAT все что выходит из локальной сети
/ip firewall nat add src-address=10.1.1.0/24 action=masquerade chain=srcnat
#Обеспечение failover c более глубоким анализом канала#
#с помощью параметра scope укажем рекурсивные пути к узлам 8.8.8.8 и 8.8.4.4
/ip route add dst-address=8.8.8.8 gateway=10.100.1.254 scope=10
/ip route add dst-address=8.8.4.4 gateway=10.200.1.254 scope=10
# укажем 2 default gateway через узлы путь к которым указан рекурсивно
/ip route add dst-address=0.0.0.0/0 gateway=8.8.8.8 distance=1 check-gateway=ping
/ip route add dst-address=0.0.0.0/0 gateway=8.8.4.4 distance=2 check-gateway=ping

Теперь разберем, что происходит чуть подробнее:
Хитрость в том, что шлюз провайдера не знает о том, что 8.8.8.8 или 8.8.4.4 - это роутер и направит трафик по обычному пути.
Наш mikrotik считает, что по умолчанию весь интернет трафик нужно отправлять на 8.8.8.8, который напрямую не виден, но через 10.100.1.254 доступен. А если пинг на 8.8.8.8 пропадает (напомню что путь к нему у нас жестко указан через шлюз от ISP1) то mikrotik начнет слать весь интернет трафик на 8.8.4.4, а точнее на рекурсивно определенный 10.200.1.254 (ISP2).

На дистрибьютерском форуме юзер под ником Barvinok начал писать
цикл статей, пытаясь объединить и систематизировать накопленную базу
знаний по Mikrotik в целом и по теме двух провайдеров в частности. С его
позволения я копирну все к себе на страничку. Желающие могут сходить к
первоисточнику http://mikrotik.ru/forum/viewtopic.php?f=1 5&t=3280
Настройка роутера с нуля.
Этим разделом восполню скудность прикладной части.
Согласно названию темы я настраиваю роутер именно на двух провайдеров. Модель роутера я подразумеваю RB7xx series.
Источники:
Обзор и настройка Mikrotik RB751U-2HnD в режиме беспроводного роутера с подключением к сети Интернет.
Сергей Лаговский: MikroTik - Начальная настройка

Источника
читать обязательно. Я не будут писать руководство "Микротик для
домохозяек", типа "возьмите кабель в правую руку...". Здесь я обозначу
лишь вехи, ступени. А как именно это делать - в вышеозначенных
источниках.
Я пользуюсь командной строкой терминала через Winbox и все примеры буду приводить именно в таком виде.
1. Сбрасываем начальные настройки:

/system reset-configuration


2. Скачиваем Upgrade package и мышкой перетаскиваем в Winbox. Далее:

/system reboot

и после перезагрузки:

/system routerboard upgrade


3. Создаю мост из последних трёх портов:

/interface bridge
add name=Local_Net
add bridge=Local_Net interface=ether3
add bridge=Local_Net interface=ether4
add bridge=Local_Net interface=ether5


4. Назначаю этому мосту IP-адрес:

/ip address add address=192.168.1.1/24 interface=Local_Net


5. Настраиваем на нём же DHCP-сервер:

/ip dhcp-server setup

В качестве DNS-сервера пусть выдаёт адрес самого Микротика: 192.168.1.1. Чуть позже поясню, почему так.

6. Разрешаем роутеру отвечать на запросы DNS:

/ip dns set allow-remote-requests=yes

Переведём дух: теперь мы добились коробочной функциональности D-Link:)

7. По совету Сергея Лаговского я всегда меняю имя суперпользователя:

/user add name=supername password=superpass group=full
/quit

Заходим под новым пользователем и отключаем старого:

/user disable admin

8. Назначаем сервер времени и часовой пояс:

/system ntp client set enabled=yes mode=unicast primary-ntp=83.229.137.52 secondary-ntp=213.141.146.135
/system clock set time-zone-name=Europe/Moscow

9. Настраиваем интернет-подключения.
Я возьму сложный случай двух неравнозначных провайдеров:


  • Первый
    провайдер даёт интернет через PPPoE по ADSL: 8Мбит входящий/0,8 Мбит
    исходящий. IP-адрес и прочие сетевые настройки выдаются провайдером
    динамически.

  • Второй - очень качественный, но дорогой по оптике: симметричный канал 1 Мбит. IP-адрес и настройки статические (постоянные)

Значица нам нужно основной поток пользователей запустить через ADSL, а избранные сервисы реального времени (VoIP) - по оптике.

9.1. Настраиваем первого провайдера.
Переводим наш ADSL-модем в режим моста (Bridge). Втыкаем кабель в первый порт (ether1).
Создаём и настраиваем интерфейс PPPoE:

/interface pppoe-client add name=UTK user=ppp_user password=ppp_pasw use-peer-dns=yes interface=ether1

Если бы провайдер был единственный, можно было бы добавить "add-default-route=yes ". Но у нас другая задача.
"use-peer-dns " означает, что мы будем использовать DNS-сервера, назначенные провайдером при этом подключении.

/ip address print
/ping mail.ru

что бы убедиться, что соединение работает.

9.2. Настраиваем второго провайдера.
Втыкаем кабель из конвертера среды во второй порт и вводим настройки вручную:

/ip address add address=80.45.21.34/30 interface=ether2

Если провайдер даёт свои DNS-сервера, можно их явно задать:

/ip dns set servers=ip_server1,ip_server2

А можем назначить любые общедоступные, вроде гугловских: 8.8.8.8,8.8.4.4.

Напомню,
что благодаря п.6 наш маршрутизатор является DNS-сервером для локальной
сети. Но сам он, как ласковое теля - двух маток сосёт, произвольно
обращаясь к DNS-серверам любого провайдера.

10. Включаем трансляцию адресов.
Для провайдера 1:

/ip firewall nat add chain=srcnat action=masquerade protocol=tcp out-interface=UTK


Можно так же поступить и для второго, но мы поэстетствуем . Поскольку адрес у нас постоянный, используем не masquerade, а SNAT:

/ip firewall nat add chain=srcnat action=src-nat protocol=tcp src-address=192.168.1.0/24 to-addresses=80.45.21.34

Если бы наши провайдеры были равнозначны, то можно было бы сделать так:

/ip route add dst-address=0.0.0.0/0 gateway=UTK,ether2 check-gateway=ping

Мы сразу получаем отказоустойчивость и равномерное распределение нагрузки (равноценные пути).
Советую для пробы так сделать и поиграться с компьютеров локалки в
"tracert mail.ru", отключая то один, то другой внешний интерфейс -
просто, что б проверить.
Если провайдеры не равны лишь толщиной канала, можно поступить так:

/ip route add dst-address=0.0.0.0/0 gateway=UTK,UTK,ether2 check-gateway=ping

Теперь через первого провайдера пойдёт вдвое больше потоков, чем через второго.

Но наша задача чуть сложнее, поскольку провайдеры не равны не только количественно, но и качественно .
11. Поэтому мы отдельно назначим им маршруты и дадим разные предпочтения (distance).
Для первого провайдера проще всего сделать так:

/interface pppoe-client set 0 add-default-route=yes

Хотя мы могли это сделать и в п.9.1, но я решил выделить для порядка.
Для второго провайдера - так:

/ip route add dst-address=0.0.0.0/0 gateway=80.45.21.34 distance=2 check-gateway=ping


Теперь вся наша сеть ходит через провайдера 1, а если он падает - через провайдера 2.

12. Выделим важные потоки (Skype, SIP), которые нужно отправлять в сеть через провайдера 2.

Здесь я сделаю отступление, посвящённое маркировке (отметке) пакетов и соединений, поскольку эта тема достаточно любопытна.

Отступление 4
Маркировка

Используется
для установки меток для определенных пакетов. Это действие может
выполняться только в пределах таблицы mangle. Установка меток обычно
используется для нужд маршрутизации пакетов по различным маршрутам, для
ограничения трафика и т.п.. За дополнительной информацией вы можете
обратиться к Linux Advanced Routing and Traffic Control HOW-TO. Не
забывайте, что "метка" пакета существует только в период времени пока
пакет не покинул брандмауэр, т.е. метка не передается по сети. Если
необходимо как-то пометить пакеты, чтобы использовать маркировку на
другой машине, то можете попробовать манипулировать битами поля TOS.


Manual:IP/Firewall/Mangle на Mikrotik Wiki.

При
прочтении и написании правил важно очень ясно понимать, где мы
указываем признак, по которому выделяем пакет из потока, а где
производим действие с пакетом (принимаем, отбрасываем или клеймим таким
признаком).
Рассмотрим два правила из статьи о PCC :
/ip firewall mangle

add

in-interface=ether2 new-connection-mark=l2tp-out1_conn passthrough=yes
per-connection-classifier=src-address:2/0 src-address=172.16.0.0/16
add
action=mark-connection chain=prerouting dst-address-type=!local
in-interface=ether2 new-connection-mark=l2tp-out2_conn passthrough=yes
per-connection-classifier=src-address:2/1 src-address=172.16.0.0/16

add
action=mark-routing chain=prerouting connection-mark=l2tp-out1_conn
in-interface=ether2 new-routing-mark=to_l2tp-out1 passthrough=yes
add
action=mark-routing chain=prerouting connection-mark=l2tp-out2_conn
in-interface=ether2 new-routing-mark=to_l2tp-out2 passthrough=yes

В первом правиле мы помечаем соединение (action=mark-connection) в цепочке prerouting. Далее следуют признаки ,
по которым мы определяем соединение, должное быть помеченным: вид
адреса назначения - любой, кроме адреса самого маршрутизатора
(dst-address-type=!local), входящий интерфейс - ether2
(in-interface=ether2), адрес источника - любой компьютер из подсети
172.16.0.0/16. Далее следует чудная команда:
per-connection-classifier=src-address:2/0. Так мы разбиваем поток
пакетов, соответствующих этим признакам, надвое.
После чего одной части потока назначаем метку l2tp-out1_conn, а второй l2tp-out2_conn.
Passthrough
переводится как "насквозь". Вообще-то каждый пакет последовательно
проверяется на соответствие каждому правилу до первого совпадения. Как
только совпало - он тут же передаётся в следующую таблицу (в данном
случае - DNAT) или уничтожается, если действие DROP. Но если указано
passthrough=yes, пакет передаётся следующему по списку правилу в этой же
таблице.

Следующим правилом мы ставим отметку о предпочтительном
пути дальнейшего следования (action=mark-routing). Все соединения,
отмеченные l2tp-out1_conn (connection-mark) мы вдобавок клеймим меткой
to_l2tp-out1 (new-routing-mark). А потом и со второй половиной потока
поступаем соответственно.

В чем глубинный смысл этого последовательного клеймения и почему нельзя сразу ставить new-routing-mark, я пока что не понял. Но в официальном руководстве на Микротик Wiki делается так же.
Может кто-то объяснит?

Вообще, существует три действия со сходным названием, в которых не мешало бы разобраться:


  • mark-connection

  • mark-packet

  • mark-routing

Начнём с простого.

mark-routing
- place a mark specified by the new-routing-mark parameter on a packet.
This kind of marks is used for policy routing purposes only

Это действие ставит метку, которая используется исключительно при выборе пути дальнейшей пересылки. К примеру:

/ ip route
add dst-address=0.0.0.0/0 gateway=10.111.0.1 routing-mark=to_ISP1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.112.0.1 routing-mark=to_ISP2 check-gateway=ping


Но на случай обрыва одного из путей, следует в добавок делать общие правила без привязки к меткам:

add dst-address=0.0.0.0/0 gateway=10.111.0.1 distance=1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.112.0.1 distance=2 check-gateway=ping

А вот чем отличаются mark-packet от mark-connection?
Очевидно, тем же, чем отличается пакет от соединения.
Читаем :

Marking
each packet is quite resource expensive especially if rule has to match
against many parameters from IP header or address list containing
hundreds of entries

Клеймить каждый пакет очень дорогое
удовольствие, особенно, если правило содержит много признаков для
сравнения из заголовка IP-пакета или адресного листа, содержащего сотни
записей.
Дальше говорится о непосильном труде маршрутизаторов,
обременённых сложными правилами проверки каждого пакета в 100-мегабитных
сетях. Вычислительная нагрузка на процессор стремительно растёт, что,
по сути, приводит к невозможности использования этого способа маркировки
при управлении большими потоками данных.

Цитата:

Fortunately if connection tracking is enabled, we can use connection marks to optimize our setup.

К счастью, если включено отслеживание соединений, мы можем помечать соединения, что гораздо лучше!
Вот
оно - преимущество работы с образностью высокого уровня. Чем выше
уровень обобщения, тем меньше труда тебе приходится затрачивать на
достижение цели!

/ip firewall mangle
add chain=forward protocol=tcp port=!80 dst-address-list=first connection-state=new action=mark-connection \
new-connection-mark=first
add chain=forward connection-mark=first action=mark-packet new-packet-mark=first passthrough=no

Add chain=forward protocol=udp dst-address-list=second connection-state=new action=mark-connection \
new-connection-mark=second
add chain=forward connection-mark=second action=mark-packet new-packet-mark=second passthrough=no


Цитата:

Now
first rule will try to match data from IP header only from first packet
of new connection and add connection mark. Next rule will no longer
check IP header for each packet, it will just compare connection marks
resulting in lower CPU consumption. Additionally passthrough=no was
added that helps to reduce CPU consumption even more.


Значица, первое правило проверяет данные лишь в заголовке первого пакета нового соединения, считая, что в пределах этого соединения все прочие будут с ним совпадать. Следующее правило, вместо того, что бы проверять заголовок каждого пакета смотрит только на метку соединения, что значительно снижает нагрузку на CPU. В добавок правило "passthrough=no" сразу прерывает прохождение пакетов по этой таблице переводя в следующую, что так же разгружает CPU!

Ооу... Хитрый приём! Теперь понятно, почему в примере с PCC мы сначала помечали соединение, а потом на основании этой метки ставили второю - о маршрутизации.
Но возникают вопросы.
Первый: а как можно понять, что пакет принадлежит тому или иному соединению не заглянув в его заголовок? Очевидно - никак. Значит каждый пакет в любом случае обрабатывается отдельно, но происходит это за пределами IPTables и это не вызывает особой нагрузки на центральный процессор, в отличии от обработки по списку правил внутри IPTables.

И второй вопрос: как можно пометить соединение?
Если с пакетом всё относительно понятно: у него есть заголовок, в который мы вносим изменения, то что является вещественным выражением понятия "соединение", с которым мы можем хоть как-то работать? Что мы помечаем?




Top