Перейти к содержимому
Калькуляторы

[MPD5] логгирование внешнего IP-адреса клиента

Есть настроенный сервер на mpd5.5. Всё работает. Но хотелось бы в логах видеть IP с которого подключается клиент. В логах он не пишется почему-то, зато его можно посмотреть через консоль и через web-ку. Пробовал включать debug level 1/2 - но IP адрес всё равно не пишется.

Как решить эту проблему?

Поделиться сообщением


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

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

 

mpd.conf:

...

set iface up-script /usr/local/etc/mpd5/1_up.sh

...

 

 

/usr/local/etc/mpd5/1_up.sh:

#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin

 

 

_if=$1;

_if_gw=$4;

_if_user=$5;

_if_ip=$3;

_if_src_ip=$8;

 

/usr/bin/logger "mpd: user $_if_user logged from $_if_src_ip on iface=$_if with iface_ip=$_if_gw"

Поделиться сообщением


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

Но хотелось бы в логах видеть IP с которого подключается клиент.

В RADIUS-accounting он пишется

Поделиться сообщением


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

У меня некоторое время работало так:

 

#!/usr/local/bin/perl

my %hash;

while (<STDIN>) {
    last if ($_ eq "\n");
    chomp;
    my ($k, $v) = split ':', $_, 2;
    $hash{$k} = $v;
}


($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();

$year+=1900;
$mon+=1;

$LOGLINE=sprintf("%4d.%02d.%02d %02d:%02d:%02d",$year,$mon,$mday,$hour,$min,$sec)."    $hash{ACCT_STATUS_TYPE}    $hash{IFACE}    $hash{FRAMED_IP_ADDRESS}    $hash{USER_NAME}    $hash{PEER_ADDR}    $hash{ACCT_SESSION_TIME}    $hash{ACCT_INPUT_OCTETS}    $hash{ACCT_OUTPUT_OCTETS}    $hash{ACCT_TERMINATE_CAUSE}    $hash{PEER_IDENT}\n";


open LOG, ">> /var/log/acct/$hash{USER_NAME}" or die "\n";
print LOG $LOGLINE;
close LOG;


open LOG, ">> /var/log/acct/".sprintf("%4d.%02d.",$year,$mon)."vpn.log" or die "\n";
print LOG $LOGLINE;
close LOG;


printf "\n";

 

Перед подключением скрипта создайте папку /var/log/acct/

Поделиться сообщением


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

А подробнее?

Не понятен вопрос.

В конфиг mpd добавить строчку

set auth extacct-script \путь к скрипту\скрипт.pl

естественно, должен быть установлен perl. Логи читаем в папке /var/log/acct/, по пользователям и общий. Общий создаётся ежемесячно.

 

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

Поделиться сообщением


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

+1 за up-script.

Если без занудства, то в нём достаточно одной строки:

logger -p ppp.info -t mpd-up "$@"

Поделиться сообщением


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

Это понятно. Я имел ввиду пост terrible

Изменено пользователем skeletor

Поделиться сообщением


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

Если MPD является клиентом RADIUS сервера, то при общении MPD и RADIUS они обмениваются вот такими сообщениями аккаунтинга:

Старт сессии:

 

Mon Feb 21 15:54:29 2011
    NAS-Identifier = "mpd"
    NAS-IP-Address = 10.16.33.109
    Acct-Session-Id = "8292971-N-1580"
    NAS-Port = 1580
    NAS-Port-Type = Virtual
    Service-Type = Framed-User
    Framed-Protocol = PPP
    Calling-Station-Id = "192.168.28.10"
    mpd-link = "N-1580"
    Tunnel-Type:0 = PPTP
    Tunnel-Medium-Type:0 = IPv4
    Tunnel-Server-Endpoint:0 = "10.10.89.70"
    Tunnel-Client-Endpoint:0 = "192.168.28.10"
    Acct-Status-Type = Start
    Framed-IP-Address = 172.16.153.90
    User-Name = "brood"
    Acct-Multi-Session-Id = "8292971-N-812"
    mpd-bundle = "N-812"
    mpd-iface = "ng810"
    mpd-iface-index = 848
    Acct-Link-Count = 1
    Acct-Authentic = RADIUS
    Acct-Unique-Session-Id = "130bb29bb056bce6"
    Timestamp = 1298292869
    Request-Authenticator = Verified

 

Завершение сессии:

Mon Feb 21 15:54:31 2011
    NAS-Identifier = "mpd"
    NAS-IP-Address = 10.16.33.109
    Acct-Session-Id = "8292971-N-1580"
    NAS-Port = 1580
    NAS-Port-Type = Virtual
    Service-Type = Framed-User
    Framed-Protocol = PPP
    Calling-Station-Id = "192.168.28.10"
    mpd-link = "N-1580"
    Tunnel-Type:0 = PPTP
    Tunnel-Medium-Type:0 = IPv4
    Tunnel-Server-Endpoint:0 = "10.10.89.70"
    Tunnel-Client-Endpoint:0 = "192.168.28.10"
    Framed-IP-Address = 172.16.153.90
    User-Name = "brood"
    Acct-Multi-Session-Id = "8292971-N-812"
    mpd-bundle = "N-812"
    mpd-iface = "ng810"
    mpd-iface-index = 848
    Acct-Link-Count = 1
    Acct-Authentic = RADIUS
    Acct-Status-Type = Stop
    Acct-Terminate-Cause = User-Request
    Acct-Session-Time = 4
    Acct-Input-Octets = 3631
    Acct-Input-Packets = 14
    Acct-Input-Gigawords = 0
    Acct-Output-Octets = 116
    Acct-Output-Packets = 6
    Acct-Output-Gigawords = 0
    Acct-Unique-Session-Id = "130bb29bb056bce6"
    Timestamp = 1298292871
    Request-Authenticator = Verified

 

Соответственно мы видим, что:

абонент, с адреса 192.168.28.10 дозваливался до VPN сервера на адрес 10.10.89.70 (именно на этот) и получил IP на PPTP тоннель 172.16.153.90

VPN сервер в свою очередь в сторону радиуса смотрит IP адресом 10.16.33.109

Вполне исчерпывающая информация для мониторинга.

 

Вся вышеперечисленная информация вытащена из логов RADIUS сервера.

Изменено пользователем terrible

Поделиться сообщением


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

Если MPD является клиентом RADIUS сервера

А если нет? :)

Поделиться сообщением


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

А что у вас в конфиге указано логировать?

Поделиться сообщением


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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.