Установка и настройка wi fi хотспота с использованием chillispot freeradius и easyhotspot
Необходимость создать виртуальный хотспот на ноутбуке может возникнуть по разным причинам. Кому-то важно расшарить доступ в инет через 3G- или WiMax-модем для других беспроводных устройств. А кто-то хочет сделать фейковую точку доступа (Rogue AP) и, завлекая клиентов, снифать их трафик. Но мало кто знает, что возможность для этого встроена в саму винду!
С появлением у сотовых операторов покрытия 3G-сети я все чаще стал использовать мобильный интернет. Если работать через USB-модем, то нередко удается добиться довольно сносного коннекта. Тем более, что такие девайсы стоят очень дешево и продаются в комплекте с весьма вменяемыми тарифами, которые не разорят в первый же день использования. Одной из проблем, на которые я заморочился после покупки 3G-модема, стала организация из ноутбука хотспота, чтобы по Wi-Fi можно было раздавать мобильный интернет для других беспроводных устройств.
Если посмотреть подборку софта на нашем диске, то легко найдутся сразу несколько программ, позволяющих быстро поднять софтверную точку доступа на основе Windows-системы. Меня всегда удивляло их ограничение — утилиты работают только на Windows 7 и Windows 2008 Server R2. Объяснение оказалось очень простым. Дело в том, что в этих системах впервые была реализована фича Wireless Hosted Network (в русском переводе — размещенная сеть). Теперь, чтобы сделать виртуальную точку доступа, не нужно ничего, кроме стандартных инструментов винды.
Виртуальный хотспот в других ОС
Как работает Captive Portal
Все пользователи, которые хотят подключиться к публичной Wi-Fi-сети и выйти в интернет, вначале проходят через шлюз, который представляет собой комп с несколькими сетевыми интерфейсами. Шлюз действует как маршрутизатор и брандмауэр, а для возможности авторизации пользователя при помощи браузера он содержит еще и веб-сервер. Для аутентификации клиентов может использоваться внутренняя база данных или внешний RADIUS-сервер. Все пакеты от «неавторизованных» пользователей помечаются на брандмауэре, и посетитель переправляется на специальную веб-страницу (Captive Portal), где он может ознакомиться с условиями подключения и ввести логин/пароль (либо код доступа). После аутентификации пользователя производится идентификация компьютера, за которым он работает, его МАС- и IP-адреса заносятся в белый список брандмауэра. В самом простом случае пользователь может вообще не проходить аутентификацию, Captive Portal автоматически получает IP- и MAC-адреса компьютера, которые сразу подставляются в правилах брандмауэра. В последующем все пакеты проходят через маршрутизатор без ограничений. Дополнительно, в зависимости от роли, могут устанавливаться ограничения по скорости, времени, трафику или посещаемым ресурсам.
В настоящее время существует несколько проектов, позволяющих быстро развернуть Captive Portal: Wifidog, PacketFence, ChilliSpot и веб-интерфейс EasyHotspot, KATTIVE, PepperSpot и jkaptive. Выбор конкретного решения зависит от необходимых функций и поддерживаемых ОС. Например, ChilliSpot официально поддерживает несколько дистрибутивов Linux, FreeBSD, OpenBSD и OpenWRT. К слову, это единственное приложение, пакет которого доступен в официальном репозитории Ubuntu, и установить его просто:
Кроме этого, ряд дистрибутивов-роутеров предлагает возможность быстрого создания Captive Portal буквально парой щелчков мышки: Untangle, pfSense, Zeroshell, m0n0wall, ClearOS и Zentyal. Но при желании или если невозможно изменить текущую конфигурацию сети нужные скрипты легко создать самостоятельно. Этим мы и займемся.
4 кейса использования виртуального хотспота
1. Подготовка
- Две сетевые платы — одна из которых «смотрит» в интернет, а вторая — во внутреннюю подсеть. Примем как исходное условие, что плата, «смотрящая» в интернет (WAN), в нашем Linux имеет обозначение eth0, а та, которая обращена во внутреннюю подсеть (LAN) — eth1. Номера эти тоже запомним — это также потребуется в процессе настройке.
- Для сетевой платы, посредством которой компьютер подключен в интернет (WAN/eth0) ДОЛЖНО БЫТЬ НАСТРОЕНО ВСЁ! То есть, настройки его адреса, шлюза, маски подсети и пр. либо же работающий DHCP-клиент, одним словом, этот компьютер должен «нормально ходить в интернет». Для сетевой платы, к которой подключаются пользователи (LAN/eth1), в Linux НИЧЕГО НАСТРАИВАТЬ НЕ НУЖНО. Linux должен ее только лишь определить и «подставить» соответствующий драйвер. Chillispot сам «поднимет» на указанном интерфейсе все необходимое для подключения пользователей — DHCP-сервер и т.д и т.п.
- В системе должен присутствовать модуль TUN-драйвера. Как утверждают, модуль этот присутствует в ядре Linux уже достаточно давно (не помню, начиная с какой версии), но по умолчанию он не загружается автоматически при старте системы. По-этому, его предлагают включать в список модулей автоматически загружаемых при запуске системы (файл /etc/modules). Но, просмотрев скрипт запуска Chillispot, я увидел, что при его выполнении обязятельно запускается и модуль TUN-драйвера. По этому никаких дополнительных действий предпринимать я не стал. Как проверить, есть ли драйвер в системе? В консоли от имени root-а запускаем комманду (выделена синим) и видим ответ (выделен оранжевым цветом):
Естественно, персональные данные (выделенные красным) в команду Вы подставляете свои собственные. Особое внимание нужно обратить на имя сервера, которое Вы впишите в команду — оно должно быть в точности таким же, как ответ Вашего компьютера на команду «hostname -f«. Также обратите внимание на ту часть команды — «/etc/ssl/ca/«, которая обозначает путь, куда будут записаны сформированные сертификат и ключ (в команде присутствует дважды. ). Дополнительно почитать про сертификаты можно еще по следующим адресам:
3. Конфигурирование
Вся конфигурация Chillispot описывается одним единственным файлом — /etc/chilli.conf. Каждый параметр в нем прокомментрирован, единственное «неудобство» — «как всегда», на английском. Кроме того, можно в консоли запустить команду
, которая выведет подсказку с параметрами. Следует учесть (и это сказано в man к chilli, но как-то не явно), что все те параметры, которые выводит подсказка , могут быть прописаны в файл конфигурации /etc/chilli.conf, единственное — писать их нужно без двойного дефиса («—»). Перейдем непосредственно к файлу конфигурации. Во-первых, обратите внимание на несколько фраз из комментариев к параметрам.
- Фраза «For most instalation you need to modify this tag» обозначает, что данный параметр скорее всего Вам придется изменить с учетом потребностей и параметров Вашей инсталяции.
- Фраза «Normally you do not need to uncomment this tag» обозначает, что если Вы не хотите «наконфигурировать» что-то совсем нетрадиционное и экстравагантное, не надо раскомментировать строку с данным параметром. Это не означает, что параметр не будет установлен. Будет использовано его значение «по-умолчанию», которое обычно устраивает почти все 100% пользователей.
- Фраза «Do not uncomment this tag unless you are an experienced user» рекомендует не раскомментировать данный параметр, если Вы не являетесь опытным пользователем. (Практически, как старые таблички «Не влезай, убьет!»).
Теперь о самих параметрах. Все их я описывать не буду, опишу лишь те, которые необходимо было изменить. (Параметры выделены жирным, их значения — красным).
radiussecret testing123 — пароль, который Chillispot использует при обмене с RADIUS-сервером. Данный пароль позволяет Вам быть уверенным в том, что никто другой не влезет в Ваш RADIUS-сервер (естественно, если Вы изменили пароль на свой собственный, а не оставили тот, что указан тут и который является паролем по умолчанию используемым на всех инсталляциях «с нуля»). Что следует учесть при смене пароля. Как и любой пароль, его «должны знать двое». То есть, если Вы меняете этот пароль на свой собственный тут (в настройках Chillispot), то его нужно сменить и в настройках RADIUS-сервера! У RADIUS-сервера настройка данного параметра (в простейшем случае) находится в файле «/etc/raddb/clients.conf«. Комментариями там все это «разбавлено прилично», но если их выкинуть, то выглядеть все это будет так:
Как видим, присутствующий в списке параметр «secret» имеет то же самое значение — «testing123». Таким образом, меняя пароль в настройках Chillispot, необходимо изменить его и в настройках RADIUS-сервера в файле /etc/raddb/clients.conf. Если же Ваш RADIUS-сервер хранит настройки клиентов в SQL-базе, то менять нужно там. Как это сделать — решаете самостоятельно.
Возвращаемся к настройкам Chillispot.
dhcpif eth1 — номер (идентификатор) сетевой платы, к которой подключены пользователи («сторона LAN»). Ее номер мы указывали в самом начале в условиях, помните? Для данной платы в Linux НИЧЕГО НАСТРАИВАТЬ НЕ НУЖНО. Linux должен ее только лишь определить и «подставить» соответствующий драйвер. Chillispot сам «поднимет» на указанном интерфейсе все необходимое для подключения пользователей — DHCP-сервер и пр. Что еще важно учесть — между Chillispot и пользователями (в случае необходимости) должно устанавливаться только т.н. «dumb»-оборудование, т.е., простые коммутаторы (switch), хабы (hub) или точки доступа (AP). Использовать функции NAT, masquarade, route, firewall между Chillispot (выходом eth1) и пользователями нельзя.
Когда неавторизованный (еще) пользователь из внутренней сети (LAN) пытается получить доступ к интернету (WAN), Chillispot перехватывает его запрос и пользователь перенаправляется на страницу авторизации по адресу, как указано в параметре uamserver (см. выше). В «выпрыгнувшем» окошке пользователю предлагается ввести логин и пароль. Полученные значения логина и пароля Chillispot отправляет на проверку серверу RADIUS. Если они верны (RADIUS-сервер отвечает утвердительно), то Chillispot предоставляет пользователю полный доступ в интернет. Пользователь перенаправляется на запрошенный им адрес. Вот так вкратце работает Chillispot.
uamsecret ht2eb8ej6s4et3rg1ulp — пароль, который Chillispot использует в своем обмене данными со страницей авторизаци (hotspotlogin.cgi). По умолчанию эта строка закоментирована. Пусть этот факт не вводит Вас в заблуждение — это не значит, что пароль не используется! Это значит, что используется его значение по умолчанию! Почему я так заостряю на этом Ваше внимание? Помните, я написал ранее, что файл hotspotlogin.cgi почти готов к использованию? Дело в том, что в нем использование этого самого пароля по умолчанию ОТКЛЮЧЕНО! Таким образом, чтобы получить РАБОТАЮЩУЮ страницу авторизации, ее (т.е. файл hotspotlogin.cgi) нужно открыть в любом нравящемся Вам текстовом редакторе, найти (практически в самом начале) строки:
и раскомментировать их! Первая из строк задает тот самый пароль (который нужно указать, желательно все-таки свой собственный а не «умолчательный», и, естественно, одинаковый, для обоих конфигурационных файлов — chill.conf и hotspotlogin.cgi). Вторая строка включает использование этого пароля скриптом hotspotlogin.cgi. Если Вы забудете это сделать, то окно авторизации будет все время выдавать ошибку…
Последние два параметра я добавил в файл chill.conf сам. На этой странице для того, чтобы иметь возможность оключать пользователя согласно сецификации RADIUS, рекомендуется запускать Chillispot с параметрами –coaport 3799 и –coanoipcheck. Но, как сказано в man к chilli эти параметры можно указать и в файле конфигурации chill.conf. Что я и сделал:
coaport 3799
coanoipcheck
Настраиваем Captive Portal в Zentyal
Если под Captive Portal выделяется новый сервер и все настройки нужно произвести в короткое время, то лучше обратиться к специализированным решениям, где все необходимое делается буквально парой нажатий клавиш. Яркий пример — серверный дистрибутив Zentyal, ориентированный на малые и средние корпоративные сети. Он может выступать в любой из четырех ролей сетевого шлюза, Office Server, сервера коммуникаций и инфраструктуры. Для поддержки Captive Portal следует во время установки активировать одноименный модуль (активируется роль Gateway и все сопутствующие пакеты). Затем в мастере первичной настройки правильно указываем на LAN-интерфейс. Создаем учетные записи пользователей и группы. Далее в интерфейсе настройки Zentyal переходим в меню Captive Portal и отмечаем в поле «Captive-интерфейсы» нужный, выбираем группу, участники которой будут иметь доступ, и указываем порт, на который будут перенаправляться пользователи. Вот и все. Теперь любой, кто желает подключиться к сети, вводит свои учетные данные, если аутентификация проходит успешно, появляется всплывающее окно, которое нужно держать открытым. Чтобы отключиться, достаточно нажать кнопку «Выйти» или просто закрыть окно браузера.
Если имеем шлюз, построенный на Ubuntu, то для установки связанных с Zentyal приложений проще использовать специальный репозиторий:
После чего команда sudo apt-cache search zentyal покажет более 20 модулей Zentyal.
Выбираем пакеты для установки Captive Portal в Zentyal
В принципе, на этот момент ничего особенного нет. Суть Captive Portal заключается в добавлении нужных правил на лету. Для этого понадобится скрипт, который будет получать IP/MAC и передавать их пакетному фильтру. Полностью HTML-страницу приводить здесь нет смысла, поэтому ограничимся ключевыми моментами с нужным функционалом. На странице, куда перенаправляется пользователь, должен быть следующий код, получающий IP- и MAC-адреса:
В Zentyal настройки Captive Portal производятся простой установкой значений
Другие статьи в выпуске:
При необходимости добавляем поле для проверки логина и пароля, нужные примеры легко найти в интернете. Далее в этом же скрипте подставляем полученные данные в правила iptables и DansGuardian, после чего перезапускаем последний:
После подключения клиента запись в /etc/dansguardian/lists/authplugins/ipgroups будет выглядеть так:
Параметр filter1 указывает на группу фильтров, так мы можем устанавливать специфические настройки для всех пользователей, подключающихся посредством Captive Portal. При необходимости так же легко в DansGuardian подставляется и логин пользователя, для реализации индивидуальных правил. Не забываем разрешить фильтр IP в dansguardian.conf:
Так как используемые системные команды может выполнять только root, немного подправим sudoers, чтобы их мог запускать и веб-сервер:
Новые правила iptables, появляющиеся в Zentyal после активации Captive Portal
Вот мы и реализовали простейший Captive Portal. Если хотспот будет работать сутками, следует побеспокоиться, чтобы через некоторое время таблица очищалась. Здесь можно придумать несколько вариантов. Например, параллельно создавать задание для cron, которое будет срабатывать через определенное время, убирая правило. Другой вариант — прописывать данные сессии в отдельный файл, а затем при помощи cron или при каждом вызове PHP-скрипта анализировать время создания файла и удалять устаревшие записи. В Zentyal, например, после регистрации пользователя открывается отдельное окно, а в каталоге /var/lib/zentyal-captiveportal/sessions создается файл, содержащий все данные сессии (IP- и MAC-адрес). Как только пользователь закрывает Popup, вся информация и правила очищаются.
Интерфейс настройки Captive Portal в pfSense
3. Поднять Rogue AP и снифать чужой трафик.
Мы уже не раз писали о том, как плохие парни могут поднять фейковую точку доступа и снифать весь трафик подключившихся к ней клиентов. Любой запущенный снифер вроде Wireshark, 0x4553-Intercepter или Network Miner отловит массу интересного. Для усиления эффекта поднимать хотспот лучше с помощью USB-донгла с внешней антенной, чтобы у точки доступа был более высокий (а значит, более выгодный для клиентов) уровень сигнала.
2. Расширить диапазон действия беспроводной сети.
Если на границе действия беспроводной сети расположить ноутбуки с запущенной программной точкой доступа, то они легко смогут выполнять роль ретрансляторов. Особенно хорошо это будет работать, если на виртуальных адаптерах склонировать параметры родительской Wi-Fi сети (в программе Connectify есть даже опция "Clone Wi-Fi Settings"). Тогда все сторонние устройства смогут переподключаться к "ретрансляторам" автоматически.
Как настроить?
Перед тем как приступать к примеру, еще раз повторю: все, что необходимо для использования Wireless Hosted Network, — это ноутбук с адаптером, драйвера которого поддерживают функцию Virtual WiFi. Последнее очень важно: на моем стареньком Asus с интегрированным Intel 3945ABG виртуализация WLAN-адаптера не заработала даже с последними драйверами. Хотя обновить драйверы беспроводного модуля — это в любом случае первое, что нужно сделать.
Далее все проще простого.
- Открываем командную строку с правами администратора и через netsh.exe задаем настройки для нашей виртуальной беспроводной сети:
netsh wlan set hostednetwork mode=allow ssid="Virtual Hostpot" key="pass pass pass" keyUsage=persistent
Здесь "Virtual Hostpot" — SSID сети, "pass pass pass" — постоянный (используется режим "persistent") пароль для подключения. Успешным выполнением команды можно считать появление в "Диспетчере устройств" нового девайса "Адаптер мини-порта виртуального WiFi Microsoft" в группе "Сетевые адаптеры".
Не могу не сказать здесь пару слов о безопасности. Технология требует обязательного использования шифрования между нашей SoftAP и клиентами, которые будут подключены. По этой причине для последних обязательным требованием является поддержка шифрования WPA2-PSK/AES (это ограничение можно обойти с помощью сторонних утилит, но об этом ниже).
- Если перейти сейчас в "Панель управления -> Центр управления сетями и общим доступом -> Изменение параметров адаптера", то мы увидим новое соединение со статусом "Нет подключения". Все правильно, мы создали сеть, но еще не запустили ее. Устраняем это недоразумение:
netsh wlan start hostednetwork
- Все, с этого момента наша виртуальная точка доступа работает, а другие беспроводные устройства могут к ней подключиться. От такого подключения все-таки мало толку, пока мы не расшарим через него имеющийся в распоряжении интернет-канал. Для этого ищем в "Панели управления" соединение, через которое мы выходим в инет, открываем его свойства, переходим на вкладку "Доступ" и включаем опцию "Разрешить другим пользователям сети использовать подключение к интернету данного компьютера".
В выпадающем списке необходимо выбрать сеть, для клиентов которой мы хотим расшарить инет, — соответственно, указываем здесь созданную нами с помощью Wireless Hosted Network беспроводную сеть. Такая весьма простая настройка включит встроенную в винду функцию Internet Connection Sharing (ICS).
Теперь всем подключаемым клиентам автоматически будет выдаваться IP-адрес (с помощью DHCP-сервера), а их выход в Сеть будет осуществляться через NAT (Network address translation).
Пробуем подключить к нашему хотспоту смартфон и другой ноутбук — вуаля, все работает!
Как упростить жизнь?
Итак, чтобы поднять полноценный хотспот, нам понадобилось всего несколько команд в консоли и пара кликов мыши. Но спешу огорчить: сразу после перезагрузки или выхода из системы (даже в режим сна) все операции придется проделывать заново. Это неудобно и утомительно. К счастью, нашлось немало разработчиков, которые прочитали в MSDN статью о Wireless Hosted Network и реализовали утилиты для более простой и понятной настройки программного хотспота.
Я рекомендую две: Virtual Router и Connectify. Обе бесплатные и позволяют через удобный GUI-интерфейс выбрать подключение, которое нужно расшарить с помощью программной точки доступа, а затем в два клика поднять хотспот. При этом не нужно каждый раз вводить SSID и ключ сети: все будет работать даже после перезагрузки.
Virtual Router предоставляет минимум функционала и давно не развивается, зато распространяется с открытыми исходниками (хороший пример использования соответствующих API-вызовов системы). По сути, это графическая версия команд netsh.
Утилита Connectify — намного более навороченная. Для реализации дополнительных фишек, не предусмотренных стандартными возможностями винды, ей даже приходится устанавливать в систему виртуальные устройства и драйвера. И это дает плоды. К примеру, можно не привязывать к жестко зашитому Wireless Hosted Network типу шифрования WPA2-PSK/AES: если есть желание, создавай хоть открытый хотспот. Это особенно важно, чтобы клонировать параметры уже имеющейся беспроводной сети (например, чтобы расширить ее диапазон действия или поднять фейковую точку доступа). Помимо этого, Connectify имеет встроенный UPnP-сервер и позволяет расшарить VPN-соединение (в том числе OpenVPN). С такими-то возможностями твой виртуальный хотспот точно найдет применение.
Но чтобы было проще понять, в каких ситуациях он необходим, мы подготовили для тебя подборку наиболее популярных кейсов. Ты можешь прочитать о них во врезке.
К одной из моих заметок прислали комментарий — «Да это же очевидно!». Абсолютно согласен! В блоге своем я пишу что-либо только после того, как уже разобрался с этим, и для меня то, что я написал тут тоже стало уже «очевидным». Но, до этого — зачастую приходится основательно перелопатить интернет, форумы, блоги и т.п. Вот возьмем, к примеру, тот же Chillispot 🙂 …
5. И вот теперь запускаем!
Не знаю почему, но Mandriva при установке Chillispot не запускает его «в работу» сразу же после установки, как делает это со многими другими сервисами (например, с тем-же веб-сервером apache). Более того, хотя скрипт запуска и присутствует в папке /etc/init.d/, по умолчанию он не запускается во время загрузки. То же самое и с нашим скриптом правил файервола. По этому, их нужно указать как сервисы (службы), стартующие «автоматом». Сделать это можно, например, в Mandriva Control Center (Центр управления Mandriva) — закладка «Система», пункт «Включение и отключение системных сервисов», поставить птичку в поле «При запуске». Лично я предпочел для этого воспользоваться своим любимым Webmin-ом…
Ну что ж, время пришло, запускаем Chillispot:
Ну вот и все. Надеюсь, ничего не забыл …
Также, про настройку Chillispot можно прочитать по следующим ссылкам:
ВНИМАНИЕ! Предлагается вариант приобретения биллинговой программы Easyhotspot (русифицированный и модернизированный вариант) и подробного руководства по установке хотспота. Подробности здесь.
PS. Учтите, что это достаточно старая заметка! В те давние времена я разбирался с Chillispot, преследуя определенную цель, а именно — создание биллинговой системы для управления хотспотами на базе модернизированной версии программы Easyhotspot. С тех пор много воды утекло, и со временем указанный биллинг претерпел немало изменений, включая в том числе и такие (касающиеся именно описываемой тут процедуры установки контролера доступа Chillispot):
День добрый.
Появилась необходимость в создании HotSpot точки. Как человек, немного знакомый с UNIX, я решил искать софтверные решения. Тем более что покупать специальное железо для этого дела не было возможности. Да и требования были весьма минимальными. А именно организовать раздачу WiFi так, как это сделано, к примеру, в сети McDonnalds. Т.е. пользователь пришел, подключился к сети и спокойной получил свои 30 минут интернета. Либо 15 мегабайт трафика.
Изначально пытался приспособить под это дело ChilliSpot, FreeRadius, EasyHotSpot и прочие решения. У меня это так и не завелось. По этому я продолжил поиски и наткнулся на статью HotSpot у «lissyara». И понял, что это именно то, что надо. Немного подправив скрипты я получил именно то, что мне надо практически штатными средствами FreeBSD.
Я использовал FreeBSD 8.2 и пакеты, установленные из портов, но эта схема будет работать практически на любой другой системе, так как она не использует никаких специфических программ.
И так. Есть компьютер с 2-мя сетевыми картами, есть WiFi точка доступа. Никаких иных требований к железу нет.
На компьютере установлена FreeBSD, apache, PHP, MySQL, ISC-dhcpd.
Во первых вам надо пересобрать ядро, для включения НАТ и пайпов для ограничения скорости.
Как собрать ядро и установить его можно найти в гугле. Тут я приведу параметры, с которыми я собирал ядро:
options IPFIREWALL
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_FORWARD
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=50
options IPFIREWALL_NAT
options LIBALIAS
options ROUTETABLES=2
options DUMMYNET
options HZ="1000"
Далее, после сборки ядра надо установить Apache, PHP и MySQL. Информации по этой теме тоже полно в интернете, по этому тут этот процесс я расписывать не буду.
Прописываем настройки в rc.conf:
Если вы прочитали перед этим статью, на которую я ссылался вначале, то вас ясен принцип работы этой схемы. Если нет — то объясню вкратце. И так, клиент подключаясь к Wi-Fi точке получает по DHCP ip-адрес. Затем, когда он пытается открыть любой сайт его кидает на страницу с приветствием. В вышеупомянутой статье на той странице запрашивается логин и пароль. Я убрал авторизацию, по этому по сути на странице только одна кнопка — «Получить доступ». Реализуется это следующим образом. В правилах файрвола прописано перенаправлять запросы на свой веб-сервер. После посещения страницы и клика по единственной кнопке в правила файрвола добавляется новое, которое разрешает пользователю с указанный ИП получить доступ к Интернету. Каждую минуту демон cron вызывает скрипт, который смотрит сколько времени пользователь в сети и сколько трафика он израсходовал. И в случае превышения одного или другого он удаляет разрешающее правило и при следующем запросе этот пользователь снова будет переадресован на стартовую страницу.
Вот в принципе и вся суть этой схемы. И так, продолжим реализацию.
Далее нам надо настроить файрвол.
Сразу хочу сказать, что тут только основные настройки. Если вы настраиваете машину по SSH, то вам надо добавить правило, которое разрешит вам доступ к этой машине.
Разрешающие правила будут с номер 200 по 600, по этому правило переадресации у нас будет идти под номером 1000.
/etc/firewall.sh:
Теперь остается только создать таблицу в базе данных, в которой будут храниться данные о текущих сессиях, настроить DHCP-server и создать необходимые PHP-скрипты, которые сделают всю основную работу.
Таблица MySQL совершенно простая. Номер правила, время начала сессии.
Далее все файлы, описаные далее должны лежать в директории сайта.
Начнем со страницы настроек config.php:
Далее основная страница, на которую будут переадресовываться пользователи — index.php:
Эта страница определяет, какой адрес был введен изначально, что бы потом переадресовать на него. Это, а так-же добавления правила файрвола делает скрипт open.php:
После этих манипуляций у пользователя появляется полный доступ к сети интернет. Файрвол не блокирует ничего, по этому будут работать и аська, и агент и все остальное. Но с другой стороны это наверно тоже не правильно и надо будет потом настроить файрвол и оставить только нужные порты. Но это уже в зависимости от потребности.
Теперь осталось только отключить пользователей при превышении одного из лимитов и все.
Изначально планировалось трафик считать при помощи trafd, но как оказалось, чем стрелять из пушки по воробьям, лучше работать с тем, что и так уже считает трафик. А именно IPFW. При вызове ipfw show в 3 столбце идет количество байт, которые прошли через файрвол. А так как у нас для каждого пользователя будет отдельное правило, то по номеру правила можно легко подсчитать, сколько этот пользователь трафика использовал.
Это у нас будет делать скрипт cron.php:
Теперь добавляем в crontab запить, и раз в минуту наш скрипт будет проверять, не превысил ли кто лимит:
*/1 * * * * /usr/local/bin/php /var/www/data/cron.php
На этом кажется все.
Естественно пути, названия сетевых карт и некоторые мелочи могут отличаться,
Сразу поясню, что мы должны иметь в начале и что по итогу должно получиться в конце.
Итак, имеем:
— обычный маршрутизатор с dd-wrt на борту к примеру D-link DIR-300 как наиболее дешевый вариант либо что-то другое, это не важно. Маршрутизатор соответственно поддерживает Wi-fi и имеет доступ в интернет.
— компьютер, с установленной Unix подобной ОС. На нем мы расположим сервер авторизации. В статье описана установка на FreeBSD, но это тоже не важно, можете использовать как Debian, так и Ubuntu, как наиболее распространенные, либо что-то другое. Процесс настройки будет отличаться незначительно.
Что будем иметь по итогу:
(Подобная схема к примеру на текущий момент реализована в сети ресторанов Макдональдс)
Все это дело организовываем с помощью:
FreeRadius — сервер авторизации
chillispot — есть на маршрутизаторе с dd-wrt
Для управления поднимем простенький web-сервер, mysql, phpmyadmin.
1 этап настройка маршрутизатора с dd-wrt
Открываем через web-интерфейс наш маршрутизатор. Настраиваем от настроек по умолчанию, поэтому вводим в браузере 192.168.1.1 и попадаем в меню.
Далее будут приводиться мои настройки сети, делайте также, либо подставляйте по примеру свои значения.
1. Вкладка Administration, в поля Router username, router password и re-enter to confirm вводим свои значения.
Тем самым установив свои пароли вместо стандартных для доступа к роутеру.
2. Вкладка Setup — подвкладка Basic Setup , Настраиваем Wan Setup (доступ к интернету)
3. Там же заполняем Поля Router IP и DHCP.
В настройках DHCP уберите флажок «DHCP-Authoritative» и нажмите Apply Settings
4. Вкладка Wireless, в поле Wireless Network Name (SSID) введите имя будущей Wi-fi сети
5.Вкладка Services -> подвкладка Hotspot
Chillispot — Enable — думаю итак понятно без комментариев
Separate Wifi from the LAN Bridge — Enable — этим мы отделяем LAN порты от Wi-fi сети
Primary Radius Server IP/DNS — ip сервера с FreeRadius
Backup Radius Server IP/DNS — ставим значение из предыдущего поля
DNS IP — Внешний DNS (У меня он 192.168.0.1, так как у меня на нем и DNS)
Remote network внутренняя сеть для Wi-fi клиентов
Redirect URL — приветственная страница radius-сервера, должна располагаться на сервере с Freeradius, ее мы сделаем чуть позже
Shared Key — ключ. testing123 ключ по умолчанию, желательно придумать свой, впоследствии в настройках не забываем указывать именно свой ключ
DHCP interface — интерфейс через который подключаются Wi-fi клиенты
2 этап Настройка FreeRadius
Устанавливаем FreeRadius, не забываем поставить галочку напротив MYSQL
cd /usr/ports/net/freeradius2 make install clean
Редактируем конфигурационный файл /usr/local/etc/raddb/radiusd.conf
и проверяем что выставлено именно no
Следующий файл для редактирования /usr/local/etc/raddb/sites-available/default
И во всех раскомментируем строчку
Этим мы подготовили freeradius для связи с mysql
Далее редактируем файл /usr/local/etc/raddb/clients.conf
Ищем секцию client localhost
где, 192.168.0.20 ip адрес маршрутизатора с wi-fi
Выставляем свой ключ
Не забываем прописать в /etc/rc.conf строчку
3 этап Настройка MySQL
Начнем с установки
cd /usr/ports/databases/mysql55-server make install clean
Добавляем в /etc/rc.conf
Выставляем пароль для рута
mysqladmin -u root password ВАШ_ПАРОЛЬ
Теперь заходим в консоль MySQL и вводим только что установленный пароль
Если вход прошел успешно — продолжаем, создаем базу данных для пользователей и самих пользователей
create database db_radius; grant all privileges on db_radius.* to 'user_radius'@'localhost' identified by 'user_radius_password'; flush privileges; quit;
Из папки с этими файлами импортируем таблицы в нашу базу данных
Проверим все ли прошло успешно:
mysql -u user_radius -p show databases; use db_radius; show tables;
Мы должны увидеть список из следующих таблиц:
nas, radacct, radcheck, radgroupcheck, radgroupreply, radippool, radpostauth, radreply, usergroup.
4 этап Привязываем FreeRadius к MySQL
Редактируем файл /usr/local/etc/raddb/sql.conf
Прописываем туда реквизиты доступа к созданной базе «user_radius«, «user_radius_password«, «db_radius«.
Теперь создадим тестового юзера для проверки в базе MySQL. Для этого выполним
mysql -u user_radius -p db_radius insert into radcheck (Username, Attribute, Value) VALUES ('testsql', 'Password', 'passwordsql');
Не забываем перезагрузить freeradius.
Проверяем соединение командой
radtest testsql passwordsql 127.0.0.1 0 testing123
Здесь всплывут 2 подводных камня:
1. Выше мы уже настроили FreeRadius на то, что клиентом у нас является 192.168.0.20 — то есть временно на период теста меняем обратно на 127.0.0.1 и перезагружаем freeradius.
2. У меня вышла вот такая ошибка:
radclient:: Failed to find IP address for office.local
radclient: Nothing to send.
Если соединение прошло успешно то в выводе команды мы должны увидеть слова «Access—Accept»
5 этап настройка Веб-сервера с PHP, SSL и поддержкой CGI
Следующим этапом будет настройка веб-сервера с SSL (нужен для страницы авторизации) c поддержкой выполнения CGI скриптов(тоже для страницы авторизации), и с поддержкой php (это для phpmyadmin) как это все сделать можно прочитать здесь.
6 этап Настройка страницы авторизации
После того как у нас появился работающий Веб-сервер нам необходимо настроить страницу авторизации. Кстати это именно та страница, на которую ссылается роутер с dd-wrt в своих настройках.
если не получилось, выкладываю тут на всякий случай
Устанавливать ничего не нужно, просто ищем в архиве файл hotspotlogin.cgi и копируем его в папку для cgi скриптов веб-сервера. Не забываем выставить права на выполнение
chmod 755 hotspotlogin.cgi
Также необходимо раскомментировать в нем строку «$uamsecret = » и вставить свое значение (у нас это testing123).
Если все выше настроено успешно, то при подключении к сети и попытке открыть любой сайт должна открываться страница формируемая hotspotlogin.cgi.
Кстати дизайн страницы можно менять как душе угодно. Предполагаю, что если вы дошли до этой точки настройки, то должны сами разобраться в коде и как это сделать.
7 этап Настройка dialupadmin
Далее процесс настройки приводит нас к мысли что здорово было бы иметь веб-интерфейс для управления hotspot’ом, и базой данных.
Чтобы не увеличивать статью до километровых размеров опустим установку PhpMyAdmin для управления базой, благо инфы по этой теме в интернете навалом.
Опишем установку веб-интерфейса для управления hotspot’ом. Из бесплатных остановимcя на dialupadmin, который идет в комплекте с freeradius. Возможно не самое лучшее решение, но свои минимальные функции выполняет. В принципе можно обойтись и без него, и делать все вручную через базу, так как сам по себе он мне показался «не очень», но тем не менее информация о его настройке не будет лишней.
И находим там папку dialup_admin, либо ищем ее по пути где-то здесь /usr/share/freeradius-dialupadmin/htdocs /var/www/dialup. Но скорее всего ее там может не оказаться.
Создаем папку для dialupadmin в папке веб-сервера, и перепишем в нее файлы из одноименной папки в архиве.
Здесь я опускаю настройку веб-сервера для папки dialupadmin. Можете положить все в папку по умолчанию и не париться с настройками, либо настроить веб-сервер как вам удобно.
Примечание: в dialupadmin по умолчанию нет никакой встроенной аутентификации, поэтому не забудьте ее сделать средствами веб-сервера поставив пароль на папку.
Приступим к настройке dialupadmin
Сразу сделаю небольшое отступление, если в процессе настройки вы столкнетесь с подобной ошибкой (точно не помню на каком этапе она может возникнуть)
Fatal error: Call to undefined function import_request_variables() in /usr/local/www/dialupadmin/conf/config.php on line 9
Редактируем файл ..dialupadmin/conf/admin.conf
в строке ниже вместо XXXXXX выставляем свой ключ. Например у нас в примере это testing123
Здесь вместо «crypt» выставляем «clear»
Далее настройки базы, в строках ниже указываем свои значения:
sql_username: user_radius sql_password: user_radius_password sql_database: db_radius
Обратите внимание на строку
Если не хотите чтобы отображалась информация об ошибках после отладки, замените на «false»
Теперь необходимо добавить таблицы в нашу базу данных
Их можно найти по пути ..dialup_admin/sql/mysql
Error: File ‘/usr/local/www/dialup_admin/conf/naslist.conf’ does not exist or is not readable
Error: File ‘/usr/local/www/dialup_admin/conf/captions.conf’ does not exist or is not readableWarning: file(/usr/local/www/dialup_admin/conf/username.mappings): failed to open stream: No such file or directory in /usr/local/www/dialupadmin/conf/config.php on line 88
Warning: Invalid argument supplied for foreach() in /usr/local/www/dialupadmin/conf/config.php on line 89
Итак файлы userinfo.sql и badusers.sql в 5 строке удаляем
Также стоит обратить внимание на соответствия названий таблиц в базе и файле ..dialupadmin/conf/admin.conf . С этим могут быть связаны выше описанные ошибки.
Не факт конечно, что вскоре это все не поправят, но на всякий случай привожу все возможные грабли.
Заходим в папку ..dialupadmin/sql/mysql/ и импортируем таблицы (можете это сделать через PhpMyAdmin)
8 этап Добавление данных
Заходим через браузер в веб-интерфейс dialupadmin и создаем 2 группы:
Нажимаем кнопку «New Group» и в поле «Group name» вводим название «Default«, нажимаем кнопку «Create»
Таким же образом создаем группу «Full Bandwidth«.
группа Default будет для гостей здесь мы поставим ограничение скорости, и меньшее время сессии
Full Bandwidth для Vipов.
Заходим через PhpMyAdmin в базу и добавляем записи в таблицу radgroupcheck
id: 1
GroupName: Default
Attribute: Auth-Type
op: ==
Value: Local
id: 2
GroupName: Full Bandwith
Attribute: Auth-Type
op: ==
Value: Local
Теперь добавляем записи в таблицу radgroupreply
id: 1
GroupName: Default
Attribute: Session-Timeout
op: =
Value: 3600
id: 2
GroupName: Default
Attribute: Idle-Timeout
op: =
Value: 600
id: 3
GroupName: Default
Attribute: Acct-Interim-Interval
op: =
Value: 60
id: 5
GroupName: Default
Attribute: WISPr-Bandwidth-Max-Up
op: =
Value: 128000
id: 6
GroupName: Default
Attribute: WISPr-Bandwidth-Max-Down
op: =
Value: 256000
Следующие атрибуты для группы “Full Bandwidth”:
id: 7
GroupName: Full Bandwidth
Attribute: Session-Timeout
op: =
Value: 3600
id: 8
GroupName: Full Bandwidth
Attribute: Idle-Timeout
op: =
Value: 600
id: 9
GroupName: Full Bandwidth
Attribute: Acct-Interim-Interval
op: =
Value: 60
И краткая расшифровка:
Session-Timeout — время в секундах сессии, до разрыва, когда пользователю необходимо будет перелогиниться
WISPr-Redirection-URL — страница куда будут попадать пользователи после открытия сессии, если оставить пустым то переадресация происходить не будет
WISPr-Bandwidth-Max-Up, WISPr-Bandwidth-Max-Down — максимальная скорость интернета на upload и download.
При организации гостевого подключения к интернету в конференц-залах, публичных библиотеках и кафе особое внимание следует уделить обеспечению безопасности и максимально простой аутентификации. Технология под названием Captive Portal призвана в этом помочь.
Как это работает?
По сути технология Wireless Hosted Network — это симбиоз двух подходов:
- виртуализации нескольких виртуальных беспроводных адаптеров на основе одного физического (Virtual WiFi);
- организации программной точки доступа с помощью одного из виртуальных беспроводных адаптеров (SoftAP).
VirtualWifi является интересным примером виртуализации, с помощью которой становится возможным использовать ресурсы одного WLAN-адаптера, чтобы работать в нескольких беспроводных сетях. С ее помощью можно поднять несколько виртуальных беспроводных адаптеров, отдельно сконфигурировать и подключить к разным точкам доступа, но при этом все они будут использовать ресурсы одного и того же физического устройства. Технология SoftAP в свою очередь позволяет перевести любой из виртуальных адаптеров в инфраструктурный режим (infrastructure mode), чтобы иметь возможность принимать подключения других беспроводных клиентов. Таким образом ноутбук легко превращается в хотспот для доступа в Сети, через который можно расшарить что угодно: имеющиеся WLAN-соединения (оцени прелести Virtual WiFi — мы уже подключены к беспроводной сети, но при этом сами являемся точкой доступа для других клиентов), подключение через 3G-модем, WiMax-адаптер или кабельный ethernet-интернет. Единственным требованием для использования этой фичи является поддержка Wireless Hosted Network драйверами беспроводного адаптера. К счастью, для многих (но, к сожалению, не для всех) старых адаптеров были выпущены обновления с поддержкой Wireless Hosted Network, а для современных это является стандартом де-факто. Более того, такая поддержка является обязательной, чтобы драйвер устройства мог получить значок совместимости с Windows 7. Поэтому если у тебя есть необходимость поднять виртуальный хотспот, то с большой вероятностью все получится.
Captive Portal на Windows
Организовать Captive Portal на Windows штатными средствами проблематично из-за особенностей работы брандмауэра (который, кстати, начал контролировать исходящие соединения только с Vista), поэтому в любом случае придется обращаться к сторонним решениям. Выбор здесь не особенно велик — DNS Redirector, FirstSpot, PacketFence, myWIFIzone, работает под WinXP/2k), Wifidog и Antamedia HotSpot. Из них бесплатны PacketFence и Wifidog. Первый требует некоторой подготовки, а используемые во втором компоненты, такие как Apache, PHP, PostgreSQL, удобнее разворачивать на *nix-системе.
Из перечисленных наиболее функционален Antamedia HotSpot, который позволяет организовать свободный и предоплаченный доступ (по трафику, времени или скорости), управлять пропускной способностью, гарантируя нужную скорость разным клиентам, блокировать нежелательные сайты, получать статистику и многое другое. Развертывание Antamedia HotSpot не представляет особой сложности, в режиме простой установки все компоненты (хотспот, интерфейс оператора и база данных) устанавливаются на один компьютер. Разобраться с первоначальными установками помогает визард, интерфейсы настраиваются автоматически, пользователь может также выбрать внешний вид страницы регистрации. Дальнейшее управление производится при помощи понятного интерфейса.
2. Установка
Чем (для меня) хорош дистрибутив Mandriva? Обилием программ в «родных» репозиториях! Запустите «Центр управления», выберите «Установку и удаление программ», введите в поле поиска желаемое, и с определенной долей уверенности можно утверждать, что «оно там найдется»… Так же было и с Chillispot — он оказался в списке доступных пакетов, я всего-лишь поставил «птичку» и нажал кнопку «Применить»…
(Ничто не вечно под луной… Пока я собирался описать установку Chillispot, вышел новый дистрибутив Mandriva — версии 2009.1, в пакетах которого Chillispot, увы, уже не оказалось. Но, на проверку, преспокойно устанавливается и работает пакет от дистрибутива версии 2009.0).
На всякий случай, я сохранил пакет у себя на FTP в соответствующей папке.
1. Расшарить интернет.
Если на ноутбуке есть инет, то почему бы не поделиться им с другими беспроводными устройствами. Это особенно актуально, если в распоряжении есть USB 3G-модем с хорошей скоростью и дешевым трафиком. Если ты работаешь через платный хот-спот, где обычно осуществляется привязка к MAC-адресу, то это реальный способ не платить дважды и не проходить дурацкую процедуру авторизации через специальную страницу входа.
WARNING
Администраторы точек доступа обычно разрешают все DNS-запросы из внутренней сети во внешнюю. Это можно использовать для несанкционированного выхода в интернет при помощи технологии DNS tunneling, реализованной в таких решениях, как Dnscat, Ozyman, NameServer Transfer Protocol (NSTX), Dns2tcp, и других.
4. Безопасное туннелирование трафика.
К сожалению, далеко не все устройства умеют работать через VPN-соединение. И тем более через какой-нибудь OpenVPN или Tor. Но если поднять виртуальный хотспот, то весь трафик подключенных клиентов можно принудительно пустить как раз через защищенное подключение. Кейс особенно важен, если работа осуществляется в открытой сети.
4. Еще чуть-чуть и запускаем…
До полной работоспособности Chillispot осталось сделать самую малость. Но важную «малость». Во первых, нужно включить опцию ip forvarding в настройках системы. Для этого в текстовом редакторе открываем файл /etc/sysctl.conf и добавляем в него следующую строку:
Чтобы форвардинг заработал сразу (без перезагрузки всей системы), перезапускаем поддержку сети командой:
Во-вторых, с Chillispot поставляется скрипт правил файервола, который необходимо запускать при загрузке системы. Сразу после установки файл этот находится в папке /usr/share/doc/chillispot/ и называется firewall.iptables. Открываем его в редакторе и смотрим на значения, присвоенные двум переменным (в самом начале файла) — EXTIF=» eth0 « и INTIF=» eth1 «. В качестве значения переменной «EXTIF» (внешний интерфейс) должна быть указана сетевая плата, «смотрящая» в интернет. А в качестве «INTIF» (внутренний интерфейс) — плата, к которой подключаются пользователи (точка доступа). В самом начале данной заметки, в исходных условиях мы приняли, что к интернету у нас подключен интерфейс eth0, а к точке доступа — eth1. Таким образом, значения указанных параметров нас устраивают целиком и полностью. Если же подключение выполнено наоборот, то нужно соответствующим образом изменить и значения этих двух параметров, указанные в файле firewall.iptables. Разобравшись с настройками и сохранив изменения (если таковые были), выходим из текстового редактора и копируем файл правил в папку, где расположены все скрипты, выполняющиеся при запуске системы:
Затем файл /etc/init.d/firewall.iptables делаем исполняемым:
И после этого просто запускаем его:
Что еще по поводу файервола? В правилах, поставляемых с Chillispot не учтена необходимость открытия порта, используемого для того, чтобы иметь возможность оключать пользователя согласно сецификации RADIUS. На уже упоминавшейся странице можно посмотреть или даже прямо скопировать содержимое файла firewall.iptables с уже открытым для этой цели 3799-м портом. Это может оказаться актуальным, в том случае, если Ваша биллинговая программа может отключать пользователей посредством команд RADIUS-сервера.
(Кстати, может перед тем, как слепо следовать моим советам, стоит проверить, а есть ли там такой файл?)… Сохраняем изменения, выходим из редактора, и чтобы RADIUS-сервер «подхватил» новые настройки, перезапускаем его:
Настраиваем Captive Portal в Linux
Разобравшись, как работает Captive Portal, легко реализовать его штатными средствами Linux. Причем доступно несколько способов — маркировка и блокировка пакетов, пришедших от неавторизованных пользователей, использование цепочки правил или шаманство с NAT. Дополнительно на лету можно перенастраивать правила прокcи-сервера Squid или контент-фильтра DansGuardian, что позволит управлять выходом в интернет на уровне групп пользователей, да и просто кешировать и фильтровать информацию, блокируя доступ к нежелательным ресурсам. И кстати, именно такой подход применяется в специализированных дистрибутивах.
Для примера разберем вариант использования отдельной цепочки и DansGuardian. Первым делом создаем правила пакетного фильтра:
Не забываем разрешить специфические низкоуровневые протоколы:
То же пишем и для LENGTH, и IPv4. Теперь создаем правила для iptables:
Не забываем разрешить ICMP, DNS, DHCP и прочие необходимые протоколы. Здесь, кстати, есть один важный момент: многие админы не заморачиваются и разрешают весь DNS-трафик. Этим пользуются некоторые юзвери для получения доступа в Сеть при помощи технологии DNS tunneling. Конечно, итоговая скорость небольшая, но вполне достаточная, чтобы сидеть в аське, писать в твиттер или отдавать команды по SSH. И главное — при этом везде засветится IP твоей сети, а в логах какие-либо записи о несанкционированной деятельности будут отсутствовать, ведь не каждый админ пишет все запросы в журнал DNS-сервера. Поэтому лучше строго указать разрешенные серверы.
Как использовать?
Даже если сильно поискать, то нигде, ни в настройках сетевого адаптера, ни где-либо еще, ты не найдешь такой функции, как Wireless Hosted Network. Ее там и нет. Сам Microsoft, вероятно, позиционирует это как фишку для продвинутых пользователей, поэтому заюзать ее можно только двумя путями: воспользоваться приложениями от сторонних разработчиков, которые применяют специальные API-вызовы системы (они хорошо описаны в MSDN), или использовать команды сетевого шелла netsh (network shell). Поскольку Netsh.exe встроен в систему по умолчанию, то это наиболее интересный вариант.
Шелл предлагает специальный набор команд для работы с беспроводной сетью. Полный список можно получить, если набрать в консоли " netsh wlan /? ". Сейчас для нас интерес представляют лишь те, которые относятся к размещенной сети.
Я привел все возможные команды, хотя для настройки программной точки доступа потребуются только несколько из них:
netsh wlan set hostednetwork [mode=]allow|disallow
netsh wlan set hostednetwowrk [ssid=] Установка и настройка wi fi хотспота с использованием chillispot freeradius и easyhotspot Установка и настройка wi fi хотспота с использованием chillispot freeradius и easyhotspotpersistent|temporary
netsh wlan refresh hostednetwork [data=] key
netsh wlan show hostednetwork [[setting=]security]
netsh wlan show settings
Заключение
Организовать точку доступа с различными вариантами использования не так уж и сложно. Выбор конкретного решения зависит от наличия времени на подготовку и желания копаться в настройках. Все представленные схемы можно легко развить до требуемого уровня.
Настройка Captive Portal в FreeBSD
Понимая, как работает пакетный фильтр, и владея навыками разработки на языке, используемом в веб, легко организовать Captive Portal в любой ОС. И *BSD здесь не исключение, причем реализация при помощи IPFW выглядит даже проще. Принцип остается тем же, что и ранее. Все пакеты от неавторизованных пользователей блокируем и перенаправляем на веб-страницу. После того как гость подтверждает информацию, разрешаем выход в Сеть. Для удобства всю информацию об авторизованных IP будем сохранять в базу данных (в примере текстовый файл). Заносим в системный файл вроде /etc/rc.local (а лучше в отдельный, чтобы было легче искать) необходимые переменные:
В веб-страницу добавляем следующий код. В примере пользователь в чекбоксе просто подтверждает некие условия, результат отправляется Perl-скрипту access.pl.
Мастер настройки Antamedia HotSpot
Здесь Perl выбран исключительно для разнообразия, при желании можно переработать PHP-код, показанный выше. Сам скрипт:
Создание тарифного плана в Antamedia HotSpot
При желании дополняем скрипт проверкой МАС-адреса и перестройкой правил прокси-сервера. Вызвав функцию time(), мы также можем сохранить время соединения (в секундах), которое затем использовать для сброса старых соединений.
Вступление
Собственно, что это такое и зачем оно надо. Chillispot — это контроллер доступа. Его задача в максимально общей формулировке — пускать пользователей из одного сегмента сети в другой. То есть, если уже «приземленно», то с одной стороны (во внутренней подсети) находятся клиенты, а с другой стороны — бескрайние просторы интернета. И Chillispot с одной стороны на основании информации от сервера авторизации либо пускает этих клиентов в сеть либо нет. А с другой стороны, Chillispot осуществляет взаимодействие с сервером учета Radius, благодаря чему поставщик услуг (провайдер) знает сколько клиент провел времени в интернете, а также какой объем информации клиент принял и отдал в интернет. И, если совсем уж без намеков — Chillispot чаще всего используется тогда, когда кто-то хочет создать хотспот, работающий под управлением ОС Linux, и управляемый каким-нибудь биллингом, взаимодействующим с Chillispot посредством Radius-а.
При этом непосредственно Chillispot выполняет три задачи:
- Формирует LAN-подсеть для клиентов хотспота. Для этого он сам выступает в роли DHCP-сервера, раздавая клиентским компьютерам IP-адреса.
- Взаимодействуя с сервером RADIUS работает контроллером доступа, не пропуская в интернет неавторизованных клиентов, и предоставляя доступ с указанными (RADIUS-ом) параметрами — авторизованным.
- Предоставляет клиентам страницу авторизации (специальную веб-страницу) на которой они могут ввести логин и пароль, чтобы попасть в интернет.
Существует целый класс аппаратных устройств, у которых есть и своё собственное название — NAS (Network Access Server — сервер доступа в сеть). Chillispot можно считать «программным» NAS. Кстати, аббревиатуру запоминайте — она нам еще встретится при настройке…
Ubuntu
Mac OX X
В Mac OS X заставить работать стандартный адаптер в режиме Infrastructure, наверное, не выйдет. Но зато расшарить интернет для одного единственного клиента, который подключится к MacBook через беспроводную сеть можно, даже не залезая в консоль.
Читайте также: