skeletor Posted February 18, 2011 Posted February 18, 2011 Есть настроенный сервер на mpd5.5. Всё работает. Но хотелось бы в логах видеть IP с которого подключается клиент. В логах он не пишется почему-то, зато его можно посмотреть через консоль и через web-ку. Пробовал включать debug level 1/2 - но IP адрес всё равно не пишется. Как решить эту проблему? Вставить ник Quote
Abram Posted February 18, 2011 Posted February 18, 2011 А почему в биллинге не смотрите? Вставить ник Quote
skeletor Posted February 18, 2011 Author Posted February 18, 2011 У меня нет биллинга. Вставить ник Quote
skeletor Posted February 18, 2011 Author Posted February 18, 2011 Стандартными средствами нельзя никак. Вот вариант, предложенный одним человеком: 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" Вставить ник Quote
terrible Posted February 18, 2011 Posted February 18, 2011 Но хотелось бы в логах видеть IP с которого подключается клиент. В RADIUS-accounting он пишется Вставить ник Quote
andryas Posted February 18, 2011 Posted February 18, 2011 У меня некоторое время работало так: #!/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/ Вставить ник Quote
andryas Posted February 18, 2011 Posted February 18, 2011 А подробнее? Не понятен вопрос. В конфиг mpd добавить строчку set auth extacct-script \путь к скрипту\скрипт.pl естественно, должен быть установлен perl. Логи читаем в папке /var/log/acct/, по пользователям и общий. Общий создаётся ежемесячно. Подробней логи можна сделать, добавив чтение и запись нужных переменных. Описание переменных есть в мануале. Вставить ник Quote
Ilya Evseev Posted February 19, 2011 Posted February 19, 2011 +1 за up-script. Если без занудства, то в нём достаточно одной строки: logger -p ppp.info -t mpd-up "$@" Вставить ник Quote
skeletor Posted February 21, 2011 Author Posted February 21, 2011 (edited) Это понятно. Я имел ввиду пост terrible Edited February 21, 2011 by skeletor Вставить ник Quote
terrible Posted February 21, 2011 Posted February 21, 2011 (edited) Если 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 сервера. Edited February 21, 2011 by terrible Вставить ник Quote
skeletor Posted February 21, 2011 Author Posted February 21, 2011 Если MPD является клиентом RADIUS сервера А если нет? :) Вставить ник Quote
terrible Posted February 21, 2011 Posted February 21, 2011 А что у вас в конфиге указано логировать? Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.