Балансировка нагрузки, приоритезация траффика (QoS), отказоустойчивость в pfSense 2.0

В данной статье мы рассмотрим настройку балансировки нагрузки между двумя провайдерами интернет(далее Load Balance) на двух WAN-портах маршрутизатора, уделив внимание отказоустойчивости системы (далее failover) и приоритезации траффика для отдельных сервисов на примере MSRDP (Удаленный рабочий стол). Балансировка нагрузки и отказоустойчивость - очень важный элемент в крупных нагруженных системах, но не все сетевые экраны и маршрутизаторы имеют такие возможности. А приоритезация траффика может быть чрезвычайно необходима даже для небольших предприятий с ограниченной шириной интернет-канала. Перейдем к делу.

1. Балансировка нагрузки на примере двух WAN-интерфейсов (multi-WAN).

Далее мы рассмотрим, как конфигурируется балансировка нагрузки milti-WAN в pfSense 2.0.x. 
Мы будем конфигурировать балансировку нагрузки для двух отдельных WAN интерфейсов, представим, что у нас 2 интернет-провайдера, каждый со своими отдельными настройками. Убедитесь, во-первых, что WAN интерфейсы правильно настроены (В данной статье, для наших WAN-интерфейсов, указаны статические локальные IP (172.16.1.1 и 172.16.2.1), это заведомо неверная информация. Вам же нужно будет указывать IP адреса выданные вашими провайдерами интернет.

Помните:
Когда работает балансировка нагрузки multi-WAN, фактически работает и отказоустойчивость. Если вы хотите включить только отказоустойчивость без балансировки - речь об этом пойдет в следующей части данной статьи.

Пока же, зайдите в веб-интерфейс маршрутизатора pfSense и следуйте дальнейшим указаниям.

Порядок действий:
1. Переходим на страницу System | Routing 
2. Выбираем закладку Groups 
3. Вводим имя группы (Group Name) 
4. Установим приоритет шлюза (Gateway Priority) для обоих наших WAN шлюзов в значение Tier 1 
5. Оставим уровень триггера (Trigger Level) установленным в Member Down (Участник отключен) 
6. Добавим описание (Description) 

7. Сохраним (Save) изменения 
8. Применим (Apply) изменения

9. Переходим на страницу System | Routing 
10. Отредактируйте ваш шлюз WAN 
11. Указываем внешний IP адрес который отвечает на ping в поле Monitor IP. В данном примере я выбрал IP для http://www.google.com/ (проверить IP сайта, например google.com, можно выполнив команду "ping google.com" в коммандной строке), но вы можете выбрать более близкий адрес для повышения производительности (это может быть IP в сети вашего провайдера). 
12. Сохраните (Save) изменения 
13. Отредактируйте ваш шлюз WAN2 
14. Указываем внешний IP адрес которые отвечает на ping в поле Monitor IP. В данном примере я выбрал IP для http://www.yahoo.com/. 
15. Сохраните (Save) ваши изменения 
16. Примените (Apply) изменения. 

17. Перейдите на страницу Firewall | Rules 
18. нажмите кнопку [+] для добавления нового правила брандмауэра 
19. Выберите действие pass 
20. Выберите закладку LAN интерфейса 
21. Установите протокол (Protocol) в any 
22. Установите источник (Source) в LAN subnet 
23. Установите назначение (Destination) в any 
24. Добавьте описание (Description) 
25. В расширенных возможностях (Advanced Features), под шлюзом (Gateway), нажмите кнопку Advanced для промотра дополнительных возможностей 
26. Установите шлюз (Gateway) в значение LoadBalancedGroup 
27. Сохраните (Save) изменения 
28. Примените (Apply) изменения.

Теперь весь трафик с нашего LAN будет проходить через шлюз группы. Поскольку наш шлюз группы состоит из двух WAN шлюзов имеющих один уровень приоритета, они будут чередоваться в циклическом стиле. Кроме того, путём мониторинга внешних IP адресов на каждом шлюзе, pfSense будет определять когда шлюз не работает и исключать соответствующего участника из группы. Каждый раз, когда работает балансировка нагрузки, по умолчанию действует и отказоустойчивость. 

Важно:
Мы определили для нашего шлюза группы триггер Member Down, однако доступны и несколько других опций: 
- Member Down: срабатывает, когда Monitor IP установленный для шлюза перестаёт отвечать на ICMP ping 
- Packet Loss: срабатывает, когда пакеты проходящие через данный шлюз теряются 
- High Latency: срабатывает когда пакеты проходящие через данный шлюз имеют высокую задержку 
- Packet Loss or High Latency: срабатывает, когда пакеты проходящие через данный шлюз теряются или имеют большую задержку

2. Настройка отказоустойчивости системы multi-WAN, без балансировки нагрузки.

Этот рецепт описывает как конфигурируется отказоустойчивость multi-WAN на pfSense, при отключенной балансировке нагрузки. 
Мы будем конфигурировать отказоустойчивость для наших двух WAN интерфейсов, использованных в предыдущем примере. Убедитесь, что Ваши интерфейсы правильно сконфигурированы.

Порядок действий:
1. Переходим на страницу System | Routing 
2. Выбираем закладку Groups 
3. Вводим имя группы (Group Name) 
4. Установим приоритет шлюза (Gateway Priority) для нашего шлюза WAN в значение Tier 1 
5. Установим приоритет шлюза (Gateway Priority) для нашего шлюза WAN2 в значение Tier 2 
6. Оставим уровень триггера (Trigger Level) установленным в Member Down (Участник отключен)

7. Добавим описание (Description) 


8. Сохраним (Save) изменения 
9. Применим (Apply) изменения. 

10. Переходим на страницу System | Routing 
11. Отредактируйте ваш шлюз WAN 
12. Указываем внешний IP адрес которые отвечает на ping в поле Monitor IP. В данном примере я выбрал IP для http://www.google.com/, но вы можете выбрать более близкий адрес для повышения производительности (это может быть IP в сети вашего провайдера). 
13. Сохраните (Save) изменения 
14. Отредактируйте ваш шлюз WAN2 
15. Указываем внешний IP адрес которые отвечает на ping в поле Monitor IP. В данном примере я выбрал IP для http://www.yahoo.com/. 
16. Сохраните (Save) ваши изменения 
17. Примените (Apply) изменения.

18. Перейдите на страницу Firewall | Rules 
19. нажмите кнопку [+] для добавления нового правила брандмауэра 
20. Выберите действие pass 
21. Выберите закладку LAN интерфейса 
22. Установите протокол (Protocol) в any 
23. Установите источник (Source) в LAN subnet 
24. Установите назначение (Destination) в any 
25. Добавьте описание (Description) 
26. В расширенных возможностях (Advanced Features), под шлюзом (Gateway), нажмите кнопку Advanced для промотра дополнительных возможностей 
27. Установите шлюз (Gateway) в значение FailoverGroup 
28. Сохраните (Save) изменения 
29. Примените (Apply) изменения.


Теперь весь трафик с нашей LAN будет пропускаться через наш шлюз группы. Поскольку наш шлюз группы состоит из двух WAN шлюзов имеющих разный уровень приоритета, наш резервный шлюз (Tier 2) будет использоваться вместо нашего основного шлюза (Tier 1) когда тот откажет.

3. Конфигурирование формирования трафика (QoS) 

Формирование трафика (трафик-шейпер), так же известно как качество обслуживания (Quality of Service - QoS) - приоритезация и урезание сетевых пакетов. Приоритезация сетевых пакетов позволяет преобладание определённого вида трафика над другими. Регулирование сетевых пакетов устанавливает лимиты на объёмы определённых видов трафика для любого конкретного момента времени. Администратору может понадобиться произвести приоритезацию пакетов VoIP над прочими, чтобы обеспечить непрерывность и качество телефонной связи. Кроме того, можно ограничить пропускную способность для VoIP до 100Кб в секунду. Это один из довольно типичныхпримеров использования формирования трафика. 
В следующем рецепте, мы используем pfSense для формирования трафика внешнего MSRDP соединения к нашей сети. Это позволит гарантировать, что мы получим возможность удалённого администрирования сервера даже при высоких нагрузках сети. 

Порядок действий:
1. Переходим на страницу Firewall | Traffic Shaper 
2. нажимаем на закладку Wizard 
3. На Wizard functions, нажимаем Single WAN multi WAN 

4. Вводим число типа LAN соединений в поле Enter number of LAN type connections. Наша система 
pfSense имеет LAN и DMZ; т.ч. вводим 2. 

5. Вводим скорость загрузки (Link Upload) для нашего WAN соединения. Наш провайдер обеспечивает скорость загрузки 2Mbps (МБ/с). Проведите измерения используя http://speedtest.net 
6. Вводим скорость скачивания (Link Download) для нашего WAN соединения. Наш провайдер обеспечивает скорость скачивания 15Mbps (МБ/с). Проведите измерения используя http://speedtest.net

7. На следующей странице указывается формирователь VoIP трафика (VoIP traffic), который мы пропустим нажав Next 

8. Следующая страница, Penalty Box, позволяет вводить приоритет IP адреса или алиаса. Это может быть полезно, но у нас нет необходимости использовать его в данный момент. Можете пропустить это окно нажав кнопк Next

9. Peer to Peer (P2P) Networking позволяет понизить приоритет и урезать весь трафик P2P, или любой из 20 предопределённых популярных P2P сетей. Мы продолжим нажав Next. 

10. Network Games позволет формировать трафик для сетвых игр. Предопределены 20 наиболее популярных игровых типов. Нажмите Next для продолжения

11. Последняя страница, Other Applications, позволет формировать другие общие виды трафика. Здесь мы должны установить флаг Enable other-application shaping и установить MSDRP в значение высокого приоритета (Higher priority). Нажмём далее для продолжения 

12. Нажмём Finish для применения новых установок.



Используя мастер формирователя трафика, мы определили установки правил приоритезации трафика RDP. Даже если сеть будет находится под высокой нагрузкой web трафика, VoIP или любого другого типа трафика, наше удалённое подключение будет работать нормально и непрерывно, поскольку ему установлен высокий приоритет