Разное

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

Содержание

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

Среди великого разнообразия 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.

Бесплатные программные роутеры и межсетевые экраны. На базе 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. Будет дополняться! Может у Вас есть что добавить.

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

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

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

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

Итак…

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

  • материнская плата 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, более того — я его даже заменю. Спасибо за совет.

VyOS OpenSource Router / Хабр

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

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

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

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

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

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

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

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

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

Голое железо

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

Облака

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

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

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

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

vyos@vyos# run show ip route forward

default via 203.0.113.1 dev eth2 proto static metric 20 onlink
192.168.56.0/24 dev eth0 proto kernel scope link src 192.168.56.13
203.0.113.1 dev eth2 proto static metric 20

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

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

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

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

Branch

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

SMB Edge

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

Boarder Router

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

VPN Gateway

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

VPN RA Server

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

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

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

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

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

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

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

Образы

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

Бейджи

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

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

Выводы

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

Полезные ресурсы

blog.vyos.io
wiki.vyos.net
Issue tracker
slack.vyos.io
forum.vyos.io
github.com/vyos
twitter.com/vyos_dev
LinkedIn
Facebook
YouTube
VyOS Roadmap
Rolling Релизы

Другие статьи на Хабре

Программная маршрутизация с VyOS
Эмулятор UNetLab — революционный прыжок
Vyatta: Linux-based firewall and router
Интернет на теплоходе: спутниковая тарелка + модемы + балансировщик + Wi-Fi
Ubiquiti EdgeRouter X

Сообщения по ошибкам в тексте прошу направлять в ЛС. Замечания, дополнения и вопросы по статье напротив, прошу в комментарии.

Интернет шлюз на Ubuntu. Полная замена роутера

И так мы хотим для себя настроить интернет, можно пойти и купить обычный роутер с wi-fi стоимость от 1000 и более  и не забивать себе мозг, воткнул кабель сделал пару действий и получил wi-fi и интернет. Но это подходит только для домашних пользователей, а для малых и не больших, да и больших организаций такой вариант не подходит, так как нагрузка на роутер возрастет в разы и Вы получить дохлый интернет и тумаки от руководства. А нам это нужно — нет!!! Для этих целей нужен мощный и производительный  роутер стоимость от 25000 и выше.

Начальство денег может не дать, мол дорого и не нужно, а как я уже сказал, виноватыми будете ВЫ!. Наверняка у Вас есть старый завалявшийся комп с DDR, DDR2 еще лучше DDR3. Вот он как раз подойдет для организации интернет шлюза. Для этого нужно поставить две сетевые карточки (стоимость по 600р — пример ну и wi-Fi карточку стоимость примерно 1000р, согласитесь на много дешевле получается.)


 Ставим ОС Ubuntu (14.04.3), на эту тему написано множество материала. Обновляем.

Исходные данные:

  • Имя компьютера: ubnet
  • Интернет (статичный или динамичный, Опишем статичный) Пример: 85.112.23.246  — eth0
  • Локальная сеть  192.168.1.0/24 что значит эта запись смотрите здесь 
  • Локальный IP 192.168.1.2  — eth2
  • DNS (кэширующий) IP:192.168.1.1
  • DHCP IP:192.168.1.1

 

Настройка

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

nano /etc/network/interfaces

auto eth0
iface eth0 inet static
address 85.112.23.246
netmask 255.255.255.0
gateway 85.112.23.65
dns-nameservers 192.168.1.1

auto eth2
iface eth2 inet static
address 192.168.1.1
netmask 255.255.255.0

pre-up /etc/net     #Правила межсетевого экрана

Сохраняемся. Теперь создадим правила фаервола

touch /etc/net
chmod +x /etc/net

#!/bin/sh

#Включаем форвардинг пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward

#Разрешаем траффик на lo
iptables -A INPUT -i lo -j ACCEPT

#Разрешаем доступ из внутренней сети наружу
iptables -A FORWARD -i eth2 -o eth0 -j ACCEPT

#Включаем NAT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE

#Разрешаем ответы из внешней сети
iptables -A FORWARD -i eth0 -m state —state ESTABLISHED,RELATED -j ACCEPT

#Запрещаем доступ снаружи во внутреннюю сеть
iptables -A FORWARD -i eth0 -o eth2 -j REJECT

Все. Основные настройки произведены. Устанавливаем DNS и DHCP. Статьи описаны ранее.В будущем будет усложнять данную статью.

Дополнения:

Задача в нашей новой сети появился еще один клиент ssh(2222) пробрасываем порт наружу для соединения.

#Порт 2222

iptables -t nat -A PREROUTING —dst 85.112.23.246 -p tcp —dport 2222 -j DNAT —to-destination 192.168.1.2
iptables -I FORWARD 1 -i eth0 -o eth2 -d 192.168.1.2 -p tcp -m tcp —dport 2222 -j ACCEPT
iptables -t nat -A POSTROUTING —dst 192.168.1.2 -p tcp —dport 2222 -j SNAT —to-source 192.168.1.1
iptables -t nat -A OUTPUT —dst 85.112.23.246 -p tcp —dport 2222 -j DNAT —to-destination 192.168.1.2

Протестируем из терминала

ssh -p 2222 [email protected] — или по имени например: ubldap.domain.tld 

Iptables проброс портов для tandberg

Какие порты IP используются H.323 и протоколом SIP для TANDBERG MXP оконечные точки?

Для H.323:

Обнаружение сторожевого устройства (RAS) — порт 1719 — UDP

Настройка вызова Вопрос. . 931 — порт 1720 — TCP

H.245 — диапазон портов 5555-5574 — TCP

Видео — диапазон портов 2326-2485 — UDP

Аудио — диапазон портов 2326-2485 — UDP

Data/FECC — Диапазон портов — 2326-2485 — UDP

Для SIP:

Сообщения SIP — порт 5060 — UDP/TCP

Сообщения SIP — порт 5061 — TLS (TCP)

H.245 — диапазон портов 5555-5574 — TCP

Видео — диапазон портов 2326-2485 — UDP

Аудио — диапазон портов 2326-2485 — UDP

Задача: Есть Tandberg 95 MXP со статичным IP (локальный – 192.168.1.28) и протоколом H.323. Его необходимо пробросить в nat из iptables.

Решение: Применяем следующие настройки:

В Tandberg заходим в

Настройки — Сеть — Настройки IP – H.323 – Дополнительные настройки H.323 – Включаем Nat (прописываем IP внешний) и Ставим Статичные порты.

И перезапускаем tandberg.

Далее в iptables пробрасываем порты. И обязательно Прописать переменные LAN_IP=внутренний IP адрес , а NET_IP=внешний ip адрес

#TANDBERG

#1720

iptables -t nat -A PREROUTING —dst $INET_IP -p tcp —dport 1720 -j DNAT —to-destination $LAN_IP

iptables -I FORWARD 1 -i eth3 -o eth2 -d $LAN_IP -p tcp -m tcp —dport 1720 -j ACCEPT

iptables -t nat -A POSTROUTING —dst $LAN_IP -p tcp —dport 1720 -j SNAT —to-source 192.168.0.11

iptables -t nat -A OUTPUT —dst $INET_IP -p tcp —dport 1720 -j DNAT —to-destination $LAN_IP

#————————————-#

#1719

iptables -t nat -A PREROUTING —dst $INET_IP -p udp —dport 1719 -j DNAT —to-destination $LAN_IP

iptables -I FORWARD 2 -i eth3 -o eth2 -d $LAN_IP -p udp -m udp —dport 1719 -j ACCEPT

iptables -t nat -A POSTROUTING —dst $LAN_IP -p udp —dport 1719 -j SNAT —to-source 192.168.0.11

iptables -t nat -A OUTPUT —dst $INET_IP -p udp —dport 1719 -j DNAT —to-destination $LAN_IP

#Video-audio

iptables -t nat -A PREROUTING —dst $INET_IP -p udp —dport 2326:2485 -j DNAT —to-destination $LAN_IP

iptables -I FORWARD 3 -i eth3 -o eth2 -d $LAN_IP -p udp -m udp —dport 2326:2485 -j ACCEPT

iptables -t nat -A POSTROUTING —dst $LAN_IP -p udp —dport 2326:2485 -j SNAT —to-source 192.168.0.11

iptables -t nat -A OUTPUT —dst $INET_IP -p udp —dport 2326:2485 -j DNAT —to-destination $LAN_IP

#————————————-#

iptables -t nat -A PREROUTING —dst $INET_IP -p tcp —dport 5555:5574 -j DNAT —to-destination $LAN_IP

iptables -I FORWARD 4 -i eth3 -o eth2 -d $LAN_IP -p tcp -m tcp —dport 5555:5574 -j ACCEPT

iptables -t nat -A POSTROUTING —dst $LAN_IP -p tcp —dport 5555:5574 -j SNAT —to-source 192.168.0.11

iptables -t nat -A OUTPUT —dst $INET_IP -p tcp —dport 5555:5574 -j DNAT —to-destination $LAN_IP

3. Сохраняем и применяем настройки iptables.

Настройка Linux-шлюза/маршрутизатора, руководство для не сетевых администраторов

Настройка Linux GW или маршрутизатора не так сложна, как может показаться, если вы читаете достаточно дружественное руководство. Это дополнение к обычной «настройке руководства по Linux»: сначала мы сделаем это с помощью Virtualbox, чтобы проверить свои настройки перед тем, как их развернуть.

Мы напишем о том, как вы можете настроить обычный дистрибутив Linux в качестве пограничного маршрутизатора/шлюза для вашей локальной сети, но для простоты использования будем основывать свои примеры на Ubuntu.

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

  • DHCP для управления арендой
  • DNS для перевода доменов в IP
  • NAT, чтобы мультиплексировать одно соединение
  • Переадресация сервиса, выставление внутренних сервисов во внешнюю сеть

К счастью, Linux поддерживает все это:

  • ISC для DHCP
  • bind9 для DNS
  • iptables для NAT
  • снова iptables, для пересылки услуг

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

 

Предварительная работа, настройка оборудования

Перед настройкой каких-либо служб вам понадобятся две вещи: две сетевые карты, одна для исходящего соединения, а другая для (коммутируемой) локальной сети, и способ сообщить серверу, что вы хотите, чтобы весь трафик из сети 1 был перенаправлен в сеть 2. Возможно, вы захотите установить более двух карт на случай, если вам потребуется маршрутизировать несколько локальных сетей. Мы увидим это позже.

Вам также понадобится ОС. Мы выбрали Ubuntu, потому что она очень проста в установке и содержит все необходимое программное обеспечение в репозиториях, но вы можете использовать любой другой дистрибутив, если вам это нужно.

Кроме того, в этой статье мы будем использовать такую ​​настройку:

  • WAN доступ через eth0, адрес DHCP
  • LAN маршрутизация в eth2, сеть 192.168.25.1/24

 

Если у вас нет всего этого оборудования …

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

  1. Начните с создания того, что будет вашим маршрутизатором VM.
  2. Включите первый сетевой адаптер. Этот должен видеть ваш физический маршрутизатор (т.е. подключаться к глобальной сети).
  3. Включите второй сетевой адаптер. Используйте опцию «Внутренняя сеть» в поле «Прикреплено к». Это будет ваш интерфейс локальной сети.
  4. Создайте вторую виртуальную машину. Этот будет вашим клиентом.
  5. Включите один сетевой адаптер, также подключенный к внутренней сети. Имя этой сети должно совпадать с именем другой виртуальной машины.

Теперь все готово, с помощью этой виртуальной настройки вы можете начать настройку маршрутизатора.

 

Настройка Linux GW: NATting и пересылка

Для нашего Linux GW такие сервисы, как DNS и DHCP, хороши, но реальное подключение намного важнее. Давайте настроим функции NAT и переадресации соединений нового маршрутизатора, затем мы можем проверить, правильно ли работает наша установка, пропингуя IP одной локальной сети из другой.

Мы сделаем это, настроив NAT с помощью iptables. Нам также нужно будет настроить ОС для переадресации соединений с одной сетевой карты на другую:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE

# Добавьте такую строку для каждого eth * LAN
iptables --append FORWARD --in-interface eth2 -j ACCEPT

 

Нам также нужно будет настроить IP для eth0, так как не будет DHCP-сервера (мы являемся сервером!). Откройте/etc/network/interfaces и добавьте что-то вроде этого:

# Настройте порт WAN для получения IP через DHCP
auto eth0
iface eth0 inet dhcp

# Настройка порта LAN локальной сети
auto eth2
iface eth2 inet static
address 192.168.25.1    # (или какой вы хотите)
netmask 255.255.255.0

 

После того, как все проверено, перезапустите сетевые сервисы,  как ниже:

sudo /./etc/init.d/networking restart

 

Все готово, теперь просто подключите ваш компьютер к новому маршрутизатору и протестируйте его. Не забудьте вручную установить IP-адрес в том же диапазоне сети, что и у маршрутизатора, поскольку в данный момент DHCP отсутствует. Это может быть полезно для устранения проблемы.

На своем клиентском ПК установите свой IP-адрес:

ifconfig eth0 192.168.25.10

 

Проверьте, установлен ли у вас IP:

ping 192.168.25.10

 

Если вы получили ответ, ваш новый IP-адрес в порядке, если нет, то проблема с вашим клиентом. Второй шаг, посмотрите, можете ли вы добраться до маршрутизатора:

ping 192.168.25.1

 

Обратите внимание, что вам может потребоваться обновить все (т.е. перезапустить сеть и вручную назначить свой IP-адрес) после подключения кабеля.

Опять же, если вы получите ответ, у вас есть связь с маршрутизатором. До сих пор мы не тестировали ни правила iptables, ни переадресацию, поэтому любая проблема на этом этапе должна иметь конфигурацию IP. Если все прошло хорошо, пришло время проверить правила NAT и переадресацию.

ping 192.168.1.1

 

Это должно дать вам ошибку. Конечно, поскольку нет DHCP, маршрут не установлен. Давайте вручную установим маршрут в клиенте:

sudo route add default gateway 192.168.25.1

 

Затем снова:

ping 192.168.0.1

 

Магия! Работает! Если это не так, у вас есть проблема либо в конфигурации NAT, либо в IP-пересылке маршрутизатора. Вы можете проверить это с помощью wireshark: если эхо-запросы достигают сервера, но они никогда не получают ответ, тогда это NAT, то есть он может пересылать IP-пакеты на eth2 на eth0, но у маршрутизатора нет NAT, и он не знает, как направить ответ обратно. Если эхо-запросы никогда не достигают eth0, тогда у вас проблема с пересылкой IP.

 

Сохранение правил пересылки

Чтобы правила пересылки сохранялись после перезагрузки, нам нужно сначала изменить /etc/sysctl.conf, чтобы разрешить пересылку IP. Это просто вопрос раскомментирования этой строки:

net.ipv4.ip_forward = 1

 

У нас также будет много правил iptables, которые нам нужно настроить во время загрузки. Мы создали скрипт в /home/router/set_forwarding.sh, который также связали с /etc/init.d/rc.local, поэтому он запускается всякий раз, когда загружается система.

В следующий раз мы перейдем к чему-то более сложному: установке DNS-сервера и использованию доменов вместо IP-адресов.

 

Другие части:

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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

Лучший бесплатный Linux-маршрутизатор и брандмауэр 2020 (4 рекомендации)

Эта статья последний раз обновлялась 3 августа 2020 г.

Существует бесчисленное количество бесплатных дистрибутивов Linux / BSD с открытым исходным кодом на выбор для вашего маршрутизатора. Однако в Интернете есть много устаревших рекомендаций, так что это непростой выбор. По этой причине мы решили провести окончательное сравнение межсетевых экранов на 2020 год.

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

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

Почему наше сравнение дистрибутивов маршрутизаторов лучше других?

На протяжении многих лет мы продаем оборудование для создания межсетевых экранов и маршрутизаторов с открытым исходным кодом. За последний год мы установили и настроили большинство, если не все дистрибутивы.Мы устанавливаем и настраиваем pfSense, OPNSense, OpenWRT, ClearOS, IPFire и другие операционные системы каждый день, поэтому у нас есть хорошее представление, какие операционные системы работают лучше других. Мы не получаем денег от поставщиков программного обеспечения, которые делают эту рекомендацию относительно объективной.
Мы ежедневно слышим отзывы клиентов, если есть проблемы с производительностью или проблемами с обновлениями, мы узнаем об этом.

10 лучших брандмауэров с открытым исходным кодом , которых следует избегать — чего НЕ следует использовать.

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

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

1. IPCop — избегайте любой ценой

Некогда популярная операционная система, включенная во все «10 лучших» списков, таких как этот.Вам следует избегать его использования. Последний выпуск был в 2015 году, и система древняя по сегодняшним меркам. Официальный сайт мертв, но исходный код все еще существует. Не используйте это.

2. Гладкостенный — давно мертвый

Smoothwall получил хорошую репутацию в первые дни, когда он конкурировал с IPCop. Он замолчал в 2014 году. Smoothwall OS была заброшена и больше не актуальна и не безопасна. Вам следует избегать этого. Веб-сайт все еще работает, но не обновлялся уже много лет.

3. DD-WRT — больше не конкурентоспособен

Это немного спорная рекомендация, потому что я знаю, что многие пользователи по-прежнему считают DD-WRT хорошим. Это определенно было в те времена. Сегодня DD-WRT все еще функционален и работает, но он не является выдающимся или инновационным. Он практически не изменился с 2014 года и сильно отстал от других конкурентов с открытым исходным кодом. Сегодня есть много хороших альтернатив, таких как OpenWRT.

4. M0n0wall — на пенсии

M0n0wall — крестный отец самых успешных операционных систем, которые у нас есть сегодня.В свое время это был один из самых инновационных проектов, но сейчас он закрыт. Система не получала обновлений с начала 2014 года и официально заброшена.
Мануэль Каспер, автор M0n0wall, рекомендует OPNSense в качестве его преемника.

5. Помидор — не для новых роутеров

Tomato — это круто, и нам это нравится, но это минимальная прошивка, предназначенная для прошивки стандартных маршрутизаторов, таких как D-Link и Asus. Система по-прежнему актуальна, если вы хотите воскресить свое старое оборудование и сделать его снова работоспособным, но если вы строите новый маршрутизатор, вы, вероятно, не захотите использовать на нем помидор.Мы строим мощные роутеры с нуля, поэтому обычно не используем эту систему (нам она до сих пор нравится).

6. Zeroshell — плохой выбор

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


Не рекомендуется, потому что они неудобны для пользователя

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

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

7.VyOS — нет веб-интерфейса

Нам нравится VyOS, но мы настоятельно не рекомендуем нашим клиентам получать ее, если они действительно не знают, что делают. Эта система должна управляться из командной строки, и для ее обслуживания и использования требуется высокий уровень знаний.

8. OpenBSD и FreeBSD — используйте, только если у вас более 10 лет опыта работы в командной строке.

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

Мы регулярно устанавливаем обе системы для опытных клиентов, например сетевых администраторов или разработчиков программного обеспечения. Если вы не хотите возиться с внутренним устройством системы и часами читать руководства, эта система не для вас. Он не предоставляет никаких инструментов веб-интерфейса или графического интерфейса для настройки. Это базовая система на базе терминала.

9. Debian и Ubuntu — не используйте на маршрутизаторе ОС общего назначения.

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


Не рекомендуется, потому что они на самом деле не бесплатны

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

10. Untangle — действительно ли это бесплатно, если ОС просит вас перейти на платную версию?

Untangle NG Firewall — действительно отличное программное обеспечение, которым пользуются многие довольные пользователи. Мы не рекомендуем это делать, потому что бесплатная версия очень ограничена, а операционная система постоянно стимулирует пользователей перейти на платную подписку, чтобы разблокировать классную функциональность.Самая дешевая лицензия стоит 50 долларов в год.

11. Софос — рыбка в хозяйственном пруду

Дистрибутив Sophos «XG Firewall» имеет очень приятный пользовательский интерфейс и бесплатен для домашнего использования. Обычно мы не рекомендуем это делать, потому что это не та система, которую продвигает сам Sophos. Веб-сайт Sophos, кажется, намеренно затрудняет поиск, а сообщество очень маленькое. Sophos, как правило, компания по разработке программного обеспечения для предприятий с одним продуктом сообщества. Здесь нет духа открытого исходного кода.

12. Endian — вам действительно нужно заплатить, чтобы использовать его полностью

Endian на самом деле довольно круто и бесплатно. Мы не рекомендуем это делать, потому что такие функции, как Wi-Fi, доступны только в платных подписках. Как и Untangle, это хорошее программное обеспечение, но за него нужно платить — это исключает его из нашего рассмотрения.

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

Основные требования для выбора операционной системы межсетевого экрана

  1. Систему необходимо активно обслуживать и регулярно получать исправления безопасности.
  2. Система должна быть полностью бесплатной с открытым исходным кодом
  3. Система должна иметь веб-интерфейс или графический интерфейс. Операционные системы командной строки не допускаются.
  4. Система должна быть высокопроизводительной и хорошо работать для обычного пользователя.

Эти основные требования сокращают список рекомендаций до 4 систем.pfSense, OpenWRT, OPNSense и IPFire.

.

Как настроить и использовать Linux в качестве маршрутизатора

В этом руководстве объясняется, как включить переадресацию IP в Linux. Узнайте, как использовать систему Linux в качестве маршрутизатора, на практическом примере.

Каждый компьютер в сети LAN использует уникальный программный адрес, известный как IP-адрес. Для упрощения управления и по нескольким техническим причинам IP-адреса сгруппированы в IP-сети, а IP-сети далее делятся на пять IP-классов.

По умолчанию IP-адрес одной IP-сети не может взаимодействовать с IP-адресом другой IP-сети.Это означает, что если у вас есть два устройства и оба используют IP-адреса из разных IP-сетей, они не могут взаимодействовать друг с другом.

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

Маршрутизатор

— это специальное устройство, которое не только обеспечивает переадресацию IP в качестве основной функции, но также поддерживает несколько других функций на основе IP, таких как; фильтрация пакетов, передача голоса по IP, межсетевой экран IP и т. д.

Маршрутизатор

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

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

Установка лаборатории

В демонстрационных целях я буду использовать три системы с названиями; Linux (RHEL 7.2), PC-A (Windows 7) и PC-B (Ubuntu 18.4). Я буду использовать систему Linux в качестве маршрутизатора, а оставшиеся две системы (PC-A и PC-B) буду использовать для моделирования двух разных сетей.

На следующем изображении показана IP-конфигурация ПК-A (Windows 7).

На следующем изображении показана IP-конфигурация ПК-B (Ubuntu 18.04).

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

Настройка IP-конфигурации в системе Linux

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

На следующем изображении показана моя LAB с конфигурацией IP.

Составьте список всех IP-адресов шлюзов, которые вы назначили в своей сети. Например, в моей ЛАБОРАТОРИИ у меня есть две сети, и IP-адреса шлюза по умолчанию для обеих: 192.168.1.1 и 172.168.1.1.

Теперь настройте все эти IP-адреса шлюза в системе Linux. Вы можете использовать отдельный сетевой интерфейс (LAN) для каждого IP-адреса шлюза или можете использовать один сетевой интерфейс для всех IP-адресов шлюза. Например, в моей ЛАБОРАТОРИИ у меня есть два IP-адреса шлюза. Я могу назначить оба IP-адреса шлюза одному сетевому интерфейсу или отдельно назначить их двум отдельным сетевым интерфейсам.

Поскольку Linux позволяет нам настраивать несколько IP-адресов на одном сетевом интерфейсе, второй вариант будет пустой тратой ресурсов.

Чтобы настроить IP-адреса шлюза в Linux, выполните следующие действия.

Войдите в систему с учетной записью root и выполните команду nmtui .

Выберите «Редактировать соединение» и нажмите клавишу Enter

Выберите доступный Ethernet (сетевой интерфейс) на левой панели и опцию Edit на правой панели и нажмите клавишу Enter .

Задайте конфигурацию IP, как показано на следующем изображении.

При добавлении IP-адресов на шаге 2 убедитесь, что вы добавляете IP-адрес с маской подсети в виде косой черты. Обозначение косой черты — это другой способ записать маску подсети вместе с IP-адресом. Чтобы узнать больше об обозначении косой черты и о том, как ее создать или использовать, ознакомьтесь с этим руководством.

Учебное пособие по подсетям — разбиение на подсети с примерами

Выберите опцию Выйти из и нажмите Enter key.

Перезапустите сетевую службу.

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

Подтвердите конфигурацию IP. Чтобы распечатать IP-конфигурацию всех сетевых интерфейсов, используйте команду «ip addr» .

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

На следующем изображении показано соединение между ПК-A и шлюзом по умолчанию.

На следующем изображении показано подключение между ПК-B и шлюзом по умолчанию.

Включение переадресации IP в Linux

Выполните следующую команду, чтобы включить переадресацию IP.

#echo "1"> / proc / sys / net / ip4 / ip_forward
 

Эта команда включает переадресацию IP в текущем сеансе.Он не вносит изменений в тот файл конфигурации, который Linux читает при запуске. По умолчанию состояние переадресации IP отключено в файле конфигурации. Это означает, что Linux автоматически отключит переадресацию IP, когда вы перезагрузите систему.

Чтобы включить переадресацию IP на постоянной основе, выполните следующую команду.

#echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
 

После включения переадресации IP Linux работает как маршрутизатор.Он направляет все входящие пакеты данных в правильное место назначения.

Чтобы убедиться в этом, протестируйте связь между ПК в разных сетях.

Следующее изображение подтверждает возможность подключения между ПК-А и ПК-В из системы Windows (ПК-А).

На следующем изображении проверяется возможность подключения между ПК-В и ПК-А из системы Ubuntu (ПК-B).

Если вы следуете моей настройке LAB, убедитесь, что вы также отключили брандмауэр Windows в системе Windows, иначе вы не получите ответ на команду ping из системы Windows.

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

.

Почему я построил свой собственный доморощенный маршрутизатор Linux

Последние несколько месяцев я много говорил об использовании простой установки стандартного дистрибутива Linux в качестве маршрутизатора. Я писал об этом на Ars Technica, я делал презентацию на Great Wide Open, и я делаю еще одну на SouthEast LinuxFest на следующей неделе. И я должен вам сказать, что доморощенный роутер был одной из самых спорных тем, о которых я когда-либо писал и рассказывал — некоторым нравится эта идея, но тем, кто, похоже, не очень, на самом деле ненавидят ее.

Честно говоря, настройка собственного маршрутизатора из стандартного серверного дистрибутива не для всех. Это определенно неудобно как в процессе сборки, так и после ее завершения. Хотя это не ужасно сложный , это определенно загадочный , без каких-либо рук на пути. Если вы еще не очень знакомы с Linux, вы, вероятно, будете много озадаченно чесать голову (и, возможно, немного ругаться). Когда вы закончите, вы также не получите супер-многофункциональную сборку — если вы не сделаете для своей сборки намного больше, чем я, у вас не будет качественных функций обслуживания и графиков использования , или многое другое, кроме простого (хотя чрезвычайно высокопроизводительного ) маршрутизатора, который раздает IP-адреса, разрешает записи DNS, подключается к Интернету и отправляет пакеты туда, где они должны.

У меня нет проблем с тем, чтобы кто-нибудь указал на это. Черт возьми, я сам указываю на , и обычно в первых парах абзацев. Однако общая жалоба, которая заставляет меня качать головой, звучит так: «Это будет очень небезопасно и приведет к рутированию, поэтому вам следует использовать специально созданный дистрибутив маршрутизатора». Подождите … что?

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

Моя карьера вынуждает меня относиться к информационной безопасности с паранойей, поэтому я в первую очередь хотел создать чистый Linux-маршрутизатор. Прошивка проприетарного маршрутизатора часто проходит месяцы или годы между обновлениями — и когда выполняет обновление до , гораздо чаще нужно добавить немного яркости в пользовательский интерфейс — более чем вероятно, что на появляется больше ошибок , чем для устранения проблем безопасности.Прошивки с открытым исходным кодом на самом деле не намного лучше. DD-WRT — один из самых популярных, и хотя он выпускает новую (и невероятно насыщенную ошибками) бета-версию каждые несколько недель, у проекта не было стабильной версии за восемь лет. Восемь лет! pfSense в значительной степени является любимцем отрасли, и это правильно, но это все еще большая, сложная куча движущихся частей с веб-интерфейсом и красивыми графиками, битами и касками, которые можно переключать, и вы никогда не сможете по-настоящему знать всего, что он делает — вы щелкаете флажками в веб-интерфейсе и предполагаете, что он делает то, что вы ему сказали, что уже довольно далеко от реальности основных конфигураций.Между выпуском обновлений прошивки также проходят месяцы (или больше), при этом (опять же) нет реальной гарантии, что обновление не изменит основные части пользовательского интерфейса и его возможности, а не только исправит ошибки.

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

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

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

Итак, это возвращает нас к теме о том, для кого домашний роутер или нет. Подходит ли это занятому администратору, который еще не очень хорошо знаком с сетями Linux на уровне командной строки, включая dhcpd, iptables и bind? Наверное, нет — у них нет времени заниматься всем этим. Подходит ли это домашнему пользователю, которому эти вещи не интересны? Опять же, вероятно, нет — они будут разочарованы загадочной (хотя в конечном итоге простой) природой конфигов.

Домашний маршрутизатор Linux — это , который подойдет любителю или младшему системному администратору, который искренне интересуется тем, как эти вещи работают под капотом. Установка и управление одним из них многому вас научит. Это также довольно хорошо подходит для опытного системного администратора, который уже разбирается в большинстве систем и которому достаточно освежить кое-что, чтобы освоиться с ним — чистая производительность просто потрясающая, а простой характер система предоставит ветерану-сисадмину возможность управлять им и выполнять резервное копирование теми способами, которые им уже очень удобны.И, наконец, он идеально подходит для людей в невероятно покрытых оловянной фольгой шляпах (а также, к сожалению, таких, как я в наши дни), поскольку его упрощенная природа позволяет им быть абсолютно уверенными на , они понимают, что это такое, а что нет, делают и планируйте это соответствующим образом, когда они планируют свои настройки безопасности.

Если вы заинтересованный любитель или системный администратор, который думает, что это похоже на тот проект, в который вы хотели бы вникнуть, или даже тот, кто думает, что это звучит совершенно бессмысленно, но может быть забавно, чтобы подумал о для час — приходите на SouthEast LinuxFest в этом году в Шарлотт, штат Нью-Йорк.С.! Мероприятие продлится 10-12 июня, а мой доклад должен быть в субботу, 11 июня, с 9-10 утра

.
.

Введение в сетевую маршрутизацию Linux

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

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

Обязательно определим «локальную» сеть как логическую и обычно также как физическую сеть, в которой находится локальный хост. Логически это означает локальную подсеть, в которой хосту назначается один из диапазона IP-адресов локальной подсети. Физически это означает, что хост подключен к одному или нескольким коммутаторам, которые также подключены к остальной части локальной сети.

Модель сети TCP / IP

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

5. Уровень приложения: сообщение Этот уровень состоит из протоколов соединения, необходимых для взаимодействия различных сетевых приложений, таких как HTTP, DHCP, SSH, FTP, SMTP, IMAP и другие.Когда вы запрашиваете веб-страницу с удаленного веб-сайта, запрос на соединение отправляется на веб-сервер, и ответ отправляется обратно на ваш хост на этом уровне, а затем ваш браузер отображает веб-страницу в своем окне.

4. Транспортный уровень: сегмент TCP. Транспортный уровень предоставляет услуги сквозной передачи данных и управления потоками, которые не зависят от данных и типов передаваемых протоколов. Он использует такие порты, как 80 для HTTP и 25 для SMTP, для установления соединений между отправляющим узлом и удаленным узлом.

3. Интернет-уровень: Пакетный. Маршрутизация пакетов выполняется на уровне Интернета. Этот уровень отвечает за маршрутизацию пакетов в двух или более разных сетях, чтобы достичь их конечного пункта назначения. Этот уровень использует IP-адреса и таблицу маршрутизации, чтобы определить, какое устройство отправлять пакеты следующим. При отправке на маршрутизатор каждый маршрутизатор отвечает за отправку пакетов данных только следующему маршрутизатору в серии, а не за отображение всего маршрута от локального хоста к целевому хосту.Уровень Интернета в основном связан с маршрутизаторами, которые общаются с маршрутизаторами, чтобы определить следующий маршрутизатор в цепочке.

2. Уровень канала передачи данных: кадр. Канальный уровень управляет прямыми соединениями между аппаратными хостами в единой локальной логической физической сети. Этот уровень использует адреса управления доступом к среде (MAC), встроенные в карты сетевого интерфейса (NIC), для идентификации физических устройств, подключенных к локальной сети. Этот уровень не может получить доступ к хостам, которые не находятся в локальной сети.

1. Физический уровень: биты. Это аппаратный уровень, состоящий из сетевых адаптеров и физического кабеля Ethernet, а также протоколов аппаратного уровня, используемых для передачи отдельных битов, составляющих кадры данных между любыми двумя хостами или другими сетевыми узлами, подключенными локально.

Простой пример

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

  1. На уровне приложения браузер инициирует сообщение запроса HTTP-соединения на удаленный хост, www.example.com, чтобы отправить обратно данные, составляющие содержимое веб-страницы. Это сообщение, и оно включает только IP-адрес удаленного веб-сервера.

  2. Транспортный уровень инкапсулирует сообщение, содержащее запрос веб-страницы, в дейтаграмму TCP с IP-адресом удаленного веб-сервера в качестве пункта назначения.Наряду с исходным пакетом запроса этот пакет теперь включает порт источника, из которого будет исходить запрос, обычно случайный порт с очень большим числом, так что возвращаемые данные знают, какой порт прослушивает браузер; и порт назначения на удаленном хосте, в данном случае порт 80.

  3. Уровень Интернета инкапсулирует датаграмму TCP в пакет, который также содержит IP-адреса источника и назначения.

  4. Канальный уровень данных использует протокол разрешения адресов (ARP) для определения физического MAC-адреса маршрутизатора по умолчанию и инкапсулирует Интернет-пакет в кадр, который включает MAC-адреса источника и назначения.

  5. Кадр отправляется по сети, обычно CAT5 или CAT6, от сетевой карты на локальном хосте к сетевой карте на маршрутизаторе по умолчанию.

  6. Маршрутизатор по умолчанию открывает дейтаграмму и определяет IP-адрес назначения. Маршрутизатор использует свою собственную таблицу маршрутизации для определения IP-адреса следующего маршрутизатора, который перенесет кадр на следующий шаг своего пути. Затем маршрутизатор повторно инкапсулирует кадр в новую дейтаграмму, которая содержит собственный MAC-адрес в качестве источника и MAC-адрес следующего маршрутизатора, а затем отправляет его через соответствующий интерфейс.Маршрутизатор выполняет свою задачу маршрутизации на уровне 3, уровне Интернета.

Обратите внимание, что коммутаторы невидимы для всех протоколов на уровнях два и выше, поэтому они не влияют на передачу данных каким-либо логическим образом. Функция коммутаторов заключается просто в предоставлении простых средств для соединения нескольких хостов в единую физическую сеть с помощью длинного кабеля Ethernet.

Вы можете использовать команду arp [-n] для просмотра всех MAC-адресов, которые ваш хост сохранил в своей таблице arp.Это всегда хосты в локальной сети.

Таблица маршрутизации

Все сетевые устройства, будь то хосты, маршрутизаторы или другие типы сетевых узлов, такие как подключенные к сети принтеры, должны принимать решения о том, куда направлять пакеты данных TCP / IP. Таблица маршрутизации предоставляет информацию о конфигурации, необходимую для принятия этих решений. Таблица маршрутизации, аналогичная очень простой, показанной на Рисунке 1, используется для определения единственного маршрута, доступного для типичного локального хоста, и для определения того, следует ли отправлять пакеты на маршрутизатор шлюза по умолчанию. .Команда route -n отображает таблицу маршрутизации; опция -n отображает результаты только как IP-адреса и не пытается выполнить поиск в DNS, который заменит IP-адрес на имена хостов, если они доступны. Команда netstat r n дает очень похожие результаты.

 

[root @ host1 ~] # route -n
Таблица IP-маршрутизации ядра
Флаги Genmask шлюза назначения Метрика Ref Использовать Iface
0.0.0.0 192.168.0.254 0.0.0.0 UG 100 0 0 eno1
192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eno1

Рисунок 1: Простая таблица маршрутизации.

Шлюз по умолчанию всегда отображается с адресом 0.0.0.0, если используется опция -n. Если -n не используется, в столбце «Назначение» вывода появляется слово «По умолчанию». IP-адрес в столбце Шлюз — это IP-адрес маршрутизатора шлюза исходящей почты.Сетевая маска 0.0.0.0 для шлюза по умолчанию означает, что любой пакет, не адресованный локальной сети или другому исходящему маршрутизатору дополнительными записями в таблице маршрутизации, должен быть отправлен на шлюз по умолчанию независимо от класса сети.

Столбец Iface (интерфейс) на рисунке 1 — это имя исходящей сетевой карты, в данном случае eno1. Для хостов, которые действуют как маршрутизаторы, вероятно, будут использоваться как минимум две, а иногда и больше сетевых адаптеров. Каждая сетевая карта, используемая в качестве маршрута, будет подключена к разным физическим и логическим сетям.Флаги в столбце «Флаг» указывают на то, что это маршрут «Вверх» (U) и шлюз по умолчанию (G). Также могут присутствовать другие флаги.

Решения о маршрутизации для большинства хостов довольно просты:

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

Эти правила просто означают, что если все остальное не удается из-за отсутствия совпадения, отправьте пакет на шлюз по умолчанию.

Таблица маршрутизации на рисунке 2 ниже немного сложнее, потому что она принадлежит хосту Linux, действующему как маршрутизатор, который подключается к трем сетям, одна из которых ведет в Интернет. Каждая локальная сеть класса C, 192.168.0.0/24 на интерфейсе eth2, 192.168.25.0/24 на eth3, имеет записи в таблице, а также маршрут по умолчанию, который ведет к остальному миру на eth0.

 

[root @ host2 ~] # route -n
Таблица IP-маршрутизации ядра
Флаги Genmask шлюза назначения Метрика Ref Использование Iface
192.168.1.24 0.0.0.0 255.255.255.252 U 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
192.168.25.0 0.0.0.0 255.255.255.0 U 0 0 0 eth3
0.0.0.0 192.168.1.25 0.0.0.0 UG 0 0 0 eth0

Рисунок 2: Более сложная таблица маршрутизации с несколькими сетями.

Обратите внимание, что по-прежнему существует только один шлюз по умолчанию, и он находится на интерфейсе eth0. Однако, помимо записи маршрута по умолчанию, которая указывает непосредственно на IP-адрес маршрутизатора на стороне LAN, существует также запись для сети 192.168.1.24/30 в целом. Эта сеть содержит только два используемых IP-адреса: один 192.168.1.25/30 для стороны LAN маршрутизатора и один 192.168.1.26/30 для самого хоста.

Конфигурация маршрутизации

Так как же настраивается таблица маршрутизации? Для хостов, подключенных к сети с помощью DHCP, DHCP-сервер предоставляет эту информацию о конфигурации для маршрута по умолчанию вместе с DNS, IP-адресом хоста и, возможно, другой информацией, такой как IP-адрес для NTP-сервера.Для статических конфигураций это обычно просто, но иногда может быть немного сложнее.

В большинстве случаев добавление маршрута по умолчанию в файл / etc / sysconfig / network приводит к тому, что сеть настраивает маршрут по умолчанию в таблице маршрутизации. Эта запись похожа на образец на рисунке 3.

 

Рисунок 3: Запись шлюза в сетевом файле.

С помощью сетевого файла можно настроить только шлюз по умолчанию.

Другой метод настройки шлюза по умолчанию в статически настроенной среде — добавить его в соответствующий файл конфигурации интерфейса в каталоге / etc / sysconfig / network-scripts.Чтобы добавить шлюз в файл конфигурации интерфейса для интерфейса eth0, вы должны добавить ту же строку, что и на рисунке 3 выше, в файл ifcfg-eth0. Если вы это сделаете, вам следует удалить эту запись из сетевого файла.

В более сложной среде, например, когда хост-компьютер подключен к нескольким сетям с использованием нескольких сетевых адаптеров, и когда есть по крайней мере два или, возможно, более маршрута, которые необходимо ввести в таблицу маршрутизации, вам следует рассмотреть возможность использования файла маршрута в / etc / sysconfig / network-scripts.Для NIC enp7s1 этот файл будет route-enp7s1, и он будет содержать запись, показанную на рисунке 4.

 

по умолчанию через 192.168.0.1 dev enp7s1

Рисунок 4. Запись маршрута по умолчанию для enp7s1.

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

Конечно, вы всегда можете добавить маршруты из командной строки с помощью команды route . Это может занять некоторое время, если вам нужно делать это каждый раз при загрузке системы, поэтому вы можете рассмотреть возможность использования описанных выше методов или создания сценария, который запускается во время загрузки.У меня есть сценарий для одной из моих систем, который содержит следующие две строки, как показано на рисунке 5.

 

маршрут по умолчанию
маршрут добавить по умолчанию gw 192.168.0.1

Рисунок 5: Команды для установки маршрута по умолчанию из командной строки.

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

Заключение

В маршрутизации может быть намного больше, чем показано в этих довольно простых примерах, которые довольно часто встречаются.Информация здесь должна помочь вам начать работу. Для более сложных сред вы можете обратиться к Inside TCP / IP, Second Edition или TCP / IP Network Administration by Craig Hunt. Вы также можете обратиться за дополнительной информацией к документации вашего дистрибутива; для дистрибутивов на основе rpm, таких как Fedora и CentOS, хорошим ориентиром является руководство по развертыванию Red Hat Enterprise Linux 7.

.

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

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