Настройка действий на сервере доступа.

Материал из ExpertBilling
Перейти к: навигация, поиск

ExpertBilling взаимодействует с серверами доступа посредством протоколов RADIUS, SNMP, NetFlow, TrafficFlow, SSH, RouterOS API. При использовании способа доступа IPN или, если для другого типа доступа выбрана опция "Производить IPN действия"

Ipn for vpn.png

управление сервером доступа происходит также по протоколу SSH. Ядро посылает на сервер доступа определённые команды, когда абонент добавляется в систему, становится неактивным или его нужно удалить. Стоит отметить, что для способов доступа PPTP/PPPOE биллинг так же посылает на сервер доступа команды, если необходимо сбросить активную сессию пользователя или изменить ему скорость. Соответствующие команды не будут выполнятся, если у аккаунта или субаккаунта не будет указан сервер доступа.

В системе предусмотрено 12 типов команд:

  • Добавить абонента
  • Добавить субаккаунт
  • Удалить абонента
  • Удалить субаккаунт
  • Включить абонента
  • Включить субаккаунт
  • Отключить абонента
  • Отключить субаккаунт
  • Установить скорость для VPN
  • Установить скорость для IPN аккаунта
  • Установить скорость для IPN субаккаунта
  • Сбросить сессию

Каждая команда является строкой символов, в которой все переменные вида $имя_переменной заменены на значения (варианты переменных см.ниже.).

Добавить абонента

Команда выполняется при создании пользователя в системе. По-умолчанию команда не указана. При создании команды можно использовать переменные Аккаунт и Сервер доступа.

Добавить субаккаунт

Команда выполняется при создании субаккаунта. По-умолчанию она выглядит так:

/ip firewall address-list add list=internet_users address=$subacc_ipn_ip_address disabled=yes comment=$acc_account_id-$subacc_id

Команда добавляет IPN IP адрес субаккаунта в Address List internet_users на сервере доступа. Созданная запись будет иметь комментарий id аккаунта-id субаккаунта, что позволит в дальнейшем идентифицировать её. В теле команды можно использовать переменные Аккаунт, Субаккаунт, Сервер доступа. Обратите внимание, что команда просто добавляет запись с ip адресом субаккаунта, но не разрешает доступ.

Удалить абонента

Команда выполняется при удалении аккаунта из системы. По-умолчанию команда не указана. При создании команды можно использовать переменные Аккаунт и Сервер доступа. Стоит отметить, что ядро не вызывает эту команду автоматически. Удаление пользователя с сервера доступа должно производиться в ручном режиме с помощью интерфейса администратора.

Удалить субаккаунт

Команда выполняется при удалении субаккаунта из системы. По-умолчанию команда выглядит так:

/ip firewall address-list remove [find comment==$acc_account_id-$subacc_id];/queue simple remove [find comment=$acc_account_id-$subacc_id]

Команда удаляет запись с комментарием id аккаунта-id субаккаунта и производит попытку удаления Simple Queue с аналогичным комментарием. В теле команды можно использовать переменные Аккаунт, Субаккаунт, Сервер доступа.

Включить абонента

Команда выполняется при условии, что абоненту становится разрешён доступ в интернет или к другим ресурсам провайдера. Это может быть увеличение баланса до уровня >0, установка статуса Активен при отсутстви блокировок. По-умолчанию команда не указана. При создании команды можно использовать переменные Аккаунт и Сервер доступа.

Включить субаккаунт

Команда выполняется при условии, что абоненту становится разрешён доступ в интернет или к другим ресурсам провайдера. Это может быть увеличение баланса аккаунта до уровня >0, установка статуса Активен при отсутстви блокировок. По-умолчанию команда выглядит следующим образом:

/ip firewall address-list set [find comment=$acc_account_id-$subacc_id] address=$subacc_ipn_ip_address disabled=no

Команда активирует запись в AddressList. В теле команды можно использовать переменные Аккаунт, Субаккаунт, Сервер доступа.

Отключить абонента

Команда выполняется при условии, что абоненту становится запрещён доступ в интернет или к другим ресурсам провайдера. Это может быть уменьшение баланса до уровня <0, установка статуса Не активен или при наличии блокировок. По-умолчанию команда не указана. При создании команды можно использовать переменные Аккаунт и Сервер доступа.По-умолчанию команда не указана. При создании команды можно использовать переменные Аккаунт и Сервер доступа.

Отключить субаккаунт

Команда выполняется при условии, что субаккаунту становится запрещён доступ в интернет или к другим ресурсам провайдера. Это может быть уменьшение баланса аккаунта до уровня <0, установка статуса Не активен или при наличии блокировок. По-умолчанию команда не указана. При создании команды можно использовать переменные Аккаунт и Сервер доступа.

/ip firewall address-list set [find comment=$acc_account_id-$subacc_id] disabled=yes

Команда деактивирует запись в AddressList. В теле команды можно использовать переменные Аккаунт, Субаккаунт, Сервер доступа.

Установить скорость для VPN

Команда изменяет параметры скорости активного туннеля. По-умолчанию команда выглядит так:

/queue simple set [find interface=<$access_type-$subacc_username>] max-limit=$max_limit_tx/$max_limit_rx burst-limit=$burst_limit_tx/$burst_limit_rx burst-threshold=$burst_treshold_tx/$burst_treshold_rx burst-time=$burst_time_tx/$burst_time_rx priority=$priority limit-at=$min_limit_tx/$min_limit_rx

В теле команды можно использовать переменные Аккаунт, Субаккаунт, Сервер доступа. Кроме этого доступны следующие переменные:

$access_type - способ доступа (pptp/l2tp/pppoe/lisg/ovpn/hotspot)
$max_limit_tx
$max_limit_rx
$burst_limit_tx
$burst_limit_rx
$burst_treshold_tx
$burst_treshold_rx
$burst_time_tx
$burst_time_rx
$priority
$min_limit_tx
$min_limit_rx
$session_id - radius id сессии
$vpn_ip_address - Framed-Ip-Address

Для способов доступа HotSpot, lISG, при типе сервера доступа cisco и пустой команде изменение скорости происходит через механизм PoD(Packet of Disconnect) RFC3576.

Установить скорость для IPN аккаунта

Команда выполняется при необходимости изменения скорости у IPN аккаунта. По-умолчанию команда не указана. Обратите особое внимание, что речь в данном случае идёт только о аккаунте. В теле команды можно использовать переменные Аккаунт, Сервер доступа. Кроме этого доступны следующие переменные:

$access_type - способ доступа (ipn)
$max_limit_tx
$max_limit_rx
$burst_limit_tx
$burst_limit_rx
$burst_treshold_tx
$burst_treshold_rx
$burst_time_tx
$burst_time_rx
$priority
$min_limit_tx
$min_limit_rx

Установить скорость для IPN субаккаунта

Команда выполняется при необходимости изменения скорости у субаккаунта. По-умолчанию команда выглядит следующим образом:

/queue simple remove [find name=$acc_account_id-$subacc_id]; /queue simple add name=$acc_account_id-$subacc_id max-limit=$max_limit_tx/$max_limit_rx burst-limit=$burst_limit_tx/$burst_limit_rx burst-threshold=$burst_treshold_tx/$burst_treshold_rx burst-time=$burst_time_tx/$burst_time_rx priority=$priority limit-at=$min_limit_tx/$min_limit_rx target-addresses=$subacc_ipn_ip_address/32

В теле команды можно использовать переменные Аккаунт, Субаккаунт, Сервер доступа. Кроме этого доступны следующие переменные:

$access_type - способ доступа (ipn)
$max_limit_tx
$max_limit_rx
$burst_limit_tx
$burst_limit_rx
$burst_treshold_tx
$burst_treshold_rx
$burst_time_tx
$burst_time_rx
$priority
$min_limit_tx
$min_limit_rx

Сбросить сессию

Команда выполняется при необходимости сбросить сессию абонента на сервере доступа. Вид команды по-умолчанию:

/interface $access_type-server remove [find user=$subacc_username]

В теле команды можно использовать переменные Аккаунт, Субаккаунт, Сервер доступа. Кроме этого доступны следующие переменные:

$access_type - способ доступа (pptp/l2tp/pppoe/lisg/ovpn/hotspot)
$session_id - radius id сессии
$vpn_ip_address - Framed-Ip-Address

Для способов доступа HotSpot, lISG, при типе сервера доступа cisco и пустой команде сброс сессии происходит через механизм PoD(Packet of Disconnect) RFC3576.

Доступные переменные

  • Аккаунт
acc_account_id
acc_ballance
acc_credit
acc_datetime - дата подключения на текущий тариф
acc_tarif_id
acc_access_parameters_id
acc_time_access_service_id
acc_traffic_transmit_service_id
acc_cost
acc_reset_tarif_cost
acc_settlement_period_id
acc_tarif_active
acc_acctf_id
acc_account_created
acc_disabled_by_limit
acc_balance_blocked
acc_nas_id
acc_vpn_ip_address
acc_ipn_ip_address
acc_ipn_mac_address
acc_assign_ipn_ip_from_dhcp
acc_ipn_status
acc_ipn_speed
acc_vpn_speed
acc_ipn_added
acc_ps_null_ballance_checkout
acc_tarif_deleted
acc_allow_express_pay
acc_account_status
acc_allow_vpn_null
acc_allow_vpn_block
acc_username
acc_password
acc_require_tarif_cost
acc_periodical_billed
acc_current_acctf
acc_end_date
acc_allow_ipn_with_null
acc_allow_ipn_with_minus
acc_allow_ipn_with_block
acc_radius_traffic_transmit_service_id
  • Субаккаунт
subacc_id
subacc_account_id
subacc_username
subacc_password
subacc_vpn_ip_address
subacc_ipn_ip_address
subacc_ipn_mac_address
subacc_nas_id
subacc_ipn_added
subacc_ipn_enabled
subacc_need_resync
subacc_speed
subacc_switch_id
subacc_switch_port
subacc_allow_dhcp
subacc_allow_dhcp_with_null
subacc_allow_dhcp_with_minus
subacc_allow_dhcp_with_block
subacc_allow_vpn_with_null
subacc_allow_vpn_with_minus
subacc_allow_vpn_with_block
subacc_associate_pptp_ipn_ip
subacc_associate_pppoe_ipn_mac
subacc_ipn_speed
subacc_vpn_speed
subacc_allow_addonservice
subacc_allow_ipn_with_null
subacc_allow_ipn_with_minus
subacc_allow_ipn_with_block
subacc_vlan
subacc_vpn_ipv6_ip_address
  • Сервер доступа
nas_id
nas_type
nas_name
nas_ipaddress
nas_secret
nas_login
nas_password
nas_allow_pptp
nas_allow_pppoe
nas_allow_ipn
nas_user_add_action
nas_user_enable_action
nas_user_disable_action
nas_user_delete_action
nas_vpn_speed_action
nas_ipn_speed_action
nas_reset_action
nas_confstring
nas_multilink
nas_speed_vendor_1
nas_speed_vendor_2
nas_speed_attr_id1
nas_speed_attr_id2
nas_speed_value1
nas_speed_value2
nas_identify
nas_subacc_add_action
nas_subacc_enable_action
nas_subacc_disable_action
nas_subacc_del_action
nas_subacc_ipn_speed_action
nas_acct_interim_interval