Freebsd Hotspot
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
- wien
- сержант
- Сообщения: 151
- Зарегистрирован: 2014-06-26 18:38:44
- Откуда: DafaultCity
- Контактная информация:
Freebsd Hotspot
Имеется FreeBSD 9.2 с установленными:
1. isc-dhcp43-server-4.3.0 -раздаю ип адреса
2. lightsquid-1.8_2 - анализ логов сквида
3. rejik-3.2.11 - режу негативные сайты
4. squid-2.7.9_4 - сам сквид(прозрачный)
5. apache22-2.2.26 - нужно будет для хотспота
6. php5-5.4.25
7. phpMyAdmin-4.1.8
8. mysql55-server-5.5.36
9. mysql55-client-5.5.36
10. ipfw(firewall+kernel nat)
2 интерфейса:
vr0 - в инет
re0 - в локалку
А так же D-LINK DIR 615.
Цель: организовать хотспот, который в качестве страницы приветствия показывает мою страницу, при этом не надо лигинов, паролей и т.д.
Схема такая: юзер подключился, ввел какой-либо адрес сайта в браузере, его перекинуло на мою страницу, потом может набрать адрес и уже куда хочет идет.
Подскажите как лучше сделать, буду признателен за готовое решение (скрипты, статьи и т.д.)
Надо добавить, что перечитал много статей, но ничего подходящего для себя не нашел, поскольку предложенные решения, например как тут не отличаются элегантностью, безопасностью и масштабируемостью. Да, у меня еще сервер настроен таким образом, чтобы выдавать инет привилегированным пользователям без всяких ограничений.
1. isc-dhcp43-server-4.3.0 -раздаю ип адреса
2. lightsquid-1.8_2 - анализ логов сквида
3. rejik-3.2.11 - режу негативные сайты
4. squid-2.7.9_4 - сам сквид(прозрачный)
5. apache22-2.2.26 - нужно будет для хотспота
6. php5-5.4.25
7. phpMyAdmin-4.1.8
8. mysql55-server-5.5.36
9. mysql55-client-5.5.36
10. ipfw(firewall+kernel nat)
2 интерфейса:
vr0 - в инет
re0 - в локалку
А так же D-LINK DIR 615.
Цель: организовать хотспот, который в качестве страницы приветствия показывает мою страницу, при этом не надо лигинов, паролей и т.д.
Схема такая: юзер подключился, ввел какой-либо адрес сайта в браузере, его перекинуло на мою страницу, потом может набрать адрес и уже куда хочет идет.
Подскажите как лучше сделать, буду признателен за готовое решение (скрипты, статьи и т.д.)
Надо добавить, что перечитал много статей, но ничего подходящего для себя не нашел, поскольку предложенные решения, например как тут не отличаются элегантностью, безопасностью и масштабируемостью. Да, у меня еще сервер настроен таким образом, чтобы выдавать инет привилегированным пользователям без всяких ограничений.
Последний раз редактировалось f_andrey 2014-06-27 1:10:24, всего редактировалось 1 раз.
Причина: Автору. пожалуйста, выбирайте соответствующий раздел форума.
Причина: Автору. пожалуйста, выбирайте соответствующий раздел форума.
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
-
- проходил мимо
Re: Freebsd Hotspot
wien,
сдаётся, что вы сильно привередничаете!
В статье http://www.lissyara.su/articles/freebsd ... s/hotspot/ прекрасно описано, как осуществить всё, кроме учёта нужды обслуживания привилегированных юзеров: последнее только и останется вам видоизменить в тех скриптах. (Наводка: по списку логинов привилегированных юзеров, создаваемому отдельно в БД мускула, отменяется для такого юзера ограничение времени/полосы пропускания. Точка!)
Ну да и в выше вами указанной ссылке, в конце статьи пояснено, что её автор поменял (отказался вообще от авторизации) в исходных скриптах...
Так что разум вам в руки (как флаг) и вперёд на баррикады информатики!
"Дам наводку, но не подаю на водку!" (С)
сдаётся, что вы сильно привередничаете!

В статье http://www.lissyara.su/articles/freebsd ... s/hotspot/ прекрасно описано, как осуществить всё, кроме учёта нужды обслуживания привилегированных юзеров: последнее только и останется вам видоизменить в тех скриптах. (Наводка: по списку логинов привилегированных юзеров, создаваемому отдельно в БД мускула, отменяется для такого юзера ограничение времени/полосы пропускания. Точка!)
Ну да и в выше вами указанной ссылке, в конце статьи пояснено, что её автор поменял (отказался вообще от авторизации) в исходных скриптах...
Так что разум вам в руки (как флаг) и вперёд на баррикады информатики!

"Дам наводку, но не подаю на водку!" (С)
-
- проходил мимо
Re: Freebsd Hotspot
ЗЫ, а вот ето ваше:
> Да, у меня еще сервер настроен таким образом, чтобы выдавать инет привилегированным пользователям без всяких ограничений
есть весьма сомнительное утверждение
, - коли спрашиваете здесь как осуществить сей проект... 
> Да, у меня еще сервер настроен таким образом, чтобы выдавать инет привилегированным пользователям без всяких ограничений
есть весьма сомнительное утверждение


- wien
- сержант
- Сообщения: 151
- Зарегистрирован: 2014-06-26 18:38:44
- Откуда: DafaultCity
- Контактная информация:
Re: Freebsd Hotspot
Вот это единственная трудность, чтобы гости перенаправлялись на указанную мной страницу. Т.е. сейчас это работает так: в конфиге дхцп прописаны маки превилигированных юзеров, им выдаются постоянные ип при подключении. Далее имеется файлик на сервере, где в каждой строчке по одному ип, ес-но вип персон. Скорость режется только для посетителей сквидом, которому в свою очередь указан этот файл и создан соответствующий acl, им нет ограничений вообще (выдержка из squid.conf):
Если будут идеи - подкидывайте, а с той статьей чую конфиг ipfw полностью перепахать придется
Код: Выделить всё
acl privileged src "/usr/local/etc/squid/privileged"
# Day mode for localnet acl. No limits for privileged users
delay_access 1 allow localnet day !privileged
# Night mode, no limits for localnet and privileged users
delay_access 2 allow localnet !privileged !day
delay_access 3 allow localnet multimedia !privileged
Если будут идеи - подкидывайте, а с той статьей чую конфиг ipfw полностью перепахать придется

-
- проходил мимо
Re: Freebsd Hotspot
wien,
идей нет и скорее всего вообще не предвидится: похоже, вы "не туда зашли", точнее -- не с того начали... боюсь, что нужное можно организовать лишь по той примерно технологии, что разобрана в указ статьях...
(Или заюзать некий... гм, "гибрид" - но это уже типо изврат, имхо.)
Ну а с прикручиванием ipfw ТАМ вам что не нравится? (Навскидку) особо сложного и сомнительного в статьях не проповедуется...
Как-то так навскидку (сиречьт рассмотрев вопрос "теоретические", без практических проб метода...)
идей нет и скорее всего вообще не предвидится: похоже, вы "не туда зашли", точнее -- не с того начали... боюсь, что нужное можно организовать лишь по той примерно технологии, что разобрана в указ статьях...
(Или заюзать некий... гм, "гибрид" - но это уже типо изврат, имхо.)
Ну а с прикручиванием ipfw ТАМ вам что не нравится? (Навскидку) особо сложного и сомнительного в статьях не проповедуется...
Как-то так навскидку (сиречьт рассмотрев вопрос "теоретические", без практических проб метода...)
-
- проходил мимо
Re: Freebsd Hotspot
UPD. Единственное, что приходит тут на ум, это попытаться зацепиться за факт выдачи фикс.ip для привилег.юз... точнее, отфильтровать их, отделив от непривилиг.юз. по списку из того вашего файлика...
Если осилите решение и придумаете, КАК конкретно осуществить переброску последних куда вам надо - будет вам то самое "изящное" решение... (Сиречь, без заюзания http/php технологии, которая вам похоже "не нравится"... и скорее всего из-за не знания её в должной мере...
)
Удачи!
Если осилите решение и придумаете, КАК конкретно осуществить переброску последних куда вам надо - будет вам то самое "изящное" решение... (Сиречь, без заюзания http/php технологии, которая вам похоже "не нравится"... и скорее всего из-за не знания её в должной мере...

Удачи!
- wien
- сержант
- Сообщения: 151
- Зарегистрирован: 2014-06-26 18:38:44
- Откуда: DafaultCity
- Контактная информация:
Re: Freebsd Hotspot
Реализовал для посетителей, по большому счету работает с некоторыми "НО". Еще предстоит подумать как VIP юзеров пропускать, думаю стоит посмотреть в строну работы с таблицами.
Тут дело даже не в слабом скиле php, меня коробит от таких вещей:
Что пользователь от которого работает апач имеет право на это, дыра в безопасности... Но другого решения я быстро придумать не могу пока.
Продолжение темы тут
Тут дело даже не в слабом скиле php, меня коробит от таких вещей:
Код: Выделить всё
define('RULE_ADD_IP', '/usr/local/bin/sudo /sbin/ipfw add %s pipe 1 ip from any to %s');
define('RULE_ADD_IP2', '/usr/local/bin/sudo /sbin/ipfw add %s pipe 2 ip from %s to any');
define('RULE_DEL_IP', '/usr/local/bin/sudo /sbin/ipfw delete %s');
define('RULE_DEL_IP2', '/usr/local/bin/sudo /sbin/ipfw delete %s');
Продолжение темы тут
-
- проходил мимо
Re: Freebsd Hotspot
Хм... чуть ли не 2 недели в ступе воду толочь! (Ето вместо того, чтобы - в худшем случае немного покурить пхп-маны - в каких-то пару-тройку дней приспособить готовое решение к своему ТЗ!) Убедились наконец, что все ваши потуги решить задачу на одном лишь файере/сквиде (т.е. без нативных http+php технологий) есть... хм, ересь, достойная разного рода псевдорешаниям хм, от "волшебника-недоучки" (с) ? 
Дам лишь пару хинтов... //"Дам наводку, но не подаю на водку" (с)
Ваше утверждение, - здесь в последнем посте, - дескать, "пользователь от которого работает апач имеет право на это, дыра в безопасности" -- просто есть типичнейшая глупость... либо твердолобость упёртого технократа, знающего вместо всего поля проф-деятельности лишь небольшую частичку реальности. Ибо при правильной организации метода доступа*, соответствующей существующей реальности, для того самого (из статей) виртуального юзера "васи" (надеюсь, вы понимаете, что ето имя условное и НИЗЗЯ юзать ничего похожего, подбираемого по словарям) ето решение АБСОЛЮТНО правильное и в достаточной мере (для реального, а не абстрактного применения) вполне безопасное.
* Стародавнее правило никс-профи: для таких юзверей создаётся учётка БЕЗ шелла! (Всякий "автоматический" нет-юзверь обычно так и создаётся... По крайней мере, таковой она должна стать на момент после отладки: при включания системы "в боевые условия". И тогда все кулхацкеры идут лесом...
А взломать весь [веб-]сервак, конечно, при его типовой нормальной защите и адекватной конфе - ето достаточно высококвалиф. взлом... оно им надо?)
Второе, во всех тутошних (по пруфам) статьях в пхп-скриптах заюзаны примитивные решения - так, как будто не существует такого мощного инструмента, как пхп-сессии. Ввод последних (ето несложно, всего в несколько строчек в тех 2-3 заюзанных автором скриптах) позволит кардинально решить отмеченные комментаторами недостатки авторских скриптов...
Как-то так вкратце.
Успехов! (И прежде всего в изменении реальности в своих мозгах: для избавления от технократисткого /или ака "волшебник-недоучкинского"/ э-э-э... "монизма" решений, прикладываемых к реализации задачи!
)

Дам лишь пару хинтов... //"Дам наводку, но не подаю на водку" (с)
Ваше утверждение, - здесь в последнем посте, - дескать, "пользователь от которого работает апач имеет право на это, дыра в безопасности" -- просто есть типичнейшая глупость... либо твердолобость упёртого технократа, знающего вместо всего поля проф-деятельности лишь небольшую частичку реальности. Ибо при правильной организации метода доступа*, соответствующей существующей реальности, для того самого (из статей) виртуального юзера "васи" (надеюсь, вы понимаете, что ето имя условное и НИЗЗЯ юзать ничего похожего, подбираемого по словарям) ето решение АБСОЛЮТНО правильное и в достаточной мере (для реального, а не абстрактного применения) вполне безопасное.
* Стародавнее правило никс-профи: для таких юзверей создаётся учётка БЕЗ шелла! (Всякий "автоматический" нет-юзверь обычно так и создаётся... По крайней мере, таковой она должна стать на момент после отладки: при включания системы "в боевые условия". И тогда все кулхацкеры идут лесом...

Второе, во всех тутошних (по пруфам) статьях в пхп-скриптах заюзаны примитивные решения - так, как будто не существует такого мощного инструмента, как пхп-сессии. Ввод последних (ето несложно, всего в несколько строчек в тех 2-3 заюзанных автором скриптах) позволит кардинально решить отмеченные комментаторами недостатки авторских скриптов...
Как-то так вкратце.
Успехов! (И прежде всего в изменении реальности в своих мозгах: для избавления от технократисткого /или ака "волшебник-недоучкинского"/ э-э-э... "монизма" решений, прикладываемых к реализации задачи!

- wien
- сержант
- Сообщения: 151
- Зарегистрирован: 2014-06-26 18:38:44
- Откуда: DafaultCity
- Контактная информация:
Re: Freebsd Hotspot
Хотспот к боевой эксплуатации почти готов. Воспользовался статьей с хабра. Однако, в статье имеются существенные недостатки. Я опишу для тех в первую очередь, кто последует советам из статьи и наступит на те же грабли.
1. Синтаксис (скрипт не отрабатывал)
2. Принципиальная ошибка(недоработка или как хотите). Согласно статье разрешающие правила в фаерволе с номера 200 по 600, итого 400, по 2 на юзера, а значит что одновременно может принять не более 200 юзеров, ну это в идеале. Далее самое интересное. Если обновить страницу open.php 200 раз, то можно занять все правила своим ип и пока не выйдет лимит никто подключиться не сможет. Окей, написал небольшой патч. В файл open.php добавляем строчки:
3. Считаю негоже неизвестных тебе людей пускать без прокси, поэтому поставил squid и заменил в файле config.php строчки
На
4.Добавил возможность в скрипте config.php регулировать выдачу трафика и времени в рабочее и свободное время. Патчим:
Строки
Убираем и вместо них вписываем:
1. Синтаксис (скрипт не отрабатывал)
Код: Выделить всё
$temp = 0;
$sql = 'SELECT rule_num FROM hotspot ORDER BY rule_num';
$res = mysql_query($sql);
if ($res)
{
$t = mysql_fetch_array($res);
if (!$t) $rule_num = RULE_NUM_MIN;
else {
while ($temp = mysql_fetch_array($res))
{
if (($t[0]+1) < $temp[0]) break;
$t = $temp;
}
$rule_num = $t[0]+1; //у автора небыло тут точки с запятой
}
} else return false;
Код: Выделить всё
////////Фрагмент////////
<?php
require_once('config.php');
$user_ip = $_SERVER['REMOTE_ADDR'];
$current_date = time();
/////////////////////патчим/////////////////////
// Предотвращаем повторную регистрацию IP
$cmd="/usr/local/bin/sudo /sbin/ipfw list";
$result = "";
if (is_callable("exec"))
{
exec($cmd,$result); $result = join("\n",$result);
}
else echo "no exec";
if(substr_count($result, $user_ip)>=2)
{
exit();
}
////////////////////////////////////////////////
//Тут мы находим первый свободный номер правил файрвола. У нас они начинаются с 200. Это прописано в RULE_NUM_MIN.
$temp = 0;
$sql = 'SELECT rule_num FROM hotspot ORDER BY rule_num';
$res = mysql_query($sql);
if ($res)
{
////Конец фрагмента/////
Код: Выделить всё
//Команды, которыми открывается или закрывается доступ к интернету
define('RULE_ADD_IP', '/usr/local/bin/sudo /sbin/ipfw add %s pipe 1 ip from any to %s');
define('RULE_ADD_IP2', '/usr/local/bin/sudo /sbin/ipfw add %s pipe 2 ip from %s to any');
Код: Выделить всё
//Команды, которыми открывается доступ к интернету
define('RULE_ADD_IP', '/usr/local/bin/sudo /sbin/ipfw add %s fwd 127.0.0.1,3128 tcp from %s to any 80 via vr0');
define('RULE_ADD_IP2', '/usr/local/bin/sudo /sbin/ipfw add %s nat 1 ip from %s to any via vr0');
Строки
Код: Выделить всё
define('CLIENTS_TIME', '1800'); //Время для клиента 30 минут (в секундах)
define('CLIENTS_TRAF', '30'); //Лимит трафика в мегабайтах
Код: Выделить всё
if(date("w")>=1 and date("w")<=5 and date("H")>=8 and date("H")<=17)
{
// Лимит для периода пн-пт(08.00-17.59)
define('CLIENTS_TIME', '600'); //Время для клиента 10 минут (в секундах)
define('CLIENTS_TRAF', '20'); //Лимит трафика в мегабайтах
}
else
{
// Лимит для периода пн-пт(18.00-07.59) и выходных.
define('CLIENTS_TIME', '1200'); //Время для клиента 20 минут (в секундах)
define('CLIENTS_TRAF', '50'); //Лимит трафика в мегабайтах
}
- wien
- сержант
- Сообщения: 151
- Зарегистрирован: 2014-06-26 18:38:44
- Откуда: DafaultCity
- Контактная информация:
Re: Freebsd Hotspot
Намеренно разбил на 2 сообщения, ибо одно это многабукаф.
Немного о логике работы скриптов. Допустим подключился первый клиент, для него создались 200 и 400 правила. Второй, создались 201 и 401. Третий, 202 и 402. И тут первый клиент исчерпал свой лимит, правила 200 и 400 удалились. Подключился четвертый клиент, для него создались 203 и 403 правила. Имхо не есть гуд, что счетчик тупо инкрементирует, а не смотрит в первую очередь на первый свободный номер начиная с 200-го. Я к тому, что при данной схеме народ может ожидать своей порции инета пока 200 клиент не исчерпает лимит, т.е. не удаляться 399 и 599 правила соответственно. Помогите поправить багу, ковырялся, пока решение не пришло. Ссылка на статью по которой делал постом выше.
Немного о логике работы скриптов. Допустим подключился первый клиент, для него создались 200 и 400 правила. Второй, создались 201 и 401. Третий, 202 и 402. И тут первый клиент исчерпал свой лимит, правила 200 и 400 удалились. Подключился четвертый клиент, для него создались 203 и 403 правила. Имхо не есть гуд, что счетчик тупо инкрементирует, а не смотрит в первую очередь на первый свободный номер начиная с 200-го. Я к тому, что при данной схеме народ может ожидать своей порции инета пока 200 клиент не исчерпает лимит, т.е. не удаляться 399 и 599 правила соответственно. Помогите поправить багу, ковырялся, пока решение не пришло. Ссылка на статью по которой делал постом выше.
- wien
- сержант
- Сообщения: 151
- Зарегистрирован: 2014-06-26 18:38:44
- Откуда: DafaultCity
- Контактная информация:
Re: Freebsd Hotspot
Народ, ну что есть идеи как пофиксить?
-
- капитан
- Сообщения: 1820
- Зарегистрирован: 2010-12-25 20:41:50
- Откуда: Хлебная столица
Re: Freebsd Hotspot
Ответа не имею, не копал.
Имею вопрос. Есть мысль сделать простейший лог кто подключился, кто отключился, кто подбирал пароль на WiFi. А то купил антенну 5/8, она стреляет по всему двору. Надо бы контролировать безопасность.
Имею вопрос. Есть мысль сделать простейший лог кто подключился, кто отключился, кто подбирал пароль на WiFi. А то купил антенну 5/8, она стреляет по всему двору. Надо бы контролировать безопасность.
- wien
- сержант
- Сообщения: 151
- Зарегистрирован: 2014-06-26 18:38:44
- Откуда: DafaultCity
- Контактная информация:
Re: Freebsd Hotspot
На это у меня есть dhcpd.logBayerische писал(а):...сделать простейший лог кто подключился, кто отключился...
В данном случае Hotspot, т.е. сеть открытая....кто подбирал пароль на WiFi. А то купил антенну 5/8, она стреляет по всему двору. Надо бы контролировать безопасность.