mbRadius

Примечание

При установке используется последняя версия FreeRadius.

Установка ansible

dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf install --enablerepo epel-playground ansible

Установка модуля

Скачаем архив установщика, разархивируем его:

wget http://setup.multi-billing.pro/mbradius.tar.gz
tar zxf mbradius.tar.gz

В файле config/billing.yaml изменить параметр mysql_server указав IP сервера СУБД:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
billing:
  # доменное имя для nginx хостов
  # реузльтатом будет
  # админка: admin.ispnet.demo
  # кабинет пользователей: stat.ispnet.demo
  domain: "ispnet.demo"
  # нужно ли ставить базу данных (софт)
  # если указывать false, то база данных уже должна быть установлена
  # желательно в таком случаи указать пароль от root в конфиге database.yaml
  install_percona: true
  # адрес сервера MySQL (для конфигов модулей биллинга)
  # если указан не 127.0.0.1, то считается что MySQL на отдельном сервере
  mysql_server: "127.0.0.1"
  # mysql шаблон для подключения
  mysql_connect: "/root/mysql.connect"
  # адрес серверов обновлений
  update_server: "update.multi-billing.pro"
  testing_server: "current.multi-billing.pro"
  # какие программы добавлять в chroot среду модулей
  chroot_programs: ["sh", "bash", "echo", "date", "ls", "awk", "sed", "grep", "cat", "rm", "command"]
  # данные директории не трогать!
  dirs:
    tmp: "/tmp/bill/install"
    home: "/var/bill"
    logs: "logs"
    backups: "backup"
    files: "files"
    scripts: "scripts"
    custom: "custom"

В файле config/database.yaml изменить параметры login и pass, указав логи и пароль пользователя с правами root:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
mysql:
  # на каком адресе запускать MySQL
  bind: "127.0.0.1"
  # пользователь с правами root (для создания базы, пользователей)
  # только если модули биллинга устанавливаются на одном сервере с MySQL
  login: "root"
  # пароль от пользователя root
  # если пароль указан, то он будет использоваться при попытке подключения к базе (пользователь должен быть создан заранее)
  # если значение пустое, пароль будет считан с лога установки и сгенерирован новый
  pass: ""
  # название рабочей базы
  database: "bill"
  # название тест базы
  testing: "bill_test"
  # кодировка базы данных
  encoding: "koi8r"
  collation: "koi8r_general_ci"
  # восстановить базу из бекапа
  # пример:
  # backup_file: "/home/database-2020-12-01.sql"
  # работает только если бекап создан с процедурами и без лишних ключей, к примеру:
  #         mysqldump --single-transaction --routines -u root -pstrongpassword billing > /home/backup/files/database.sql
  backup_file: ""

Далее можно запускать процесс установки:

ansible-playbook radius.yml

Troubleshooting

Для отладки используется запуск Radius из консоли в режиме дебага:

radiusd -X

Если Radius не может подключиться к MySQL серверу (ниже лог из дебага):

rlm_sql (sql): Opening additional connection (0), 1 of 10 pending slots used
rlm_sql_mysql: Starting connect to MySQL server
rlm_sql_mysql: Couldn't connect to MySQL server mbradius@192.168.1.177:billing
rlm_sql_mysql: MySQL error: Can't connect to MySQL server on '192.168.1.177' (115)
rlm_sql_mysql: Socket destructor called, closing socket
rlm_sql (sql): Opening connection failed (0)
rlm_sql (sql): Removing connection pool
/etc/raddb/sql.conf[1]: Instantiation failed for module "sql"

Возможные варианты решения:

  1. Проверить при помощи команы ping доступность сервера MySQL с сервера Radius

  2. Проверить Firewall/Iptables на сервере MySQL

  3. Проверить что пользователь в MySQL создан и в нем указан нужный IP сервера Radius


При возникновении проблем, сообщите о них в нашем CRM или Telegram канале.