Помогите написать скрипт для mpd5

FreeBSD, NetBSD, OpenBSD, DragonFly и т. д.

Модератор: arachnid

bartram
Сообщения: 26
ОС: FreeBsd 7.1

Помогите написать скрипт для mpd5

Сообщение bartram »

При подключении клиенты не могут получить доступ в другие подсети, я думаю наверное роутинг надо прописать :)
Помогите написать скрипт для mpd, чтобы добавлять роутинг для некоторых нужных мне подсетей. Дайте хотя бы пример, а то я даже примера не смог в инете найти :( Заранее спасибо
Из конфига

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

set ippool add pool1 192.168.1.50  192.168.1.99
 set ipcp ranges 192.168.50.5/32 ippool pool1

Надо открыть доступ для подсетей
192.168.1.0
192.168.0.0
Сейчас они находясь в диапазоне 192.168.1.50 192.168.1.99 даже пинговать друг друга не монут :(

Очень надеюсь на вашу помощь!
Спасибо сказали:
Аватара пользователя
Poor Fred
Сообщения: 1575
Статус: Pygoscelis papua
ОС: Gentoo Linux, FreeBSD

Re: Помогите написать скрипт для mpd5

Сообщение Poor Fred »

man route?
Ну и netstat -rn для проверки таблиц.
Убить всех человеков!
Спасибо сказали:
bartram
Сообщения: 26
ОС: FreeBsd 7.1

Re: Помогите написать скрипт для mpd5

Сообщение bartram »

Poor Fred писал(а):
12.07.2009 19:02
man route?
Ну и netstat -rn для проверки таблиц.

Нет дело не в этом мне надо скрипт для mpd который бы мог добавлять роутинг, а роутинг то я умею прописывать....
Дело в том что надо в скрипте ещё как-то получать текущий ip клиента
Спасибо сказали:
Аватара пользователя
ivan2ksusr
Сообщения: 882
ОС: Mac OS X, openSUSE

Re: Помогите написать скрипт для mpd5

Сообщение ivan2ksusr »

set ipcp ranges 192.168.50.5/32 ippool pool1

а такого рода запись разве допустима? если ты указываешь pool1 совсем в другом диапазоне(могу и ошибаться)

set iface route ??? здесь что у тебя?

конечно не уверен, но кажется что-то с конфигом не то
Спасибо сказали:
bartram
Сообщения: 26
ОС: FreeBsd 7.1

Re: Помогите написать скрипт для mpd5

Сообщение bartram »

ivan2ksusr писал(а):
13.07.2009 10:02
set ipcp ranges 192.168.50.5/32 ippool pool1

а такого рода запись разве допустима? если ты указываешь pool1 совсем в другом диапазоне(могу и ошибаться)

set iface route ??? здесь что у тебя?

конечно не уверен, но кажется что-то с конфигом не то

Допустима с точки зрения чего? Все работает же, Клиенты цепляются.... просто никуда пакеты не ходят, даже между клиентами....
У меня в конфиге нет set iface route, что там писать?
Спасибо сказали:
Аватара пользователя
ivan2ksusr
Сообщения: 882
ОС: Mac OS X, openSUSE

Re: Помогите написать скрипт для mpd5

Сообщение ivan2ksusr »

как один из вариантов: set iface route default
Спасибо сказали:
bartram
Сообщения: 26
ОС: FreeBsd 7.1

Re: Помогите написать скрипт для mpd5

Сообщение bartram »

ivan2ksusr писал(а):
13.07.2009 16:30
как один из вариантов: set iface route default

Спасибо. Попробую
Для ясности выкладываю весь конфиг

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

startup:
        set user admin pass admin
#       set user foo1 bar1
        set console self 127.0.0.1 5005
        set console open
#       set web self 192.168.0.101  5006
#       set web open

default:
        load pptp_server

pptp_server:
        set ippool add pool1 192.168.1.50  192.168.1.99
        create bundle template B
        set iface up-script /usr/local/etc/mpd5/lup.pl
#       set iface enable proxy-arp
        set iface idle 1800
        set iface enable tcpmssfix
        set ipcp yes vjcomp
        set ipcp ranges 192.168.50.5/32 ippool pool1
        set ipcp dns 192.168.0.1
#       set ipcp nbns 192.168.1.4
        set bundle enable compression
        set ccp yes mppc
#       set mppc yes e40
        set mppc yes e128
        set mppc yes stateless
        create link template L pptp
        set link action bundle B
        set link enable multilink
        set link yes acfcomp protocomp
        set link no pap chap
        set link enable chap
        set link keep-alive 10 60
        set link mtu 1460
        set pptp self 192.168.0.101
        set link enable incoming
Спасибо сказали:
Аватара пользователя
Poor Fred
Сообщения: 1575
Статус: Pygoscelis papua
ОС: Gentoo Linux, FreeBSD

Re: Помогите написать скрипт для mpd5

Сообщение Poor Fred »

Не знаю, как в 5-м, но в 3-м MPD работает так:

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

# cat mpd.conf
default:
    load vpn

vpn:
    .....
    set iface up-script /usr/local/etc/mpd/new.sh
    .....
    .....

# cat new.sh
route add 192.168.0.0/16 192.168.1.1


У тебя, как я вижу, тоже скрипт прописан. Ну и пиши в нем команды.
Убить всех человеков!
Спасибо сказали:
bartram
Сообщения: 26
ОС: FreeBsd 7.1

Re: Помогите написать скрипт для mpd5

Сообщение bartram »

Poor Fred писал(а):
13.07.2009 19:28
У тебя, как я вижу, тоже скрипт прописан. Ну и пиши в нем команды.

У меня такой

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

#!/usr/bin/perl
@net=("","",0,1);
open (F,">>/usr/local/etc/mpd5/liup.log");
        $date=`date`;
            if ($ARGV[3]=~/^\d{1,3}\.\d{1,3}\.\d{1,3}\.(\d{1,3})$/){
                        $cmd=sprintf ("/sbin/route add 192.168.%s.0/24 -iface %s",$net[$1],$ARGV[0]);
                                printf F ("Date: %s > addr: %s [%s]\n\n",$date,$ARGV[3],$cmd);
                                        `$cmd`;
                                            }else{
                                                    printf F ("Date: %s > Fuckup in address: %s\n\n",$date,$ARGV[3]);
                                                        }
                                                        close (F);

Нашел на просторах интернета, подправил под себя, но что-то не работает :(
В лог пишет
Date: Mon Jul 13 21:27:50 SAMST 2009
> addr: 192.168.1.50 [/sbin/route add 192.168..0/24 -iface ng0]

Date: Mon Jul 13 21:28:02 SAMST 2009
> addr: 192.168.1.51 [/sbin/route add 192.168..0/24 -iface ng1]

Но ничего не работает :( Может я маску подсети неправильно задаю?

P.S. Да, я ещё включил proxy arp
Спасибо сказали:
Аватара пользователя
Poor Fred
Сообщения: 1575
Статус: Pygoscelis papua
ОС: Gentoo Linux, FreeBSD

Re: Помогите написать скрипт для mpd5

Сообщение Poor Fred »

bartram писал(а):
13.07.2009 21:18
В лог пишет
Date: Mon Jul 13 21:27:50 SAMST 2009
> addr: 192.168.1.50 [/sbin/route add 192.168..0/24 -iface ng0]

Date: Mon Jul 13 21:28:02 SAMST 2009
> addr: 192.168.1.51 [/sbin/route add 192.168..0/24 -iface ng1]

Но ничего не работает :( Может я маску подсети неправильно задаю?

Ну, во-первых, что за адрес такой: 192.168..0? Две точки подряд видишь? Ищи где-то в коде косяк.
А во-вторых, зачем такие сложности? Почему не написать простенький скрипт в пару строк, типа того, что я раньше привел?
Убить всех человеков!
Спасибо сказали:
bartram
Сообщения: 26
ОС: FreeBsd 7.1

Re: Помогите написать скрипт для mpd5

Сообщение bartram »

Poor Fred писал(а):
14.07.2009 03:59
во-вторых, зачем такие сложности? Почему не написать простенький скрипт в пару строк, типа того, что я раньше привел?

Сегодня попробую, отпишусь
Спасибо сказали:
bartram
Сообщения: 26
ОС: FreeBsd 7.1

Re: Помогите написать скрипт для mpd5

Сообщение bartram »

Написал вот такой скрипт

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

#!/bin/sh
route add 192.168.0.0/24 192.168.1.5

Скрипт видимо не отрабатывает, клиент не может подключиться. В логах MPD вот что:
Jul 14 20:00:58 HomeSrv mpd: [B-1] IFACE: No interface to proxy arp on for 192.168.1.50
Jul 14 20:00:58 HomeSrv mpd: [B-1] system: command "/usr/local/etc/mpd5/route.sh ng0 inet 192.168.1.5/32 192.168.1.50 'bartram' " returned 256
Jul 14 20:00:58 HomeSrv mpd: [B-1] IPCP: parameter negotiation failed
Jul 14 20:00:58 HomeSrv mpd: [B-1] IPCP: state change Opened --> Stopping
Jul 14 20:00:58 HomeSrv mpd: [B-1] IPCP: SendTerminateReq #3
Jul 14 20:00:58 HomeSrv mpd: [B-1] IPCP: LayerDown
Jul 14 20:00:58 HomeSrv mpd: [B-1] rec'd unexpected protocol IP
Jul 14 20:00:58 HomeSrv mpd: [B-1] IPCP: rec'd Terminate Ack #3 (Stopping)
Jul 14 20:00:58 HomeSrv mpd: [B-1] IPCP: state change Stopping --> Stopped
Jul 14 20:00:58 HomeSrv mpd: [B-1] IPCP: LayerFinish
Jul 14 20:00:58 HomeSrv mpd: [B-1] Bundle: No NCPs left. Closing links...
Jul 14 20:00:58 HomeSrv mpd: [B-1] Bundle: closing link "L-1"...
Jul 14 20:00:58 HomeSrv mpd: [L-1] Link: CLOSE event
Jul 14 20:00:58 HomeSrv mpd: [L-1] LCP: Close event
Jul 14 20:00:58 HomeSrv mpd: [L-1] LCP: state change Opened --> Closing
Jul 14 20:00:58 HomeSrv mpd: [L-1] Link: Leave bundle "B-1"
Jul 14 20:00:58 HomeSrv mpd: [B-1] Bundle: Status update: up 0 links, total bandwidth 9600 bps
Jul 14 20:00:58 HomeSrv mpd: [B-1] IPCP: Close event
Jul 14 20:00:58 HomeSrv mpd: [B-1] IPCP: state change Stopped --> Closed
Jul 14 20:00:58 HomeSrv mpd: [B-1] CCP: Close event
Jul 14 20:00:58 HomeSrv mpd: [B-1] CCP: state change Opened --> Closing
Jul 14 20:00:58 HomeSrv mpd: [B-1] CCP: SendTerminateReq #2
Jul 14 20:00:58 HomeSrv mpd: [B-1] CCP: LayerDown
Jul 14 20:00:58 HomeSrv mpd: [B-1] IPCP: Down event
Jul 14 20:00:58 HomeSrv mpd: [B-1] IPCP: state change Closed --> Initial
Jul 14 20:00:58 HomeSrv mpd: [B-1] CCP: Down event
Jul 14 20:00:58 HomeSrv mpd: [B-1] CCP: LayerFinish
Jul 14 20:00:58 HomeSrv mpd: [B-1] CCP: state change Closing --> Initial
Jul 14 20:00:58 HomeSrv mpd: [B-1] Bundle: Shutdown

Перед эти поменял в конфиге

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

set ipcp ranges 192.168.1.5/24 ippool pool1
Спасибо сказали:
Аватара пользователя
Poor Fred
Сообщения: 1575
Статус: Pygoscelis papua
ОС: Gentoo Linux, FreeBSD

Re: Помогите написать скрипт для mpd5

Сообщение Poor Fred »

bartram писал(а):
14.07.2009 19:08
Написал вот такой скрипт

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

#!/bin/sh
route add 192.168.0.0/24 192.168.1.5

Скрипт видимо не отрабатывает, клиент не может подключиться. В логах MPD вот что:

Конечно, ведь адрес 192.168.1.5 не находится в сети 192.168.0.0/24. Тогда уж 192.168.0.0/16 напиши.

Ну и про netstat -rn напоминаю.
Убить всех человеков!
Спасибо сказали:
bartram
Сообщения: 26
ОС: FreeBsd 7.1

Re: Помогите написать скрипт для mpd5

Сообщение bartram »

Poor Fred писал(а):
14.07.2009 19:18
Конечно, ведь адрес 192.168.1.5 не находится в сети 192.168.0.0/24. Тогда уж 192.168.0.0/16 напиши.

Если я подсовываю этот скрипт, клиент вообще подключиться не может: "Подключение закрыто удаленным компьютером" И до этого та же самая ошибка была
Спасибо сказали:
bartram
Сообщения: 26
ОС: FreeBsd 7.1

Re: Помогите написать скрипт для mpd5

Сообщение bartram »

Если делать tracert от одного клиента к другому, то все обрывается после сервера....
Спасибо сказали:
Аватара пользователя
Poor Fred
Сообщения: 1575
Статус: Pygoscelis papua
ОС: Gentoo Linux, FreeBSD

Re: Помогите написать скрипт для mpd5

Сообщение Poor Fred »

bartram писал(а):
14.07.2009 21:03
Если я подсовываю этот скрипт, клиент вообще подключиться не может: "Подключение закрыто удаленным компьютером" И до этого та же самая ошибка была

Насколько я понимаю, скрипт должен срабатывать после подключения и настраивает местную таблицу маршрутизации. Т.е. к подключению как таковому отношения не имеет.

bartram писал(а):
14.07.2009 21:27
Если делать tracert от одного клиента к другому, то все обрывается после сервера....

Удаленного? Тогда тереби удаленных админов. Может они вашей подсети не разрешили ходить по своей?
Убить всех человеков!
Спасибо сказали:
bartram
Сообщения: 26
ОС: FreeBsd 7.1

Re: Помогите написать скрипт для mpd5

Сообщение bartram »

Poor Fred писал(а):
15.07.2009 05:30
Насколько я понимаю, скрипт должен срабатывать после подключения и настраивает местную таблицу маршрутизации. Т.е. к подключению как таковому отношения не имеет.

Не имеет, но возможно возвращает ошибку и поэтому соединие обрывается, как его можно проверить?

Poor Fred писал(а):
15.07.2009 05:30
Удаленного? Тогда тереби удаленных админов. Может они вашей подсети не разрешили ходить по своей?

При подключенном ВПН у клиента с адресом 192.168.1.50
Смотри я делаю трасерт с 192.168.1.50
1. 192.168.1.5.
2. Превышен интервал ожидания для запроса
3. Превышен интервал ожидания для запроса
4. ....
5. .....
Спасибо сказали:
Аватара пользователя
Poor Fred
Сообщения: 1575
Статус: Pygoscelis papua
ОС: Gentoo Linux, FreeBSD

Re: Помогите написать скрипт для mpd5

Сообщение Poor Fred »

bartram писал(а):
15.07.2009 09:19
Не имеет, но возможно возвращает ошибку и поэтому соединие обрывается, как его можно проверить?

Отключи скрипт. Подключись, убедись, что можешь достучаться до удаленного сервера и вручную добавляй маршруты.

bartram писал(а):
15.07.2009 09:19
При подключенном ВПН у клиента с адресом 192.168.1.50
Смотри я делаю трасерт с 192.168.1.50
1. 192.168.1.5.
2. Превышен интервал ожидания для запроса
3. Превышен интервал ожидания для запроса
4. ....
5. .....

А это необязательно что-то значит. Промежуточные шлюзы может и игнорируют эти запросы, icmp, насколько помню. Попробуй просто пропинговать сервер после подключения. А протрассировать с ключами -P tcp и -p 80 например, хотя не факт, что на VPN-сервере разрешены http-запросы.
Убить всех человеков!
Спасибо сказали:
bartram
Сообщения: 26
ОС: FreeBsd 7.1

Re: Помогите написать скрипт для mpd5

Сообщение bartram »

Poor Fred писал(а):
15.07.2009 15:05
А это необязательно что-то значит. Промежуточные шлюзы может и игнорируют эти запросы, icmp, насколько помню. Попробуй просто пропинговать

Промежуточных шлюзов нет, см. конфиг
Спасибо сказали:
bartram
Сообщения: 26
ОС: FreeBsd 7.1

Re: Помогите написать скрипт для mpd5

Сообщение bartram »

Poor Fred писал(а):
15.07.2009 15:05
Отключи скрипт. Подключись, убедись, что можешь достучаться до удаленного сервера и вручную добавляй маршруты.

Пингую с VPN сервака адрес 192.168.1.5 - ответа нет, зато пингуются ip клиентов. При подключении клиента, на VPN сервере создается следующий интерфейс
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1396
inet 192.168.1.5 --> 192.168.1.50 netmask 0xffffffff
#

Какие могут быть ещё мысли?
Спасибо сказали:
bartram
Сообщения: 26
ОС: FreeBsd 7.1

Re: Помогите написать скрипт для mpd5

Сообщение bartram »

Проблема решилась, в конфиге в строчке:

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

set ipcp ranges 192.168.1.5/24 ippool pool1

поменял на 16 маску, все заработало.
Всем спасибо за помощь!
Спасибо сказали: