Перейти до

Как у меня уживаются VPN и старгейзер


Рекомендованные сообщения

Хочу выложить свою уже вторую реализацию того как мне удалось подружить 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

Ссылка на сообщение
Поделиться на других сайтах

И так что сделал установил всё на одну машину.

В скрипте 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.

Ссылка на сообщение
Поделиться на других сайтах

Далее настроли 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.

Хотелось бы услышать чьё нибудь мнение так как система находится в стадии доработки...

Ссылка на сообщение
Поделиться на других сайтах

Мое мнение: можно /billing/user_connect/allow_${userip}.sh запихнуть прямо в Onconnect.

И остальные скрипты сделать попроще.

Но это просто косметика.

Главное, что работает =))

А как насчет сделать подсчет через divert?

Ссылка на сообщение
Поделиться на других сайтах

Пока ещё не разобрался как этот подсчёт рабоает... :)

Документации с примерами нет... Во и изащеряюсь как могу... Темболее что подсёт через диверт это доп. нагрузка на проц, а он у меня без кулера рабоает и не греется.. :))

Ссылка на сообщение
Поделиться на других сайтах

как аналог - сейчас тестится модуль для СТГ котоырй работает как плагин к pptpd :)

 

а вообще скрипты очень хороши, надо просить автора добавить их на сайт ....

Ссылка на сообщение
Поделиться на других сайтах

Спасибо POWERLan - именно от тебя я заимствовал эту модель..

Если надо скрипты вуаля говорите что надо и куда кидать, просто в разработке они постоянно, тоесть там версия есть...

Вот только один минус они только под FREEBSD и язяык SH.

В перспективе есть идея добавить в главный скрипт add функцию нарезки канала с помошью ipfw... Скоро над этим буду работать...

А насчёт pptpd плагина - боюсь что я не смогу слезть с mpd - там всё так крепко завязано что уже разве что совсем всё сносить... Да и знаю я mpd превосходно... Вот по этому и написал что pptpd - это не мпд и не дождусь я вот так и живём...

Ссылка на сообщение
Поделиться на других сайтах
Спасибо POWERLan - именно от тебя я заимствовал эту модель..

Если надо скрипты вуаля говорите что надо и куда кидать, просто в разработке они постоянно, тоесть там версия есть...

Вот только один минус они только под FREEBSD и язяык SH.

В перспективе есть идея добавить в главный скрипт add функцию нарезки канала с помошью ipfw... Скоро над этим буду работать...

А насчёт pptpd плагина - боюсь что я не смогу слезть с mpd - там всё так крепко завязано что уже разве что совсем всё сносить... Да и знаю я mpd превосходно... Вот по этому и написал что pptpd - это не мпд и не дождусь я вот так и живём...

Спасиб)

Мне щас VPN нужен позарез но не совсем врубился что к чему

Если не сложно то можна в аську 161594743 ))

Ссылка на сообщение
Поделиться на других сайтах

может я не дочитал чегото?

но впн как и сам авторизатор от сервера к клиенту трафик локальный

легко зделать ALL 10.1.1.1 (ип. сервера) DIR0 а в тарифах указать его бесплатным!

Ссылка на сообщение
Поделиться на других сайтах
может я не дочитал чегото?

но впн как и сам авторизатор от сервера к клиенту трафик локальный

легко зделать ALL 10.1.1.1 (ип. сервера) DIR0 а в тарифах указать его бесплатным!

Эт ты к чему?

Ссылка на сообщение
Поделиться на других сайтах
может я не дочитал чегото?

но впн как и сам авторизатор от сервера к клиенту трафик локальный

легко зделать ALL  10.1.1.1 (ип. сервера) DIR0 а в тарифах указать его бесплатным!

Эт ты к чему?

ну там человек писал что впн тоже жрет трафик (ну это и так ясно) - так его зделать беспл можно и пусть себе жрет дальше:(

 

Из миинусов данной системы то что считает она больше чем должна, так как в данном примере считаются все пакеты пришедшие от сервера до клиента без разницы по vpn или нет, так вот если работаем с pptp то данные tcp стека инкапсулирутся в pptp из - за этого добавляется дополнительный заголовок! Что и создаёт лишний трафик, вот этим приходится платить за vpn.

Хотелось бы услышать чьё нибудь мнение так как система находится в стадии доработки...

Ссылка на сообщение
Поделиться на других сайтах

От этого к сожалению ни как не избавиться! Так как стг не умеет считать с виртуальных интерфейсов!!!!!!!!

А как тогда считать? Выход прост считать всё что идёт от сервера до клиента! По другому никак!

А если поставить ALL 10.1.1.1 (ип. сервера) DIR0 а в тарифах указать его бесплатным! То этот самй трафик будет бесплатным! И эффекту 0!

Ссылка на сообщение
Поделиться на других сайтах
  • 4 weeks later...

да хороший вопрос! хотя бы для теста

 

и еще "старгезер последий" - собранный с девертом?

попробывал, на сервере из пакета - не считает....

Ссылка на сообщение
Поделиться на других сайтах
  • 4 months later...
2Max: поправка - с виртуальных интерфейсов стг считать умеет посредством divert'а =)

собрал СТГ с -DCAPIPQ т.е. я так понимаю с поддержкой диверта, скрипты OnConnect OnDisconnect поправил на предмет -j QUEUE.

Создаю тестового юзера "всегда онлайн" с предопределеннім адресом (который выдается)

В итоге:

поднимаю ВПН, в iptables вижу все проходит через QUEUE, т.е. он считает все, смотрю в конфигураторе - ПУСТО... где могут быть вилы, ХЕЛП.

 

PS система АСП10 + апдейты все свежие

Ссылка на сообщение
Поделиться на других сайтах
  • 1 year later...

Поднял ВПН на линуксе (pptpd + pppd). Авторизируешься по ВПН, получаешь адрес из другой подсети. Этот адрес записан в stg и стоит всегда онлайн. Пользователю летит инет, но траф не считается.

Тестил на Gentoo-2.6.11 stg - 2.4.86 и stg 2.401.9.7.

 

Даже если stargazer научится считать с туннелей, то что мешает пользователю прописать ИП из этой подсети и получать инет без авторизации по ВПН ?

 

Может я чего не понял, обьясните.

Ссылка на сообщение
Поделиться на других сайтах

проблема с подсчётом решается просто:

используйте а) ipq

б) нетфлоу

 

Мешает правильно настроенный фаерволл который разрешает работать с данной подсеть только с NG* (или в линуксе ppp*) интерфейсов

 

А вообще то нужно потерпеть с месяцок тогда полностью закончится наша работа по написанию VPN модуля к стг 2.4+

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...