Однажды, от руководства, мне была поставлена задача организации сети
wi-fi с выходом в Интернет по предоплаченным ваучерам(чекам). Казалось
бы ничего сложного в этом нет, однако главной задачей проекта была его
стоимость, которую нужно было свести к минимуму. Поэтому все силы и
извилины головного мозга были брошены на штурм поисковых систем,
зарубежных и российских форумов, в поисках OpenSource решений для
поставленной задачи.
тех.задание для проекта
OpenSource
Гибкость в управлении
Предоставление оплаченного доступа в Интернет по wi-fi для клиентов(гостиниц, кафе, ресторанов и т.д.)
Конфигурация тарифов по времени или по трафику.
Страница приветствия при подключении к точке достпупа.
Решение
Оно заключалось в использовании:
сервера с двумя ethernet интерфейсами на базе ОС Ubuntu 9.04 с архитектурой i386
FreeRadius в качестве сервера авторизации и учета
ChilliSpot в качестве контроллера доступа
MySQL БД для хранения всей информации о тарифах, настройках и т.д.
Некий web интерфейс, о котором речь пойдет позже.
Реализация
В качестве сервера был выбран ПК Intel Celeron 1.4Mhz, 512 RAM, 40Gb
HDD. На него была поставлена ОС Ubuntu 9.04, MySQL server, FreeRadius,
Chillispot, Apache, php 5.2
О Chillispot
В данном случаем Chillispot выполняет сразу несколько функций:
Для организации локальной сети запускает свой DHCP сервер
Служит шлюзом, который выпускает авторизованных клиентов в интернет,
а неавторизованных отсылает на страницу авторизации, и в третьих,
предоставляет эту самую страницу авторизации.
Взаимодействие
Клиент подключается к хотспоту и пытается попасть на какой-то сайт в
интернете. Chillispot перехватывает DNS-запрос клиента и проверяет –
авторизован ли он. Если клиент не авторизован (не вводил логин и пароль
ранее), то он перенаправляется на страницу авторизации (см. «сиреневая
стрелка» на рис. 2 выше).
На странице авторизации клиент вводит выданные ему логин и пароль. Страница авторизации отдает
полученные от клиента логин и пароль Chillispot-у (обратная «сиреневая стрелка»). Chillispot
полученные логин и пароль отсылает на проверку серверу авторизации и учета RADIUS («зеленая
стрелка»). Сервер RADIUS полученные данные (логин и пароль) сверяет с данными, хранящимися в
базе учетных записей в сервере MySQL («синяя стрелка»). По результатам проверки возможны два
варианта. Первый – логин и/или пароль не верны. В этом случае сервер RADIUS отвечает Chillispot-у
отказом и последний не пускает клиента в интернет, а снова выводит ему страницу авторизации.
Немного теории о подключении сервера хотспота к сети интернет
Рекомендуется подключить сервер хотспота к интернету следующим образом:
Настройка Сети
В ОС Ubuntu вся необходимая настройка для того случая, когда сервер подключен к шлюзу,
осуществляется редактированием двух файлов. Чтобы настроить подключение сервера хотспота к
сети интернет, выполните следующее:
1. Запустите консоль «Терминал».
2. Сделайте резервную копию файла настроек. Для этого введите команду:
3. Теперь отредактируйте файл настроек. Для этого откройте его в редакторе: sudo nano /etc/network/interfaces
4. По умолчанию, в данном файле присутствует только лишь одна запись об «интерфейсе
внутренней (локальной) петли» (loopback). Выглядит она следующим образом:
auto lo
iface lo inet loopback
5. В файл нужно добавить запись о настройке интерфейса eth0. ВНИМАНИЕ – ни в коем случае не
удаляйте запись об «интерфейсе внутренней петли» — lo, иначе будут проблемы! С учетом тех
параметров, которые были приняты выше, в файл нужно под строками про loopback добавить
следующие новые строки:
6. После того, как вы добавите в файл указанные строки, сохраните изменения и выйдите из
редактора. Как это сделать, было описано ранее.
7. Следующим шагом нужно (только для случая ОС Ubuntu-desktop) остановить использование
апплета Nethwork Manager. Для этого выполните следующее:
sudo /etc/init.d/NetworkManager stop
При этом вы получите сообщение системы о том, что Nethwork Manager остановлен:
8. Теперь нужно отредактировать второй файл – /etc/resolv.conf и указать в нем адрес сервера DNS.
Для этого введите следующую команду:
sudo nano /etc/resolv.conf
9. В файл нужно добавить запись об адресе используемого системой сервера DNS. С учетом тех
параметров, которые были приняты выше, в файл нужно добавить следующую строку:
nameserver 192.168.1.1
10. После того, как вы добавите в файл указанную строку, сохраните изменения и выйдите из
редактора.
11. По окончании редактирования указанных двух файлов нужно перезапустить поддержку сети на
сервере хотспота. Для этого введите следующую команду:
sudo /etc/init.d/networking restart
На этом настройка интерфейса eth0 завершена.
И теперь совсем кратко о той сетевой плате, к которой подключается внутренняя подсеть LAN (eth1).
Для нее в системе НИЧЕГО НАСТРАИВАТЬ НЕ НУЖНО. Система должна ее только лишь определить и
«подставить» соответствующий драйвер. После установки и настройки
программа Chillispot самостоятельно запустит на указанном интерфейсе
DHCP-сервер для подключения клиентов хотспота.
Для работы контроллера доступа Chillispot в системе обязательно должен присутствовать модуль
TUN-драйвера. По умолчанию, этот модуль обычно присутствует в ядре ОС Linux, однако не
запускается автоматически при старте системы.
Чтобы проверить наличие TUN-драйвера, выполните следующее:
1. Запустите консоль и введите команду:
modprobe -l -a tun
2. В ответ система сообщит месторасположение файла модуля следующим образом:
kernel/drivers/net/tun.ko
Данный ответ означает, что в системе присутствует модуль TUN-драйвера. Для правильной
работы хотспота данный модуль должен загружаться при запуске системы. За это отвечает
скрипт запуска Chillispot.
Включение портфорвардинга
Для работы контроллера доступа Chillispot в системе должен быть включен портфорвардинг. Чтобы
включить его, выполните следующее:
1. Запустите консоль.
2. Введите следующую команду:
echo «net.ipv4.ip_forward=1» | sudo tee -a /etc/sysctl.conf
В ответ на эту команду система (возможно) потребует от Вас ввести пароль того самого
«первого пользователя, наделенного административными правами», которого вы создали во
время установки ОС Ubuntu. Введите данный пароль.
3. Чтобы портфорвардинг заработал, нужно либо просто перезагрузить сервер хотспота, либо
(чтобы обойтись без перезагрузки всей системы) просто перезапустить поддержку сети
командой: sudo /etc/init.d/networking restart
Далее нам надо доставить
Apache server
PHP
MySQL server
ChilliSpot
FreeRadius
Поставить и подружить связку Apache+PHP+MySql думаю сможет практически каждый.
Поэтому не будем на этом заострять внимание.
Для установки FreeRadius, в консоле пишем:
sudo apt-get install freeradius freeradius-mysql
Для установки Сhillispot, в консоле пишем:
sudo apt-get install chillispot
Все подготовительный действия выполнены, можно приступать к настройке.
Вторую часть сего мероприятия я опишу в следующих постах.
UPD: Как правильно заметил si14,
при использование данной системы, нужно помнить о лицензии на
предоставление телематических услуг, иначе по первому звонку в
соответствующие органы, могут возникнуть неприятности.