Программные маршрутизаторы для linux

Программная маршрутизация с VyOS

Стабильность и эффективность бизнес-процессов современной организации во многом зависит от бесперебойного функционирования ИТ-инфраструктуры. Содержание ИТ-инфраструктуры во многих случаях обходится дорого, в особенности для малых и средних компаний.

С целью оптимизации расходов многие организации прибегают сегодня к практике ИТ-аутсорсинга: вместо того, чтобы приобретать оборудование, компания арендует его в стороннем дата-центре, а для его обслуживания привлекает сторонних специалистов.
Чтобы эта практика была выгодной с организационной и с финансовой точки зрения, нужно тщательно продумать техническую сторону вопроса.

Планируя перенос части ИТ-инфраструктуры в сторонний дата-центр, следует решить, каким именно образом все информационные ресурсы организации будут объединены в единую сеть. Решения от ведущих производителей (Juniper, Cisco и других) зачастую стоят дорого; компаниям небольшого и среднего размера они могут оказаться не по карману. В этой связи вполне закономерным и объяснимым является возросший интерес к бесплатным продуктам с открытым исходным кодом, многие из которых по возможностям не уступают платным аналогам, а иногда даже превосходят их.

Важным элементом корпоративной сети является маршрутизатор — специализированное сетевое устройство, предназначенное для объединения сегментов сети и пересылки пакетов между ними. Маршрутизаторы бывают как аппаратные, так и программные. В случае, когда необходимо выстроить ИТ-инфраструктуру с минимальными расходами, использование программного маршрутизатора может оказаться вполне подходящим вариантом.

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

VyOS: общая информация

VyOS представляет собой форк известной сетевой операционной системы Vyatta. Его первый релиз под кодовым названием Hydrogen был представлен в декабре 2013 года.

Последний на сегодняшний день релиз — Helium — вышел в свет в сентябре 2014 года. Интерфейс командной строки (CLI) в VyOS похож на СLI устройств от Juniper Networks.

Возможности VyOS действительно широки. Вот далеко не полный список:

  • межсетевой экран для IPv4 и IPv6, включая фильтрацию p2p-трафика;
    трансляция сетевых адресов (NAT);
  • DHCP-сервер для IPv4 и IPv6;
  • система обнаружения вторжений;
  • балансировка нагрузки и резервирование канала;
  • резервирование маршрутизаторов с синхронизацией таблицы состояний соединений;
  • виртуальные частные сети (IPsec, L2TP/IPsec, PPTP, OpenVPN);
  • учёт трафика (Netflow и sFlow);
  • веб-прокси и фильтрация URL.

Как и Vyatta, VyOS основан на Debian. Это позволяет расширить функциональность путём установки дополнительных deb-пакетов.

Установка

Подробную инструкцию по установке VyOS мы приводить не будем, да в этом и нет нужды: всё детально расписано здесь. Существует два типа установки VyOS: install system и install image. Первый тип (install system) подразумевает стандартную установку ОС на диск. При установке с использованием install image каждая версия VyOS будет находиться в отдельной директории, что даёт возможность откатиться к предыдущему релизу в случае возникновения неполадок (рекомендуемый метод установки).

Итак: загружаемся с диска, входим в систему (логин — vyos, пароль — vyos), выполняем команду install image. Начнётся установка, в ходе которой нужно будет ответить на стандартные вопросы установщика Linux. По завершении выполним команду reboot и снова зайдём в систему и войдём в систему под логином и паролем, заданными во время установки.

Практический пример

Рассмотрим особенности работы VyOS на конкретном практическом примере. Условия задачи: организация состоит из трёх географически удалённых друг от друга подразделений: одно — в Москве, второе — в Санкт-Петербурге, третье — в Хабаровске. В Петербурге имеются четыре сервера, установленные в дата-центре. Нужно сделать так, чтобы только один из них должен быть подключен к Интернету напрямую. Остальные должны быть объединены в локальную сеть и выходить в Интернет через маршрутизатор. Мы будем использовать разные типы подключений для филиалов — L2TP/IPsec, PPTP и OpenVPN.

Наша сеть будет выглядеть следующим образом:

Конфигурация шлюза

После установки сети ещё нет, поэтому мы сначала настроим её через KVM-консоль.

Для начала настроим первый сетевой интерфейс (внешний), который будет иметь адрес 95.213.170.75. Переходим в режим настройки командой configure — да-да, все как у «старших» железных собратьев.

Читайте также:  Как узнать установленную версию java linux

В данном случае мы назначили интерфейсу eth0 адрес и указали описание порта, чтобы не запутаться в дальнейшем.

Также укажем адреса шлюза по умолчанию и DNS-сервер:

Здесь мы используем Санкт-Петербургский DNS-сервер Селектел, но вы, конечно же, можете указать любой другой.
Настроим сервис SSH, с помощью которого мы будем производить дальнейшее конфигурирование шлюза:

Логика работы VyOS почти такая же, как у устройств от Juniper Networks. Чтобы применить изменения, нужно выполнить команду commit. Чтобы изменения остались в силе после перезагрузки, их нужно сохранить с помощью команды save. Этой командой vyOS отличается в плане логики от JunOS: в сетевой ОС от Juniper после commit не нужно сохранять изменения.

Подключимся к маршрутизатору по SSH. Для входа в систему введём логин и пароль, заданные при установке. Затем настроим внутренний сетевой интерфейс eth1. Это локальный сетевой интерфейс, к которому подключены серверы в дата-центре. Присвоим ему адрес 10.0.10.1 с маской сети /24 и добавим описание:

Чтобы наши машины могли распознавать имена сетевых ресурсов, нужно настроить DNS. Мы будем настраивать DNS-forwarder, который будет перенаправлять запросы на разрешение имён к серверам, заданным конфигурацией. Процедура настройки этого компонента проста:

В первой команде указывается размер кэша, который DNS-forwarder будет использовать для хранения записей. Мы выставили нулевой размер кэша, так как в нашем случае хранение DNS-записей не имеет особого смысла. Вторая команда задает интерфейс, на котором будет «слушать» запросы DNS-forwarder. Мы специально используем только внутренний интерфейс, на котором DNS-forwarder будет «слушать» запросы, чтобы не сделать DNS-forwarder, доступный всему интернету. В третьей и четвертой команде указываются адреса, куда будут пересылаться запросы. В нашем примере используются DNS-серверы Селектел, но вместо них, конечно же, можно указать любые другие.

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

В VyOS мы можем использовать наборы правил межсетевого экрана (файерволла), называя их любыми именами. В нашем примере для внешней сети используется набор правил под именем OUTSIDE, для внутренней, соответственно, INSIDE.

Для внешнего интерфеса мы разрешим все соединения «изнутри наружу», для внутреннего интерфейса — все «изнутри наружу» и доступ к SSH.

Создадим правила для внешнего интерфейса:

Вышеперечисленными командами мы разрешаем уже установленные ранее (established) и относящиеся к ним (related) соединения.

Затем зададим правила файерволла:

В первом правиле мы задаем действие по умолчанию — в нашем случае это «drop» (все пакеты, которые не попадают под установленные правила будут отбрасываться файерволлом). Во втором мы разрешаем прохождение пакетов ICMP; прежде всего это нужно для того, чтобы в случае сбоя мы смогли «пропинговать» наш роутер. Третье правило отвечает за SSH-подключения: мы разрешаем TCP трафик приходящий на 22 порт.

Применим созданные правила к соответствующим интерфейсам — внешнему и локальному:

Стоит обратить внимание на параметры in и out — они задают тип трафика, входящий или исходящий относительно маршрутизатора, и не связаны с названиями наборов правил межсетевого экрана.

Не забываем применять и сохранять конфигурацию с помощью команд commit и save.

Настройка VPN

Как уже было сказано выше, в филиалах у нас будут использоваться разные типы VPN-соединений. Начнём с настройки L2TP/IPSec (подробнее см. здесь):

С помощью первых трёх мы задаем конфигурацию IPSec: указываем интерфейс, на который будут идти пакеты, включаем NAT traversal и разрешаем NAT для всех сетей. Далее идут команды отвечающие за L2TP. В целом по написанию команд нетрудно догадаться, за что они отвечают, обратим внимание лишь на некоторые параметры.

  • outside-address — указывает внешний адрес VPN-сервера;
  • pre-shared-secret — задает пароль для подключения, который в дальнейшем будет использоваться для настройки VPN на клиентских устройствах;
  • authentication mode local — задаёт тип аутентификации. В нашем примере используется аутентификация по локальной базе, но можно использовать и RADIUS-сервер для централизованного управления учётными записями.

В последней строке мы создаём пользователя и устанавливаем для него пароль.
После этого внесём коррективы в правила файерволла и разрешим трафик L2TP/IPSec.

Правило 4 разрешает трафик протокола ESP, по которому работает установленный туннель IPSEC, 42 — NAT traversal, 43 — порт 1701, на котором работает L2TP.

Теперь перейдем к настройке второго типа VPN-подключения и «поднимем» OpenVPN-сервер.
Для начала скопируем файлы easy-rsa в директорию /config/easy-rsa2, чтобы не потерять их при обновлении системы:

В случае необходимости можно изменить переменные, указанные по умолчанию в сертификатах, например:

Эти данные будут указываться в полях сертификатов, которые мы будем генерировать. Перейдем в директорию /config/easy-rsa2/ и загрузим переменные:

Читайте также:  Как скрыть файлы от других пользователей windows 10

Удалим все ключи:

Затем сгенерируем файлы центра сертификации:

и сертификат сервера:

После этого скопируем ключи в соответствующие директории:

Далее подготовим клиентские файлы для подключения к серверу:

и сразу же скопируем их в отдельную папку:

Сгенерированные файлы понадобятся для подключения клиентов к серверу, поэтому их нужно будет передать на клиентскую сторону. Это можно сделать с помощью любого SCP-клиента: WinSCP для Windows или стандартного консольного клиента scp для Linux.

Далее переходим к настройке сервера:

Обратим внимание на последнюю команду: в ней мы перенаправляем запросы на разрешение имён на DNS-forwarder, настроенный ранее. Отметим также, что в случае с OpenVPN мы сначала использовали отдельную сеть для построения самого туннеля, а затем смаршрутизировали её на локальную сеть, где находятся наши серверы. Это объясняется особенностями протокола. Более подробно об этом мы расскажем в следующей публикации.

Настройка PPTP-сервера

Настроим последний тип VPN-подключения — PPTP. Конечно, протокол PPTP слабо защищён и поэтому вряд ли может быть использован для передачи конфиденциальной информации, но для обеспечения удаленного доступа он находит широкое применение. PPTP-клиент присутствует практически в любом устройстве, имеющем подключение к сети.

Из приведённого примера можно заметить, что PPTP настраивается почти таким же образом, как L2TP:

В первой команде мы задаем локальный режим аутентификации пользователей. Если у вас есть RADIUS-сервер, можно выбрать режим аутентификации radius: с его помощью управлять учётными записями пользователей гораздо удобнее.

Затем мы создаем локальных пользователей, указываем диапазон IP-адресов и данные серверов DNS, выдаваемых клиентам. Последняя команда задает адрес интерфейса, на котором будет «слушать» наш сервер.

Применим и сохраним настройки:

Сервер готов к подключению клиентов.

Осталось только разрешить прохождение трафика из локальной сети во внешнюю. Таким образом мы обеспечим доступ в Интернет серверам, подключенным к локальной сети, а также пользователям, подключающимся к нашему роутеру из филиалов:

Заключение

Итак, готово: мы построили сеть в соответствии с условиями поставленной задачи. Один из серверов (расположенный в Санкт-Петербурге) выступает в качестве маршрутизатора, остальные три сервера подключены к нему по локальной сети. Маршрутизаторы в филиалах имеют доступ к ресурсам локальной сети через безопасные VPN-подключения.

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

  • организация GRE-туннелей;
  • работа с протоколом L2TPv3;
  • QoS;
  • zone-based firewall;
  • увеличение производительности сетевого интерфейса (performance tuning);
  • VRRP.

Источник

VyOS OpenSource Router

В этой статье я хотел поднять не стандартную для меня тему о сетевом маршрутизаторе VyOS. Впервые я познакомился с этим проектом благодаря Нилу Андерсону (Neil Anderson) который составил гайд как у себя дома развернуть мини-лабораторию с NetApp симулятором и VyOS.

Ключевые проекты

VyOS это opensource проект на базе Debian Linux, который родился как форк от проекта Vyatta Core Edition of the Vyatta Routing software. Как и любой роутер VyOS оперирует на третьем уровне OSI и маршрутизирует North-South трафик. VyOS включает в себя следующие ключевые проекты:

  • Debian 8, ядро 4.19
  • FRRouting (в версии 1.1 и более древних использовался Quagga)
  • ISC-DHCP
  • Keepalived
  • StrongSwan
  • OpenVPN
  • PowerDNS
  • Wireguard
  • OpenNHRP
  • Accel-ppp
  • xL2tpd
  • Squid
  • mDNS-repeater
  • IGMP-Proxy
  • iPerf
  • более детальный список в Release notes

Поддерживаемые платформы

VyOS можно разворачивать на большинстве популярных платформах в виде виртуальной машины, на голом железе или в облаке, образ занимает около 300 МБ.

Платформы виртуализации

Как виртуальную машину VyOS можно развернуть в окружении:

  • KVM
  • RHEV
  • VirtualBox
  • Nutanix AHV
  • VMWare ESXi 5.1+
  • Citrix XenServer в режиме HVM
  • Microsoft Hyper-V for Windows Server
  • OpenStack (в планах)

Голое железо

Роутер можно установить на голое железо, кастомные образы (в планах):

Облака

Как виртуальную машину в облаках:

  • Amazon EC2 (Amazon Machine image on Amazon Web Services)
  • Ravello
  • Packet Cloud
  • Microsoft Azure
  • Google Cloud Platform (в планах)
  • Alibaba Cloud (в планах)

Командная строка

Как и с маршрутизаторами Cisco и Juniper в которых традиционно не используют графический интерфейс, так и VyOS управляется из командной строки. Командная строка VyOS очень напоминает синтаксис JunOS:

Функционал и возможности

Функционал VyOS достаточно большой и серьёзный несмотря на то, что это Opensource проект:

  • VPN: Dynamic Multipoint VPN (DMVPN), GRE, IPSec, IPSec VTI, OpenVPN (server и client) и WireGuard
  • Может выступать в роли VPN Remote Access Server используя L2TP или OpenVPN
  • Туннели: L2TP, L2TPv3, VXLAN, PPTP, GRE, IPIP, SIT, IPIP, IPIP6, IP6IP6
  • Интерфейсы L2/L3: Ethernet Bridge, 802.1Q VLAN, QinQ, Агрегация портов (LACP и статическая)
  • API для работы из консоли, Python, и Perl скриптов
  • Адресация маршрутизация IPv4 & IPv6:
  • BGP, OSPF, OSPFv3, RIP, RIPng протоколов динамической маршрутизации
  • Статическая маршрутизация и Policy-Based Routing (PBR)
  • QoS для приоритизации трафика
  • VyOS может работать как L2TPv3 роутер для Layer 2 связности между сайтами
  • Высокая доступность: VRRP, WAN load-balancing, Conntrack-Sync, Clustering
  • И естественно стандартный набор: DHCP (Сервер, Клиент и Relay), DNS recursive server, Network Address Translation (source and destination, port-address, one-to-many, many-to-many), IGMP-Proxy, NTP сервер и клиент, LLDP сервер и клиент, mDNS repeater, PPPoE server, proxy server с кэшем и фильтрацией, TFTP сервер
  • Фильтрация трафика: Zone-based firewall, stateful firewall
  • Политики: Shaping, Rate limiting, Priority-based queues
  • Встроенный архив конфигурационных файлов
Читайте также:  Корсары гпк проблемы со звуком windows 10

Пример поддерживаемых схем подключения и использования

Branch

Одна из наиболее часто используемых схем использования VyOS это объединение нескольких отделений компании между собой, соединение с облачными провайдерами или объединение нескольких облачных провайдеров в одну сеть.

SMB Edge

Может служить как SMB маршрутизатор предоставляя стабильный и повышенной доступности к глобальной сети Интернет благодаря. VyOS поддерживает NAT, DHCP и VRRP для повышения доступности вашего дефолтного шлюза.

Boarder Router

VyOS может быть использован как Enterprise Border Router (BGP), один из, если не самый развитый среди динамических протоколов маршрутизации. Для этих целей VyOS может служить как внешним, так и внутренним BGP узлом (BGP-peer) предоставляя высокую стабильность и доступность в вашей сети.

VPN Gateway

VyOS предоставляет доступ по IPSec VPN: IPSec/GRE, IPSec VTI, Dynamic Multipoint VPN (DMVPN) и OpenVPN. Site-To-Site конфигурация позволит вам соединить несколько сайтов напрямую в облако через частую защищённую сеть поверх глобальной сети Интернет, позволяя вашим пользователям и серверам взаимодействовать друг с другом. VyOS может работать как L2TPv3 маршрутизатор создав L2 сеть между сайтами.

VPN RA Server

VyOS может быть использован как удалённый VPN сервер. Для этого вы можете использовать L2TP over IPSec так как он присутствует почти во всех современных ОС. Другой вариант использовать OpenVPN, который также интегрирован в VyOS. Использование файрволла повысит безопасность и гранулярность доступа к вашей сети.

Системные требования

Минимальные требования VyOS к ресурсам:

  • CPU: одно или несколько ядер 64-bit x86 (зависит от пропускной способности и используемого функционала). Также поддерживается ClearFog ARM платформа
  • Память: 512 MB или больше (зависит от пропускной способности и используемого функционала и главным образом от размера таблиц маршрутизации)
  • Сетевые интерфейсы: минимум один, максимум (столько сколько поддерживает платформа, на которой работает VyOS)
  • Для достижения максимальной производительности рекомендуется использовать сетевые карты с аппаратным offloading и поддерживающие множественные очереди

Менеджмент и мониторинг

Управления и мониторинг:

  • Разворачивание и управление: Secure Shell (SSH), Cloud-Init, python library для удалённого управления
  • Управление и траблшутинг: Simple Network Management Protocol (SNMP), Syslog, NetFlow, sFlow
  • Автоматизация Ansible, SaltStack
  • Планировщик задач, event handling, scripting
  • Встроенный архив версий конфигураций

Образы

VyOS можно собрать самому из исходного кода или скачать в виде собранного и оттестированного образа для вашей платформы. Начиная с версии 1.2 скачивание GA образа перестало быть бесплатным, потому что проект нужно развивать на какие-то деньги. Rolling релизы как и раньше остаются бесплатными. Но для школ, колледжей, университетов, поликлиник и других подобных некоммерческих организаций предоставляется бесплатный доступ к GA релизам. Для контрибьютеров также предоставляется бесплатный доступ к готовым GA образам, не обязательно быть программистом, даже если вы помогаете с документацией это тоже помощь проекту. Так что получить бесплатный доступ к образам достаточно просто и легко, особенное если у вас есть бейдж Мейнтейнера, Контрибутора или Евангелиста VyOS.

Бейджи
VyOS выпустил цифровые сертификаты для:

  • Мейнтейнеров проекта
  • Контрибуторов
  • Евангелистов
  • и Сетевых инженеров

Выводы

VyOS это проект, который построен на базе современных программ и утилит для сетевой маршрутизации, которую можно легко дополнить и изменить благодаря тому, что он является полностью 100% OpenSource. Богатый функционал и современные протоколы маршрутизации позволяют его использовать не только в домашних условиях для продвинутых пользователей, а также для больших компаний и огромных сервис провайдеров.

Источник

Оцените статью