Настройка FTP сервера для выгрузки CDR

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (17)

просмотр истории страницы
{toc}

h2. Примечания! Прочтите перед настройкой
{warning}

_Важно\! VSFTPD работает в chroot /app/asr_billing/var/_

_Важно\! Для загрузки CDR необходимо создать отдельное оборудование т.к. при загрузке CDR биллинг по Radius отправляет данные ввиде Acct-Stop пакетов с виртуального адреса 169.1.28.12_

_Важно\! Владельецем директории, в которую планируется выгрузка cdr, должен быть пользователь cdr_ftp_{warning}
{info}Обработанные CDR перемещаются в архив: например, если папка для загрузки cdr */var/oss/core/VOIP/cdr*, архив будет в папке */var/oss/core/VOIP/cdr_archive*{info}

h2. Настройка

_Для оборудования не поддерживающего Radius AAA существует альтернативный способ обсчета звонков через загрузку CDR, также рекомендуется его использовать и для оборудования с настроенным Radius AAA на случай проблем сети._
Основные шаги, которые необходимо выполнить для настройки ftp-сервера:
* Установить пароль ftp сервера

h3. Настройка разрешенных ip адресов
{toc}
h1. Настройка
h2. Настройка разрешенных IP адресов и пароля
Зайдите в меню [Настройки \-> Настройки (в файле)|CarbonBilling:Настройки (в файле)], откройте вкладку "*Настройки FTP сервера*"

*шаг 1* Заходим в "Настройки(в файле)"
!Выделение_010.png|width=1200,border=1!
*шаг 2*
!Выделение_011.png|width=1200,border=1!
*шаг 3*
!Настройки фтп-ip.png|width=1200,border=1!
!cdr_ftp_set_ip_and_password.png|border=1!
h3. Добавление IP-адресов NAS
Укажите IP-адреса VoIP NAS или подсети с которых они обращаются к биллингу.
{note}Если VoIP NAS и Carbon Billing 5 находятся в разных сетях и общаются через маршрутизатор, укажите адрес маршрутизатора{note}

h3. Настройка пароля пользователя cdr_ftp через веб-интерфейс
h3. Установка пароля пользователя cdr_ftp в интерфейсе администратора
Задайте пароль в том же меню что и IP-адреса NAS.
{note}Установить пароль и IP можно одновременно, а можно в любой момент настроить одно или другое.{note}

*шаг 1* Заходим в "Настройки(в файле)"
!Выделение_010.png|width=1200,border=1!
*шаг 2*
!Выделение_011.png|width=1200,border=1!
*шаг 3*
!Настройки фтп-пароль.png|width=1200,border=1!

h3. Настройка h4. Установка пароля пользователя cdr_ftp через терминал
Вы так же можете установить пароль используя командный интерфейс:
{code}
$ chroot /app/asr_billing/
(asr_billing) $ rsync /etc/shadow /cfg/etc/shadow # необходимо выполнить для сохранения пароля после рестарта контейнера
{code}
h2. Создание директории для для загрузки CDR-файлов
* В актуальных версиях биллинга все директории создаются вручную, но эта глава может пригодиться на случай переустановки системы
*Корневой директорией *vsftpd* является */app/asr_billing/var/*.
* Владельцем директории, в которую планируется выгрузка cdr, должен быть пользователь cdr_ftp. Создать её и установить права можно следующим образом:
{code}chroot /app/asr_billing/ mkdir -p /var/cdr/VoIPnas1/
chroot /app/asr_billing/ chown cdr_ftp:cdr_ftp /var/cdr/VoIPnas1/{code}

{info}Обработанные CDR перемещаются в архив: например, если папка для загрузки cdr */var/oss/core/VOIP/cdr*, архив будет в папке */var/oss/core/VOIP/cdr_archive{*}{info}
h32. Настройка пассивного режима FTP
Настройка пассивного режима FTP требуется для *Eltex SMG*, но может быть полезна в случае если биллинг и NAS находятся в разных сегментах сети.
Откройте файл конфигурации сервера */app/asr_billing/etc/vsftpd/vsftpd.conf* и добавьте в конец файла следующие строки:
{code}pasv_enable=Yes
Адрес *169.254.80.82* замените на адрес Вашей АТС

h3. Пример скрипта выгрузки cdr файлов с asterisk
{code}
#!/bin/bash

set -eu

CDR_SRC_FILE='/var/log/asterisk/cdr-csv/Master.csv'
CDR_DST_DIR='/var/log/asterisk/cdr-csv-rotate/'
FTP_SERVER='46.19.46.169'
FTP_LOGIN='cdr_ftp'
FTP_PASSWORD='servicemode'
FTP_DIRECTORY='cdr'

cd "$CDR_DST_DIR"

[ ! -d "$CDR_DST_DIR" ] && mkdir $CDR_DST_DIR

if [ -f "$CDR_SRC_FILE" ]; then
DATE=`date +%Y%m%d%H%M%S`
mv $CDR_SRC_FILE $CDR_DST_DIR/cdr-${DATE}.csv
touch $CDR_SRC_FILE
fi

for f in $CDR_DST_DIR/cdr-*.csv; do
echo $f
f_name="${f##*/}"
ftp -v -n $FTP_SERVER <<End-Of-Session > /tmp/ftplog.$$
user $FTP_LOGIN "$FTP_PASSWORD"
binary
cd $FTP_DIRECTORY
put "$f" "$f_name"
bye
End-Of-Session
if fgrep -q "226 Transfer complete" /tmp/ftplog.$$ ;then
echo "ftp OK"
mv $f ${f}.uploaded
fi
done

{code}

{info}
1. Вы настроили выгрузку по фтп в папку /cdr

h2. Отладка

В файле */app/asr_billing/etc/vsftpd/vsftpd.conf* настройте сохранение логов в отдельный файл:
{code}xferlog_std_format=NO
Перезапустите FTP-сервер
{code}chroot /app/asr_billing/ service vsftpd restart{code}

# Если вы видите в логах АТС что данные были отправлены, но не видите из в логе FTP, скорей всего проблема в фаерволе
# Если же записи в логе FTP появляются, но звонков все равно нет в папке на сервере биллинга по логу можно попробовать определить в чем проблема. Вероятней всего, не настроен пассивный режим FTP или некорректно заданы права на папку для CDR