Введение
Что нужно для построения хотспота? В общем случае, для того, чтобы хотспот мог «глобально» управлять всеми параметрами доступа клиентов к сети интернет, существует только один способ – между интернетом и клиентами необходимо установить некое «устройство», которое будет выпускать в интернет только ваших клиентов, а всевозможных «любителей шары» – отсекать. Что это может быть за «устройство»? В простейшем случае – это может быть обычный персональный компьютер с двумя сетевыми адаптерами, который включен в разрыв сети между клиентами и интернетом (как показано на рис. ниже), и на котором установлено специализированное программное обеспечение (далее – ПО). В дальнейшем этот компьютер мы и будем считать «сервером хотспота».
Какое программное обеспечение используется в предлагаемом сервере хотспота? В качестве операционной системы сервер хотспота использует ОС Linux (дистрибутивы Ubuntu или Debian на ваш выбор). Данные операционные системы вы можете скачать с официальных сайтов (Ubuntu или Debian) и использовать абсолютно бесплатно. Благодаря этому вы уже начинаете экономить ваши деньги.
А теперь рассмотрим блок-схему взаимодействия всех модулей (служб) системы, участвующих в работе хотспота, представленную ниже:
Итак, как видно из приведенного выше рисунка, непосредственно между клиентами и интернетом включен Контроллер доступа. Это может быть оборудование или программа, которые либо выпускают пользователя из локальной сети в интернет, либо нет. В данном случае на сервере хотспота используется программный контроллер доступа Coova-Chilli – бесплатное ПО с открытым исходным кодом, которое может быть установлено практически на любую *nix операционную систему. Он выполняет сразу три функции – во-первых, для организации локальной сети клиентов запускает свой собственный DHCP-сервер (предоставляя клиентам автоматически все настройки сети), во вторых, служит шлюзом, который выпускает авторизованных клиентов в интернет, а неавторизованных отсылает на страницу авторизации, и в третьих, предоставляет эту самую страницу авторизации. DHCP сервер используется для того, чтобы максимально упростить клиенту задачу подключения к хотспоту. Страница авторизации позволяет клиенту ввести логин и пароль. Ну а шлюз сверяет предоставленные клиентом данные с базой учетных записей хотспота, и, если имя пользователя (логин) и пароль правильные, то выпускает клиента в интернет. Подробнее сама процедура предоставления клиенту доступа в интернет описана на странице "Клиент и хотспот – подключение и авторизация". Что нужно для работы Coova-Chilli? Во-первых, так как страница авторизации – это обычная веб-страница, то потребуется работающий веб-сервер, на котором эта страница будет размещаться. С этим все просто, в системе используется Apache (тоже бесплатный). С другой стороны, нужен сервер авторизации и учета, или говоря иными словами, та самая «база учетных записей хотспота». Контроллер доступа Coova-Chilli в этом плане может работать только с серверами RADIUS.
Разновидностей Серверов авторизации, аутентификации и учета (RADIUS) существует множество. Но, «так уж сложилось», что из числа бесплатных и с открытым исходным кодом, наиболее популярным и распространенным стал сервер FreeRADIUS. Назначение сервера двояко – с одной стороны, он хранит в базе учетные записи всех клиентов хотспота (их логины, пароли, лимиты времени/скорости/мегабайт и т.д. и т.п.). А с другой стороны, он ведет учет всех сеансов, которые клиенты провели в интернете, подсчитывая и записывая в базу как длительность всех сеансов в секундах, так и объем принятой/переданной информации в байтах. Сервер FreeRADIUS присутствует в репозиториях (а следовательно – легко и просто устанавливается) большинства современных дистрибутивов ОС Linux. Настройка на корректную работу с конкретными контроллерами доступа осуществляется простым подключением соответствующих файлов т. н. «словарей» (dictionary). Большим удобством является тот факт, что сервер FreeRADIUS легко настраивается на работу с практически любой базой данных SQL, что во-первых, рекомендуется сделать для ускорения работы сервера, а во-вторых, позволяет легко организовать его взаимодействие с практически любым биллингом, который может писать и читать данные в базу SQL.
Биллинг – это и есть именно та единственная «надводная часть айсберга», которую видит человек, управляющий хотспотом. И как следствие, он считает ее не просто самым главным компонентом хотспота, а непосредственно самим хотспотом. Именно биллинг и определяет возможности хотспота. Его задача – формирование в базе данных сервера RADIUS учетных записей о клиентах. При этом биллинг должен записать в базу RADIUS все необходимые атрибуты клиента, начиная от его логина и пароля, и заканчивая теми, которые определяют те условия и лимиты, на которых клиену будет предоставлен доступ в интернет. Например, можно указать, что хотспот предоставит клиенту доступ в интернет только на 10 минут, либо позволит клиенту получить только 100 Мегабайт информации, либо указать, что скорость, с которой клиент будет получать данные из интернета не должна превышать 512 килобит, либо и то и другое и третье вместе... Эти (равно как и многие другие возможные и/или необходимые) атрибут(ы) сервер авторизации и учета (RADIUS) хранит в учетной записи каждого клиента хотспота, прописывает их туда (в базу) именно биллинг! И эти же самые атрибуты от сервера RADIUS получает контроллер доступа Coova-Chilli в тот момент, когда клиент авторизуется в хотсппоте. Благодаря этому, клиент получает доступ в интернет именно с теми параметрами, которые были ему назначены биллингом. В итоге, как видим, корректная работа хотспота возможна лишь в том случае, если все три вышеперечисленные службы (программы) правильно настроены на взаимную работу друг с другом. В сервере хотспота, который описывается на данном сайте, в качестве биллинга используется модифицированная и переведенная на русский язык версия программы Easyhotspot. Фактически, Easyhotspot является одним из наиболее простых и интуитивно понятных программных продуктов, который позволит управлять не только именно беспроводным хотспотом, но и любой системой доступа в интернет, рассчитанной на работу с сервером RADIUS. Используемая в качестве биллинга предлагаемого хотспота модифицированная и переведенная на русский язык версия программы Easyhotspot в первую очередь отличается повышенной стабильностью работы, и отсутствием проблем (например, с авторизацией), присущих ее исходному англоязычному оригиналу.
Кроме того, как уже было сказано выше, для работы сервера хотспота используются парочка "вспомогательных" серверов (служб) – веб-сервер и сервер баз данных. Первый обслуживает как саму биллинговую программу (ведь Easyhotspot – это веб-приложение), так и страницу авторизации клиентов. Второй хранит все используемые в работе базы данных. Из числа широко известных и доступных бесплатно, а также, легко устанавливаемых практически в любом дистрибутиве Linux, были выбраны веб-сервер Apache и сервер баз данных MySQL.
И напоследок – пару слов о дополнительных преимуществах такого построения системы хотспота. Данная схема, благодаря своей «модульности» может быть легко разделена (разнесена) на несколько узлов (компьютеров). Наиболее логичным выглядит такой вариант «раздела», когда сервер RADIUS, базы и биллинг расположены на одном едином сервере (т.н. «сервере биллинга»), а программные контроллеры доступа Coova-Chilli установлены (да, да, именно так – их может быть не один, а любое необходимое вам количество!!!), например, непосредственно на самих Wi-Fi роутерах и настроены на использование учетных записей, хранящихся на таком вот едином «сервере биллинга». Такой метод позволит построить систему из неограниченного числа хотспотов (территориально разнесенных зон), использующих единый биллинг.
Introduction
What do you need to build a hotspot? "Globally", there is only one way for hotspot to be able to manage all the parameters of clients accessing the Internet – you must to install some kind of "device" between the Internet and the clients that will allow to pass to Internet for your clients only, and will cut off all kinds of "freebie lovers". What kind of "device" can it be? In the simplest case, it could be a regular personal computer with two network interfaces, which placed in the network between clients and the Internet (as shown in the figure below), and which have specialized software is installed. In the future, we will consider this computer a "hotspot server".
What software can be used in the proposed access point server? The hotspot server uses Linux as the operating system (Ubuntu or Debian distros, of your choice). You can download these operating systems from official sites (Ubuntu or Debian) and use them absolutely free. Thanks to this, you are already starting to save money.
And now we will consider the block diagram of the interaction of all modules (daemons participating in the hotspot system), shown below:
So, as you can see from the figure above, the Access Controller is located directly between clients and the Internet. A more professional name for this class of equipment is NAS (Network Access Server). This can be either equipment or a program, that serve to allow the users of the own local network gain Internet or not. In our case, the Coova-Chilli NAS is used by hotspot server. Coova-Chilli is a free, open-source software NAS, that can be installed on almost any *nix operating system. It performs three functions same time: firstly, it organize a local network for a clients by launching an integrated DHCP server (automatically providing all network settings to clients), secondly, it serves as a gateway that provides Internet access to authorized clients, and redirects unauthorized ones to the authorization page, and thirdly, provides this authorization page. A DHCP server is used to make connection of users to hotspot as easy as possible. The authorization page allows the customer to provide a username and password. Then, the gateway checks the credentials provided by the client in the accounts database of hotspot, and if the username (login) and password are correct, it allows the client to access the Internet. The procedure for providing a client with Internet access is described in more detail on the page "Client and Hotspot – connection and authorization". What does Coova-Chilli need in addition? Firstly, since the authorization page is a regular web page, you will need a working web server to host this page. It's simple, the system uses Apache for this (also freeware). On the other hand, Coova-Chilli requires an authorization and accounting server (other words – a kind of "hotspot account database"). There are no alternatives in this matter – the Coova-Chilli NAS can only work with RADIUS servers.
There are many varieties of Authorization, Authentication and Accounting (RADIUS) Servers. But, "it's happened" that among free and open source, the FreeRADIUS server has become the most popular and widespread. The server has two purposes – on the one hand, it stores the accounts of all hotspot clients in the database (their logins, passwords, any time/speed/megabytes limits, etc.). And on the other hand, it keep records of all the sessions that customers spent on the Internet, counting and recording in the database both as the duration of all sessions as the amount of received/transmitted data. The FreeRADIUS server is present in the repositories of most modern Linux distrоs, and therefore it could be installed easily and simply. Configuring for the correct operation with specific access controllers is carried out by simply including of the corresponding so-called "dictionaries" files. A great convenience is the fact that the FreeRADIUS server is easily configured to work with almost any SQL database, which is, firstly, recommended to speed up the server, and secondly, it allows you to easily organize its interaction with almost any billing that can write and read the data into the SQL database.
Billing is just the “tip of the iceberg” seen by the hotspot staff. Because of this they consider billing program not only most important part of a hotspot, but the hotspot itself! Yes, billing program really defines all of hotspot features. Its task is to create clients accounts in the RADIUS database. At the same time, the billing program must write to the RADIUS database all the necessary attributes of the client, starting with his username and password, and ending with conditions and limits, under which the client will be granted access to the Internet. For example, you can specify that the hotspot will provide the client with Internet access for only 10 minutes, or that the client is allowed to receive only 100 megabytes of data, or declare that the speed should not exceed 512 kilobits, or any combination of the necessary restrictions. These (as well as many other possible and/or necessary) attributes of the AAA server (RADIUS) are stored in each client’s hotspot account, in its database! And all of these attributes Coova-Chilli NAS are received from the RADIUS server every time the client logs in to the hotspot. Thanks to this, the client gets access to the Internet precisely with the parameters that were assigned to him by billing program. Thus, as you can see, the correct operation of the hotspot is possible only if all three of the above daemons (programs) are correctly configured to work together with each other. The hotspot server offered here uses the upgraded and translated to Russian version of Easyhotspot as a billing. In fact, Easyhotspot is one of the simplest and most intuitive software products that allows you to manage as a wireless hotspots, like any other NAS designed to work with a RADIUS server. The Easyhotspot program, modernized and translated into Russian, is primarily distinguished by increased stability of work, and the absence of problems (for example, with authoriazation) inherent in its original English-language original.
And, as mentioned above, a pair of "auxiliary" daemons (programs) is used to operate the hotspot server. It is a web server and a database server. The first is used for the billing program itself (after all, Easyhotspot is a web application) and for the clients authorization page. The second stores all the databases used in the work. Among the widely known and available for free, as well as easily installed on virtually any Linux distributions, Apache web server and MySQL database server were chosen.
And finally, a few words about the additional advantages of such hotspot server structure. This scheme, due to its "modularity", can be easily divided (spaced) into several nodes (computers). The most logical way of this "separation" is when the RADIUS server, databases and billing are located on the same server (the so-called "billing server"), and Coova-Chilli software access controllers are installed directly on the Wi-Fi routers themselves (yes, yes, that's right - NAS can have more than one instance, any number you need !!!) and are configured to use accounts stored on such a "billing server". This method will allow you to build a system from an unlimited number of hotspots (geographically separated zones) managed by a single billing system.