Программный маршрутизатор m0n0wall отличается от своих аналогов относительно небольшим числом функций. С одной стороны это недостаток, с другой стороны преимущество — системные требования минимальны, а стабильность работы очень высокая. Если вам нужен хороший роутер без лишних прибамбасов, то m0n0wall — однозначно ваш выбор.
В этом обзоре мы детально расскажем о процессе установки и настройки этого программного маршрутизатора. Минимальные системные требования у m0n0wall таковы, что я бы их обобщил до фразы «вряд ли вы у себя найдете настолько древний комп». Поэтому нет смысла забивать голову ненужными цифрами, а если вам приспичит их узнать, то сходите на официальный сайт проекта. Чтобы наш комп хорошо выполнял роль маршрутизатора, в него надо вставить одну (если уже есть встроенная) или две сетевых карты. Однако, не каждая встроенная сетевая плата может быть распознана операционкой роутера, поэтому я бы рекомендовал взять две дискретных карточки, тем более что цена самых простых образцов не превышает ста рублей. Давайте посмотрим на список основных возможностей нашего подопытного, а затем приступим к установке.
- Настройка через WEB-интерфейс
- Управление с консоли для установки IP-адреса локального интерфейса, сброса пароля, восстановления настроек по умолчанию, перезагрузки
- Поддержка WiFi (при наличии в компе совместимой беспроводной сетевой карты), возможна работа в режиме точки доступа.
- Captive portal
- Поддержка VLAN’ов (стандарт 802.1q)
- Поддержка IPv6
- Фильтрация пакетов согласно правилам, логирование
- NAT/PAT
- DHCP-клиент, PPPoE, PPTP подключение к провайдеру
- IPSec VPN сервер (IKE; поддержка мобильных клиентов и сертификатов)
- PPTP VPN сервер (с возможностью авторизации на внешнем RADIUS-сервере)
- Статические маршруты
- DHCP-сервер и relay
- Кэширующий DNS-форвардинг
- DynDNS-клиент
- SNMP-агент
- QoS и ограничение скорости (шейпер)
Установка
Сначала нам понадобится iso-образ, который надо записать на болванку. Установка в привычном смысле этого слова является необязательным процессом. m0n0wall прекрасно функционирует будучи загруженным с CD, при этом все свои настройки он хранит в xml-файле на дискете или любой USB-флешке, которую вы подоткнете к ПК. Имхо — удобно. Итак, вставляем CD-диск, дискету или USB-флешку в ПК и включаем всё это хозяйство. На данном этапе сетевухи лучше к сети пока не подключать. После непродолжительной загрузки перед нами появится вот это:
Если вы дошли до этого места без проблем, то можете себя поздравить. Самая нудная часть работы проделана. Теперь можно подключить любой другой компьютер к локальной сети и настраивать m0n0wall через удобный WEB-интерфейс.
Настройка
При входе на web-интерфейс по локальному IP (по умолчанию он 192.168.1.1), система спросит логин и пароль (значения по умолчанию admin и mono соответственно). После входа в браузере отобразится страница состояния системы.
В левой части страницы можно обнаружить список разделов, кликая по которым в правой части страницы можно изменять соответствующие настройки.После первого запуска система уже имеет ряд настроек. Вот некоторые из них:
- Внешний интерфейс (WAN) получает IP адрес и сопутствующие параметры автоматически по DHCP.
- Весь трафик с локальной сети приходящий на внутренний интерфейс (LAN) пропускается куда угодно.
- Включен NAT, т.е. трафик из локальной сети идущий во вне транслируется от имени IP-адреса WAN.
- Любые запросы из вне на WAN-интерфейс блокируются.
- На LAN интерфейсе настроен DHCP-сервер, т.е. для компов локальной сети m0n0wall раздает IP-адреса.
- Администрирование разрешено только из локальной сети
- Часовой пояс настроен на ETC/UTC.
Подключаем интернет
Чтобы наш маршрутизатор смог раздавать интернет для компьютеров локальной сети, необходимо будет поменять настройки на интерфейсе WAN. Для этого нужно зайти в соответствующий раздел в левой части страницы.
Нам на выбор предлагают 4 типа подключения: Static, DHCP, PPPoE, PPTP. Изобретать велосипед тут не нужно, лучше сделать всё в соответствии с инструкцией по подключению от провайдера. По завершению всех манипуляций не забываем нажать кнопку Save внизу страницы.Если настройки WAN выставлены корректно, то интернет станет доступен со всех компов локальной сети. В принципе можно больше ничего не настраивать, но в этом случае применение программного маршрутизатора не оправдывает себя. Поэтому, давайте пробежимся по другим разделам web-интерфейса.
General Setup
Здесь можно:- поменять имя системы (параметр hostname)
— добавить список DNS-серверов (сюда надо вписать DNS-сервера вашего провайдера)- изменить имя пользователя и пароль, который используется для доступа к настройкам.- изменить часовой пояс
Interfaces (assign)
Если у вас больше двух сетевых плат, то помимо LAN и WAN будут доступны интерфейсы OPTx, где x — просто порядковый номер. Назначаются они автоматически, но мы можем это изменить, кликнув по надписи assign раздела Interfaces.
В сложных сетях трафик может передаваться в отдельных VLANах. Прописать их можно в соответствующей закладке. Итак, в разделе Interfaces у нас отображается каждый присутствующий на машине интерфейс. Кликая по названию интерфейса мы попадем в его настройки. Для каждого интерфейса за исключением WAN можно выставить только основной и дополнительный IP-адрес:
DHCP-server
Чтобы компьютеры локальной сети получали IP-адреса автоматически от m0n0wall, используется встроенный механизм, настройки которого можно найти в разделе DHCP-server. Здесь определяются диапазоны раздаваемых адресов, можно настроить время аренды адреса, настраивается привязка к интерфейсам маршрутизатора:
Firewall
Один из самых интересных разделов — Rules. Здесь мы можем создавать правила для фильтрации трафика. В правой части экрана отображается таблица с правилами, а над таблицей — закладки, количество которых равно количеству интерфейсов. Соответственно, весь входящий трафик на интерфейсах обрабатывается по правилам этих таблиц. Если мы посмотрим на правила по умолчанию, то для интерфейса WAN будет запрещен весь трафик из вне, в на интерфейсе LAN наоборот — весь трафик из локальной сети наружу (в интернет) разрешается. Сейчас мы добавим несколько правил на интерфейс LAN.
Имейте ввиду: правила работают «до первого совпадения!» Пришел на интерфейс пакет, m0n0wall смотрит таблицу правил для этого интерфейса и сравнивает параметры пакета с выставленными критериями. Правила перебираются начиная с самого верхнего. Как только пакет по параметрам удовлетворяет какому-либо правилу, то над этим пакетом выполняется действие, которое описано в этом правиле (pass, reject, block), перебор прекращается, а m0n0wall переходит к обработке следующего пакета. Например, если первым правилом у нас будет стоят «блокировать всё», а следующие по списку правила будут разрешать нужные типы данных, то у нас все равно будет все блокироваться, т.к. параметры любого пакета будут удовлетворять критериям первого правила.
Итак, наши правила:
1. Разрешаем доступ из локальной сети до m0n0wall
2. Разрешаем доступ на сайты в интернете
3. Разрешаем прохождение протокола ICMP (пинги пр)
4. Запрещаем доступ из локальной сети куда угодно.
При таком наборе правил все компьютеры локальной сети будут иметь доступ в интернет на сайты, но при этом не будет работать, например, ICQ. Набор правил ограничивается только вашей фантазией. Что-то можно разрешать для всех компьютеров, а что-то только для избранных. Самое главное здесь не перестараться и случайно не заблокировать себя. Тогда будет проблематично вернуть настройки правил обратно.
Traffic shaper
Еще одна интересная функция m0n0wall — ограничение скорости (шейпер), которое настраивается посредством специальных правил. Скорость можно ограничить на всю сеть, для выбранного компьютера, для отдельного протокола и т.д. Короче, настраивается эта функция достаточно гибко. Давайте взглянем на основной экран traffic shaper’а.
Обратите внимание: сумма весов всех созданных очередей не должна быть больше 100!
Я сделал две очереди: одну с весом 90, другую с весом 10 для нашей единственной «трубы». Т.е. одна очередь для очень важного трафика, который в 90% случаев будет пропускаться первым, и менее важный трафик, который будет пропускаться в 10% случаев. Еще хочу обратить ваше внимание на то, что эти веса справедливы в тот момент, когда «труба» полностью загружена. Иными словами, если важный трафик в определенный момент времени отсутствует, то менее важный трафик вполне может занимать все 100% пропускной способности.
Теперь нужно сказать еще об одном важном моменте: ограничение скорости работает с исходящим трафиком, т.е. в нашем случае всё что пришло из интернета (входящий трафик на WAN) распределяется по очередям и выдается на выход интерфейса LAN (исходящий трафик). Осталось раскидать трафик по очередям. Делается это в закладке Rules. Я создал два правила: 1. трафик ICMP (пинги и пр) помещается в первую очередь с весом 90
2. трафик с интернет-сайтов помещается во вторую очередь с весом 10
Таким образом, если кто-то будет сильно качать инфу с сайта, то задержек в работе протокола ICMP не будет.
Удаленный доступ
Иногда нужно организовать удаленный доступ к локальной сети для компьютеров, которые находятся где-нибудь далеко. Для этого в m0n0wall можно запустить PPTP VPN или IPSec VPN сервер. Для начинающих я рекомендую остановиться на варианте PPTP. Как это настраивается мы подробно рассмотрим в другом обзоре.
Captive portal
Замечательнейшая вещь. Для тех кто не в теме поясню: captive portal — это специальный инструмент, с помощью которого можно контролировать использование интернета третьими лицами, например, гостями в вашей организации, которые иногда просят выпустить их во всемирную паутину. Второй вариант применения — доступа в интернет по времени, например в интернет-кафе или гостинице.
Как это работает: человек подключает свой компьютер к вашей сети, затем в своем браузере набирает адрес какого-нибудь интернет-сайта куда ему нужно зайти, а вместо этого у него открывается специальная страница, где нужно ввести либо логин и пароль либо специальный код доступа (ваучер). Логин с паролем или ваучер действительны определенное время, по истечении которого доступ автоматически закрывается. Это очень удобно, например, если к вам пришел человек и просит дать ему доступ в интернет на час — даете ему бумажку с кодом ваучера и всё. Ваучеры можно сгенерировать заранее в нужном количестве и на нужное время, напечатать бумажки с кодами и отдать, например, секретарю, пусть раздает кому нужно.
Давайте посмотрим как это настраивается. Зайдем в раздел Captive Portal WEB-интерфейса:
- Галка Enable captive portal отвечает за включение и выключение функции.
- Interface — на каком сетевом адаптере будет это работать. По умолчанию LAN.
- Maximum concurrent connections — максимальное число одновременных подключений для одного пользователя и всех сразу. Значения по умолчанию 4 и 16 соответственно
- Idle timeout — время, после которого подключенный клиент считается неактивным
- Hard timeout — время, после которого неактивный клиент принудительно будет отключен
- Галка Enable logout popup window — вывести в отдельное окно кнопку Logout, что позволит клиенту мгновенно завершить свое подключения не дожидаясь когда система отработает в автоматическом режиме по таймеру Hard timeout
- Disable concurrent logins — от имени одного пользователя или ваучера одновременно можно работать только с одного компа
- Enable per-user bandwidth restriction — ограничение максимальной входящей и исходящей скорости для каждого пользователя. Будет работать, если Traffic shaper активирован.
- Authentication — доступно три опции: доступ без учетных данных, доступ по логину и паролю или по ваучеру, доступ с проверкой на внешнем RADIUS-сервере. Я выбрал второй вариант.
- Portal page contents — здесь необходимо добавить страницу, куда гость будет вводить логин с паролем или код ваучера. Я уже подготовил шаблончик, вам остается его скачать и подцепить.
Если вы всё выставите так как описано выше и нажмете кнопку Save, а затем попытаетесь с любого компа своей локальной сети выйти в интернет, то перед вами появится вот такая форма:
Теперь посмотрим как создавать ваучеры. Переходим на закладку Vouchers. Ставим галку Enable Vouchers, перемещаемся в конец страницы и жмем Save. После этого у нас появится кнопка «+» в таблице:
- Roll# — порядковый номер набора. Может быть от 0 до 65535.
- Minutes per Ticket — сколько минут действует каждый ваучер
- Count — сколько ваучеров будет в наборе.
Выставляем нужные цифры и жмем кнопку Save. Наш набор появится в таблице, а рядом с ним кнопка в виде листочка:
Как вы наверное уже догадались, наборов можно создать несколько, т.е. одни ваучеры будут, например, сроком на 1 час, другие ваучеры на 4 часа и т.д. — все зависит от ваших потребностей и фантазии.
Например, вы знаете, что в каком-то наборе все ваучеры использованы. Чтобы обновить набор, достаточно зайти в него нажав кнопку с изображением «е» и затем просто нажать Save.
Если необходимо какой-либо комп выпускать в интернет без проверки в captive portal, то MAC-адрес этого ПК надо добавить на странице Pass-through MAC.
Если вы хотите сделать список «белых» ресурсов куда будет разрешен доступ без проверки в captive portal, то этот список адресов можно сформировать в закладке Allowed IP addresses:
Проверить статус любого ваучера можно в разделе StatusCaptive portal, закладка Test Vouchers:
Остальное
- В разделе Traffic graph можно посмотреть графики нагрузки на сетевые интерфейсы.
- Раздел Diagnostics содержит несколько отладочных инструментов, которые могут пригодиться для выявления ошибок в правилах firewall’а или шейпера. Здесь же можно протестировать валидность любого ваучера для Captive portal.
- Все настройки связанные с WiFi недоступны через WEB-интерфейс, что, однако, не очень удобно. Будем надеяться, что в следующих версиях этот функционал появится.
Заключение
m0n0wall не обладает такими функциями, как резервирование интернет-канала при наличии нескольких подключений к разным провайдерам. Нет функции прокси-сервера, проверки трафика на вирусы, нет встроенного RADIUS-сервера, например, для организации защищенной Wi-Fi сети. Однако, для начинающих m0n0wall подходит идеально, и если вы сможете в нем разобраться, то пересесть на более продвинутое решение в будущем не составит труда. Если же вам нужен дополнительный функционал «из коробки», то я рекомендую посмотреть в сторону zeroshell и pfSense.
Крайний раз статья редактировалась 30.12.2011
Смотрите другие обзоры по программным маршрутизаторам:
Знакомство с zeroshell
Установка и настройка zeroshell
Настройка zeroshell: firewall, proxy, AV
Делаем Wi-Fi безопаснее с помощью zeroshell
Настройка zeroshell: ограничение скорости и QoS
Введение в pfSense
Установка pfSense
Настройка pfSense: сетевые интерфейсы