Судя по числу вопросов, которые нам стали прилетать по SD-WAN, технология начала основательно приживаться в России. Вендоры, естественно, не дремлют и предлагают свои концепции, а некоторые смельчаки первопроходцы уже внедряют их у себя на сети.
Мы работаем почти со всеми вендорами, и за несколько лет в нашей лаборатории я успел покопаться в архитектуре каждого крупного разработчика программно-определяемых решений. Немного особняком тут стоит SD-WAN от Fortinet, который просто встроил функционал балансировки трафика между каналами связи в софт межсетевых экранов. Решение скорее демократичное, поэтому к нему обычно присматриваются в компаниях, где пока не готовы к глобальным переменам, но хотят эффективнее использовать свои каналы связи.
В этой статье я хочу рассказать, как настраивать и работать с SD-WAN от Fortinet, кому подойдет это решение и с какими подводными камнями здесь можно столкнуться.
Самых заметных игроков рынка SD-WAN можно отнести к одному из двух типов:
1. Стартапы, создавшие SD-WAN-решения с нуля. Самые удачные из таких получают огромный импульс к развитию будучи купленными крупными компаниями – это история Cisco/Viptela, VMWare/VeloCloud, Nuage/Nokia
2. Крупные сетевые вендоры, создавшие SD-WAN-решения, развивая программируемость и управляемость своих традиционных маршрутизаторов – это история Juniper, Huawei
Fortinet удалось найти свой путь. В софт межсетевых экранов был встроен функционал, позволяющий объединять их интерфейсы в виртуальные каналы и балансировать между ними нагрузку с помощью сложных, по сравнению с привычной маршрутизацией, алгоритмов. Этот функционал и назвали SD-WAN. Можно ли то, что сделал Fortinet, назвать SD-WAN? На рынке постепенно складывается понимание, что Software-Defined, значит отделение Control Plane от Data Plane, выделенные контроллеры, оркестраторы. У Fortinet ничего такого нет. Централизованное управление опционально и предлагается с помощью традиционного средства Fortimanager. Но на мой взгляд, не стоит искать абстрактной правды и тратить время на споры о терминах. В реальном мире любой подход имеет свои достоинства и недостатки. Лучший выход — разбираться в них и уметь выбирать решения, соответствующие задачам.
Попробую со скриншотами в руках рассказать, как выглядит и что умеет SD-WAN от Fortinet.
Как всё устроено
Предположим, у вас есть два филиала, связанные между собой двумя каналами передачи данных. Эти каналы передачи данных объединяются в группу, подобно тому, как обычные Ethernet-интерфейсы объединяются в LACP-Port-Channel. Старожилы припомнят PPP Multilink – тоже подходящая аналогия. Каналами могут быть физические порты, VLAN SVI а также VPN или GRE-туннели.
VPN или GRE, как правило, используются при соединении локальных сетей филиалов поверх интернета. А физические порты – при наличии L2-соединений между площадками, либо при соединении поверх выделенной MPLS/VPN, если нас устраивает связь без Overlay и шифрования. Ещё один сценарий, при котором в SD-WAN-группе используются физические порты – балансировка локального выхода пользователей в интернет.
На нашем стенде есть четыре межсетевых экрана и два VPN-туннеля, работающие через двух «операторов связи». Схема выглядит вот так:
VPN-туннели настроены в интерфейсном режиме, так, чтобы это было похоже на Point-to-Point-соединения между устройствами с IP-адресами на P2P-интерфейсах, которые можно пропинговать и убедиться в том, что связь через конкретный туннель работает. Чтобы трафик зашифровался и ушёл на противоположную сторону, достаточно смаршрутизировать его в туннель. Альтернатива – отбор трафика для шифрования с помощью списков подсетей, сильно запутывает администратора по мере усложнения конфигурации. В большой сети для построения VPN можно использовать технологию ADVPN, это аналог DMVPN от Cisco или DVPN от Huawei, позволяющий упростить настройку.
«ЦОД» (DC)
«Филиал» (BRN)
config system interface
edit "WAN1"
set vdom "Internet"
set ip 1.1.1.1 255.255.255.252
set allowaccess ping
set role wan
set interface "DC-BRD"
set vlanid 111
next
edit "WAN2"
set vdom "Internet"
set ip 3.3.3.1 255.255.255.252
set allowaccess ping
set role lan
set interface "DC-BRD"
set vlanid 112
next
edit "BRN-Ph1-1"
set vdom "Internet"
set ip 192.168.254.1 255.255.255.255
set allowaccess ping
set type tunnel
set remote-ip 192.168.254.2 255.255.255.255
set interface "WAN1"
next
edit "BRN-Ph1-2"
set vdom "Internet"
set ip 192.168.254.3 255.255.255.255
set allowaccess ping
set type tunnel
set remote-ip 192.168.254.4 255.255.255.255
set interface "WAN2"
next
end
config vpn ipsec phase1-interface
edit "BRN-Ph1-1"
set interface "WAN1"
set local-gw 1.1.1.1
set peertype any
set net-device disable
set proposal aes128-sha1
set dhgrp 2
set remote-gw 2.2.2.1
set psksecret ***
next
edit "BRN-Ph1-2"
set interface "WAN2"
set local-gw 3.3.3.1
set peertype any
set net-device disable
set proposal aes128-sha1
set dhgrp 2
set remote-gw 4.4.4.1
set psksecret ***
next
end
config vpn ipsec phase2-interface
edit "BRN-Ph2-1"
set phase1name "BRN-Ph1-1"
set proposal aes256-sha256
set dhgrp 2
next
edit "BRN-Ph2-2"
set phase1name "BRN-Ph1-2"
set proposal aes256-sha256
set dhgrp 2
next
end
config router static
edit 1
set gateway 1.1.1.2
set device "WAN1"
next
edit 3
set gateway 3.3.3.2
set device "WAN2"
next
end
config router bgp
set as 65002
set router-id 10.1.7.1
set ebgp-multipath enable
config neighbor
edit "192.168.254.2"
set remote-as 65003
next
edit "192.168.254.4"
set remote-as 65003
next
end
config network
edit 1
set prefix 10.1.0.0 255.255.0.0
next
end
config system interface
edit "WAN1"
set vdom "Internet"
set ip 2.2.2.1 255.255.255.252
set allowaccess ping
set role wan
set interface "BRN-BRD"
set vlanid 111
next
edit "WAN2"
set vdom "Internet"
set ip 4.4.4.1 255.255.255.252
set allowaccess ping
set role wan
set interface "BRN-BRD"
set vlanid 114
next
edit "DC-Ph1-1"
set vdom "Internet"
set ip 192.168.254.2 255.255.255.255
set allowaccess ping
set type tunnel
set remote-ip 192.168.254.1 255.255.255.255
set interface "WAN1"
next
edit "DC-Ph1-2"
set vdom "Internet"
set ip 192.168.254.4 255.255.255.255
set allowaccess ping
set type tunnel
set remote-ip 192.168.254.3 255.255.255.255
set interface "WAN2"
next
end
config vpn ipsec phase1-interface
edit "DC-Ph1-1"
set interface "WAN1"
set local-gw 2.2.2.1
set peertype any
set net-device disable
set proposal aes128-sha1
set dhgrp 2
set remote-gw 1.1.1.1
set psksecret ***
next
edit "DC-Ph1-2"
set interface "WAN2"
set local-gw 4.4.4.1
set peertype any
set net-device disable
set proposal aes128-sha1
set dhgrp 2
set remote-gw 3.3.3.1
set psksecret ***
next
end
config vpn ipsec phase2-interface
edit "DC-Ph2-1"
set phase1name "DC-Ph1-1"
set proposal aes128-sha1
set dhgrp 2
next
edit "DC2-Ph2-2"
set phase1name "DC-Ph1-2"
set proposal aes128-sha1
set dhgrp 2
next
end
config router static
edit 1
set gateway 2.2.2.2
et device "WAN1"
next
edit 3
set gateway 4.4.4.2
set device "WAN2"
next
end
config router bgp
set as 65003
set router-id 10.200.7.1
set ebgp-multipath enable
config neighbor
edit "192.168.254.1"
set remote-as 65002
next
edit "192.168.254.3"
set remote-as 65002
next
end
config network
edit 1
set prefix 10.200.0.0 255.255.0.0
next
end
Привожу конфиг в текстовом виде, потому что, на мой взгляд, так VPN настраивать удобнее. Почти все настройки с двух сторон одинаковые, в текстовом виде их можно сделать копи-пастой. Если делать тоже самое в веб-интерфейсе, легко ошибиться, — забыть где-нибудь галочку, ввести не то значение.
После того, как мы добавили интерфейсы в бандл
все маршруты и политики безопасности могут ссылаться на него, а не на интерфейсы, входящие в него. Как минимум, нужно разрешить трафик из внутренних сетей в SD-WAN. При создании правил для них можно применить защитные меры, такие, как IPS, антивирус и раскрытие HTTPS.
Для бандла настраиваются SD-WAN Rules. Это правила, определяющие алгоритм балансировки для конкретного трафика. Они похожи на политики маршрутизации в Policy-Based Routing, только в качестве результата попадания трафика под политику устанавливается не next-hop или обычный исходящий интерфейс, а интерфейсы, добавленные в SD-WAN бандл плюс алгоритм балансировки трафика между этими интерфейсами.
Трафик можно выделять из общего потока по L3-L4-информации, по распознанным приложениям, интернет-сервисам (URL и IP), а также по распознанным пользователям рабочих станций и ноутбуков. После этого, для выделенного трафика можно назначить один из следующих алгоритмов балансировки:
В списке Interface Preference выбираются те интерфейсы из уже добавленных в бандл, которые будут обслуживать этот тип трафика. Добавив не все интерфейсы, можно ограничить по каким именно каналам у вас ходит, скажем, электронная почта, если не хотите нагружать ей дорогие каналы с высоким SLA. В FortiOS 6.4.1 появилась возможность группировать интерфейсы, добавленные в SD-WAN-бандл в зоны, создавая, к примеру, одну зону для связи с удалёнными площадками, а другую – для локального интернет-доступа с использованием NAT. Да-да, трафик, который идёт в обычный интернет, тоже можно балансировать.
Об алгоритмах балансировки
В части того, как Fortigate (межсетевой экран от Fortinet) умеет разбивать трафик между каналами есть две интересных опции, не очень распространённых на рынке:
Lowest Cost (SLA) – из всех интерфейсов, удовлетворяющих SLA в данный момент, выбирается тот у которого ниже вес (cost), заданный администратором вручную; этот режим подходит для «объемного» трафика, такого как резервное копирование и передача файлов.
Best Quality (SLA) – этот алгоритм, помимо привычных задержки, джиттера и потери пакетов Fortigate для оценки качества каналов может использовать и текущую загрузку канала; этот режим подходит для «чувствительного» трафика, такого как IP-телефония (VoIP) и видеоконференцсвязь.
Для этих алгоритмов требуется настройка измерителя производительности канала связи – Performance SLA. Этот измеритель периодически (check interval) контролирует информацию о соблюдении SLA: потерях (packet loss), задержке (latency) и джиттере (jitter) в канале связи, — и может «забраковать» те каналы, которые на текущий момент не удовлетворяют пороговым значениям качества – теряют слишком много пакетов или выдают слишком большую задержку. Помимо этого измеритель следит за статусом канала, и может временно удалить его из бандла в случае повторяющейся потери ответов (failures before inactive). При восстановлении, после нескольких последовательно пришедших ответов (restore link after) измеритель автоматически вернёт канал в бандл, и по нему снова начнут передаваться данные.
Вот так выглядит настройка «измерителя»:
В веб-интерфейсе в качестве протокола для тестов доступны ICMP-Echo-request, HTTP-GET и DNS request. В командной строке опций чуть больше: доступны опции TCP-echo и UDP-echo, а также специализированный протокол измерения качества — TWAMP.
Результаты измерений можно видеть и в веб-интерфейсе:
И в командной строке:
Траблшутинг
Если создали правило, а работает всё не так, как ожидалось, стоит посмотреть на значение Hit Count в списке SD-WAN Rules. Он покажет, попадает ли трафик вообще в данное правило:
На странице настройки самого измерителя можно видеть изменение параметров канала во времени. Пунктиром обозначено пороговое значение параметра
В веб-интерфейсе можно смотреть как распределяется трафик по объёму передаваемых/получаемых данных и количеству сессий:
Кроме всего этого, есть отличная возможность отследить прохождение пакетов с максимальной детализацией. При работе в реальной сети в конфигурации устройства накапливается множество политик маршрутизации, межсетевого экранирования и распределения трафика по SD-WAN-портам. Всё это сложным образом между собой взаимодействует, и, хотя вендор приводит подробные блок-схемы алгоритмов обработки пакетов, очень важно иметь возможность не строить и проверять теории, а посмотреть куда реально девается трафик.
К примеру, следующий набор команд
diagnose debug flow filter saddr 10.200.64.15
diagnose debug flow filter daddr 10.1.7.2
diagnose debug flow show function-name
diagnose debug enable
diagnose debug trace 2
Позволит отследить два пакета с адресом источника 10.200.64.15 и адресом получателя 10.1.7.2.
Пингуем 10.7.1.2 с 10.200.64.15 два раза и смотрим на вывод на консоли.
Первый пакет:
Второй пакет:
Вот первый пакет получен межсетевым экраном:
id=20085 trace_id=475 func=print_pkt_detail line=5605 msg="vd-Internet:0 received a packet(proto=1, 10.200.64.15:42->10.1.7.2:2048) from DMZ-Office. type=8, code=0, id=42, seq=0."
VDOM – Internet, Proto=1 (ICMP), DMZ-Office – название L3-интерфейса. Type=8 – Echo.
Для него создалась новая сессия:
msg="allocate a new session-0006a627"
И обнаружилось совпадение в настройках политик маршрутизации
msg="Match policy routing id=2136539137: to 10.1.7.2 via ifindex-110"
Выясняется, что пакет нужно отправить в один из VPN-туннелей:
"find a route: flag=04000000 gw-192.168.254.1 via DC-Ph1-1"
В политиках межсетевого экранирования обнаруживается разрешающее правило:
msg="Allowed by Policy-3:"
Пакет шифруется отправляется в VPN-туннель:
func=ipsecdev_hard_start_xmit line=789 msg="enter IPsec interface-DC-Ph1-1"
func=_ipsecdev_hard_start_xmit line=666 msg="IPsec tunnel-DC-Ph1-1"
func=esp_output4 line=905 msg="IPsec encrypt/auth"
Зашифрованный пакет отправляется по адресу шлюза для данного WAN-интерфейса:
msg="send to 2.2.2.2 via intf-WAN1"
Для второго пакета всё происходит аналогично, но он отправляется в другой VPN-туннель и уходит через другой порт межсетевого экрана:
func=ipsecdev_hard_start_xmit line=789 msg="enter IPsec interface-DC-Ph1-2"
func=_ipsecdev_hard_start_xmit line=666 msg="IPsec tunnel-DC-Ph1-2"
func=esp_output4 line=905 msg="IPsec encrypt/auth"
func=ipsec_output_finish line=622 msg="send to 4.4.4.2 via intf-WAN2"
Плюсы решения
Надежный функционал и удобный интерфейс. Набор функций, имевшийся в FortiOS до появления SD-WAN, сохранился полностью. То есть мы имеем не заново разработанный софт, а зрелую систему от проверенного вендора межсетевых экранов. С традиционным набором сетевых функций, удобным и простым для освоения веб-интерфейсом. Многие ли вендоры SD-WAN имеют на оконечных устройствах, скажем, функционал Remote-Access VPN?
Безопасность 80-ого уровня. FortiGate входит в топ решений по межсетевому экранированию. В интернете есть множество материалов по настройке и администрированию межсетевых экранов, а на рынке труда немало специалистов по безопасности, уже освоивших решения вендора.
Нулевая цена за функционал SD-WAN. Построить SD-WAN-сеть на FortiGate стоит столько же, сколько и построить на нём обычную WAN-сеть, поскольку никакие дополнительные лицензии для реализации SD-WAN-функционала не нужны.
Низкий порог входа по цене. У Fortigate хорошая градация устройств под разную производительность. Самые младшие и недорогие модели вполне подойдут для того, чтобы поднять офис или точку продаж, скажем, на 3-5 сотрудников. У многих вендоров таких малопроизводительных и доступных моделей просто нет.
Высокая производительность. Сведение SD-WAN-функционала к балансировке трафика позволило компании выпустить специализированный SD-WAN ASIC, благодаря которому работа SD-WAN не снижает производительности межсетевого экрана в целом.
Возможность реализовать офис целиком на оборудовании Fortinet. Это пара межсетевых экранов, коммутаторы, точки доступа Wi-Fi. Таким офисом легко и удобно управлять – коммутаторы и точки доступа регистрируются на межсетевых экранах и управляются с них. Вот так, к примеру, может выглядеть порт коммутатора с интерфейса межсетевого экрана, которым этот коммутатор управляется:
Отсутствие контроллеров, как единой точки отказа. На этом акцентирует внимание сам вендор, но это можно назвать плюсом лишь отчасти, потому что у тех вендоров, у которых контроллеры есть, обеспечение их отказоустойчивости обходится недорого, чаще всего в цену небольшого количества вычислительных ресурсов в среде виртуализации.
На что обращать внимание
Отсутствие разделения Control Plane и Data Plane. Это значит, что сеть нужно настраивать либо вручную, либо с использованием уже имевшихся традиционных средств управления — FortiManager. У вендоров, у которых такое разделение реализовано, сеть собирается сама. Администратору может потребоваться лишь скорректировать её топологию, что-то где-то запретить, не более того. Однако, козырь FortiManager в том, что он умеет управлять не только межсетевыми экранами, но и коммутаторами и точками доступа Wi-Fi, то есть практически всей сетью.
Условный рост управляемости. Из-за того, что для автоматизации настройки сети используются традиционные средства, управляемость сети с внедрением SD-WAN повышается незначительно. С другой стороны, новый функционал становится доступен быстрее, так как вендор сначала выпускает его только для операционной системы межсетевых экранов (что сразу даёт возможность им пользоваться), а уже потом дополняет нужными интерфейсами систему управления.
Часть функционала может быть доступна из командной строки, но недоступна из веб-интерфейса. Не так страшно зайти иногда в командную строку, чтобы что-то настроить, как страшно не увидеть в веб-интерфейсе, что что-то кем-то уже настроено из командной строки. Но это обычно касается самых новых фич и постепенно, с обновлениями FortiOS возможности веб-интерфейса подтягиваются.
Кому подойдёт
Тем, у кого не очень много филиалов. Внедрение решения SD-WAN со сложными центральными компонентами на сети в 8-10 филиалов может не стоить свеч –придётся потратить деньги на лицензии к SD-WAN-устройствам и ресурсы системы виртуализации на размещение центральных компонентов. Свободных вычислительных ресурсов у небольшой компании как правило в обрез. В случае с Fortinet достаточно просто купить межсетевые экраны.
Тем, у кого очень много маленьких филиалов. У многих вендоров минимальная цена решения за филиал достаточно высока и может оказаться неинтересной с точки зрения бизнеса конечного заказчика. Fortinet предлагает небольшие устройства по очень привлекательной цене.
Тем, кто не готов пока шагнуть слишком далеко. Внедрение SD-WAN с контроллерами, проприетарной маршрутизацией, новым подходом к планированию и управлению сетью может оказаться слишком серьёзным шагом для некоторых заказчиков. Да, такое внедрение в итоге поможет оптимизировать использование каналов связи и работу администраторов, но сначала придётся выучить много нового. Тем, кто пока не готов к смене парадигмы, но хочет выжать побольше из своих каналов связи, как раз подойдёт решение от Fortinet.
Автор: Александр Сигачев