Судя по числу вопросов, которые нам стали прилетать по 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, позволяющий упростить настройку.
Конфиг Site-to-Site VPN для двух устройств с маршрутизацией BGP с обеих сторон
«ЦОД» (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.
Источник: habr.com