Страница 1 из 1

MPD ngX

Добавлено: 2010-11-04 17:32:40
Dark_ASU
Вопрос такой как каждому юзеру выдавать свой интерфейс.
Скажем так привязать конкретного пользователь к конкретному ng.
Mpd 5.5 \FreeBsd 8.0

Re: MPD ngX

Добавлено: 2010-11-04 17:46:48
LMik
Насколько помню нельзя так привязать.

Re: MPD ngX

Добавлено: 2010-11-04 18:06:52
Dark_ASU
В 4 можно было а здесь хз как.

Re: MPD ngX

Добавлено: 2010-11-04 18:26:04
schizoid
не было такого ни в 4.х ни в 3.х

Re: MPD ngX

Добавлено: 2010-11-04 18:33:47
Dark_ASU
http://www.lissyara.su/articles/freebsd/security/mpd/
А это что и можно ли так сделать в 5.5

Re: MPD ngX

Добавлено: 2010-11-05 10:28:49
schizoid
а, ну для каждого ИПа интерфейс прописывать.....ну-ну
не запаритесь, если будет несколько сотен коннектов?

вопрос. зачем вам привязка юзер=интерфейс? почему не использовать привязку юзер=ИП

Re: MPD ngX

Добавлено: 2010-11-05 11:22:10
skeletor
schizoid писал(а):не было такого ни в 4.х ни в 3.х
А вот как раз было и есть в 4-ке такое!

Re: MPD ngX

Добавлено: 2010-11-05 11:53:36
schizoid
прописывая вручную и используя mpd.secret?
или это можно заюзать в связке с радиусом?

Re: MPD ngX

Добавлено: 2010-11-05 12:07:35
skeletor
Как хочешь, так и будет :)

Re: MPD ngX

Добавлено: 2010-11-05 18:02:55
Ыть
К ng_x не привязать никак.
Если надо задать ip для юзера - можно посмотреть в сторону радиуса - полезно бывает. Указываете login, pass, ip и все. :)

Re: MPD ngX

Добавлено: 2010-11-05 18:30:51
Гость
schizoid писал(а):прописывая вручную и используя mpd.secret?
или это можно заюзать в связке с радиусом?
это вы не в ngX привязывались, а к айпи
а айпи по интерфейсам могут прыгать как им вздумается

Re: MPD ngX

Добавлено: 2010-11-05 18:51:43
schizoid
я собсна об этом и говорю

Re: MPD ngX

Добавлено: 2010-11-08 21:13:31
darkin
а как быть, если надо к клиенту привязать ifup-script? клиенту выдается постоянный ip через mpd.secret, но клиент - маршрутизатор маленькой удаленной сети, и надо туда прописать маршрут. а как это сделать, если клиенты по ngX прыгают?

Re: MPD ngX

Добавлено: 2010-11-08 23:02:57
snorlov
darkin писал(а):а как быть, если надо к клиенту привязать ifup-script? клиенту выдается постоянный ip через mpd.secret, но клиент - маршрутизатор маленькой удаленной сети, и надо туда прописать маршрут. а как это сделать, если клиенты по ngX прыгают?
Поищи по форуме, уже это обсуждалось, там в скрипт в переменные, типа $1,$2, передаются и ip и ngX

Re: MPD ngX

Добавлено: 2010-11-09 0:00:50
schizoid

Re: MPD ngX

Добавлено: 2010-11-09 19:44:25
darkin
благодарю, уже разобрался.все оказалось просто, на всякий случай, может, кому пригодится:

mpd.conf, секция pptp_standart:
set iface up-script /usr/local/etc/mpd/routing.sh

routing.sh :

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

#!/bin/sh
if [ "$4" = "x.x.x.x" ]  #x.x.x.x - IP, прописанный нужному логину в mpd.secret
     then 
     route add -net y.y.y.y/24 x.x.x.x  #y.y.y.y - сеть за роутером-клиентом pptp
fi
так действительно получается - номер ng пофигу, маршрут по любому пропишется.
ну и таких IF-ов можно насовать сколько надо, по желанию. или вообще case сложить попробовать?

Re: MPD ngX

Добавлено: 2010-11-09 22:14:00
schizoid
мой up-скрипт :)

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

#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
###параметры получаемые при выполнении скрипта###
##$1   $2        $3            $4      $5
##ng0 inet 192.168.10.100/32 10.0.0.1 eugene

echo "$1 $2 $3 $4 $5 $6 $7 $8 $9"  >> /usr/local/etc/mpd5/test 2>&1

#номер правила
i=`/bin/echo "select id from freeradius.radcheck where UserName='$5';" |mysql -s -ufreeradius -ppass` >> /usr/local/etc/mpd5/test 2>&1
#пакет скорости интернета
bw=`/bin/echo "select bw from freeradius.radcheck where UserName='$5';" |mysql -s -ufreeradius -ppass` >> /usr/local/etc/mpd5/test 2>&1

time=`date "+%H"`
time_start="00"
time_stop="10"

if  ( [ $time -lt $time_stop ] && [ $time -ge $time_start ] )
 then
    if [ $bw = "bw_128" ]
    then
    bw="bw_384"
        elif [ $bw = "bw_256" ]
        then
        bw="bw_512"
            elif [ $bw = "bw_768" ]
            then
            bw="bw_1536"
                elif [ $bw = "bw_1024" ]
                then
                bw="bw_2048"
                        elif [ $bw = "bw_1536" ]
                        then
                        bw="bw_3072"

 fi
fi

echo ""  >> /usr/local/etc/mpd5/test 2>&1
date=`date "+%Y-%m-%d"`
r_ip=`echo $8`
echo "r_ip=$r_ip" >> /usr/local/etc/mpd5/test
r_mac=`/usr/sbin/arp -n $r_ip|awk '{print $4}'` >> /usr/local/etc/mpd5/test 2>&1
echo "r_mac=$r_mac" >> /usr/local/etc/mpd5/test
mac1=`/bin/echo "select mac1 from freeradius.radcheck where UserName='$5';" |mysql -s -ufreeradius -ppass` >> /usr/local/etc/mpd5/test 2>&1
mac2=`/bin/echo "select mac2 from freeradius.radcheck where UserName='$5';" |mysql -s -ufreeradius -ppass` >> /usr/local/etc/mpd5/test 2>&1
mac3=`/bin/echo "select mac3 from freeradius.radcheck where UserName='$5';" |mysql -s -ufreeradius -ppass` >> /usr/local/etc/mpd5/test 2>&1

echo "-------------------------" >> /usr/local/etc/mpd5/test
echo `date` >> /usr/local/etc/mpd5/test
s=`/bin/echo "select $bw from freeradius.bw;" |mysql -s -ufreeradius -ppass` >> /usr/local/etc/mpd5/test 2>&1

echo "Speed is $s Kbit/s"  >> /usr/local/etc/mpd5/test

num_in=`expr 500 + $i`
num_out=`expr 700 + $i`
num_block=`expr 800 + $i`
pipe_in=$i
pipe_out=`expr 1000 + $i`

echo "For user $5" >> /usr/local/etc/mpd5/test
echo "" >> /usr/local/etc/mpd5/test
#pipe's IN
ipfw add $num_in pipe $pipe_in ip from any to $4 >> /usr/local/etc/mpd5/test 2>&1
#pipe's OUT
ipfw add $num_out pipe $pipe_out ip from $4 to any >> /usr/local/etc/mpd5/test 2>&1
#pipe's speed
ipfw pipe $pipe_in config bw "$s"Kbit/s queue 20 >> /usr/local/etc/mpd5/test 2>&1
ipfw pipe $pipe_out config bw "$s"Kbit/s queue 20 >> /usr/local/etc/mpd5/test 2>&1
echo "" >> /usr/local/etc/mpd5/test
#count
ipfw add $num_in count ip from any to any in via $1 >> /usr/local/etc/mpd5/test 2>&1
ipfw add $num_out count ip from any to any out via $1 >> /usr/local/etc/mpd5/test 2>&1
echo "" >> /usr/local/etc/mpd5/test

# allow all for vpn users
ipfw table 3 add $4

echo "Begin test for mac-adress's" >> /usr/local/etc/mpd5/test

if [ "$r_mac" = "$mac1" ]; then
    echo "mac1 Goot" >> /usr/local/etc/mpd5/test
    elif [ "$r_mac" = "$mac2" ]; then
            echo "mac2 Goot" >> /usr/local/etc/mpd5/test
            elif [ "$r_mac" = "$mac3" ]; then
                echo "mac3 Goot" >> /usr/local/etc/mpd5/test
                else
                echo "Пользователь $5 подключился с чужого компьютера IP=$r_ip (MAC=$r_mac). Правильный мак: $mac1, $mac2 или $mac3"| mail -s "Bad connections!!!" admin@domain.ua
                echo "Пользователь $5 подключился с чужого компьютера IP=$r_ip (MAC=$r_mac). Правильный мак: $mac1, $mac2 или $mac3" >> /usr/local/etc/mpd5/test
                ipfw add $num_block fwd 192.168.10.100,90 log tcp from $4 to any via vlan113 >> /usr/local/etc/mpd5/test 2>&1
fi
это так, для примера.
городить можно все что придумается :)