Меню Рубрики

Программный роутер на linux

Программный роутер на linux

Программный маршрутизатор «ArtX router»

Основные функции и модули маршрутизатора:

  • IP v4/ IPv6 router
  • OSPF, BGP4, BGP6, RIP v1/2, IS-IS, RIP-NG
  • MPLS, 802.1q
  • virtual router
  • Filter
  • NAT
  • IPSEC, PPPoE, PPTP, L2TP, EoIP (GRE,ArtX)
  • L2Bridge + Filter
  • Transparent PROXY
  • FLOW QUEUE (QoS), 802.1p, RED, GRED
  • Конфигуратор (Cli, telnet, Web GUI)
  • DPI
  • Мультиплексор каналов

Интерфейсы 1\10 GE, RS-232

Производительность маршрутизации — до 2 000 000 packet\s в режиме полной поддержки BGP Full View.

Программный маршрутизатор реализован на ОС Linux v. 3.10 (функции 1-12) и ОС Free BSD v.9.1 Реализация ПМ для двух операционных систем позволяет использовать особенности каждой из них для решения специализированных задач, использовать дополнительный функционал, предоставляемый сторонними разработчиками и главное использовать передовые разработки для каждой из ОС, появление которых происходит или не синхронно или вообще не происходит.

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

Описание функций (модулей) маршрутизатора.

Поддержка протоколов IP v4/ IPv6 с применением механизма policy-based routing (PBS, маршрутизация на основе правил). Поддержка множественных таблиц маршрутизации и специальных таблиц маршрутизации на основе правил. Это позволяет создавать более гибкие механизмы обработки пакетов, дополняя стандартные механизмы, предоставленные протоколами маршрутизации.

Поддержка протоколов OSPF, BGP4, BGP6, RIP v1/2, IS-IS, RIP-NG без ограничения числа записей в таблице маршрутизации.

Поддержка MPLS, 802.1q.

Виртуальный маршрутизатор (virtual router). Возможность создания множества виртуальных маршрутизаторов внутри функционала данного маршрутизатора. То есть, можно на одной платформе иметь несколько маршрутизаторов, реализующих особенные или дополнительные к основной задачи или просто клоны основного маршрутизатора. Масштабирование задачи ограничивается только количеством ОЗУ и мощностью платформы.

Фильтрация пакетов на основе одиночных или комбинированных фильтров по source/destination, port, protocol, address,содержимого пакета (content, u32 filter), заданной последовательности байтов в пакете данных. Поддержка фильтрации по таблицам адресов и портов. Динамическое добавление таблиц фильтрации. Динамическая фильтрация пакетов по заданным условиям на основе правил.

NAT, поддержка трансляции адреса источника, адреса назначения, masquerading

поддержка туннелей IPSEC, PPPoE, PPTP, L2TP, EoIP (GRE,ArtX). EoIP (ArtX) — проприетарный туннель, собственная разработка компании.

Подержка L2Bridge + Filter позволяет маршрутизатору осуществлять коммутацию пакетов на втором уровне (Layer2 switch) с возможностью фильтрации трафика (L2,L3) и перенаправления трафика в систему маршрутизации L3.

Transparent PROXY для протокола НТТР с кешированием контента. Для протокола HTTPS возможна поддержка замены корневого сертификата для пересылки трафика на ICAP сервер (MITM attack). (C использованием данной технологии (направления) связывается разработка SSL SPLIT для исследования контента в защищенных соединениях).

FLOW QUEUE (QoS), 802.1p, RED, GRED. Классификация трафика на основе адресации пакета (адрес, порт, протоколы), содержимого пакета (u32), меток файервола и т. д. Разделение трафика по очередям и установка правил (дисциплин) обработки этих очередей. Реализация FLOW QUEUE позволяет обеспечивать механизмы не толькоТоS, QoS, CoS, но и задачи связанные с обеспечением DPI, управлением предоставляемыми услугами.

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

Мультиплексор (MUX) каналов — модуль обеспечивающий объединение нескольких L2 каналов в один канал, с учетом загрузки объединенных каналов и\или приоритетом трафика в объединяемых каналах.

Конфигуратор системы: система конфигурирования, управления, мониторинга с веб-интерфейсом. Поддержка CLI (telnet). Логгирование: локальное, поддержка syslog. Поддержка программных интерфейсов и протоколов для взаимодействия с системами биллинга, управления услугами и т.д.

Мониторинг SNMP v2/v3

Обовление ПО — www server. Поддержка модульной лицензионной политики.

Краткий функционал Vyatta

Vyatta — сетевая операционная система, основанная на Debian GNU/Linux.

Работает на оборудовании x86 и x64. Разработчики позиционируют Vyatta как конкурента продуктам Cisco уровня ISR 1800 — VXR 7200. Распространяется бесплатно по лицензии GNU GPL.

Таблица системных требований строится на необходимой конфигурации топологии сети следующим образом:

Ключевые возможности Vyatta:

В настоящее время существуют две версии: Vyatta Core, содержащая только открытые компоненты и распространяющаяся бесплатно, и Vyatta Subscription/Vyatta Plus, содержащая дополнительные (в том числе проприетарные) компоненты и доступная только платным подписчикам.

Среди дополнительных возможностей Vyatta Subscription:

  • Синхронизация настроек между маршрутизаторами;
  • REST API для удаленного управления;
  • Поддержка интерфейсных карт PDH (E1, T1/T3) и V.35;
  • Коммерческий расширенный набор правил для фильтрации URL и IPS.

Источник

Наш рецепт отказоустойчивого Linux-роутера

В высоконагруженных проектах всегда повышенные требования к избыточности и надежности. Одним из важнейших звеньев инфраструктуры является маршрутизатор, потому что от его устойчивости зависит доступность сети в целом. Именно на таких узлах мы используем одну из схем реализации отказоустойчивого виртуального роутера на базе GNU/Linux с использованием iproute2, NetGWM, keepalived, ISC DHCPD, PowerDNS. Как мы всё это настраиваем, читайте в этой статье.

Компоненты

В идеальной схеме отказоустойчивого роутера мы резервируем все элементы, которые могут привести к недоступности сети, то есть:

  • каналы связи,
  • коммутаторы,
  • маршрутизаторы.

В общем виде схема (на уровне L2) выглядит так:

Как видно из схемы, нам нужны 2 коммутатора с поддержкой 802.1Q VLAN. Оператор 1 коммутируется в Коммутатор 1 и ему выделяется отдельный VLAN (например, 110). Оператор 2 коммутируется в Коммутатор 2, в другой VLAN (например, 120). Отдельный VLAN (в нашем случае — 200), выделяется под локальную сеть. Между коммутаторами организуется транк, и транком же линкуем оба маршрутизатора, которые и будут «сердцем» нашего виртуального роутера (схема router-on-a-stick).

Такая компоновка позволяет оставлять работоспособной сеть при выходе из строя любого компонента: роутера, коммутатора или оператора.

Стек базовых компонентов, которые мы используем в работе роутеров:

  • Ubuntu Linux;
  • NetGWM — утилита приоритезации основного шлюза в решении. Это наша Open Source-разработка, о которой мы готовим отдельную статью (пока предлагаю ознакомиться с базовой документацией) [Обновлено 08.08.2017: статья опубликована как «Настройка основного и двух резервных операторов на Linux-роутере с NetGWM»];
  • iproute2 — для создания нескольких таблиц маршрутизации;
  • keepalived — для реализации протокола VRRP в Linux;
  • ISC DHCPD — как горизонтально масштабируемый DHCP-сервер;
  • PowerDNS — как DNS-сервер для локальной сети.

Маршрутизаторы настраиваются примерно одинаково, за исключением конфигурации IP-адресов и keepalived.

Настройка интерфейсов

Настраиваем VLAN. Конфигурация /etc/network/interfaces будет выглядеть примерно так:

  • настраиваем blackhole — хорошая практика для того, чтобы локальные пакеты не улетали по маршруту по умолчанию в сторону провайдера;
  • net.ipv4.conf.$IFACE.rp_filter=0 — необходим для корректной работы multi-wan;
  • для каждого провайдера настраиваем отдельную таблицу маршрутизации с единственным маршрутом по умолчанию.

Настроим маркинг пакетов для направления в определенные таблицы — добавим в iptables правила:

И настроим правила маршрутизации для промаркированных пакетов — мы это делаем вызовом скрипта iprules.sh при выполнении ifup lo (смотри выше в /etc/network/interfaces ). Внутри скрипта:

Эти таблицы маршрутизации необходимо объявить в /etc/iproute2/rt_tables :

Балансировщик основного шлюза

Настроим NetGWM — утилиту для приоритезации основного шлюза. Она будет устанавливать маршрут по умолчанию, выбирая операторов в соответствии с двумя правилами: а) установленным нами приоритетом, б) статусом оператора (жив или нет).

Чтобы установить NetGWM, можно воспользоваться исходниками на GitHub или нашим репозиторием для Ubuntu. Второй способ в случае Ubuntu 14.04 LTS выглядит так:

Укажем в конфиге /etc/netgwm/netgwm.yml , что у нас 2 оператора, маршруты по умолчанию для каждого из них, приоритезацию и настройки для контроля доступности:

Обратите внимание на имена oper1 и oper2 — это названия таблиц маршрутизации из /etc/iproute2/ip_tables . Рестартнем сервис netgwm , чтобы он начал управлять шлюзом по умолчанию для системы:

Настройка keepalived

Keepalived — реализация протокола VRRP для Linux. Этот протокол позволяет реализовать схему с отказоустойчивой маршрутизацией, создавая виртуальный IP, который будет использоваться в качестве маршрута по умолчанию для обслуживаемой сети. Виртуальный IP автоматически передается резервному серверу при выходе из строя основного сервера.

На этом этапе мы определяемся, что Маршрутизатор 2 будет играть роль Backup, а Маршрутизатор 1 — роль Master. Настраиваем keepalived, изменяя конфигурационный файл /etc/keepalived/keepalived.conf :

Так как наш отказоустойчивый роутер — многокомпонентный, мы решили использовать режим, в котором переключение keepalived режимов Backup → Master происходит только в случае отказа Master-сервера. За это как раз отвечает параметр nopreempt .

Настройка ISC DHCPD

ISC DHCPD был выбран нами, так как позволяет масштабировать DHCP на несколько серверов. Он прост в конфигурировании и хорошо зарекомендовал себя на практике. Кроме того, нам понравилось, что разработчики этого DHCP-сервера придумали изящное решение для организации реплики между серверами. Для основного и второстепенного серверов выделяются разные пулы адресов и на запросы отвечает сервер, который успел сделать это первым, выдавая адрес из своего пула. При этом база арендованных IP синхронизируется. В случае, если один из серверов отказывает, второй как ни в чем не бывало продолжает выдачу адресов из своего пула. При возврате отказавшего сервера он начинает выдачу из своего пула, при этом не возникает коллизий.

Правим конфиг /etc/dhcp/dhcpd.conf :

Нам понадобится сгенерировать ключ update_key , с помощью которого мы будем обновлять зону mynet . Сгенерируем его и выведем на экран:

Скопируйте сгенерированный ключ и вставьте в конфигурационный файл вместо слова КЛЮЧ.

Настройка PowerDNS

В качестве DNS-сервера мы предпочли PowerDNS, так как он имеет возможность хранить зоны в СУБД MySQL, которую удобно реплицировать между первым и вторым сервером. Кроме того, PoweDNS — это производительное решение, хорошо функционирующее в высоконагруженном роутере.

Настройку PowerDNS начнем с подготовки базы данных.

Теперь нужно настроить PowerDNS и научить его работать с БД. Для этого требуется установить пакет pdns-backend-mysql и изменить конфиг /etc/powerdns/pdns.conf :

На этом базовая конфигурация PowerDNS закончена. Нам же ещё потребуется настроить рекурсор — обработчик рекурсивных DNS-запросов, который позволяет значительно повысить производительность DNS-сервера. Правим файл /etc/powerdns/recursor.conf :

В файл forward_zones вносим зоны intranet, которые обслуживают соседние серверы:

По окончании настройки перезапускаем сервисы pdns и pdns-recursor .

После запуска настраиваем реплику MySQL между серверами.

Заключение

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

Будем рады, если вы зададите свои вопросы в комментариях или укажете на места в схеме, которые можно улучшить. И, конечно, подписывайтесь на наш хаб, чтобы не пропускать новые полезные материалы! )

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Программный роутер для windows
  • Программный wifi роутер windows 7
  • Программное обеспечение роутера ростелеком
  • Программа шпион для роутера
  • Программа управления роутером huawei