ABillS. Внешняя диагностика соединения.

Благодаря внешней диагностики соединения можно выполнять различные команды прямо из интерфейса ABillS (на странице клиента возле онлайн сессии добавляется кнопка). В этой статье я приведу несколько примеров.

Например я добавил кнопку PING (на примере от сервера с биллингом клиенту отправляется 15 пакетов ping с интервалом 0.2 секунды и размер пакета 1024 байт, по завершению команды выводится результат выполнения команды, если IP адрес клиента не отвечает на PING, то результат будет пустым):

$conf{INTERNET_EXTERNAL_DIAGNOSTIC}='PING:ping -c 15 -i 0.2 -s 1024 %FRAMED_IP_ADDRESS%';

Пример результата:

Диагностика PING
PING 172.18.11.75 (172.18.11.75) 1024(1052) bytes of data.
1032 bytes from 172.18.11.75: icmp_seq=1 ttl=62 time=0.842 ms
1032 bytes from 172.18.11.75: icmp_seq=2 ttl=62 time=0.695 ms
1032 bytes from 172.18.11.75: icmp_seq=3 ttl=62 time=0.688 ms
1032 bytes from 172.18.11.75: icmp_seq=4 ttl=62 time=0.632 ms
1032 bytes from 172.18.11.75: icmp_seq=5 ttl=62 time=0.610 ms
1032 bytes from 172.18.11.75: icmp_seq=6 ttl=62 time=0.666 ms
1032 bytes from 172.18.11.75: icmp_seq=7 ttl=62 time=0.580 ms
1032 bytes from 172.18.11.75: icmp_seq=8 ttl=62 time=0.706 ms
1032 bytes from 172.18.11.75: icmp_seq=9 ttl=62 time=0.660 ms
1032 bytes from 172.18.11.75: icmp_seq=10 ttl=62 time=0.504 ms
1032 bytes from 172.18.11.75: icmp_seq=11 ttl=62 time=0.554 ms
1032 bytes from 172.18.11.75: icmp_seq=12 ttl=62 time=0.576 ms
1032 bytes from 172.18.11.75: icmp_seq=13 ttl=62 time=0.583 ms
1032 bytes from 172.18.11.75: icmp_seq=14 ttl=62 time=0.741 ms
1032 bytes from 172.18.11.75: icmp_seq=15 ttl=62 time=0.592 ms

— 172.18.11.75 ping statistics —
15 packets transmitted, 15 received, 0% packet loss, time 2801ms
rtt min/avg/max/mdev = 0.504/0.641/0.842/0.089 ms

Аналогичным способом можно добавить другие команды, например arpping:

$conf{INTERNET_EXTERNAL_DIAGNOSTIC}='ARPPING:arping -i eno1 -c 5 %FRAMED_IP_ADDRESS%';

Чтобы arpping запустился от имени пользователя под которым работает веб сервер, нужно добавить в /etc/sudoers:

www-data   ALL = NOPASSWD: /usr/sbin/arping

Пример nmap:

NMAP:nmap %FRAMED_IP_ADDRESS% -Pn -p 1-100,137-139,443,554,5060,8080,8291 --host-timeout 5

Можно указать несколько внешних команд, например:

$conf{INTERNET_EXTERNAL_DIAGNOSTIC}='ARPPING:sudo arping -i eno1 -c 5 %FRAMED_IP_ADDRESS%;PING:ping -c 15 -i 0.2 -s 1024 %FRAMED_IP_ADDRESS%';

Список возможных аргументов:
USER_NAME
SESSION_START
ACCT_SESSION_TIME
ACCT_INPUT_OCTETS
ACCT_OUTPUT_OCTETS
EX_INPUT_OCTETS
EX_OUTPUT_OCTETS
CONNECT_TERM_REASON
FRAMED_IP_ADDRESS
LAST_UPDATE
NAS_PORT
NAS_IP_ADDRESS
CALLING_STATION_ID
CONNECT_INFO
ACCT_SESSION_ID
NAS_ID
ACCT_SESSION_STARTED
ACCT_INPUT_GIGAWORDS
ACCT_OUTPUT_GIGAWORDS
FILTER_ID

Пример выполнения tcpdump на локальном сервере и удаленном:

$conf{INTERNET_EXTERNAL_DIAGNOSTIC}='TCPDUMP:/usr/bin/sudo /usr/sbin/tcpdump -c 3 -vv host %FRAMED_IP_ADDRESS%';

$conf{INTERNET_EXTERNAL_DIAGNOSTIC}='TCPDUMP:/usr/bin/ssh -o StrictHostKeyChecking=no -i /usr/abills/Certs/id_rsa.abills_admin abills_admin@%NAS_IP_ADDRESS% "/usr/bin/sudo /usr/sbin/tcpdump -c 3 -vv host %FRAMED_IP_ADDRESS%"';

Также нужно добавить в /etc/sudoers:

www-data   ALL = NOPASSWD: /usr/sbin/tcpdump

Смотрите также мои статьи:
Утилита для захвата и анализа пакетов tcpdump
Подключение к SSH с использованием ключей

Оставьте комментарий

Добавить комментарий