|
Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.
|
Изменения (22)
просмотр истории страницы*Для версий старше *{color:#000000}{*}452_047.*{color} |
настройки в биллинге # Создать нас в биллинге |
# Выбрать тип наса NAS "Другой" |
# Указать пароль для COA # Указать IP адрес XGE # Указать "Указать Имя скрипта событий" - xge_router.sh |
# Предварительно забекапить /var/lib/event/event_inc.sh |
# Скопировать скрипты событий {code} |
cp /var/lib/event/examples/xge_router.sh /var/lib/event/xge_router.sh cp /var/lib/event/examples/event_inc.sh /var/lib/event/event_inc.sh |
cp -f /var/lib/event/example/xge_router.sh /var/lib/event/xge_router.sh cp -f /var/lib/event/event_inc.sh.tmplt /var/lib/event/event_inc.sh |
{code} При отсутствии скриптов в каталоге /var/lib/event/examples, нужно создать новые одноименные файлы и скопировать в них соответствующий текст скрипта, который опубликован в примечании данной статьи. |
... |
nas_id=1 #id наса посмотреть в менеджере |
sqlexec "insert into nas_radius_params (NAS_ID,ATTRIBUTE,THEVALUE,OP) values ($nas_id, 'Filter-Id', 'session Framed-IP-Address rate set in \$rate_in \$ceil_in \$burst_in out \$rate_out \$ceil_out \$burst_out', ':=')" \$ceil_out', '+=')" |
sqlexec "insert into nas_radius_params (NAS_ID,ATTRIBUTE,THEVALUE,OP) values ($nas_id, 'Filter-Id', 'session Framed-IP-Address nat \$nat', ':+=')" |
{code} |
Проверьте, что у вас в тарифах указаны rate и ceil. Если они не указаны, то ограничение скорости происходить не будет |
Настройки в XGE1 через консоль # ввести команду menu |
# для настроек VPN: Carbon XGE Router 5 \-> Настройки VPN сервера... включить требуемые типы ваторизации авторизации и указать dns сервера, которые будут отдаваться абонентам |
# Настройки Radius |
# указать Radius-secret, Пароль COA-клиента,Порт COA-сервера, Общий пароль для IPoE авторизации - те же параметры, как указаны в биллинге. |
# Сервер авторизации - IP-адрес биллинга c 1812 портом (прим.10.90.245.55:1812 ) # Сервер аккаунтинга - IP-адрес биллинга c 1813 портом (прим.10.90.245.55:1813 ) # IP адрес COA-клиента - IP-адрес биллинга |
# IP адрес этого NAS-сервера - IP-адрес XGE, с которого будет происходить взаимодействие с биллингом (тот, что указан в биллинге, как адрес наса) NASа) |
# Настройки сенсора netflow |
... |
DATA=$@ |
|
for VAR in $DATA; do [[ "$VAR" = *"="* ]] && eval ${VAR%%=*}=\'${VAR#*=}\' done |
is_daemon=1 |
LOG INFO "$SENDER $EVENT $DATA" |
if [ "$nas_ip" == "0.0.0.0" ]; then exit 0 fi |
user_refresh(){ accept=1 |
... |
elif [ "$EVENT" = "user_data_changed" ]; then user_data_changed |
elif [ "$EVENT" = "radius_update_err" ]; then user_disconnect elif [ "$EVENT" = "rad_acc_timeout" ]; then user_disconnect elif [ "$EVENT" = "try_double_login" ]; then user_disconnect elif [ "$EVENT" = "user_info" ]; then user_info 2>&1 > /tmp/${id}_user_info output="$(cat /tmp/${id}_user_info | head -c 8000 | iconv -f koi8-r -t cp1251)" rm -f /tmp/${id}_user_info { . /etc/ics/ics.conf echo -e "SET SQL DIALECT 3;\n" echo -e "SET NAMES WIN1251;\n" echo -e "CONNECT '127.0.0.1:/var/db/ics_main.gdb' USER '$ISC_USER' PASSWORD '$ISC_PASSWORD';\n" echo -e "DELETE FROM users_diagnostic WHERE user_id='$id';\n" echo -e "EXECUTE PROCEDURE KNL_USR_DIAGNOSTIC_INS('$id', '$output');\n" echo -e "commit;\n" } >/tmp/$$.tmp isql < /tmp/$$.tmp rm -f /tmp/$$.tmp |
else user_refresh |
user_rate_set |
fi else |
... |
mkdir -p $TMPDIR |
set -x |
__exit() { local ret=$? |
... |
} |
# set -eux |
burst_in='' burst_out='' |
... |
echo "Filter-Id=\"$@\"" | radclient -x $nas_ip:3799 coa $coa_psw &>$TMPDIR/radclient.$$ ret=$? |
# exit 254 отложить передачу, todo возможно и другие схожие busy context и тд |
grep "no response from server" $TMPDIR/radclient.$$ && exit 254 cat $TMPDIR/radclient.$$ |
... |
[ "$auth_type" = "1" ] && __xge_coa_send session $ip start IPOE __xge_coa_send session $ip redirect blocked cancel |
__xge_coa_send session $ip nat $snat_ip |
} |
... |
__xge_coa_send session $ip disconnect } |
|
__xge_list_local(){ ipset -o save -l $4 | grep add | cut -d ' ' -f 3 |
... |
chown apache:apache /tmp/${user_id}_user_info } |
user_get_mac() { local TMPDIR=/tmp/nas_event_daemon/$nas_ip/user_get_mac/ mkdir -p $TMPDIR/ __xge_coa_send session $ip get_mac | grep "Reply-Message" | sed -e 's/Reply-Message =//g; s/^\s\+//g; s/^"//g; s/"$//g' >> ${TMPDIR}/${user_id} chmod 777 -R /tmp/nas_event_daemon/ } get_mac(){ res="$(echo "Filter-Id=\"session $ip get_mac\"" | radclient -x $nas_ip coa $coa_psw | grep Reply-Message)" res=${res/*= \"/} res=${res/\"/} LOG INFO "SELECT * FROM KNL_USR_SETMAC('$ip', '$res')" sqlexec "SELECT * FROM KNL_USR_SETMAC('$ip', '$res')" } |
{code} |