IPCop – установка и настройка бесплатного маршрутизатора на базе Linux.
PCop — бесплатный маршрутизатор/сетевой экран на базе Linux. В этой статье я постараюсь пошагово, просто и в картинках рассказать о своем опыте установки и настройки IPCop v1.4.20. Если вам нужно раздать интернет в небольшом офисе, то не обязательно сразу покупать Forefront TMG с Windows Server 2008. Стоит подумать, возможно для этих задач хватит функционала бесплатного IPCop?
Задумка результата банальна — на один сетевой адаптер приходит интернет, с другого сетевого адаптера он раздается пользователям локальной сети c некоторыми ограничениями + можно использовать ещё один сетевой адаптер для раздачи интернета по WiFi. В некоторых организациях ради безопасности, а также оптимизации рабочего времени сотрудников вводят определенные ограничения на доступ в интернет. Например: блокируют доступ к определенным доменам, вводят квоты на использование интернет в месяц, в неделю, или в день… Так вот, что я выяснил в результате теста — IPCop запросто справляется с этим и многим другим! :) Сразу отмечу, что не ставил перед собой цели написать красивый обзор, а скорее полную пошаговую инструкцию в результате которой получаем готовый рабочий продукт. В свое время мне очень не хватало именно простой пошаговой инструкции. Ох и хлебнул я тогда ночного веселья, когда хоть что-то вменяемое было только на английском, да немецком. :) Итак, мы начинаем - запаситесь терпением.
Системные требования гласят, что для его установки достаточно 386 процессора 32 MB RAM и 300MB свободного места на жестком диске. На мой взгляд, это заниженные требования и для задействования всяких «модных фич» всё-таки лучше использовать машинку пошустрее. Естественно, безопасности ради, интернет-шлюз лучше устанавливать на отдельной машине, но для большей отказоустойчивости я бы рекомендовал установить его в качестве виртуальной машины на уже существующий сервер, чем собирать какое-нибудь древнее железо, которое неизвестно сколько проработает.
Я устанавливаю IPCop на VMware Server — это удобный бесплатный, простой и надежный, как танк сервер виртуализации от VMware, который ставится на уже существующую ОС. Вкратце, для виртуальной машины я создал HDD на 1GB и выделил 512MB RAM, добавил 3 сетевых адаптера (на первый будет приходить интернет, со второго и третьего он будет раздаваться), подмонтировал установочный образ для первой загрузки и запустил виртуальную машину. Далее идет процесс установки, точно такой же, как если бы мы вставили диск с дистрибутивом в отдельный физический сервер.
Окно приветствия предупреждает об уничтожении информации с жесткого диска (в моем случае с виртуального жесткого диска), а также предлагает продолжить, либо запустить тест памяти:
Продолжаю, в Language Selection выбираю английский язык:
Далее следует приветствие, в котором нажимаем ОК и следующий этап запрашивает с какого устройства будет происходить установка IPCop. В данном случае — это CDROM/USB-KEY.
Предупреждение о том, что программа установки сейчас начнет разметку диска (соответственно, вся информация на нем будет утеряна, если она там есть):
Разметка диска и копирование файлов началось, тем самым постепенно приближая нас к более интересным этапам настроек.
Если бы у меня была резервная копия настроек от какого-нибудь предыдущего IPCop, то загрузить её можно было бы здесь. Поскольку резервной копии нет — выбираем Skip.

Небольшое лирическое отступление о сетевых интерфейсах IPCop. Предположим, в нашей системе есть несколько физических сетевых адаптеров — к каждому из них нужно привязать некую логическую роль — сетевой интерфейс. Сетевые интерфейсы в IPCop веселы и разноцветны:
RED — сеть, к которой нет доверия, то бишь — интернет.
GREEN — сеть, в которой пользователи жаждут получить доступ в интернет.
BLUE — отдельная сеть для размещения в ней беспроводных устройств.
ORANGE — сеть DMZ для размещения сервисов с публикаций в интернет.
Позднее мы будем выбирать тип сети на основе этих цветов, а пока обратите внимание, что при выборе модели сетевого адаптера в текущий момент можно выбрать адаптер только для одного интерфейса — GREEN (т.е. привязать к GREEN физический адаптер, который будет смотреть в локальную сеть). Можно сделать это вручную с помощи кнопки Select, но в большинстве случаев автоопределение отрабатыват верно. В частности, виртуальные адаптеры VMware находятся без проблем, поэтому жмем Probe и наслаждаемся. :)

Так выглядит виртуальный сетевой адаптер VWware. Вполне устраивает — снова ОК.
Для свеженайденного адаптера тут же назначаем IP-адрес. Напоминаю — этот адаптер будет смотреть в локальную сеть (т.е. с него мы в дальнейшем будем получать интернет и этот IP прописывать в качестве шлюза на клиентских машинах). В моем случае IP-адрес будет 192.168.0.234.
Пару важных моментов следующего предупреждения нужно знать назубок — доступ к настройкам IPCop с помощью браузера осуществляется по протоколам HTTP и HTTPS, но с нестандартными портами. HTTP — 81, HTTPS — 445 (в следующих версиях IPCop нумерация портов вновь изменена). Например, в моем случае в адресную строку браузера нужно будет ввести: https://192.168.0.234:445
Далее ещё несколько нудных, но необходимых моментов. Выбор раскладки клавиатуры — us. Выбор часового пояса. В моем случае Timezone — Europe/Moscow. Выбор имени хоста. Не мудрствуя лукаво, оставляем ipcop.
Имя домена также можно оставить localdomain.
За неимением ISDN-оборудования, в следующем вопросе выбираем — Disable ISDN.
Теперь, наконец-то, мы получаем доступ к настройкам по своему выбору и приступаем к настройке сети. Текущая конфигурация по умолчанию GREEN (RED is modem/ISDN) не соответствует начальной задумке, поэтому меняем Network configuration type.
Итак, нужная нам конфигурация: 3 сетевых карты — первая смотрит в интернет, вторая — в локальную сеть, третья — для беспроводных устройств. Подходит вариант GREEN + BLUE + RED (локальная+беспроводная+интернет).
Вначале настроек мы привязали одну сетевую карту к GREEN-интерфейсу. С тех пор конфигурация изменилась на GREEN + BLUE + RED и настало время привязать оставшиеся сетевые карты к логическим интерфейсам. В этом нам поможет пункт меню Drivers and card assignments.
Как видно из скриншота BLUE и RED интерфейсы ни к чему не привязаны. Чтобы изменить это — жмем ОК.
Далее программа скажет, что есть два свободных сетевых адаптера которые можно привязать к BLUE и RED. Жмем ОК для одной, ОК для второй и получаем успешное окончание процедуры.
Если после этого ещё раз зайти в пункт меню Drivers and card assignments, то мы увидим, как UNSET изменилось на порядковый номер сетевого адаптера. Значит всё прошло успешно, изменять эту конфигурацию более не нужно — жмем Cancel.
Теперь нужно задать IP-адреса этим интерфейсам. Три выбранных выше интерфейса (GREEN, BLUE и RED) уже ждут нас в следующем пункте меню — Address Settings.
Адрес для GREEN-интерфейса мы уже назначали вначале, поэтому если попытаться изменить его здесь, получим логичное предупреждение о том, что в случае удаленного подключения к нему при смене IP-адреса соединение разорвется и нужно будет соединяться, использую новый IP-адрес. Кроме GREEN-интерфейса, адреса остальных интерфейсов меняются безо всяких предупреждений. Меняем и получаем:
GREEN: 192.168.0.234
BLUE: 192.168.1.234
RED: 192.168.2.234
Далее я указываю адрес своего DNS-сервера провайдера и шлюз через который IPCop будет выходить в интернет. Одного DNS-сервера для эксперимента будет достаточно.
Следующий пункт меню — DHCP server configuraion, позволяет включить и настроить DHCP сервер. В моей конфигурации DHCP не нужен, поэтому просто снимаем звездочку с Enabled и жмем ОК.
Далее потребуется задать пароль для трех учетных записей: root, admin и backup. При вводе пароля поля будут оставаться пустыми, так что не стоит пугаться — просто вводите пароль, нажимайте Enter, вводите пароль повторно, Enter и ОК.
Предварительная настройка завершена. Перезагружаем IPCop, нажав ОК.
Чтобы вновь вернуться к изменениям настроек нужно войти под «root»-ом и набрать команду «setup». Перенастроить можно абсолютно все пункты, что были при первой загрузке.
А теперь вкуснятина — настройка через web-интерфейс. :) Заходим на GREEN-интерфейс по адресу https://192.168.0.234:445. Естественно получаем ошибку сертификата безопасности, но жмем «Продолжить» и попадаем на главную страницу настроек IPCop.
Вначале мне показалось подозрительным, что безо всякого пароля сразу видна главная страница IPCop, однако стоит попробовать что-либо изменить и сразу выскочит окно с требованием пароля. Тут нужно припомнить пароль пользователя admin. Таким образом для изменения настроек непосредственно на машине с IPCop нужен пароль от root, для изменения через web-интерфейс — от admin и для резервного копирования — от backup. Вполне себе продуманная безопасность! Ну или один пароль от всего, если так настроили вначале. ;)
Теперь загрузим несколько полезных, на мой взгляд, дополнений. В принципе, IPCop уже работает и все пользователи подсети GREEN получают интернет, но мы его немного поднакрутим. Итак, встречаем!
URLFilter — будет использован для запрета на посещение некоторых доменов
TCAR (Traffic control and report) — будет использован для выдачи квот пользователям на день, неделю, или месяц
Net-Traffic — будет показывать нам сколько и с какого на какой интерфейс ушло трафика
Addons-Server — странным образом понадобится для установки TCAR :)
Для залития их в IPCop мы будем использовать клиент WinSCP. Сначала откроем ему доступ к IPCop по SSH. В меню System выбираем SSH Access и на открывшейся странице ставим галку напротив SSH Access. Сохраняем это изменение, нажав Save. Обратите внимание, что протокол SSH использует нестандартный порт — 222.
Теперь можно запускать WinSCP и заполнять параметры соединения.
При первой попытке соединения мы получим предупреждения о том, что server host key was not found in the cache. Ничего страшного — жмем Yes. Вначале я хотел описать свои действия в точной последовательности, но статья растет на глазах и описывать, как по несколько раз копировать по файлу в определенные моменты — лишнее. Рассмотрим далее для чего нужен каждый из них, а пока я копирую все аддоны в директорию root на сервере IPCop, а вам советую копировать все, кроме TrafficControlAndReport. Почему не все 4? Потому что установка TCAR будет несколько отличаться, от установки остальны аддонов, но об этом чуть позже.
Теперь заходим непосредственно на сервер IPCop под пользователем root и набираем команду «tar vxzf ipcop-urlfilter-1.9.3.tar.gz»
Набрав команду ls мы видим, что в root появился каталог ipcop-urlfliter. Переходим в каталог установки командой cd ipcop-urlfilter и устанавливаем аддон командой ./install
Возвращаемся к web-интерфейсу. После установки в меню Services появляется пункт URL Filter (если не появился – нажмите F5). Перед настройкой URL Filter нужно включить Web proxy, а также сам URL Filter в меню Service, пункт Proxy. Включаем и делаем прозрачным прокси на используемых клиентами интерфейсах, внизу ставим галочку напротив URL filter Enabled и нажимаем Save.
Теперь можно заняться настройкой URL Filter. Мы можем протестировать его работу, запретив доступ к ненавистному всеми работодателями домену odnoklassniki.ru. Для этого вписываем его в Custom blacklist и под ним ставим галочку Enable custom blacklist, чтобы включить этот самый лист.
Сохраняем конфигурацию, кликнув внизу на кнопку Save and restart
Теперь можно пробуем открыть в браузере odnoklassniki.ru – запрет работает! :)
Если такая конфигурация соответствует поставленной задачи, то можно на этом и остановится, если же нужно ещё лимитировать трафик по пользователям, то продолжаем. В этом нам поможет аддон Traffic Control and Report (TCAR). При копировании аддонов на IPCop — один из них не был скопирован и теперь я объясню почему. При попытке его установить обнаружился небольшой непонятный мне нюанс – вручную устанавливаться, как URL Filter он ни в какую не желает:
Тут-то и выходит на арену Addon-Server, который мы копировали ранее. Распаковываем из консоли командой «tar vxzf addons-2.3-CLI-b2.tar.gz –C /»
Затем заходим в каталог addons командой «cd /addons» и устанавливаем Addon Server командой «./addoncfg -i»
Теперь заходим в веб-интерфейс. Если он уже был открыт, то достаточно нажать F5. У меня ушло некоторое время на поиск загадочного местонахождения этого аддона и чтобы сэкономить вам время даю подсказку – прямо на щите пингвина! Теперь в меню Addons выбираем пункт Addons.
В самом низу страницы находим Install new addon, жмем Обзор, выбираем свежескачанный файлик «TrafficControlAndReport-1.1-GUI-b2.tar.gz» и жмем Upload.
Вот так без консольных плясок теперь можно загружать плагины прямо через браузер! В поле Installed addons мы можем видеть подтверждение моих слов, а также можем почитать про другие доступные аддоны в поле Aviable Addons.
Возникает вопрос: «Зачем же тогда нужна была эта консольная пляска при установке аддона URL Filter?» А потому что URL Filter вместо того, чтобы поставиться через Addon Server заявил бы нам:
Приступим к настройке свежеустановленного Traffic Control & Report. Найти его можно в меню Services.
Первым делом ставим галочку напротив Enabled, чтобы включить аддон. Правее можно выбрать какие интерфейсы он должен контролировать – в моем случае это GREEN и BLUE интерфейсы. Далее указать email админа и нажать Save. Стоит отметить, что аддон не включится, пока не узнает email админа. В будущем, на email админа он планирует засылать отчеты по трафику и, если они интересны, то нужно указать реальный email — полезная штука эти отчеты.

Поскольку я подключен к зеленому интерфейсу, после включения данного аддона интернет у меня тут же пропал. И это хорошо! ибо означает, что аддон работает – исправно зарубает всех клиентов подключенных к контролируемым им интерфейсам. :) Итак, добавляю первого клиента – себя. Я использую адрес из GREEN подсети – 192.168.0.5. По нему и будем осуществлять контроль. В поле add new user вносим данные нового пользователя. Необходимо указать контроль по IP-адресу, интерфейс, email пользователя (на него будет высылаться отчет по трафику самому пользователю), цену за мегабайт, валюту, максимальный входящий трафик. Галочка, поставленная напротив Traffic block condition, включает параметры блокировки. Соответственно без этой галочки, но с остальными заполненными полями пользователь просто получит безлимитный интернет. Если что-то из вышеописанного не указано, при нажатии на кнопку Add получаем ошибку, а все набранные непосильным трудом параметры улетучиваются в тар-тарары. Вот что получилось у меня:

После нажатия Add наверху появляется предупреждение о том, что нужно нажать Accept changes для того, чтобы изменения вступили в силу. Предупредили – нажимаем
И.. получаем интернет! Теоретически, согласно нашим параметрам — ровно 10 мегабайт в день, после чего он снова пропадает до следующего дня. Однако на практике, имеет место быть задержка в срабатывании механизма блокировки. Так, после первого тестирования я успел выкачать на 20 мегабайт больше, после второго – на 15. В принципе, не сильно критично – небольшой бонус пользователям. :) На этот счет автор аддона утверждает, что небольшая погрешность, обусловленная временем отклика блокирующей подсистемы, может составлять до 5 минут с момента перелимита до момента блокировки.
Попробуем таким же образом создать ещё 2 правила. Добавим пользователя user1 на GREEN-интерфейс с лимитом 100 Mb в неделю и пользователя user2 на BLUE-интерфейс с лимитом 1000 Mb в месяц. Не гоже администратору выделять всего 10 Mb в день, поэтому изменим существующее правило, сняв галочку с Traffic block condition, обеспечив таким образом ему (то есть мне) безлимитный тариф. ;) В нижней части экрана можно узреть результат трудов. Вся интересующая информация компактно расположена в поле User list. Access, report and block conditions. На мой взгляд – очень удобно:
Да и не забываем нажать Accept Changes в верхней части экрана, чтобы изменения вступили в силу!
Отмечу несколько ложек дегтя в работе этого плагина:
1. Контроль по MAC-адресу у меня ну никак не удалось завести. Как бы я не прописывал физический адрес (большими буквами, маленькими буквами, с дефисами, без дефисов) – правило просто отказывалось добавляться. Поступила инфа, что добавляется через двоеточие, но поскольку я это не проверил и не проверил работает ли оно после добавления — пока оставлю этот пункт здесь.
2. Иногда после манипуляций с правкой существующего правила, или его удаления – интернет на клиенте продолжает работать. Поэтому после изменений правил, для пущей надежности, лучше всё-таки перезагрузить IPCop. Сделать это можно через web-интерфейс в меню System, пункт Shutdown (к слову там же можно настроить даже перезагрузку по расписанию по определенным дням в определенное время).
3. Нет возможности группового редактирования правил. Если отметить сразу несколько правил и нажать Edit, то одно из отмеченных откроется, а остальные просто исчезнут и их нужно будет создавать заново.
Ещё один приятный плагин – Net-Traffic. Данный плагин отображает по дням входящий и исходящий трафик со всех интерфейсов. Мелочь, а приятно. Это не авторизированный аддон и потому через Addon Server его не поставить. Повторенье – мать учения! Распаковываем (tar zxvf имя_файла) и устанавливаем (./setup) его через консоль:
Установка прошла успешно:
И результатом мы можем начинать наслаждаться уже с домашней страницы IPCop. При подключении к IPCop через web-интерфейс можно сразу же лицезреть общую статистику входящего/исходящего трафика:
Более подробную статистику можно увидеть на странице самого плагина в меню Status пункт Net-Traffic:

Также в меню Status среди стандартных функций можно увидеть сведения о системе, загрузку процессора, статус служб, график загруженности сетевых интерфейсов.
Разумеется, надстроек для него гораздо больше четырех, но не со всеми эксперименты заканчиваются удачно, поэтому если вам нужно срочно настроить IPCop в рабочей сети, то рекомендую воспользоваться этой пошаговой статьей, ибо эта конфигурация проверена — работает. Экспериментировать с другими надстройками настоятельно рекомендую в тестовой лаборатории, ибо нередки ситуации, когда из-за какого-нибудь нового аддона, или аддона поставленного не в той последовательности запросто падает что-нибудь другое — вдруг, внезапно и непонятно из-за чего.
Существует более новая версия IPCop — 1.9.16, которая, к сожалению, отказалась работать на виртуальной машине, мотивируя это отсутствием жесткого диска, поэтому пришлось рассмотреть более раннюю версию. Тем не менее, 1.9.16 успешно работает на железе и в ней также есть свои вкусности. Помимо более готического интерфейса в ней сразу встроен функционал Net-Traffic — находится в меню Status -> Traffic Accounting, правила межсетевого экрана строятся на объектах (т.е. сначала создаются и описываются объекты, потом создаются правила с участием этих объектов — удобно) ну и ещё всякая всячина. (Позже выяснилось, что для установки VM под VMware нужно создавать IDE диск, а не SCSI — тогда и более новые версии устанавливаются). Для тех, кто захочет попробовать сразу минус — нет совместимости со многими старыми надстройками, в частности, рассмотренными в этой статье. Да и обратите внимания на номера портов доступа к web-интерфейсу — они отличаются от версии 1.4.20 (например, HTTPS — 8443).
В заключение хочу отметить, что IPCop — интересный и достойный продукт для малого офиса. Продукт из серии — один раз настроил и забыл. Вот я один раз поставил 1.9.16 несколько месяцев назад и час вспоминал какой у него порт доступа по HTTPS, чтобы посмотреть и написать несколько отличий от 1.4.20 версии. :)