Max 0 Опубликовано: 2005-04-07 07:07:43 Share Опубликовано: 2005-04-07 07:07:43 Хочу выложить свою уже вторую реализацию того как мне удалось подружить vpn и старгейзер. 1. Система FreeBSD 4.9 2. VPN - mpd.3.18.tar 3. Старейзер последний. Оговорка: У меня используется система скриптов: один пользователь - два скрипта, тоесть на каждого пользователя заведён скрипт при подключении и отключении, именно за счёт этого была достигнута нужная мне гибкость, тоесть есть пользователи которые сидят на vpn а есть которые сидят на natd. Данные скрипты генерируются главным скриптом на sh: inet# cat /etc/stargazer/add #!/bin/sh clear echo "Version 0.45" echo "-----------------------------------------------------------------------" cat /billing/NUMBER echo -n "Введите имя пользователя: " read user_base_name echo -n "IP адрес: " read ipaddress echo -n "Первый номер правила в IPFW: " read number ipfw_number1=`expr $number + 1` ipfw_number2=`expr $number + 2` ipfw_number3=`expr $number + 3` #echo -n "Введите ширину полосы пропускания: " #read bw echo "-------------------" echo "Подтверждение:" echo "Login: $user_base_name" echo "IP: $ipaddress" echo "Номера: $number, $ipfw_number1, $ipfw_number2, $ipfw_number3" #echo "Ширина канала: $bw" echo -n "Потверждение(y/n)[yes]: " read yn if [ $yn = "no" ] then exit 0 fi #REGISTER USER echo "" echo "$user_base_name">>/billing/NUMBER echo "$number-$ipfw_number3">>/billing/NUMBER #PARAM DIR_ALLOW="/billing/user_connect/allow_$ipaddress.sh" DIR_DENY="/billing/user_disconnect/deny_$ipaddress.sh" #ALLOW echo "#!/bin/sh">>$DIR_ALLOW echo "#" $DIR_ALLOW echo "">>$DIR_ALLOW echo "username='$user_base_name'">>$DIR_ALLOW echo "ipfw a $number allow tcp from $ipaddress to me 25,110,3128,443">>$DIR_ALLOW echo "ipfw a $ipfw_number1 allow udp from $ipaddress to me domain">>$DIR_ALLOW echo "ipfw a $ipfw_number2 fwd 10.203.0.2,3128 tcp from $ipaddress to any http">>$DIR_ALLOW echo "ipfw a $ipfw_number3 divert natd all from $ipaddress to any via ng0">>$DIR_ALLOW chmod 700 $DIR_ALLOW sleep 1 #DENY echo "#!/bin/sh">>$DIR_DENY echo "">>$DIR_DENY date >>$DIR_DENY echo "">>$DIR_DENY echo "username='$user_base_name'">>$DIR_DENY echo "ipfw delete $ipfw_count_number">>$DIR_DENY echo "ipfw delete $number">>$DIR_DENY echo "ipfw delete $ipfw_number1">>$DIR_DENY echo "ipfw delete $ipfw_number2">>$DIR_DENY echo "ipfw delete $ipfw_number3">>$DIR_DENY chmod 700 $DIR_DENYinet Ссылка на сообщение Поделиться на других сайтах
Max 0 Опубліковано: 2005-04-07 07:10:58 Автор Share Опубліковано: 2005-04-07 07:10:58 И так что сделал установил всё на одну машину. В скрипте Onconnect происходит определение ip адреса абонента, а затем выполняется нужный скрипт. Вот тело: Onconnect: #!/bin/sh # Login LOGIN=$1 #user IP echo $2 IP=$2 userip=`echo $2` sh /billing/user_connect/allow_${userip}.sh #cash CASH=$3 #user ID ID=$4 echo "C `date +%Y.%m.%d-%H.%M.%S` $IP $CASH" >> /billing/users/$LOGIN/connect.log Как уже понятно есть каталог /billing/user_connect/ где лежат файлы допуска к интеу. В скрипте дисконект просто удаление нужных правил. Вот тело allow_10.203.0.4.sh #!/bin/sh username='max' ipfw add 20340 allow tcp from 10.203.0.4 to me 25,110,3128,443 ipfw add 20341 allow udp from 10.203.0.4 to me domain ipfw add 20342 fwd 10.203.0.2,3128 tcp from 10.203.0.4 to any http ipfw add 20343 divert natd all from 10.203.0.4 to any via ng0 По умолчанию у моего сервера политика firewall запрет. Это всё были обычные пользователи без vpn. Ссылка на сообщение Поделиться на других сайтах
Max 0 Опубліковано: 2005-04-07 07:22:40 Автор Share Опубліковано: 2005-04-07 07:22:40 Далее настроли mpd благо доков на opennet.ru куча, хотя если кому то интересно могу выложить... Завёл в mpd.secret пользователей, идентичных старгейзеру, и исправил disconnect_userip.sh на: ipfw a 20304 deny all from xx.xx.xx.xx to any где xx - выдаваемый ip клиенту (по vpn) allow_userip.sh на: ipfw d 20304 В старгейзере в настройке клиента (ipaddress) стоит внутренний ip тоесть 10.203.0.4 например. Из миинусов данной системы то что считает она больше чем должна, так как в данном примере считаются все пакеты пришедшие от сервера до клиента без разницы по vpn или нет, так вот если работаем с pptp то данные tcp стека инкапсулирутся в pptp из - за этого добавляется дополнительный заголовок! Что и создаёт лишний трафик, вот этим приходится платить за vpn. Хотелось бы услышать чьё нибудь мнение так как система находится в стадии доработки... Ссылка на сообщение Поделиться на других сайтах
XoRe 0 Опубліковано: 2005-04-07 07:55:52 Share Опубліковано: 2005-04-07 07:55:52 Мое мнение: можно /billing/user_connect/allow_${userip}.sh запихнуть прямо в Onconnect. И остальные скрипты сделать попроще. Но это просто косметика. Главное, что работает =)) А как насчет сделать подсчет через divert? Ссылка на сообщение Поделиться на других сайтах
Max 0 Опубліковано: 2005-04-07 08:48:47 Автор Share Опубліковано: 2005-04-07 08:48:47 Пока ещё не разобрался как этот подсчёт рабоает... Документации с примерами нет... Во и изащеряюсь как могу... Темболее что подсёт через диверт это доп. нагрузка на проц, а он у меня без кулера рабоает и не греется.. ) Ссылка на сообщение Поделиться на других сайтах
egor2fsys 5 Опубліковано: 2005-04-07 09:48:03 Share Опубліковано: 2005-04-07 09:48:03 как аналог - сейчас тестится модуль для СТГ котоырй работает как плагин к pptpd а вообще скрипты очень хороши, надо просить автора добавить их на сайт .... Ссылка на сообщение Поделиться на других сайтах
POWERLan 0 Опубліковано: 2005-04-07 09:48:33 Share Опубліковано: 2005-04-07 09:48:33 2ва скрипта на юзера у меня уже давно)) Очень просто зделано и главное удобно ) Ссылка на сообщение Поделиться на других сайтах
Max 0 Опубліковано: 2005-04-07 13:40:23 Автор Share Опубліковано: 2005-04-07 13:40:23 Спасибо POWERLan - именно от тебя я заимствовал эту модель.. Если надо скрипты вуаля говорите что надо и куда кидать, просто в разработке они постоянно, тоесть там версия есть... Вот только один минус они только под FREEBSD и язяык SH. В перспективе есть идея добавить в главный скрипт add функцию нарезки канала с помошью ipfw... Скоро над этим буду работать... А насчёт pptpd плагина - боюсь что я не смогу слезть с mpd - там всё так крепко завязано что уже разве что совсем всё сносить... Да и знаю я mpd превосходно... Вот по этому и написал что pptpd - это не мпд и не дождусь я вот так и живём... Ссылка на сообщение Поделиться на других сайтах
POWERLan 0 Опубліковано: 2005-04-07 18:44:46 Share Опубліковано: 2005-04-07 18:44:46 Спасибо POWERLan - именно от тебя я заимствовал эту модель..Если надо скрипты вуаля говорите что надо и куда кидать, просто в разработке они постоянно, тоесть там версия есть... Вот только один минус они только под FREEBSD и язяык SH. В перспективе есть идея добавить в главный скрипт add функцию нарезки канала с помошью ipfw... Скоро над этим буду работать... А насчёт pptpd плагина - боюсь что я не смогу слезть с mpd - там всё так крепко завязано что уже разве что совсем всё сносить... Да и знаю я mpd превосходно... Вот по этому и написал что pptpd - это не мпд и не дождусь я вот так и живём... Спасиб) Мне щас VPN нужен позарез но не совсем врубился что к чему Если не сложно то можна в аську 161594743 )) Ссылка на сообщение Поделиться на других сайтах
Max 0 Опубліковано: 2005-04-09 06:20:38 Автор Share Опубліковано: 2005-04-09 06:20:38 Хорошо в понедельник попытаюсь связаться, если не поздно... Ссылка на сообщение Поделиться на других сайтах
centre-lan 1 Опубліковано: 2005-04-09 10:09:36 Share Опубліковано: 2005-04-09 10:09:36 может я не дочитал чегото? но впн как и сам авторизатор от сервера к клиенту трафик локальный легко зделать ALL 10.1.1.1 (ип. сервера) DIR0 а в тарифах указать его бесплатным! Ссылка на сообщение Поделиться на других сайтах
POWERLan 0 Опубліковано: 2005-04-09 10:14:31 Share Опубліковано: 2005-04-09 10:14:31 может я не дочитал чегото?но впн как и сам авторизатор от сервера к клиенту трафик локальный легко зделать ALL 10.1.1.1 (ип. сервера) DIR0 а в тарифах указать его бесплатным! Эт ты к чему? Ссылка на сообщение Поделиться на других сайтах
centre-lan 1 Опубліковано: 2005-04-09 10:19:28 Share Опубліковано: 2005-04-09 10:19:28 может я не дочитал чегото?но впн как и сам авторизатор от сервера к клиенту трафик локальный легко зделать ALL 10.1.1.1 (ип. сервера) DIR0 а в тарифах указать его бесплатным! Эт ты к чему? ну там человек писал что впн тоже жрет трафик (ну это и так ясно) - так его зделать беспл можно и пусть себе жрет дальше Из миинусов данной системы то что считает она больше чем должна, так как в данном примере считаются все пакеты пришедшие от сервера до клиента без разницы по vpn или нет, так вот если работаем с pptp то данные tcp стека инкапсулирутся в pptp из - за этого добавляется дополнительный заголовок! Что и создаёт лишний трафик, вот этим приходится платить за vpn. Хотелось бы услышать чьё нибудь мнение так как система находится в стадии доработки... Ссылка на сообщение Поделиться на других сайтах
Max 0 Опубліковано: 2005-04-09 16:55:02 Автор Share Опубліковано: 2005-04-09 16:55:02 От этого к сожалению ни как не избавиться! Так как стг не умеет считать с виртуальных интерфейсов!!!!!!!! А как тогда считать? Выход прост считать всё что идёт от сервера до клиента! По другому никак! А если поставить ALL 10.1.1.1 (ип. сервера) DIR0 а в тарифах указать его бесплатным! То этот самй трафик будет бесплатным! И эффекту 0! Ссылка на сообщение Поделиться на других сайтах
XoRe 0 Опубліковано: 2005-04-09 22:02:53 Share Опубліковано: 2005-04-09 22:02:53 2Max: поправка - с виртуальных интерфейсов стг считать умеет посредством divert'а =) Ссылка на сообщение Поделиться на других сайтах
egor2fsys 5 Опубліковано: 2005-04-10 04:57:01 Share Опубліковано: 2005-04-10 04:57:01 ага и не только посредством диверта, но и с помощью плагина для ВПН Ссылка на сообщение Поделиться на других сайтах
POWERLan 0 Опубліковано: 2005-04-10 08:00:27 Share Опубліковано: 2005-04-10 08:00:27 ага и не только посредством диверта, но и с помощью плагина для ВПН он пока только для Линукса Ссылка на сообщение Поделиться на других сайтах
_Om_ 0 Опубліковано: 2005-04-12 13:40:36 Share Опубліковано: 2005-04-12 13:40:36 ага и не только посредством диверта, но и с помощью плагина для ВПН он пока только для Линукса дык а где етот модуль можно взять ? Ссылка на сообщение Поделиться на других сайтах
keshaLG 5 Опубліковано: 2005-05-07 21:51:26 Share Опубліковано: 2005-05-07 21:51:26 да хороший вопрос! хотя бы для теста и еще "старгезер последий" - собранный с девертом? попробывал, на сервере из пакета - не считает.... Ссылка на сообщение Поделиться на других сайтах
keshaLG 5 Опубліковано: 2005-09-18 07:07:09 Share Опубліковано: 2005-09-18 07:07:09 2Max: поправка - с виртуальных интерфейсов стг считать умеет посредством divert'а =) собрал СТГ с -DCAPIPQ т.е. я так понимаю с поддержкой диверта, скрипты OnConnect OnDisconnect поправил на предмет -j QUEUE. Создаю тестового юзера "всегда онлайн" с предопределеннім адресом (который выдается) В итоге: поднимаю ВПН, в iptables вижу все проходит через QUEUE, т.е. он считает все, смотрю в конфигураторе - ПУСТО... где могут быть вилы, ХЕЛП. PS система АСП10 + апдейты все свежие Ссылка на сообщение Поделиться на других сайтах
Render_ 0 Опубліковано: 2007-03-09 16:40:45 Share Опубліковано: 2007-03-09 16:40:45 Поднял ВПН на линуксе (pptpd + pppd). Авторизируешься по ВПН, получаешь адрес из другой подсети. Этот адрес записан в stg и стоит всегда онлайн. Пользователю летит инет, но траф не считается. Тестил на Gentoo-2.6.11 stg - 2.4.86 и stg 2.401.9.7. Даже если stargazer научится считать с туннелей, то что мешает пользователю прописать ИП из этой подсети и получать инет без авторизации по ВПН ? Может я чего не понял, обьясните. Ссылка на сообщение Поделиться на других сайтах
Max 0 Опубліковано: 2007-03-09 17:11:16 Автор Share Опубліковано: 2007-03-09 17:11:16 проблема с подсчётом решается просто: используйте а) ipq б) нетфлоу Мешает правильно настроенный фаерволл который разрешает работать с данной подсеть только с NG* (или в линуксе ppp*) интерфейсов А вообще то нужно потерпеть с месяцок тогда полностью закончится наша работа по написанию VPN модуля к стг 2.4+ Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас