|
Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.
|
Изменения (20)
просмотр истории страницыВ стандартной реализации связки Billing и XGE (вклчая Softrouter) отсутствует привязка ip+mac. Если она требуется, необходимо отредакритовать скрипт управления XGE в биллинге и, при необходимости, добавить синхронизатор MAC привязок. |
{info}IP+MAC привязки реализованы через создание статических записей в ARP таблице{info} {toc} |
h1. Скрипт событий # Создайте папку для измененного скрипта: |
{code}mkdir -p /app/asr_billing/cfg/var/lib/event/{code} |
touch /app/asr_billing/cfg/var/lib/event/xge_router.sh chmod a+x /app/asr_billing/cfg/var/lib/event/xge_router.sh{code} |
# Созддайте файл */app/asr_billing/cfg/var/lib/event/xge_router.sh* со следующим содержимым: {code}#!/bin/bash |
... |
{code}/app/asr_billing/service restart{code} |
h1. Синхронизация привязок MAC+IP на XGE по БД биллинга |
Синхронизация выполняется вручную при необходимости, например при внедрении функции если абоненты уже заведены, но ранее привязка не исопльзовалась. # Создайте указанные ниже файлы и со следующим содержимым: */app/xge/cfg/mac_autoget.sh* |
Описано создание привязок на стороне XGE в случае если Вы решили внедрить привязку IP+MAC, у абонентов заведены MAC-адреса в учетных записях и Вы хотите назначить привязки на стороне XGE. # Создайте файл скрипта {code}touch /app/base/cfg/set_xge_ip_mac.sh chmod a+x /app/base/cfg/set_xge_ip_mac.sh{code} Заполните скрипт */app/base/cfg/set_xge_ip_mac.sh* |
{code}#!/bin/bash |
sqlexec "set heading off; select uf_ip2string(ip),mac from users where mac!='' and ip!=0 and deleted=0 and opt82=0 and abonent_id>1" | grep -v "^$" | sort -u | awk '$1$2{print $1";"$2}' > /tmp/ipmac.list |
>/tmp/true_ipmac |
#Проходим по списку IP юзеров, у которых в базе не прописан мак #Если мак в arp таблице обнаружен, cоздаем статическую привязку, пишем в файл ip и mac for ip in $(</tmp/users_ip_where_no_mac_in_db.list); do current_mac="$(xgesh session $ip mac get)" if [ "$current_mac" == "00:00:00:00:00:00" ]; then continue |
while IFS=';' read ip mac; do if [[ $1 == "remove" ]]; then chroot /app/xge xgesh session $ip mac remove elif [[ $1 == "set" ]]; then chroot /app/xge xgesh session $ip mac set $mac |
else |
echo $ip $current_mac >> /tmp/true_ipmac xgesh session $ip mac set $current_mac |
echo xgesh session $ip mac set $mac |
fi |
done <<< "$(</tmp/ipmac.list)"{code} Скрипт ожидает передачи параметров: #* *set* - установить привязки #* *remove* - удалить привязки #* *без параметров* - напечатать в терминал команды для установки привязок по пользовательским сессиям без выполнения # Запустите синхронизацию: {code}bash -x /app/base/cfg/set_xge_ip_mac.sh set &>>/var/log/xge_ipmac_set.log{code} Лог синхронизации можно будет найти по пути */var/log/xge_ipmac_set.log* |
done{code} |
h1. Синхронизация IP+MAC по ARP таблице Синхронизация выполняется вручную при необходимости, например при внедрении функции если абоненты уже заведены, но ранее привязка не исопльзовалась. Скриты получают MAC-адреса абонентов из ARP-таблицы XGE. # Создайте файлы скриптов и установите права на выполнение {code}touch /app/xge/cfg/mac_autoget.sh touch /app/base/cfg/mac_process.sh chmod a+x /app/xge/cfg/mac_autoget.sh chmod a+x /app/base/cfg/mac_process.sh{code} # Создайте указанные ниже файлы и со следующим содержимым: |
*/app/xge/cfg/mac_autoget.sh* {code}#!/bin/bash |
... |
#Получаем из db список IP неудаленных юзеров, у которых пустой мак и есть ip get_list() { |
sqlexec "set heading off; select uf_ip2string(ip) from users where mac='' and ip!=0 and deleted=0 and opt82=0 and abonent_id>1" | grep -v "^$" | sort -u > /app/xge/tmp/users_ip_where_no_mac_in_db.list |
} #Вызываем сторонный скрипт получения маков из арп таблицы |
... |
[ ! -s /app/xge/tmp/true_ipmac ] && exit 11 while read ip mac ; do |
sqlexec "update users set mac='"$mac"' where uf_ip2string(ip)='"$ip"'" |
curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/Users/' -d 'method1=objects.get&arg1={"ip":"'$ip'"}&method2=set&arg2={"mac":"'$mac'"}&method3=save&arg3={}' |
done <<< "$(</app/xge/tmp/true_ipmac)" |
... |
main{code} # Запустите синхронизацию: |
{code}bash -x /app/base/cfg/mac_process.sh &>>/var/log/xge_ipmac_arp_sync.log{code} |
Лог синхронизации можно будет найти по пути */var/log/xge_ipmac_arp_sync.log* |