Механизм прерывания активных vpn сессий

Технические вопросы по UTM 5.0
Lelik85
Сообщения: 76
Зарегистрирован: Вт апр 18, 2006 16:14

Сообщение Lelik85 »

У меня версия 4.1 (как можно видеть из лога) :)
Mpd pid 2106, version 4.1 (root@alpha 04:54 5-Apr-2007)

dAverk
Сообщения: 43
Зарегистрирован: Сб июн 09, 2007 18:23

Сообщение dAverk »

а я и не заметил :oops:

у мну как видите 4.2.2 - может какие изменения в нём сделали и не тормозит теперь? похоже так и есть

Lelik85
Сообщения: 76
Зарегистрирован: Вт апр 18, 2006 16:14

Сообщение Lelik85 »

Скорее всего так оно и есть.
Уже скачал версию 4.3. На днях буду ставить.
О результатах отчитаюсь.

dAverk
Сообщения: 43
Зарегистрирован: Сб июн 09, 2007 18:23

Сообщение dAverk »

ок - ждёмс. заодно расскажешь как 4.3 пашет и стоит ли ща грейдится на него х)

Blackmore
Сообщения: 365
Зарегистрирован: Вс фев 06, 2005 09:24
Откуда: подмосковье

Сообщение Blackmore »

можно ставить и использовать, заодно можно прикрутить вот это http://l2nt.info/files/ng_pppoe.c.session.diff

Патч добавляет следующую функциональность:
+ Подключение к заданному концентратору
Для этого в конфиге MPD или PPP при задании имя сервиса (Service-Name) необходимо указать имя концентратора. Формат записи имени концентратора и сервиса совместим с Windows:
1) Пусто либо "*": Подключаемся к сервису по умолчанию к первому ответившему концентратору
2) "Имя-сервиса": Подключаемся к первому ответившему концентратору на запрошенный сервис
3) "Имя-концентратора\": Подключаемся к сервису по умолчанию к указанному концентратору
4) "Имя-концентратора\Имя-сервиса": Подключаемся к указанному сервису указанного концентратора.

Соответственно в конфигах MPD или PPP c двумя слэшами. Пример для MPD:
Код
set pppoe service "AC-Name\\"

Либо подключится к указанному концентратору (AC-Name), либо не подключится вообще, даже если ответят концентраторы с другими именами.

+ В логах MPD, PPP пишутся все ответившие концентраторы, а не только тот к которому подключились, что очень удобно и наглядно видно кто из провайдеров "жив", а кто нет (в случае нескольких ISP).

- Исправляет ошибку модуля:
kernel: ng_pppoe[9]: session in wrong state
Данная ошибка обусловлена тем, что реализация модуля не предусматривает ответ от множественных концентраторов и возникает в случае получения ответа PADO при уже начавшемся подключении к первому ответившему (либо нужному) концентратору.

Патч для ng_pppoe.с:
* $FreeBSD: src/sys/netgraph/ng_pppoe.c,v 1.74.2.3 2006/09/02 12:38:26 glebius
* $Whistle: ng_pppoe.c,v 1.10 1999/11/01 09:24:52 julian Exp $

Применять:
patch -u <ng_pppoe.c.session.diff

сообщение о патче было на nag.ru
вот здесь http://forum.nag.ru/forum/index.php?showtopic=38623

48 часов полет нормальный - 500 бандлов, активно ~ 350
FreeBSD 6.2 p4 1700 512 mb RAM

ЗЫ: прошу прощения за некоторый оффтоп

drained
Сообщения: 12
Зарегистрирован: Ср май 28, 2008 09:11

Сообщение drained »

Извеняюсь за оффтоп, кому не жалко поделитесь пожалуйста скриптом прерывания активных pptp сесий для mpd5, вариант скрипта с закрытием бандла через консоль с помощью netcat или telnet не работает корректно (во всяком случае у меня)

Snelius
Сообщения: 2
Зарегистрирован: Пт сен 12, 2008 14:49

Сообщение Snelius »

нарисовал для mpd5.1 вот такой вот простенький, работает.

Код: Выделить всё

#!/usr/local/bin/bash                                                                                                                                 
MHOST="192.168.12.2" # mpd host                                                                                                                       
MPORT=5045 # mpd telnet port                                                                                                                          
IP="$1";                                                                                                                                              
                                                                                                                                                      
test -z "$IP" && exit 1                                                                                                                               
                                                                                                                                                      
bundle=`printf "login&#91;/b&#93;\rPassword\rshow session\r" | /usr/bin/nc $MHOST $MPORT | grep $IP | awk '&#123;print $3&#125;'`;                         
                                                                                                                                                                                                                
if &#91; "$bundle" != '' &#93; ; then                                                                                                                         
        printf "Login\rPassword\rbundle $bundle\rclose\r" | /usr/bin/nc $MHOST $MPORT 1> /dev/null                                                    
fi                                                                                                                                                                                                                                                                               
                                                                                                                                                      
exit 0

drained
Сообщения: 12
Зарегистрирован: Ср май 28, 2008 09:11

Сообщение drained »

Огромное спасибо за помощь, уже написал скрипт, который обращается в консоль фаервола, ищет там нужного пользователя по ip передаваемому правилами файерволла NetUp и перекрывает ему доступ в инет

user 1012
Сообщения: 10
Зарегистрирован: Вт дек 29, 2009 21:18

Скрипт для прерывания vpn сессии

Сообщение user 1012 »

Snelius писал(а):нарисовал для mpd5.1 вот такой вот простенький, работает.

Код: Выделить всё

#!/usr/local/bin/bash                                                                                                                                 
MHOST="192.168.12.2" # mpd host                                                                                                                       
MPORT=5045 # mpd telnet port                                                                                                                          
IP="$1";                                                                                                                                              
                                                                                                                                                      
test -z "$IP" && exit 1                                                                                                                               
                                                                                                                                                      
bundle=`printf "login&#91;/b&#93;\rPassword\rshow session\r" | /usr/bin/nc $MHOST $MPORT | grep $IP | awk '&#123;print $3&#125;'`;                         
                                                                                                                                                                                                                
if &#91; "$bundle" != '' &#93; ; then                                                                                                                         
        printf "Login\rPassword\rbundle $bundle\rclose\r" | /usr/bin/nc $MHOST $MPORT 1> /dev/null                                                    
fi                                                                                                                                                                                                                                                                               
                                                                                                                                                      
exit 0
Рябята помогите, хотел у себя организовать автоматическое прерывание vpn сессий по выше указаному скрипту, но вот незадача когда я его запускаю в логах пишется вот такая хрень:
mpd.log:
Jan 7 12:56:27 server mpd: CONSOLE: Connect
Jan 7 12:56:27 server mpd: CONSOLE: Allocated new console session 0x2862c008 from 192.168.110.245
Jan 7 12:56:27 server mpd: CONSOLE: Failed login attempt from 192.168.110.245
Jan 7 12:56:27 server mpd: CONSOLE: Connection closed by peer
с vpn сессией ничего неслучилось
настраиваю на freebsd7.2 utm5 сборка 006 mpd 5.3
mpd.conf:
<------>#configure mpd users
<------>set user
<------># configure the console
<------>set console self 192.168.110.245 5005
<------>set console open
<------>#configure the web server
<------>set web self 0.0.0.0 5006
<------>set web open
<------>set netflow peer 127.0.0.1 9996
#<----->set netflow self 127.0.0.1 9990
<------>set netflow timeouts 15 15
#<----->set netflow hook 9000
default:
<------>load pptp_server

pptp_server:

# Define dynamic IP address pool.
#<----->set ippool add pool1 192.168.110.1 192.168.110.255

# Create clonable bundle template named B
<------>create bundle template B
<------>set iface enable proxy-arp
<------>set iface enable netflow-in
<------>set iface enable netflow-out
<------>set iface idle 1800
<------>set iface enable tcpmssfix
<------>set ipcp yes vjcomp
# Specify IP address pool for dynamic assigment.
<------>set ipcp ranges 192.168.110.245/32 0.0.0.0/0
<------>set ipcp dns 81.222.112.24
#<----->set ipcp nbns 192.168.1.4
# The five lines below enable Microsoft Point-to-Point encryption
# (MPPE) using the ng_mppc( 8 ) netgraph node type.
<------>set bundle enable compression
<------>set ccp yes mppc
<------>set mppc yes e40
<------>set mppc yes e128
<------>set mppc yes stateless
# Set bundle template to use
<------>create link template L pptp
<------>set link action bundle B
# Multilink adds some overhead, but gives full 1500 MTU.
<------>set link enable multilink
<------>set link yes acfcomp protocomp
<------>set link no pap chap
<------>set link enable chap
# We can use use RADIUS authentication/accounting by including
# another config section with label 'radius'.
<------>load radius
<------>set link keep-alive 10 60
# We reducing link mtu to avoid GRE packet fragmentation.
<------>set link mtu 1460
<------>set pptp self 192.168.110.245
<------>set pptp disable windowing
<------>set pptp enable always-ack
Allow to accept calls
set link enable incoming

radius:
# You can use radius.conf(5), its useful, because you can share the
# same config with userland-ppp and other apps.
<------>set radius config /usr/local/etc/mpd5/radius.conf
# or specify the server directly here
<------>set radius server 127.0.0.1 1812 1813
<------>set radius retries 3
<------>set radius timeout 3
# send the given IP in the RAD_NAS_IP_ADDRESS attribute to the server.
<------>set radius me 127.0.0.1
# send accounting updates every 5 minutes
<------>set auth acct-update 300
# enable RADIUS, and fallback to mpd.secret, if RADIUS auth failed
<------>set auth enable radius-auth
# enable RADIUS accounting
<------>set auth enable radius-acct
# protect our requests with the message-authenticator
#<----->set radius enable message-authent
Подскажите что я неправильно делаю?
Последний раз редактировалось user 1012 Чт янв 07, 2010 12:16, всего редактировалось 1 раз.

user 1012
Сообщения: 10
Зарегистрирован: Вт дек 29, 2009 21:18

Сообщение user 1012 »

мой скрипт
mpd.vpn_drop.sh:
#!/usr/local/bin/bash
MHOST="192.168.110.245" #host
MPORT=5005 # mpd telnet port
IP="$1";

test -z "$IP" && exit 1
bundle=`printf "admin[/b]\radmin\rshow session\r" | /usr/bin/nc $MHOST $MPORT | grep $IP | awk '{print $3}'`;
if [ "$bundle" != '' ] ; then
printf "admin\radmin\rbundle $bundle\rclose\r" | /usr/bin/nc $MHOST $MPORT 1> /dev/null
fi
exit 0

Ответить