8-900-374-94-44
[email protected]
Slide Image
Меню

Программный linux роутер – Обзор популярных Linux дистрибутивов-роутеров | Linuxoid

Содержание

Обзор популярных Linux дистрибутивов-роутеров | Linuxoid

Среди великого разнообразия Linux систем особо популярны специализированные дистрибутивы-роутеры. Такие решения, как правило, имеют небольшой размер, просты и понятны в установке и настройке, а имеющиеся функции позволяют подключить к Интернет домашнюю/корпоративную сеть, защитив ее от сетевых атак и вирусов. Дополнительно многие из них имеют функции контроля трафика, блокировки протоколов, антиспам фильтр, шейпер и много другое. Поэтому выбрать «своего защитника» достаточно не просто. Эта статья поможет тебе быстрее сориентироваться.

Untangle Gateway 7.0.1

ОС: Untangle Gateway 7.0.1
Сайт проекта: www.untangle.com
Дата выхода: 20 октября 2009 года
Лицензия: GPL
Аппаратные платформы: x86_32
Системные требования: CPU 800 МГц, 512 Mб RAM, 20 Гб диск, 2+ NIC

Дистрибутив Untangle, выпускаемый одноименной компанией, способен заменить коммерческие решения вроде ISA Server (Forefront TMG), обеспечивая безопасный доступ в Интернет. Рассчитан Untangle на небольшие и средние организации, имеющие 50-300 и более компьютеров (системные требования приведены для 50). Основой Untangle послужил Debian, все настройки производятся при помощи понятного, хотя и нелокализованного интерфейса. Для управления достаточно понимать суть, глубоких знаний Unix систем в обычной ситуации не потребуется. В отличие от других решений, использующих веб-технологии, интерфейс Untangle написан на Java, поэтому все изменения в консоли управления, статистика работы и так далее выводятся в реальном времени, что очень удобно. Хотя за использование Java пришлось заплатить повышенными системными требованиями.

Untangle выполнен в виде конструктора. После установки базовой системы в нем отсутствуют модули защиты, администратор самостоятельно выбирает то, что действительно необходимо, ориентируясь по задачам и имеющемуся оборудованию. В Untangle можно добавить 94 пакета (19 приложений), которые обеспечат: маршрутизацию, антивирусную/антифишинг/spyware защиту, обнаружение атак, анализ протоколов (7 уровень), контентную фильтрацию веб-трафика, VPN-подключения и многие другие функции. В их основе лежат популярные OpenSource приложения —
Snort, ClamAV, SpamAssassin, Squid
и т.д. От DoS’а и некоторых низкоуровневых сетевых атак защищает модуль собственной разработки «Attack Blocker», который предлагается бесплатно. Антиспам фильтр распознает спам в изображениях, для чего он подключается к OCR. Модуль анализа протоколов при необходимости способен ограничить работу любых протоколов прикладного уровня (P2P, IM и т.п., всего ~100 протоколов), даже если они используют нестандартные порты.

По подписке распространяются некоторые проприетарные разработки — антивирус Касперского, eSoft Web Filter, модуль для работы с Active Directory, резервирование настроек и т.д. Для удобства имеются и готовые «сборки» модулей, предназначенные для различных сетей —
Educations, Small Business, Professional
, Government (в разных вариантах поставки, распространяются также по подписке). Бесплатный модуль Reports позволяет админу получать отчеты по всем возможным ситуациям — сетевой активности, протоколам, обнаруженному спаму и вирусам, активности пользователей. Результат можно сохранить в файлы форматов PDF, HTML, XLS, CSV и XML и отправить по e-mail.
Установка дистрибутива достаточно проста и занимает минимум времени: традиционно следуем по подсказкам мастера (во время установки можно выбрать русский язык), отвечая на вопросы. По ходу будут проверены системные требования, во всех позициях должно стоять ОК. Далее форматируем жесткий диск, процесс автоматизирован, для чего достаточно нажать кнопку «Продолжить«.
После перезагрузки активируется мастер, задача которого — помочь в настройке шлюза. В списке предложенных языков понятен только англицкий, русского здесь уже нет. Далее последовательно набираем пароль для учетной записи admin, выбираем часовой пояс, вводим регистрационную информацию (обязательны e-mail и количество компов). После этого система распознает сетевые карты и назначает их — External/Internal (при наличии третьего сетевого интерфейса можно без особых проблем организовать демилитаризованную зону). Используя мышку, назначение можно поправить, только вот определить, где какая из карт при имеющейся информации невозможно. Указываем тип интернет-подключения (DHCP, PPPoE, Static), для проверки нажимаем «
Testing Connectivity
«. На шаге «Internal Network» потребуется выбрать один из двух вариантов применения Untangle: Transparent Bridge или Router. При выборе второго варианта нужно указать IP-адрес интерфейса внутренней сети и опционально активировать встроенный DHCP сервер. И последний этап — отправка тестового сообщения по e-mail, по умолчанию используется внутренний SMTP, но можно указать и любой внешний. По окончании загружается консоль управления. Слева две вкладки. В Apps выбираем и устанавливаем пакеты, в Config — производим настройки. Все разбито по пунктам, поэтому найти нужные установки и разобраться весьма просто. Например, для настройки Firewall переходим в одноименную вкладку. Система сразу же предложит скачать требуемый пакет. Нажимаем «Free Download», по окончании загрузки в центре окна появится ярлык для настройки компонента.
Аналогичным образом ставим все необходимое — Attack Blocker, Protocol Control, OpenVPN, Reports и т.д. Для настройки модуля выбираем его и щелкаем по кнопке Setting. Например, в Firewall уже имеются 3 подготовленных правила (блокировка входящих соединений на 21 порт, блокирующий и разрешающий рулесеты для входящего трафика с сети 1.2.3.0). Их можно взять за основу, отредактировав или создав свое правило по аналогии. Правило создается очень просто, нажимаем
Add
и заполняем соответствующие поля. Здесь же в подвкладке «Event Log» можно просмотреть связанные события.
Если закрыть окно веб-клиента, перед нами появится рабочий стол. В панели несколько ярлыков, назначение которых носит больше вспомогательный характер — запуск и останов скринсейвера, восстановление, изменение разрешения и т.п.

Endian Firewall Community 2.3

ОС: Endian Firewall Community 2.3
Сайт проекта: www.endian.com/en/community/overview/
Дата выхода: 27 октября 2009 года
Лицензия: GPL
Аппаратные платформы: x86_32
Системные требования: CPU 166 МГц, 64 Mб RAM, 2 Гб


Основой Endian Firewall (EFW) изначально служил IPCop Firewall, в котором разработчики решили усилить функции безопасности и юзабилити интерфейса. Сегодня от родства уже мало чего осталось, а EFW строится на базе CentOS и включает полный набор средств защиты от внешних угроз, что позволяет относить его к UTM системам (Unified Threat Management). Это

stateful пакетный фильтр (netfilter), IDS/IPS (Snort), фильтр контента, антивирусная проверка HTTP/FTP/POP3/SMTP трафика, защита от спама, антиспуфинг и антифишинг модули. Политики фильтрации и маршрутизации позволяют указать практически всю актуальную информацию — протокол, порт, сетевой интерфейс, IP- и МАС-адреса. Предусмотрена возможность настройки ACL к сайтам через HTTP Proxy (прозрачный или непрозрачный) с привязкой к пользователю, группе, по адресу, useragent, времени. Контентный фильтр содержит готовые настройки для более чем 20 категорий и подкатегорий.
Подключение к Интернет реализовано посредством Ethernet, PPPoE, ADSL (USB, PCI), ISDN, модема, в том числе и 3G. Внешнему интерфейсу можно назначить несколько IP-адресов (IP-алиасинг). Кроме локальной (NCSA) аутентификации пользователей, предусмотрена поддержка Active Directory, LDAP и RADIUS. Добавим к этому списку создание и управление VLAN, полноценное управление QoS, поддержку SNMP. В составе EFW находим два приложения для организации защищенного VPN соединения — OpenVPN и Openswan/Pluto (реализация IPsec для Linux).
Ведется статистика по соединениям, трафику, работе пользователей. При наступлении определенных событий на e-mail админа отправляется сообщение.

Зашифрованный архив с настройками бэкапится на USB флэшку или засылается на e-mail, так что при необходимости восстановить работу шлюза можно буквально за пару щелчков мышки.
Управление системой предусмотрено из командной строки или через локализованный веб-интерфейс.
Установка производится при помощи мастера с псевдографическим интерфейсом и достаточно проста для неискушенного пользователя. Загружаемся и подтверждаем форматирование диска, после чего начнется копирование системы, по запросу указываем IP-адрес GREEN (внутреннего) интерфейса. Вот и вся установка. После перезагрузки в консоль будут выведены данные для регистрации через веб (
http://ip-адрес/
или https://ip-адрес:10443). Предлагаемое консольное меню позволяет выйти в shell, установить пароль учетных записей root (для SSH) и admin (веб). Набрав в браузере предоставленный адрес и пройдя несколько шагов, завершаем установку — выбираем язык (есть русский), часовой пояс, соглашаемся с условиями лицензии GNU GPL. Далее мастер предлагает импортировать настройки из бэкапа, говорим «Нет» и указываем пароли для root и admin.
Теперь настал черед «Мастера настройки сети«, упрощающего процесс подключения к сети. С ним необходимо пройти 8 шагов, например, выбрать тип подключения RED (внешнего) интерфейса и отметить, есть ли в наличии WiFi (BLUE) и DMZ (ORANGE). При необходимости изменяем настройки GREEN, присутствует возможность «переназначить» карту и указать алиасы, задать имя хоста. Аналогично повторяем эту операцию для других интерфейсов, вводим адреса основного и резервного DNS серверов, e-mail админа. Все. После регистрации с учетными данными admin попадаем на главную страницу консоли управления, где выводятся обновляемые в реальном времени графики по трафику, данные по состоянию служб и загрузке системы. Настроек достаточно много, но все они удачно распределены по группам, названия которых говорят сами за себя — Система, Статус, Компьютерная сеть, Службы, Межсетевой экран, Прокси, VPN и События. Поэтому справиться с дальнейшими настройками EFW достаточно просто.

IPCop Firewall 1.9.8

ОС: IPCop Firewall 1.9.8
Сайт проекта: www.ipcop.org
Дата выхода: 29 октября 2009 года
Лицензия: GPL
Аппаратные платформы: x86_32
Системные требования

: Intel Pentium II 233 МГц, 64 Mб RAM, 2 Гб


Версия IPCop 0.1.1 (2002 год) базировалась на SmoothWall 0.9.9, затем проект полностью перешел на LFS и сегодня о родстве уже мало, что говорит. Дистрибутив ориентирован на рынок SOHO (Small Office, Home Office), поэтому основная задача разработчиков — сделать интерфейс удобным и простым. В поставке имеется все необходимое для организации защищенного шлюза — фильтр пакетов, IDS/IPS, веб и DNS прокси, DHCP сервер/клиент, Openswan, OpenVPN, ограничение трафика, NTP сервер. Реализован контроль соединений через веб-прокси по IP-адресам и имени системы.
Все, чего не хватает в базовой поставке, доступно в аддонах (sf.net/apps/trac/ipcop/wiki/Addons), которые разрабатываются и поддерживаются, как правило, сторонними программистами. Здесь уже находим фильтр URL, продвинутые настройки firewall, проверку веб и SMTP трафика на вирусы и многое другое. Как и в EFW, интерфейсы имеют цвета — GREEN, RED, ORANGE (DMZ) и т.д. Внешний интерфейс поддерживает подключение по Ethernet (статический, DHCP), PPTP, PPPoE, ISDN, а также посредством модемного соединения. Некоторые операции (подключение, отключение, обновление и т.п.) можно выполнять по расписанию.
До недавнего времени стабильной версией считалась 1.4.20 (с обновлением до 1.4.21), сегодня активно разрабатывается версия IPCop v2, с релизом 1.9.8 мы и познакомимся.
Для загрузки доступны не только традиционные ISO (размер 50 Мб), но и образы для сетевой загрузки, установки на USB флэшку/хард и некоторые другие.
Процесс установки производится в псевдографической консоли и весьма тривиален. По окончании набираем в браузере адрес https://айпишник_шлюза:8443/. Для локализации интерфейса следует перейти в System — GUI Setting и выбрать в списке русский язык.
Консоль управления достаточно проста. Вверху 7 вкладок (Система, Состояние, Сеть, Сервисы, Файервол, ВЧС, Логи), при наведении мышки на любой появляются подпункты. Например, чтобы настроить OpenVPN, переходим в нужную вкладку, где установив флажок «OpenVPN on RED«, активируем сервер.

Теперь указываем дополнительные параметры (IP-адрес внешней и внутренней сети, протокол, алгоритм шифрования, сжатие передаваемых данных с помощью библиотеки LZO и т.п.) Переход по «Advanced Server Options» позволит более тонко настроить работу OpenVPN сервера. Также просто в «Файервол — Firewall Rules» настраиваются правила пакетного фильтра. Выбираем тип правила (Outgouing Traffic, Перенаправление портов, IPCop Access, External IPCop Access) и заполняем предложенные поля.

SmoothWall Express 3.0 SP1 «Polar»

ОС: SmoothWall Express 3.0 SP1
Сайт проекта: smoothwall.org
Дата выхода: 8 января 2009 года
Лицензия: GPL
Аппаратные платформы: x86_32, x86_64
Системные требования: Intel Pentium 166 МГц, 32 Mб RAM, 2Гб HDD


Проект, возникший в середине 2000 года, ставил перед собой цель превратить устаревший компьютер в полноценный шлюз с функциями защиты, с настройками которого мог бы справиться обычный пользователь. Начинание имело успех. За первые месяцы с SourceForge было скачано несколько десятков тысяч копий. Хотя удобным веб-интерфейсом, IDS/IPS и некоторыми другими полезными функциями SmoothWall обзавелся чуть позже (с версии 0.9.9). А так в составе SmoothWall имеется все необходимое — firewall, форвардинг портов, поддержка VPN, Web/DNS/SIP/POP3 прокси, IM прокси (MSN/AIM/ICQ/Yahoo) с готовыми фильтрами и журналированием трафика (на базе IMSpector), DHCP сервер, NTP, поддержка QoS. Возможна установка доступа выхода в Интернет для определенных адресов в зависимости от времени суток. При необходимости трафик проверяется при помощи антивируса Clamav.
Как и в двух предыдущих дистрибутивах, поддерживается до 4 сетевых подключений: WAN, LAN, DMZ, WiFi. «Красный» интерфейс можно закрепить за: Ethernet (static, DHCP), PPPoE, ISDN, ADSL или модемным соединением.
Сам релиз 3.0 вышел в конце 2007 года, сегодня доступна свежая версия с SP1. Кроме ISO (x86, x86_64), на отдельной странице доступен образ VMWare.
Установка достаточно проста, несколько раз нажимаем ОК и все, процедура завершена. Далее идут первичные настройки — раскладка, hostname и выбор политики исходящего трафика:

Open — весь исходящий трафик разрешен;
Half-Open — разрешено подключение только по основным портам, потенциально опасные соединения блокированы;
Closed — все исходящие соединения блокированы.

Затем настраиваем тип сети. Предлагается несколько комбинаций интерфейсов и типов соединений (GREEN + RED, GREEN + RED + ORANGE и т.п.) После чего распределяем сетевые устройства по назначению, указываем адреса интерфейсам (где нужно) и адреса шлюза и DNS сервера. Указываем пароль для пользователей root и admin. После перезагрузки для дальнейших установок вызываем браузер и набираем http://ip-адрес:81/ или https://ip-адрес:441.

Веб-интерфейс не локализован, но достаточно прост. Выбираем одну из основных вкладок (Control, About, Services, Networking, VPN, Logs, Tools, Maintenance) и получаем доступ к настройкам. По умолчанию Snort не активирован, необходимо перейти в Services — IDS, установить флажок «Snort» и ввести «Oink code«. Настройки правил брандмауэра производятся в Networking, выбираем нужное направление (например, outgoing) и заполняем предложенные поля. Использование AJAX позволяет админу просматривать графики загрузки каналов в реальном времени (вкладка About). Доступна статистика трафика по любому IP-адресу, за любой период времени. Обновление дистрибутива производится нажатием одной кнопки в Maintenance — Updates.

Vyatta CE 5

ОС: Vyatta Community Edition 5.0.2
Сайт проекта: www.vyatta.org
Дата выхода: 9 марта 2009 года
Лицензия: GPL
Аппаратные платформы: x86_32
Системные требования: Intel Pentium III 450 МГц, 128 Мб ОЗУ и 2 Гб, 2+ NIC

Разработчики дистрибутива Vyatta решили составить конкуренцию не кому-нибудь, а самой Cisco Systems. Взяв за основу Debian, они интегрировали его со свободно распространяемой платформой маршрутизации XORP (eXtensible Open Router Platform, xorp.org), разработкой которой занимается группа в ICSI (International Computer Science Institute) Беркли при финансировании такими гигантами, как Intel и Microsoft. Установив Vyatta на x86 компьютер, получаем маршрутизатор с функциями IDS/IPS (на базе Snort), кэширующий прокси и фильтр URL (Squid + SquidGuard), сетевые политики (Network Access Policies), OpenVPN, DNS Forwarding, Ethernet Bonding и Bridget Ethernet over ADSL (RFC 2684). Поддерживаются мультипортовые карты (T1/E1, T3 и др.) и беспроводные 3G модемы.
Первые версии Vyatta настраивались исключительно посредством командной строки (как маршрутизаторы Cisco). Затем с версии 4 стал доступен веб-интерфейс (для этих целей в состав включен lighttpd). Особо подчеркивается поддержка популярных сегодня виртуальных машин — VMware, Xen, Hyper-V и некоторых других гипервизоров. Дистрибутив может работать с LiveCD с сохранением настроек на флэшку или другой носитель (файл config.boot). Возможна установка на хард, USB-брелок или карту Compact Flash. При наличии двух дисков установщик позволяет их автоматически связать в RAID 1.
Проект предлагает коммерческую поддержку и продает роутеры с предустановленным ПО. Для свободной загрузки и использования доступна версия Vyatta Community Edition (ISO, образы Citrix XenServer и VMWare).
Процесс установки достаточно прост, хотя и производится при помощи командной строки. Регистрируемся как root с паролем vyatta и запускаем инсталлятор:


# install-system

Далее подтверждаем установку и приступаем к созданию разделов. По умолчанию стоит Auto. Введя «Yes», подтверждаем уничтожение данных на диске, указываем размер корневого раздела (по умолчанию весь диск) и ждем, пока скопируются данные. Затем устанавливаем пароли пользователей root и vyatta, водружаем GRUB, после чего перезагружаемся и переходим в режим конфигурирования:


# configure

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


# set interfaces ethernet eth0 address 192.168.1.1/24
# set interfaces ethernet eth0 description LAN

Включаем веб-интерфейс:


# set service https

Аналогично включаются и остальные сервисы — nat, dns, dhcp-relay, dhcp-server, webproxy, ssh. В консоли доступно автодополнение: нажимая , получаем список возможных значений. Подтверждаем все установки.


# commit

Смотрим, что получилось:


# show interfaces

Все настройки можно вывести, набрав show-all. Выходим из режима редактирования по команде exit. Теперь вызываем браузер и настраиваем параметры при помощи веб-интерфейса. Выбираем нужную категорию и нажимаем кнопку Create, после чего заполняем предложенные поля. Кнопка Show в самом верху покажет конфигурационный файл, в котором знаком «+» будут подсвечены добавленные, но еще неактивированные параметры. Чтобы привести их в действие, нажимаем кнопку Commit (отмена — Discard).

На мой взгляд, проще ввести в командной строке:


# set firewall name allow rule 10 action accept
# set firewall name allow rule 10 source address 192.168.0.0/24
# set interfaces ethernet eth0 firewall in name allow
# commit

Чем настраивать аналогичное разрешающее правило при помощи предлагаемого веб-интерфейса. Нужно только немного привыкнуть к новому синтаксису.

Заключение

Победителя каждый выберет себе сам, исходя из конкретных задач. Мне лично нравится Vyatta за гибкость и Cisco-подобные команды, Endian Firewall и Untangle — за оснащенность. Тем, кому нужны простота в настройках, присмотритесь к SmoothWall и IPCop.

www.tux.in.ua

Программный маршрутизатор на 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. Поддержка модульной лицензионной политики.

steptosleep.ru

Бесплатные программные роутеры и межсетевые экраны. На базе Linux’s и Unix.

  1. pfSense — это проект с открытым исходным кодом, базирующийся на Free BSD, и созданный специально для использования в качестве брандмауэра или маршрутизатора. В дополнение к мощной, гибкой платформе маршрутизации и межсетевого экрана, имеется возможность расширять функциональность за счет встроенной системы пакетов Packages. Поддерживает несколько интернет каналов. Есть web интерфейс для настройки.
  2. Untangle Gateway — Платный продукт, но есть бесплатная Untangle Lite (урезанная версия). В бесплатной версии есть следующее: Web Filter, Virus Blocker, Spam Blocker, Attack Blocker, Phish Blocker, Spyware Blocker, Protocol Control, Captive Portal, Firewall, Intrusion Prevention, OpenVPN, Reports
  3. Endian Firewall Community — представляет собой дистрибутив Linux «всё в одном» для организации комплексной системы безопасности, и относится к ПО класса UTM (Unified Threat Management). Основанный на IPCop, который в свою очередь основан на Smoothwall основаны на ОС Red Hat Enterprise Linux. Версия Community является на 100% продуктом open source и включает в себя полнофункциональный файрвол, Заявлено что есть антивирус для HTTP/FTP и POP3/SMTP но его нет, Инструменты для антифишинга и антиспама, SSL/TLS VPN, IDS и ряд других функций. Вообще проект очень закрытый и сразу не поймешь что и как. Все «шито крыто» Есть еще и платная версия этого продукта называется просто Endian Firewall Software. (Форум на русском на английском)
  4. IPCop Firewall — не поддерживает 2 или более интернет каналов.
  5. SmoothWall Express — не поддерживает 2 или более интернет каналов.
  6. Vyatta Community — Linux дистрибутив для создания межсетевых экранов и маршрутизаторов с управлением через web-интерфейс.
  7. Zentyal (ранее eBox) — универсальный многофункциональный Роутер/Межсетевой экран и NAS/PDC.
  8. ClearOS (ранее ClarkConnect) — универсальный многофункциональный Роутер/Межсетевой экран.
  9. SME Server — Сервер основанный на CentOS. Универсальный многофункциональный Роутер/Межсетевой экран.
  10. FREESCO (расшифровывается как FREE ciSCO) — это бесплатная и свободная замена коммерческим роутерам, поддерживающая до 10 ethernet/arcnet/token ring/arlan сетевых карт и до 10 модемов.
  11. Zeroshell — это компактный дистрибутив Linux для серверов и встраиваемых систем с web-интерфейсом для управления основными сервисами. Дистрибутив Zeroshell доступен для скачивания в виде Live CD, образа CompactFlash, образа VMware или исходного кода.
  12. Quagga — пакет свободного программного обеспечения, поддерживающий протоколы динамической маршрутизации IP.
  13. Coyote Linux — Роутер/Межсетевой экран
  14. Devil-Linux — Роутер/Межсетевой экран
  15. EnGarde Secure Linux — универсальный многофункциональный Роутер/Межсетевой экран и NAS/PDCPostfix, BIND, and the LAMP stack.
  16. fli4l — простой и маленький дистрибутив (1.44) от немецкого разработчика.
  17. floppyfw — еще один мелкий дистрибутив (1.44) firewall/gateway/router.
  18. Gibraltar Firewall — Специализированный дистрибутив файрвол, основанного на дистрибутиве Debian GNU/Linux имеет свой веб интерфейс, stateful packet inspection, Proxy server, VPN, Spamfilter, Antivirus gateway,Traffic shaping, Anonymizer.
  19. IPFire — Специализированный дистрибутив Proxy server with contentfilter and caching-funktionality for updates (i.e. Microsoft Windows Updates, Anti-Virus, and a lot more), Intrusion detection system (Snort) with intrusion prevention-addon «guardian», VPN via IPsec and OpenVPN, DHCP-server, Caching-nameserver, Time server, Wake-on-LAN (WOL), Dynamic DNS, Quality of Service, Outgoing firewall, System monitoring and Log-Analysis.
  20. LEAF Project (Linux Embedded Appliance Framework) — (дистрибутив на дискете 1.44) router and firewall functionality, packet filtering, SSH servers, DNS services, file servers, webmin.
  21. Linux Router Project (LRP) — (дистрибутив на дискете 1.44) оф. сайт (www.linuxrouter.org) не работает.
  22. m0n0wall — Роутер/Межсетевой экран с web интерфейсом для настройки.
  23. Sentry Firewall — Роутер/Межсетевой экран.
  24. Trustix Secure Linux — предназначенных для использования на серверах и направленной на укрепление безопасности и стабильности. Проект закрыт оф. сайт (www.trustix.org) не работает!
  25. Zeroshell — универсальный многофункциональный Роутер/Межсетевой экран.
  26. Ideco ICS (Ideco Internet Control Server) – это универсальный интернет-шлюз с межсетевым экраном и функциями учета трафика. Решение платное, но есть и бесплатная версия на 5 компьютеров (только для дома)
  27. TraffPro Office — целый комплекс решений, позволяющий защищать  сеть организации от внешних атак,  использовать аварийное резервирование каналов интернет, использовать 2 и более канала интернет от провайдеров, балансировать трафик между сотрудниками для более качественного и экономного использования канала,  разграничивать скорость интернет канала между сотрудниками, согласно выполняемым задачам, получать информационные отчеты, ограничивать доступ пользователей к ресурсам развлекательного характера для уменьшения потерь рабочего времени, защитить от несанкционированного доступа в интернет, блокировать вирусную активность, ведущую к большим потерям на канале интернет трафика, почтовый сервер и антиспам и многое другое. (Честно говоря так и не понял что это, мутант))(Платный!)
  28. ITC Server — это Интернет сервер, основанный на системе Linux, предоставляющий Вашему предприятию возможности мощного интернет сервера для предоставления интернет шлюза,  прокси сервера, учета интернет трафика, почтового сервера и обладающее большими функциональными возможностями. Интернет сервер ITC Server предназначен в первую очередь для предоставления сотрудникам Вашего предприятия общего доступа в интернет. (Платный!)


p.s. Будет дополняться! Может у Вас есть что добавить.

edgi.livejournal.com

Опыт создания домашнего Wi-Fi маршрутизатора. Часть 2. Установка и настройка ПО / Habr

И снова здравствуйте!

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

Когда я затевал всё это движение, я предполагал, что будет непросто. Но не предполагал, что настолько. В одном из комментариев к предыдущей части статьи я клятвенно пообещал рассказать о нижеследующем «к выходным». Благоразумно умолчал к каким именно. 🙂 Тут ещё умудрился прихворнуть не вовремя, но всё-таки сдерживаю своё обещание.

Итак…

Напомню комплектацию:

  • материнская плата Intel D2500CC с комплектным двухядерным 64-bit процессором Intel Atom D2500, двумя гигабитными сетевыми интерфейсами
  • оперативная память SO-DIMM DDR-3 1066 4Gb Corsair
  • SSD-накопитель Crucial M500 120 GB
  • сетевая карта 1000 Mbit D-Link DGE-528T
  • mini-PCI-E Wi-Fi карта Intel 7260.HMWWB 802.11 a/b/g/n/ac + Bluetooth 4.0
  • всё это хозяйство упаковано в корпус Morex T-3460 60W

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

Ещё раз уточню, что эти ваши интернеты приходят ко мне по 100 Мбитному каналу (тариф, естественно, даёт несколько меньшую скорость, но не суть). Получилось, собственно, вот что:

  • Доступ в интернет со всех устройств, имеющихся дома в распоряжении +n устройств, появляющихся эпизодически или вообще однократно
  • Домашняя локалка
  • Соответственно, маршрутизация трафика из/в интернет/локальная сеть
  • Файлохранилище (доступ по FTP или Samba)
  • Торрентокачалка
  • ed2k-сеть (ибо очень круто развита у провайдера)
  • web-сервер

В перспективе:
  • домен
  • видеонаблюдение
  • элементы «умного дома»
  • чёрт в ступе много чего интересного

Естественным в этой ситуации было выбирать из *nix-based систем. Некоторое время пришлось потратить на изучение матчасти, рыская по сети. В итоге я проделал следующий путь…


1. FreeBSD 10.1-RELEASE


Очень хотелось реализовать всё на фряхе. Плюсы её в управлении сетевыми устройствами, серверами/шлюзами/маршрутизаторами очевидны, неоспоримы и многократно воспеты гуру.
Поскольку ранее дел я с фряхой близко не имел, пришлось круто раскурить Руководство по FreeBSD, сопровождая процесс чтения параллельным процессом установки на устройство последнего стабильного релиза 10.1.
Небольшое отступлениеК слову, установку фряхи (да и всех описываемых далее систем) я производил при помощи замечательного устройства Zalman ZM-VE300 с терабайтным HDD внутри; сие устройство имеет на борту эмулятор оптического привода, что позволяет накидать на жёсткий диск в папку _iso образы, после чего, установив в BIOS загрузку с Zalman Virtual CD, производить загрузку и установку с этих самых образов, всё равно что, если бы они были записаны на болванку и вставлены в физический привод.
Всё было замечательно, система встала, но меня ждал неприятный сюрприз, о котором я, откровенно говоря, знал, но решил-таки проверить на практике: FreeBSD напроч отказывалась видеть Wi-Fi карточку. Вернее видеть-то она её видела, но только адрес и название вендора, а что это и с чем её едят, фряха понимать не желала (драйвер устройства значился как none1). Кроме того, дальнейшее чтение мануала выявило, что в режиме точки доступа во FreeBSD работают только Wi-Fi карты на основе набора микросхем Prism. Печальбеда… Да, нашёл я также и информацию, что моя карточка в настоящий момент вообще не имеет драйвера под фряху. Даже портированного.
10. Debian 7.7.0

Расстраивался я недолго: не состоялась фряха — возьму старый добрый Debian. Установил с netinstall-образа базовую систему без графического окружения. Долго пытался понять, что не так. Стабильный релиз Debian в данный момент 7.7.0, имеет ядро версии 3.2. В этом ядре опять же нет поддержки моей многострадальной Wi-Fi сетевушки. Полез на ЛОР искать ответ, в итоге получил неутешительные выводы: надо ставить ядро посвежее (в случае Debian — тот ещё геморрой), пляски с бубном ядрами, по мнению гуру, не труъ Debian-way (так прямо и сказали: хочешь перекомпилять ядра — выбери другой дистрибутив).

11. Ubuntu Server 14.04 LTS

Плюнув на попытки круто провести время покрасноглазить, я взял знакомый и уважаемый мной дистрибутив. Уже более года он (правда версии 12.04 LTS) вертится у меня на сервере, раздающем плюшки в сети провайдера.

Из плюсов: стабильность, простота установки, настройки и администрирования, куча документации.
Из минусов: необходимость дорабатывать напильником, поскольку «искаропки» получается толстоват и несколько неповоротлив.

Установка

По сути не представляет ничего сложного и аналогична таковой в Debian. Производится в диалоговом режиме text-mode. Описывать детально не вижу смысла, т.к. всё это уже десятки раз пережёвано и валяется на множестве ресурсов (начиная с официальных сайтов на разных языках и заканчивая местечковыми форумами).

Важным моментом является правильная разметка и подготовка SSD. Всем прекрасно известно, что твердотельные накопители построены на технологии flash-памяти и имеют ограниченный ресурс на запись. Справедливости ради отмечу, что на просторах всемирной паутины глаголят о достаточной надёжности современных твердотельников (сравнимой с классическими жёсткими дисками). Тем не менее было бы глупо плевать на элементарные рекомендации в отношении эксплуатации SSD.

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

Первой необходимой манипуляцией при разметке накопителя является выравнивание разделов диска. Если кратко, то каждый раздел должен начинаться с сектора кратного 8. Первый раздел рекомендовано начинать с 2048 сектора (это связано с расположением в начале накопителя MBR или GPT, а «отступ» в 1 Мб берётся с запасом.

При разметке я создал 3 раздела:

  • boot — ext2
  • root — ext4
  • home — ext4
$ sudo fdisk -l

Диск /dev/sda: 120.0 Гб, 120034123776 байт
255 головок, 63 секторов/треков, 14593 цилиндров, всего 234441648 секторов
Units = секторы of 1 * 512 = 512 bytes
Размер сектора (логического/физического): 512 байт / 4096 байт
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Идентификатор диска: 0x000ea779

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1   *        2048     1050623      524288   83  Linux
/dev/sda2         1050624    42993663    20971520   83  Linux
/dev/sda3        42993664   234440703    95723520   83  Linux

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

Далее в опциях монтирования разделов в /etc/fstab следует добавить discard — для включения TRIM и noatime — для отключения записи в метаданные времени последнего доступа к файлу.

Очередное отступление

С noatime не всё так однозначно. Например, в десктопных системах браузеры отслеживают «свежесть» своего кэша именно по времени последнего доступа, таким образом, включение данной опции влечёт за собой не уменьшение записи на диск, а наоборот — увеличение, поскольку браузер видит, что его кэш «протух» и начинает подтягивать новый. В этом случае рекомендуется использовать опцию relatime — атрибут времени доступа (atime) обновляется, но только в том случае, если изменились данные файла (атрибут mtime) или его статус (атрибут ctime). Для серверной системы это, пожалуй, не столь критично, но всё же я включил noatime для boot, а для root и home — relatime.


Все остальные советы, нагугленные на просторах сети, как то увеличение времени между сбросами буферов на диск (опция commit=[time, sec.]), отключение «шлагбаума» (опция barrier=0) и прочее не внушили мне доверия в плане приобретаемой полезности в ущерб сохранности данных и безопасности.
Кроме того, я не стал выделять отдельный раздел для swap, решив, что оперативной памяти мне должно хватить для поставленных задач. Если же всё-таки возникнет необходимость в подкачке, ничто не мешает сделать swap в виде файла и смонтировать его как раздел.

Также было принято волевое решение вынести временные файлы (/tmp) в tmpfs.

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

  • OpenSSH server
  • DNS server
  • LAMP server
  • Print server
  • Samba file server

После загрузки в свежеустановленную систему проявилась одна крайне неприятная особенность (кстати, в Debian было то же самое): после инициализации драйверов вырубалось видео, монитор переходил в режим ожидания, и становилось непонятно система зависла или просто что-то не так с выводом. Обнаружилось, что доступ по ssh есть, и можно было бы на этом остановиться, но всегда может возникнуть ситуация, когда необходимо получить физический доступ к маршрутизатору (например, шаловливые ручонки админа поковырялись в настройках сети, и доступ через консоль категорически пропал %) ). Посёрфиф по форумам я наткнулся на решение (оказывается баг известен и проявляется именно на этой материнской плате):
add to /etc/modprobe.d/blacklist.conf:
blacklist gma500_gfx

run
sudo update-initramfs -u
sudo reboot


Пруф.
В случае с Debian — /etc/modprobe.d/fbdev-blacklist.conf.
После перезагрузки всё заработало.
Настройка сети

В процессе установки системы я выбрал в качестве сетевого интерфейса, который будет использован для установки, карту D-Link. Она уменя была подключена патчкордом к одному из LAN моего старого маршрутизатора (это было сделано для того, чтобы иметь доступ по SSH до настройки сетевых интерфейсов, а поскольку на Асусе также запущен DHCP-сервер, проблем с подключением не возникло), тестировать при таком подключении доступ в интернет не составит никаких проблем.
Также в свежей системе проявился ещё один глюк:
no talloc stackframe at ../source3/param/loadparm.c:4864, leaking memory

Проблема связана с библиотекой авторизации libpam-smbpass, можно просто её снести, а можно поступить более изящно:
$ sudo pam-auth-update 

снять пометку с SMB password synchronization, что отключает синхронизацию паролей системных пользователей и пользователей Samba.
Устанавливаем все доступные обновления:
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade

И приступаем к настройке сетевых интерфейсов. В маршрутизаторе 4 физических интерфейса и loopback:
Вывод терминала
$ ifconfig -a

em0       Link encap:Ethernet  HWaddr 00:22:4d:ad:69:f0  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:17 Память:d0220000-d0240000 

eth0      Link encap:Ethernet  HWaddr d8:fe:e3:a7:d5:26  
          inet addr:192.168.1.10  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::dafe:e3ff:fea7:d526/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:741 errors:0 dropped:0 overruns:0 frame:0
          TX packets:477 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:482523 (482.5 KB)  TX bytes:45268 (45.2 KB)

eth2      Link encap:Ethernet  HWaddr 00:22:4d:ad:69:ec  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:16 Память:d0320000-d0340000 

lo        Link encap:Локальная петля (Loopback)  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:28 errors:0 dropped:0 overruns:0 frame:0
          TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1784 (1.7 KB)  TX bytes:1784 (1.7 KB)

wlan0     Link encap:Ethernet  HWaddr 80:19:34:1e:fe:83  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)


  • eth0 — «смотрит» в интернет, получает настройки по DHCP
  • eth2 и em0 — интегрированные в материнку сетевые адаптеры
  • wlan0 — как нетрудно догадаться, беспроводной интерфейс Wi-Fi

Устанавливаем hostapd и переводим беспроводной интерфейс в режим Master:
$ sudo iwconfig wlan0 mode Master

К моему величайшему сожалению такой способ не сработал, и команда вывалилась с ошибкой, поэтому я прибегнул к альтернативному способу:
$ sudo apt-get install iw
$ sudo iw dev wlan0 del
$ sudo iw phy phy0 interface add wlan0 type __ap

После чего:
$ iwconfig 
wlan0     IEEE 802.11abgn  Mode:Master  Tx-Power=0 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:on

Теперь необходимо сконфигурировать все сетевые интерфейсы, чтобы было удобнее с ними работать. Я решил объединить встроенные сетевушки и Wi-Fi в мост, чтобы управлять этим хозяйством как единым целым при раздаче IP-адресов по DHCP, маршрутизации и пр. Приводим к следующему виду /etc/network/interfaces:
/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

auto wlan0 br0

# The wireless interface
iface wlan0 inet manual
pre-up iw dev wlan0 del
pre-up iw phy phy0 interface add wlan0 type __ap

# The bridge
iface br0 inet static
address 192.168.0.1
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
bridge_ports em0 eth2 wlan0


Перезагружаемся. Теперь видим:
Вывод терминала
$ ifconfig -a
br0       Link encap:Ethernet  HWaddr 00:22:4d:ad:69:ec  
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

em0       Link encap:Ethernet  HWaddr 00:22:4d:ad:69:f0  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:17 Память:d0220000-d0240000 

eth0      Link encap:Ethernet  HWaddr d8:fe:e3:a7:d5:26  
          inet addr:192.168.1.10  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::dafe:e3ff:fea7:d526/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1329 errors:0 dropped:0 overruns:0 frame:0
          TX packets:819 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:531178 (531.1 KB)  TX bytes:125004 (125.0 KB)

eth2      Link encap:Ethernet  HWaddr 00:22:4d:ad:69:ec  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:16 Память:d0320000-d0340000 

lo        Link encap:Локальная петля (Loopback)  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:28 errors:0 dropped:0 overruns:0 frame:0
          TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1784 (1.7 KB)  TX bytes:1784 (1.7 KB)

wlan0     Link encap:Ethernet  HWaddr 80:19:34:1e:fe:83  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)


Инициализировались все интерфейсы.
Можно приступить к настройке hostapd. Пока мы тут рассуждали, версия стала, таки, 2.1.
У меня получился вот такой конфиг /etc/hostapd/hostapd.conf:
hostapd.conf
interface=wlan0
bridge=br0
driver=nl80211
logger_syslog=-1
logger_syslog_level=4
logger_stdout=-1
logger_stdout_level=4
ssid=TEST
hw_mode=g
ieee80211n=1
ht_capab=[HT40-][SHORT-GI-40]
channel=11
macaddr_acl=0
deny_mac_file=/etc/hostapd/hostapd.deny
auth_algs=3
ignore_broadcast_ssid=1
ap_max_inactivity=300
wpa=2
wpa_passphrase=my_wpa_passphrase
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP


Включаем автоматический запуск hostapd при загрузке системы, для этого в /etc/default/hostapd раскомментируем и редактируем строки:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
DAEMON_OPTS="-B"
RUN_DAEMON="yes"

Далее, не мудрствуя лукаво, я настроил общий доступ. Скрипт для настройки iptables и ip-форвардинга я взял отсюда, привёл его в соответствие своим реалиям и настроил автозапуск. В результате iptables наполняются необходимым содержимым при загрузке системы.
Логично, что нужно текже настроить DHCP-сервер. Решив упростить задачу до минимума, я установил dnsmasq и снёс имеющийся в наличии и конфликтующий с ним bind9. Конфиг прост:
/etc/dnsmasq.conf
# Configuration file for dnsmasq.
#
# Format is one option per line, legal options are the same
# as the long options legal on the command line. See
# "/usr/sbin/dnsmasq --help" or "man 8 dnsmasq" for details.

# Never forward plain names (without a dot or domain part)
domain-needed
# Never forward addresses in the non-routed address spaces.
bogus-priv

# If you want dnsmasq to listen for DHCP and DNS requests only on
# specified interfaces (and the loopback) give the name of the
# interface (eg eth0) here.
# Repeat the line for more than one interface.
interface=br0

# This is an example of a DHCP range where the netmask is given. This
# is needed for networks we reach the dnsmasq DHCP server via a relay
# agent. If you don't know what a DHCP relay agent is, you probably
# don't need to worry about this.
dhcp-range=192.168.0.2,192.168.0.254,255.255.255.0,12h

# Give a host with Ethernet address 11:22:33:44:55:66 or
# 12:34:56:78:90:12 the IP address 192.168.0.60. Dnsmasq will assume
# that these two Ethernet interfaces will never be in use at the same
# time, and give the IP address to the second, even if it is already
# in use by the first. Useful for laptops with wired and wireless
# addresses.
#dhcp-host=11:22:33:44:55:66,12:34:56:78:90:12,192.168.0.60
dhcp-host=00:11:22:33:44:55,66:77:88:99:aa:bb,MyDevice1,192.168.0.2
dhcp-host=cc:dd:ee:ff:ee:dd,cc:bb:aa:99:88:77,MyDevice2,192.168.0.3


На самом деле в конфиге ещё куча закомментированных опций, которые позволяют производить очень fine tuning, но такого набора вполне хватает для корректной работы. В принципе, с этого момента аппарат уже работает как домашний маршрутизатор.
После окончания основной настройки я установил и настроил transmission-daemon, aMuled и vsftpd. Собственно говоря, настройка данных сервисов достаточно тривиальна, останавливаться детально на ней не буду. Естественно, доступ к данным ресурсам имеется только из локальной сети, если хочется получить доступ извне, необходимо будет открыть соответствующие порты в iptables.
Вёб-сервер представляет из себя связку Apache 2.4.7 + MySQL Ver 14.14 Distrib 5.5.40. Пока не придумал, чем буду его заполнять: накатить готовый движок и баловаться с дизайном или же просто попрактиковаться в html и php. В любом случае сие имеет для меня прикладное значение. Возможно, в перспективе получится настроить вёб-интерфейс для мониторинга и управления маршрутизатором.
После всех манипуляций остаётся настроить ведение логов: по возможности привести настройки всех процессов, ведущих логи, выводить в них только критически важные уведомления и предупреждения. Идея заключается в снижении количества операций записи, а, соответственно, и негативного влияния на SSD.
Кроме того, следует настоятельно рекомендуется включить запуск по cron раз в сутки fstrim (для каждого раздела отдельно). Говорят, хуже не будет точно.

Ффух… Получилось несколько сумбурное описание моих мытарств с собственноручно собранным устройством, но удовлетворение от того, что всё работает просто неописуемо.

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

  • процессор Intel Atom D2500 — до 10 Вт
  • SSD-накопитель Crucial M500 — 3,6 Вт

По остальным крмплектующим данных сходу не нашлось, но практически везде в характеристиках сетевой карты и Wi-Fi модуля пишут «низкое энергопотребление». Если грубо накинуть на всё про всё 10 Вт (прочее железо, интегрированные сетевушки, etc), то итого получается около 25 Вт — не так уж и много, полагаю…

Вроде бы ничего не забыл, упомянул все ключевые моменты. За подробностями прошу в комментарии. Спасибо за внимание! (-;

UPD: Господин Revertis справедливо заметил, и я с ним соглашусь, что изначально при установке системы не следовало отмечать DNS-сервер, чтобы потом его сносить (речь о bind9), но в статье я описывал именно путь, который проделал — со всеми его ошибками и закоулками. И да, соглашусь, что nginx лучше, чем Apache, более того — я его даже заменю. Спасибо за совет.

habr.com

Linux router: настройка, тонкости

Существует немецкая компания Mikrotik, которая выпускает отличные роутеры. Благодаря операционной системе, разработанной этой компанией, в роутер можно превратить любой компьютер.

Системные требования – невысоки, и зависят от типа выполняемых задач и нагрузки. Все бы хорошо, но данная операционная система является платной. В то же время, альтернативой для нее считаются сборки Linux router. Это – дистрибутивы, построенные на базе Linux, позволяющие получить от ПК функциональность роутера.

Схема включения роутера в домашней сети

Как нетрудно догадаться, за основу большинства рассматриваемых дистрибутивов взяты «фирменные» широко распространенные сборки Linux (Цент-ОС, Дебиан и некоторые другие). Но есть исключения, например, система SmoothWall, обладающая очень низкими системными требованиями.

Пользователь, прочитав данное руководство, может остановить свой выбор на двух или трех дистрибутивах. Затем, надо будет изучить каждый из них в отдельности (более подробно), после чего, можно будет определиться на 100%, что именно устанавливать на компьютер. Желаем удачи!

Дистрибутивы с низкими системными требованиями

Сразу отметим, что о машинах с 486-м процессором здесь речь не идет. Роутер можно собрать, если есть плата с процессором Pentium 166 МГц или выше. Современное ядро Linux – достаточно прожорливо, что поделать.

Ознакомьтесь с требованиями к железу, актуальными для каждого дистрибутива. Лучшим вариантом «апгрейда» ПК, используемого как роутер, можно считать добавление в него оперативной памяти. Впрочем, для начала будет достаточно и 32-х мегабайт… Рассматриваемые дистрибутивы поддерживают разные протоколы подключения (и даже через внешний COM-модем).

SmoothWall Express

Данный проект ведет свое начало с 2000 года. Дистрибутив сделан не на основе какой-либо готовой сборки, однако, распространяется под лицензией GPL. Актуальная сегодня версия: 3.1.

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

  • Процессор – Pentium 166 МГц (можно без модуля MMX)
  • ОЗУ – 32 Мб
  • HDD – 2 Гб

Действуем так: скачиваем образ дистрибутива для требуемой архитектуры («686» значит «32-разрядный процессор», что подходит всем). В компьютер можно установить включительно до 4-х сетевых карт (проводных или беспроводных), большее число – не поддерживается.

Установка идет очень просто: нажимаем несколько раз «OK», выбираем раскладку клавиатуры и сетевое имя «роутера». В качестве политики исходящего трафика рекомендуем выбрать «Open».

Стартовая вкладка web-интерфейса

Интерфейс будет доступен по адресу: «IP роутера:81» или «IP роутера:441». Каждая вкладка содержит набор закладок (доступны функции «обычного роутера», и даже больше):

Закладка «монитор трафика»

IPCop Firewall

Эта сборка базировалась на SmoothWall, но затем родство потерялось. В задачу разработчиков входило сделать интерфейс настройки простым и понятным. То есть, похожим на web-интерфейс «обычного» роутера.

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

  • Процессор – Pentium II 233 МГц (обязательно)
  • ОЗУ – 64 Мб
  • HDD – 2 Гб

Из протоколов VPN поддерживается только Open VPN. Интерфейс выглядит так:

Web-интерфейс, основная вкладка

Не думайте, что здесь доступно более 4-х сетевых контроллеров (можно установить и больше, но использовать будете только 4).

Не что иное, как улучшенная версия предыдущего дистрибутива. Улучшения коснулись интерфейса и опций безопасности.

Системные требования – стали более «лояльными»:

  • Процессор – Pentium 166 МГц
  • ОЗУ – 64 Мб
  • HDD – 2 Гб

Впрочем, от IPCop в данном дистрибутиве осталось мало чего, так как он теперь построен на базе CentOS. Плюсы: можно сохранять настройки на отдельной USB-флешке. Минусы: по-прежнему, работает четыре сетевых порта.

Дистрибутивы для современных ПК

Рассматриваемые здесь сборки реализуют возможности профессионального роутера. Для дома и малого офиса – это избыточно. Например, дистрибутив Untangle подходит для средних организаций (50-300 рабочих станций и сетевых устройств). Мы приводим лишь минимальные системные требования и рассматриваем основные особенности.

Untangle Gateway

Не устанавливайте этот дистрибутив у себя дома. Интерфейс роутера здесь построен полностью на Java. Плюсы: все отображается «в реальном времени». Минусы: web-интерфейс требует много ресурсов, в том числе, на стороне терминала.

Потребуется:

  • Процессор – 800 МГц и выше (приводится «минимум», актуальный для 50-ти пользователей)
  • ОЗУ – 512 Мб
  • HDD – 20 Гб

Подключаемые модули есть во всех рассмотренных дистрибутивах. Но здесь в их числе будут: антивирус Касперского (платный), приложение для Active Directory, Web Filter от eSoft. Вообще, сборку считают функциональным аналогом системы ISA Server.

Web-интерфейс Untangle Gateway

Vyatta CE

Установив данную операционную систему, пользователь получит аналог роутера Cisco. Все опции здесь доступны из командной строки, а web-интерфейс неудобен и требует знания синтаксиса:

Графический интерфейс настройки роутера Vyatta

Список системных требований:

  • Pentium III 450 МГц
  • ОЗУ – 128 Мб
  • HDD – 2 Гб

Кстати, Vyatta базируется на дистрибутиве Debian.

Настройка Endian Firewall

http://youtu.be/MdaENZhQFKs

27sysday.ru

Обзор фаворитных Linux дистрибутивов-роутеров — Linux портал

V3.01 —>

Статья для журнала Взломщик

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

Дополнительно многие из их имеют функции контроля трафика, блокировки протоколов, антиспам фильтр, шейпер и много другое. Поэтому выбрать «собственного заступника» достаточно не просто. Эта статья поможет тебе быстрее сориентироваться.

Untangle Gateway 7.0.1

ОС: Untangle Gateway 7.0.1
Сайт проекта: www.untangle.com
Дата выхода: 20 октября Две тыщи девять года
Лицензия: GPL
Аппаратные платформы: x86_32
Системные требования: CPU Восемьсот МГц, 500 двенадцать Mб RAM, 20 Гб диск, 2+ NIC

Дистрибутив Untangle, выпускаемый одноименной компанией, способен поменять коммерческие решения вроде ISA Server (Forefront TMG), обеспечивая безопасный доступ в Интернет. Рассчитан Untangle на мелкие и средние организации, имеющие 50-300 и более компютеров (системные требования приведены для 50).

Основой Untangle послужил Debian, все функции производятся при помощи понятного, хотя и нелокализованного интерфейса. Для управления достаточно обдумывать суть, глубочайших знаний Unix систем в обычной ситуации не будет необходимо.

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

В Untangle можно добавить Девяносто четыре пакета (19 приложений), которые обеспечат: маршрутизацию, антивирусную/антифишинг/spyware защиту, обнаружение атак, анализ протоколов (7 уровень), контентную фильтрацию веб-трафика, VPN-подключения и многие другие функции. В их базе лежат популярные OpenSource приложения — Snort, ClamAV, SpamAssassin, Squid и т.д.

От DoS’а и некоторых низкоуровневых сетевых атак защищает модуль собственной разработки «Attack Blocker», который предлагается безвозмездно. Антиспам фильтр распознает мусор в изображениях, для чего он подключается к OCR. Модуль анализа протоколов при необходимости способен ограничить работу всех протоколов прикладного уровня (P2P, IM и т.п., всего ~100 протоколов), даже если они употребляют нестандартные порты.


По подписке распространяются некоторые проприетарные разработки — антивирус Касперского, eSoft Web Filter, модуль для работы с Active Directory, резервирование опций и т.д. Для удобства имеются и готовые «сборки» модулей, предназначенные для различных сетей — Educations, Small Business, Professional, Government (в разных вариантах поставки, распространяются также по подписке).

Бесплатный модуль Reports позволяет админу получать отчеты по всем возможным ситуациям — сетевой активности, протоколам, обнаруженному мусору и вирусам, активности юзеров. Результат можно сохранить в файлы форматов PDF, HTML, XLS, CSV и XML и выслать по e-mail.
Установка дистрибутива достаточно проста и занимает минимум времени: обычно следуем по подсказкам мастера (во время установки можно выбрать русский язык), отвечая на вопросы. По ходу будут испытаны системные требования, во всех позициях должно стоять ОК. Далее форматируем жесткий диск, процесс автоматизирован, для чего достаточно нажать кнопку «Продолжить«.
После перезагрузки активируется мастер, задача которого — помочь в настройке шлюза. В списке предложенных языков понятен только англицкий, русского здесь уже нет.

Далее попеременно набираем пароль для учетной записи admin, выбираем часовой пояс, вводим регистрационную информацию (неотклонимы e-mail и количество компов). После этого система распознает сетевые карты и назначает их — External/Internal (при наличии третьего сетевого интерфейса можно без особых заморочек организовать демилитаризованную зону).

Используя мышку, назначение можно поправить, только вот отыскать, где какая из карт при имеющейся инфы нереально. Указываем тип интернет-подключения (DHCP, PPPoE, Static), для проверки нажимаем «Testing Connectivity«.

На шаге «Internal Network» будет необходимо выбрать один из 2-ух вариантов внедрения Untangle: Transparent Bridge или Router. При выборе второго варианта нужно указать Ip-адрес интерфейса внутренней сети и опционально активировать встроенный DHCP сервер.

И последний этап — отправка тестового сообщения по e-mail, по умолчанию употребляется внутренний SMTP, но можно указать и хоть какой внешний. По окончании загружается консоль управления. Слева две вкладки.

В Apps выбираем и устанавливаем пакеты, в Config — производим функции. Все разбито по пт, поэтому найти нужные установки и разобраться до боли просто. Например, для функции Firewall переходим в одноименную вкладку. Система сходу предложит скачать требуемый пакет.

Нажимаем «Free Download», по окончании загрузки в центре окна появится ярлык для функции компонента.
Аналогичным образом ставим все необходимое — Attack Blocker, Protocol Control, OpenVPN, Reports и т.д. Для функции модуля выбираем его и щелкаем по кнопке Setting.

Например, в Firewall уже имеются Три приготовленных правила (блокировка входящих соединений на 20 один порт, блокирующий и разре

hpunix.org

Настройка основного и двух резервных операторов на Linux-роутере с NetGWM

Задача резервирования основного шлюза — одна из самых популярных в сетевом администрировании. У нее есть целый ряд решений, которые реализуют механизмы приоритезации или балансировки исходящих каналов для абсолютного большинства современных маршрутизаторов, в том числе и маршрутизаторов на базе Linux.

В статье об отказоустойчивом роутере мы вскользь упоминали свой корпоративный стандарт для решения этой задачи — Open Source-продукт NetGWM — и обещали рассказать об этой утилите подробнее. Из этой статьи вы узнаете, как устроена утилита, какие «фишки» можно использовать в работе с ней и почему мы решили отказаться от использования альтернативных решений.

Почему NetGWM?


Классическая схема резервирования основного шлюза в Linux, реализуемая средствами iproute2, выглядит практически во всех источниках примерно одинаково:
  • Дано: 2 провайдера.
  • Создаем для каждого оператора свою таблицу маршрутизации.
  • Создаем правила (ip rule), по которым трафик попадает в ту или иную таблицу маршрутизации (например, по источнику и/или по метке из iptables).
  • Метриками или ifupdown-скриптами определяем приоритет основного шлюза.

Подробности этой схемы легко гуглятся по запросу «linux policy routing». На наш взгляд, схема имеет ряд очевидных недостатков, которые и стали основным мотиватором создания утилиты NetGWM:
  1. Сложность внесения изменений в схему, плохая управляемость.
  2. Если количество шлюзов 3 и более, логика скриптов усложняется, как и реализация выбора шлюза на основе метрик.
  3. Проблема обнаружения пропадания канала. Зачастую, физический линк и даже шлюз оператора могут быть доступны, при этом из-за проблем внутри инфраструктуры оператора или у его вышестоящего поставщика услуг реально сеть оказывается недоступной. Решение этой проблемы требует добавление дополнительной логики в ifupdown-скрипты, а в маршрутизации на основе метрик она нерешаема в принципе.
  4. Проблема «шалтай-болтай». Такая проблема проявляется, если на высокоприоритетном канале наблюдаются кратковременные частые перерывы в связи. При этом шлюз успешно переключается на резервный. Откуда здесь, казалось бы, может взяться проблема? Дело в том, что ряд сервисов, таких как телефония, видеосвязь, VPN-туннели и другие, требуют некоторого таймаута для определения факта обрыва и установления нового сеанса. В зависимости от частоты обрывов это приводит к резкому снижению качества сервиса или его полной недоступности. Решение этой проблемы также требует усложнения логики скриптов и тоже совершенно нерешаема метриками.

Мы посмотрели, что поможет нам решить все 4 проблемы: простое и управляемое средство с поддержкой 2 и более шлюзов по умолчанию, умеющее диагностировать доступность канала и тестировать его на стабильность. И не нашли такого варианта. Именно так и появился NetGWM.

Установка из GitHub и репозитория «Флант»


NetGWM (Network GateWay Manager) — это небольшая утилита приоритезации основного шлюза, написанная на Python и распространяемая под свободной лицензией GNU GPL v3. Автор первоначальной версии — driusha (Андрей Половов).

Исходный код и документация на английском языке доступны на GitHub, а краткая документация и описание на русском языке — здесь.

Установка из GitHub:

## Предварительно в системе требуется установить:
##  iproute2, conntrack, модуль python-yaml
## После этого клонируем репозиторий:
$ git clone git://github.com/flant/netgwm.git netgwm
## И устанавливаем (понадобятся права суперпользователя):
$ cd netgwm && sudo make install
## Добавим служебную таблицу маршрутизации, которая будет использоваться NetGWM
$ sudo sh -c "echo '100    netgwm_check' >> /etc/iproute2/rt_tables"
## Добавляем в cron пользователя root вызов netgwm с той частотой,
## с которой вам бы хотелось проверять доступность основного шлюза
## (например, раз в минуту):
$ sudo crontab -e
*/1 * * * * /usr/lib/netgwm/newtgwm.py

Кроме того, готовый DEB-пакет с NetGWM можно установить из репозитория для Ubuntu компании «Флант». Установка для Ubuntu 14.04 LTS выглядит так:
## Установим репозиторий:
$ sudo wget https://apt.flant.ru/apt/flant.trusty.common.list \
 -O /etc/apt/sources.list.d/flant.common.list
## Импортируем ключ:
$ wget https://apt.flant.ru/apt/archive.key -O- | sudo apt-key add -
## Понадобится HTTPS-транспорт — установите его, если не сделали это раньше:
$ sudo apt-get install apt-transport-https
## Обновим пакетную базу и установим netgwm:
$ sudo apt-get update && sudo apt-get install netgwm

Добавлять служебную таблицу маршрутизации и настраивать cron в Ubuntu не потребуется. Таблица автоматически добавится при установке пакета. Кроме того, при установке будет зарегистрирована служба netgwm, init-скрипт которой стартует в качестве демона небольшой shell-скрипт /usr/bin/netgwm, который, в свою очередь, читает из файла /etc/default/netgwm значение параметра INTERVAL (в секундах) и с указанной периодичностью сам вызывает netgwm.py.

Настройка


В основе работы NetGWM также лежит policy-роутинг, и нам придется предварительно настроить таблицы маршрутизации для каждого оператора.

Допустим, есть 3 оператора, и необходимо сделать так, чтобы основным оператором был оператор 1, в случае отказа — использовался оператор 2, а в случае отказа из обоих — оператор 3.

Пусть первый оператор у нас подключен к интерфейсу eth2, второй — к eth3, третий — к eth4. Первый оператор имеет шлюз 88.88.88.88, второй оператор — шлюз 99.99.99.99, третий — 100.100.100.100.

Мы почти всегда при настройке сети с несколькими основными шлюзами используем маркировку пакетов и модуль conntrack из NetFilter. Это хорошая практика, помогающая распределять пакеты по таблицам маршрутизации с учетом состояния, но не являющаяся обязательной.

Настроим маркинг пакетов и conntrack:

iptables -t mangle -A PREROUTING -i eth2 -m conntrack --ctstate NEW,RELATED -j CONNMARK --set-xmark 0x1/0x3
iptables -t mangle -A PREROUTING -i eth3 -m conntrack --ctstate NEW,RELATED -j CONNMARK --set-xmark 0x2/0x3
iptables -t mangle -A PREROUTING -i eth4 -m conntrack --ctstate NEW,RELATED -j CONNMARK --set-xmark 0x3/0x3
iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff
iptables -t mangle -A OUTPUT -o eth2 -m conntrack --ctstate NEW,RELATED -j CONNMARK --set-xmark 0x1/0x3
iptables -t mangle -A OUTPUT -o eth3 -m conntrack --ctstate NEW,RELATED -j CONNMARK --set-xmark 0x2/0x3
iptables -t mangle -A OUTPUT -o eth4 -m conntrack --ctstate NEW,RELATED -j CONNMARK --set-xmark 0x3/0x3
iptables -t mangle -A OUTPUT -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff
iptables -t mangle -A POSTROUTING -o eth2 -m conntrack --ctstate NEW,RELATED -j CONNMARK --set-xmark 0x1/0x3
iptables -t mangle -A POSTROUTING -o eth3 -m conntrack --ctstate NEW,RELATED -j CONNMARK --set-xmark 0x2/0x3
iptables -t mangle -A POSTROUTING -o eth4 -m conntrack --ctstate NEW,RELATED -j CONNMARK --set-xmark 0x3/0x3
iptables -t mangle -A POSTROUTING -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff

2. Добавим правила маршрутизации для промаркированных пакетов. Мы это делаем с помощью скрипта, который вызывается из /etc/network/interfaces при событии post-up на интерфейсе lo:
#!/bin/bash
 
/sbin/ip rule flush
 
# operator 1
/sbin/ip rule add priority 8001 iif eth2 lookup main
/sbin/ip rule add priority 10001 fwmark 0x1/0x3 lookup operator1
/sbin/ip rule add from 88.88.88.88 lookup operator1
 
# operator 2
/sbin/ip rule add priority 8002 iif eth3 lookup main
/sbin/ip rule add priority 10002 fwmark 0x2/0x3 lookup operator2
/sbin/ip rule add from 99.99.99.99 lookup operator2

# operator 3
/sbin/ip rule add priority 8002 iif eth4 lookup main
/sbin/ip rule add priority 10002 fwmark 0x3/0x3 lookup operator3
/sbin/ip rule add from 100.100.100.100 lookup operator3

3. Объявим таблицы маршрутизации в /etc/iproute2/rt_tables:
# Зарезервированные значения:
255    local
254    main
253    default
0    unspec
# Служебная таблица, которую мы (или dpkg) добавили ранее:
100  netgwm_check
# Таблицы для операторов, которые мы должны добавить сейчас:
101    operator1
102    operator2
103    operator3

4. Настроим NetGWM. По умолчанию, netgwm.py будет искать конфигурационный файл по адресу /etc/netgwm/netgwm.yml, однако вы можете переопределить это с помощью ключа -c. Настроим работу утилиты:
# Описываем маршруты по умолчанию для каждого оператора и приоритеты
# Меньшее значение (число) имеет больший приоритет. 1 - самый высокий приоритет
# Обратите внимание, что для смены шлюза по умолчанию на другой достаточно просто 
# изменить значения приоритетов в этом файле. И уже при следующем запуске (через 
# минуту в нашем случае) шлюз изменится на более приоритетный (если он доступен).
# Наименование оператора должно совпадать с именем таблицы маршрутизации из
# /etc/iproute2/rt_tables
gateways:
  operator1: {ip: 88.88.88.88, priority: 1}
  operator2: {ip: 99.99.99.99, priority: 2}
  operator3: {ip: 100.100.100.100, priority: 3}
 
# Этот параметр решает проблему «шалтай-болтай», когда приоритетного
# оператора (из доступных) «штормит». 
# Параметр определяет время постоянной доступности (в секундах),
# после которого netgwm будет считать, что связь стабильна
min_uptime: 900
 
# Массив удаленных хостов, которые будут использоваться netgwm для
# проверки работоспособности каждого оператора. Здесь стоит указать либо важные 
# для вас хосты в интернете, либо общедоступные и стабильно работающие ресурсы, 
# как сделано в примере. Шлюз считается недоступным, если netgwm НЕ СМОГ
# установить через него связь до ВСЕХ (условие AND) указанных хостов
check_sites:
  - 8.8.8.8 # Google public DNS
  - 4.2.2.2 # Verizon public DNS

# По умолчанию netgwm проверяет доступность только для самого 
# приоритетного шлюза. Если тот недоступен — до второго по приоритетности и т.д.
# Данная опция, будучи установленной в true, заставит netgwm проверять
# доступность всех шлюзов при каждом запуске
check_all_gateways: false

5. Настроим действия при переключении

Если произойдет переключение, то после смены основного шлюза будут выполнены все исполняемые файлы из каталога /etc/netgwm/post-replace.d/*. При этом каждому файлу будут переданы 6 параметров командной строки:

  • $1 — наименование нового оператора;
  • $2 — IP вновь установленного шлюзе или NaN, если новый шлюз установить не удалось;
  • $3 — имя устройства нового шлюза или NaN, если шлюз установить не удалось;
  • $4 — наименование старого оператора или NaN, если шлюз устанавливается впервые;
  • $5 — IP старого оператора или NaN, если шлюз устанавливается впервые;
  • $6 — имя устройства старого оператора или NaN, если шлюз устанавливается впервые.

В скрипте можно на основании этих переменных описать логику действий в зависимости от подключаемого оператора (добавить или удалить маршруты, отправить уведомления, настроить шейпинг и т.п.). Для примера приведу скрипт на shell, отправляющий уведомления:
#!/bin/bash
# Определяем, что произошло: переключение или старт netgwm
if [ "$4" = 'NaN' ] && [ "$5" = 'NaN' ]
 then
  STATE='start'
 else
  STATE='switch'
fi
# Отправляем уведомление дежурным инженерам о произошедшем
case $STATE in
 'start')
   /usr/bin/flant-integration --sms-send="NetGWM on ${HOSTNAME} has been started and now use gw: $1 - $2"
 ;;
 'switch')
   /usr/bin/flant-integration --sms-send="NetGWM on ${HOSTNAME} has switched to new gw: $1 - $2 from gw: $4 - $5"
 ;;
 *)
  /usr/bin/logger -t netgwm "Unknown NetGWM state. Try restarting service fo fix it."
 ;;
esac
exit

6. Стартуем сервис netgwm в Ubuntu, если вы установили DEB-пакет:
$ sudo service netgwm start

Если вы получили NetGWM из GitHub, то установленное ранее задание в cron уже и так проверяет доступность вашего основного шлюза, дополнительных действий не требуется.

Журналирование


События по переключению NetGWM регистрирует в журнале /var/log/netgwm:
$ tail -n 3 /var/log/netgwm.log
2017-07-14 06:25:41,554 route replaced to: via 88.88.88.88
2017-07-14 06:27:09,551 route replaced to: via 99.99.99.99
2017-07-14 07:28:48,573 route replaced to: via 88.88.88.88

Сохраненная история переключений помогает произвести анализ инцидента и определить причины перерыва в связи.

Проверено в production


Уже около 4 лет NetGWM используется в нашей компании на 30+ маршрутизаторах Linux разных масштабов. Надежность утилиты многократно проверена в работе. Для примера, на одной из инсталляций, с мая 2014 года NetGWM обработал 137 переключений операторов без каких-либо проблем.

Стабильность, покрытие всех наших потребностей и отсутствие проблем в эксплуатации в течение длительного времени привели к тому, что мы практически не занимаемся развитием проекта. Код NetGWM написан на Python, поэтому отсутствует и необходимость в адаптации утилиты к новым версиям операционных систем. Тем не менее, мы будем очень рады, если вы решите принять участие в развитии NetGWM, отправив свои патчи в GitHub или просто написав feature request в комментариях.

Заключение


С NetGWM мы имеем стабильную, гибкую и расширяемую (с помощью скриптов) утилиту, которая полностью закрывает наши потребности в управлении приоритетом основного шлюза.

Любые вопросы по использованию NetGWM также приветствуются — можно прямо здесь в комментариях.

P.S. Читайте также в нашем блоге: «Наш рецепт отказоустойчивого Linux-роутера» — и подписывайтесь на него, чтобы не пропускать новые материалы!

habr.com

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

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