Стабильность и эффективность бизнес-процессов современной организации во многом зависит от бесперебойного функционирования ИТ-инфраструктуры. Содержание ИТ-инфраструктуры во многих случаях обходится дорого, в особенности для малых и средних компаний.
С целью оптимизации расходов многие организации прибегают сегодня к практике ИТ-аутсорсинга: вместо того, чтобы приобретать оборудование, компания арендует его в стороннем дата-центре, а для его обслуживания привлекает сторонних специалистов.
Чтобы эта практика была выгодной с организационной и с финансовой точки зрения, нужно тщательно продумать техническую сторону вопроса.
Планируя перенос части ИТ-инфраструктуры в сторонний дата-центр, следует решить, каким именно образом все информационные ресурсы организации будут объединены в единую сеть. Решения от ведущих производителей (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 — да-да, все как у «старших» железных собратьев.
В данном случае мы назначили интерфейсу 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/ и загрузим переменные:
Удалим все ключи:
Затем сгенерируем файлы центра сертификации:
и сертификат сервера:
После этого скопируем ключи в соответствующие директории:
Далее подготовим клиентские файлы для подключения к серверу:
и сразу же скопируем их в отдельную папку:
Сгенерированные файлы понадобятся для подключения клиентов к серверу, поэтому их нужно будет передать на клиентскую сторону. Это можно сделать с помощью любого 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.
Источник: habrahabr.ru
Комментариев нет:
Отправить комментарий