Как и любой другой биллинг система UTM5 позволяет хранить трафик абонентов. Детальный трафик пишется в файлы с именами вида iptraffic_raw_1500834295.utm . Число в имени означает время в формате UNIX, с которого началась запись файла.
Для перевода UNIX-времени в обычный формат можно воспользоваться онлайн-калькуляторами, например, таким https://www.cy-pr.com/tools/time/
Сам файл при разборе его через утилиту
get_nf_direct представляет собой набор следующих данных (исходящий трафик): время в формате UNIX, id абонента, его внутренний ip, класс трафика, протокол, флаги TCP, количество переданных пакетов и байт. Стоит отметить, что в строках с адресами NAT id из биллинга отсутствует. Поэтому приходится вычислять по времени внутренний ip, с которого был запрос на требуемый правоохранителями сайт (лучше взять выгрузку +/- 5 секунд от требуемого времени).
1 2 3 4 5 6 7 8 9 10 | 1530013559 3257 192.168.160.17 92.86.50.240 20 2 96 53130 17942 Tue Jun 26 14:45:59 2018 1530013559 3257 192.168.160.17 2.62.246.6 20 5 308 53130 6881 Tue Jun 26 14:45:59 2018 1530013559 3257 192.168.160.17 94.245.131.129 20 2 96 53130 57626 Tue Jun 26 14:45:59 2018 1530013559 1182 194.226.130.228 192.168.151.50 10 2 1050 443 55703 Tue Jun 26 14:45:59 2018 1530013559 834 192.168.125.57 149.154.167.92 20 2 120 54822 443 Tue Jun 26 14:45:59 2018 1530013559 1634 52.34.152.120 192.168.141.18 10 3 155 443 52817 Tue Jun 26 14:45:59 2018 1530013559 0 109.106.143.56 62.33.11.196 10 2 96 1126 5279 Tue Jun 26 14:45:59 2018 1530013559 2138 192.168.141.61 45.124.255.83 20 5 4051 37923 443 Tue Jun 26 14:45:59 2018 1530013559 1612 192.168.141.5 217.69.139.118 20 25 3035 44054 443 Tue Jun 26 14:45:59 2018 1530013559 0 176.50.170.210 62.33.11.143 10 2 96 57801 34721 Tue Jun 26 14:45:59 2018 |
Команда для извлечения трафика в формат csv. В примере из файла статистики выбираются записи об исходящем трафике к ip-адресам социальной сети ВКонтакте.
1 | /data/netup/utm5/bin/get_nf_direct -e -c 20 -C -b iptraffic_raw_1500577566.utm | grep -E "87.240.180.136|87.240.129.71|87.240.190.67|87.240.182.224" > 200717.csv |
Место расположения файлов статистики, их размер, количество и прочие параметры настраиваются через утилиту utm5_admin:

- _
- _
- _
- _
- Каталог на сервере, где хранится детальный трафик UTM5. У нас каталог находится на отдельных дисках по 3,5Т, объединенных в RAID0.
- Скрипт, который выполняется при закрытии файла с трафиком
- Размер файла статистики в байтах.
- Максимальное количество файлов
Сколько места выделить на хранение файлов детального трафика UTM5? Как известно, данные необходимо хранить три года. 3 тысячи абонентов в дневное время за 2 минуты генерируют записей на 120 МБ (цифры грубые, у разных провайдера могут отличаться). За три года набегает чуть более 90 террабайт.
Если вы ограничены в средствах на СХД, можно попробовать поступить следующим способом: сжимать трафик через скрипт (6 на скриншоте 1). Можно воспользоваться стандартным gzip. Он сожмет 120 Мб примерно в 26 Мб. И для хранения данных за три года потребуется около 20 террабайт вместо 90. Можно пойти и дальше, использовав утилиту 7z. Она сожмет файл статистики примерно до 13 Мб. И трехлетний трафик влезет на 10Т дисковый массив. Отмечу, что архивированные gzip’ом файлы 7z в два раза не уменьшит. Для этого необходимо распаковать файл.gz и пережать его второй утилитой. Пример скрипта raw_fd_script.sh:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #!/bin/sh
if [ -z $1 ] ; then
echo "type: $0 <path_for_statfile>" ; exit
fi
statfile_path="$1"
RVAL=''
#/usr/bin/gzip -c $statfile_path > $statfile_path.gz
/usr/local/bin/7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on $statfile_path.7z $statfile_path | grep -w "Creating" >> /billing/utm5/log7zip.txt
/bin/date "+%Y-%m-%d %H:%M%n" >> /billing/utm5/log7zip.txt
RVAL=$?
if [ $RVAL -eq 0 ] ; then
else
echo "Compression error, exiting ..." ; exit 1
fi |
После выполнения этого скрипта на выходе к файлу
iptraffic_raw_1500834295.utm добавится файл
iptraffic_raw_1500834295.utm.7z. Файлы .utm затираются циклически. Их количество не превышает 5 тыс. файлов (6 на скриншоте 1), что составляет примерно одну неделю. Сжатые файлы останутся. Минусом такого подхода к хранению детального трафика является потеря доступа к просмотру старого трафика (старше 7 дней) через утилиту utm5_admin. Запрашиваемый трафик придется выгружать через консольную утилиту get_nf_direct.
Если нужен доступ к статистике через
utm5_admin, то придется увеличить максимальное количество сохраняемых файлов, а в скрипте дописать строки, которые удаляют файл .utm после архивации и создают вместо него пустой файл с таким же именем. Далее при необходимости придется распаковывать нужные файлы 7z с затиранием пустых одноименных файлов. Минус такого подхода: количество файлов в каталоге увеличится в два раза.
Я предпочитаю первый способ, с сохранением только 7z файлов и доступом к трафику через консольную утилиту get_nf_direct.
Обновлено 29.01.2018. Изменен код для работы с расширением mysqli.
Созданы скрипты для интеграции сервиса Смотрёшка (API версии 2) в биллинг Netup UTM5. Прошу не ругать, код отвратительный, но я только начинаю. В качестве посредника для хранения lfstrm_id была использована база данных MySQL. Данные скрипты созданы с целью централизованной регистрации пользователей операторами биллинга. Мои костыли прекрасно подойдут для bandl и промо тарифов, самостоятельное подключение которых для абонентов закрыто.
В скриптах реализованы следующие возможности:
- Регистрация учетной записи
- Запись пары account_id и lfstrm_id в базу данных
- Отключение подписки
- Включение подписки
- Проверка на ранее зарегистрированную учетную запись
При создании скриптов были использованы идеи со следующих страниц:
- http://forum.nag.ru/forum/index.php?showtopic=110891&st=0
- http://www.netup.ru/phpbb/viewtopic.php?p=68680
- http://forum.nag.ru/forum/index.php?showtopic=87043
Я не стал использовать для работы с биллингом NetUP Utm5 разработанный на php пакет URFA, так как разобраться в его коде начинающим и «не программистам» довольно трудно. Да и заброс lfstrm_id можно при желании организовать через MySQL прямо в базу биллинга, но так как база очень большая, я решил её не трогать и создать отдельную.
http://wiki.flintnet.ru/doku.php/urfaclient_admin.php
Создаем базу данных, пользователя и таблицу, куда будет записываться пара ACCOUNT_ID (параметр пользователя из биллинга Netup Utm5) и Lfstrm_id (генерируется при регистрации пользователя в панели оператора на сервере Смотрёшки).
1 2 3 4 5 6 7 |
mysql CREATE DATABASE `smotreshka` CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE USER `smotreshka`@`localhost` IDENTIFIED BY `password123`; GRANT ALL PRIVILEGES ON smotreshka.* TO `smotreshka`@`localhost`; USE smotreshka; CREATE TABLE lifestream (id INT AUTO_INCREMENT PRIMARY KEY, billing_id INT(10) NOT NULL, login VARCHAR(100) NOT NULL, lfstrm_id VARCHAR(100) NOT NULL); DESCRIBE lifestream; quit; |
РНР-скрипт, который будет проверять наличие у пользователя Lfstrm_id в базе данных smotreshka и (при отсутствии параметра) регистрировать пользователя в панели оператора на сервере Смотрешки с последующей записью Lfstrm_id в базу данных. Если параметр уже есть в базе данных, то пользователю добавляется iptv-пакет
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
#!/usr/local/bin/php
<!--php
// Все параметры передаем скрипту через http запрос
$login1 = $_GET["name"]; //хранит переменную LOGIN из биллинга NetUP UTM5
$billing_id1 = $_GET["acid"]; //хранит переменную ACCOUNT_ID из биллинга NetUP UTM5
$username1 = $billing_id1."__".$login1; //эта строка отправляется в панель оператора на сервер Смотрёшки
$email1 = $_GET["mail"]; //хранит переменную EMAIL из биллинга NetUP UTM5
$iptv_id1 = array($_GET["iptvid"]); //хранит id IPTV-пакета Смотрёшки, который подключается при регистрации пользователя на сервере Смотрёшки
$iptv_id2 = $_GET["iptvid"]; //хранит id IPTV-пакета Смотрёшки, который подключается, если пользователь уже зарегистрирован на сервере Смотрёшки и имеет lfstrm_id
// Для передачи параметров через ssh соединение, раскомментируйте нижние строки.
// Пример команды:
// #script_add.php LOGIN ACCOUNT_ID EMAIL id_iptv
#$login1 = $argv[1];
#$billing_id1 = $argv[2];
#$username1 = $argv[2]."__".$argv[1];
#$email1 = $argv[3];
#$iptv_id1 = array($argv[4]);
#$iptv_id2 = $argv[4];
//Это файл лога, который будет хранить информацию о регистрации пользователей на сервере Смотрёшки,
//их lifestream id, а также время отключения и подключения тарифов
$fd = fopen("/data/smotreshka/log/add_user.log", 'a+') or die("Error open file");
fwrite($fd," \n");
fwrite($fd, date(format).'__');
fwrite($fd, $billing_id1.'__');
fclose($fd);
//ваш url, предоставляемый менеджером Смотрёшки
$api_string_url = "http://you_url_smotreshka.proxy.lfstrm.tv/v2/";
//функция для регистрации пользователя в панели оператора на сервере Смотрёшки
function UserCreate($c, $username, $billing_id, $login, $email, array $iptv_id=['',])
{
global $api_string_url;
$add_url = "accounts"; //согласно API Смотрёшки версии 2.0
$body = array(
'email' =--> $email,
'username' => $username,
'purchases' => $iptv_id //iptv-пакет, подключаемый по умолчанию. При необходимости, эту строку можно заккоментировать и убрать запятую после $username
);
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => json_encode($body),
'timeout' => 60
)
);
$context = stream_context_create($opts);
$url = $api_string_url.$add_url; //согласно API Смотрёшки версии 2.0
$result = file_get_contents($url, false, $context);
//пишем ответ сервера Смотрешки в наш лог
$fd = fopen("/data/smotreshka/log/add_user.log", 'a+');
fwrite($fd, $result);
$obj=json_decode($result); //Вытащим из результата id, присваиваемый сервером Смотрёшки
$a = "insert into lifestream values ('".$billing_id."','".$billing_id."','".$login."','".$obj->id."')";
#$res = mysql_query($a);
$res = mysqli_query($c, $a, MYSQLI_USE_RESULT);
if ($res) echo $res;
//при возникновении ошибок с mysql пишем описание ошибки и её номер в лог
$me = ' MySQL error:'.mysql_error().'Error Num:'.mysql_errno();
fwrite($fd,$me);
fclose($fd);
mysqli_free_result($res);
}
//функция для добавления пользователю iptv-пакета
function subscribe($user_id, $billing_id, $iptv_id) {
global $api_string_url;
$add_url = "accounts/"; //согласно API Смотрёшки версии 2.0
$add_url2 = "/subscriptions"; //согласно API Смотрёшки версии 2.0
$body = array(
'id'=>$iptv_id,
'valid'=> true
);
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => json_encode($body),
'timeout' => 60
)
);
$context = stream_context_create($opts);
$url = $api_string_url.$add_url.$user_id.$add_url2; //согласно API Смотрёшки версии 2.0
$result = file_get_contents($url, false, $context);
echo $result;
//Пишем в лог IPTV-подписку, которую получил пользователь
$fd = fopen("/data/smotreshka/log/add_user.log", 'a+') or die("Error open file");
fwrite($fd," \n");
fwrite($fd, date(format).'__');
fwrite($fd, $billing_id.'__');
fwrite($fd, 'IPTV_add__'.$result);
fclose($fd);
}
//проверяем по базе данных smotreshka, есть ли у пользователя биллинга lfstrm_id
#$c=mysql_connect("localhost:3306","smotreshka","password123");
#mysql_select_db("smotreshka",$c);
$c1=mysqli_connect('localhost:3306','smotreshka','password123','smotreshka');
$a = "select lfstrm_id from lifestream where id=".$billing_id1;
#$res = mysql_query($a);
#$array = mysql_fetch_array($res);
#echo $array[0];
$res = mysqli_query($c1, $a, MYSQLI_USE_RESULT);
$array = mysqli_fetch_array($res);
mysqli_free_result($res);
echo $array[0];
$res2 = $array[0];
if (($array[0]) == 0)
{
//lfstrm_id отсутствует, регистрируем
UserCreate($c1, $username1, $billing_id1, $login1, $email1, $iptv_id1);
}
else
{
//lfstrm_id уже есть, подключаем пользователю iptv-пакет
subscribe($res2, $billing_id1, $iptv_id2);
}
#mysql_close($c);
mysqli_close($c1);
?>
|
РНР-скрипт, отключающий у зарегистрированного в Смотрёшке пользователя iptv-пакет
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
#!/usr/local/bin/php
<!--?php
$billing_id1 = $_GET["acid"];
$iptv_id1 = $_GET["iptvid"];
#$billing_id1 = $argv[1];
#$iptv_id1 = $argv[2];
//ваш url, предоставляемый менеджером Смотрёшки
$api_string_url = "http://you_url_smotreshka.proxy.lfstrm.tv/v2/";
#$c=mysql_connect("localhost:3306","smotreshka","password123");
#mysql_select_db("smotreshka",$c);
$c=mysqli_connect("localhost:3306","smotreshka","password123","smotreshka");
$a = "select lfstrm_id from lifestream where id=".$billing_id1; //ищем lfstrm_id, соответствующий пользователю биллинга NetUP UTM5
#$res = mysql_query($a);
#$res1 = mysql_fetch_array($res);
#$res2 = $res1[0];
#mysql_close($c);
$res = mysqli_query($c, $a, MYSQLI_USE_RESULT);
$res1 = mysqli_fetch_array($res);
$res2 = $res1[0];
mysqli_free_result($res);
//функция для отключения iptv-пакета
function unsubscribe($user_id, $iptv_id) {
global $api_string_url;
$add_url = "accounts/"; //согласно API Смотрёшки версии 2.0
$add_url2 = "/subscriptions"; //согласно API Смотрёшки версии 2.0
$body = array(
'id'=-->$iptv_id,
'valid'=> false
);
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => json_encode($body),
'timeout' => 60
)
);
$context = stream_context_create($opts);
$url = $api_string_url.$add_url.$user_id.$add_url2; //согласно API Смотрёшки версии 2.0
$result = file_get_contents($url, false, $context);
echo $result;
}
unsubscribe($res2, $iptv_id1);
?>
mysqli_close($c);
|
У нас возникла ситуация, когда пользователям были присвоены ТВ-тарифы, но в локальную базу данных не записался lifestream id. На сервере Смотрешки они зарегистрировались, и получили iptv-пакеты. Чтобы узнать lfstrm id, который почему-то не отображается в панели оператора Смотрешки, написал еще один РНР-скрипт, выгружающий со Смотрёшки инфу по всем пользователям.
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 |
#!/usr/local/bin/php
<!--?php
//ваш url, предоставляемый менеджером Смотрёшки
$api_string_url = "http://you_url_smotreshka.proxy.lfstrm.tv/v2/";
function UserInfo () {
global $api_string_url;
$add_url = "accounts?page_size=-1";
$opts = array('http' =-->
array(
'method' => 'GET',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => json_encode($body),
'timeout' => 60
)
);
$context = stream_context_create($opts);
$url = $api_string_url.$add_url;
$result = file_get_contents($url, false, $context);
echo date(format);
echo "_____ \n";
echo $result;
}
UserInfo();
|
Теперь в биллинге необходимо создать тарифные планы Интернет+ТВ. В тарифные планы необходимо включить только услугу передачи IP трафика.
Для каждого комплексного тарифа требуется добавить четыре правила файрволла () (Настройки — Правила Firewall — Добавить). Два на подключение и отключение интернета. Остальные — на подключение и отключение iptv. Все правила срабатывают при наступлении событий «Включение интернета» или «Выключение интернета». В Названии тарифа выберите созданный комплексный тариф и установите галку на Совпадают все параметры.
У нас команды с файрволла передаются по ssh на микротик.
Примеры правил:
1 2 3 4 5 6 7 8 |
//включение интернета (событие Включение интернета)
/ip firewall address-list add address=UIP list=allow_list_tarif comment=UID
//включение ТВ (событие Включение интернета)
/tool fetch url="http://ip_биллинга/script_add.php\?name=LOGIN&acid=ACCOUNT_ID&mail=EMAIL&iptvid=117"
//выключение интернета (событие Выключение интернета)
/ip firewall address-list remove [find comment=UID]
//выключение ТВ (событие Выключение интернета)
/tool fetch url="http://ip_адрес_биллинга/script_off.php\?acid=ACCOUNT_ID&iptvid=117"
|
Если у вас настроен безпарольный ssh-доступ с Микротика на сервер биллинга, то правила включения-отключения ТВ можно заменить на следующие (дополнительно требуется раскоментировать начальные строки в скриптах):
1 2 3 4 |
//включение ТВ (событие Включение интернета)
/system ssh address=ip_адрес_биллинга user=admin command="/путь_к_скрипту/script_add.php LOGIN ACCOUNT_ID EMAIL 117"
//выключение ТВ (событие Выключение интернета)
/system ssh address=ip_адрес_биллинга user=admin command="/путь_к_скрипту/script_off.php ACCOUNT_ID 117"
|
После обновления операционной системы с версии 9.3 до версии 10.3 у меня пропал порт xml ( /usr/local/bin/xml ). Новая версия xml2 не парсит файл выгрузки командой
/usr/local/bin/xml2 pyx /data/reestr/dump.xml | sort | uniq | grep ^- | sed ‘s,-,add list=blocklist address=,g;s,$,,g’ >> /d
Поиски xml ни к чему не привели, поэтому пришлось доработать скрипт на python (ссылка на оригинал). Из него я взял только этот кусок
1 2 3 4 5 |
xml = parse('/tcpdumps/rkn/dump.xml')
ip = xml.getElementsByTagName('ip')
f = open('/tcpdumps/rkn/action.txt', 'w')
for node in ip:
f.write(node.childNodes[0].nodeValue + '\n')
|
Изменим его на вид
1 2 3 4 5 6 7 8 |
from xml.dom.minidom import *
import os
os.remove('mt_zapretip.auto.rscNS')
f=open('mt_zapretip.auto.rscNS', 'a')
xml = parse('dump.xml')
ips = xml.getElementsByTagName('ip')
for ip in ips:
f.write('/ip firewall address-list add list=blocklist address=%s;\n' % ip.childNodes[0].nodeValue)
|
где mt_zapretip.auto.rscNS — пустой файл, в который попадут неотсортированные команды для выполнения на сервере Microtik. Дополнительная сортировка требуется из-за того, что в файл часто попадают несколько одинаковых команд с одинаковыми ip. Если Микротик при выполнении скрипта попадет на такие команды, то выполнение скрипта завершится.
Скрипт сохраняем под именем extract.py
Создаем еще один скрипт script.sh и добавляем в него следующие команды
1 2 3 4 5 6 7 8 9 |
#!/bin/sh cd /data/reestr rm mt_zapretip.auto.rsc rm mt_zapretip.auto.rscPR touch mt_zapretip.auto.rsc touch mt_zapretip.auto.rscPR sort -u mt_zapretip.auto.rscNS > mt_zapretip.auto.rscPR echo "/ip firewall address-list remove numbers=[find list=blocklist];" > mt_zapretip.auto.rsc cat mt_zapretip.auto.rscPR >> mt_zapretip.auto.rsc<span style="color: #ff6600;">/usr/local/bin/lftp -u utm, -e "put /data/reestr/mt_zapretip.auto.rsc ; bye" 10.10.0.1 |
где mt_zapretip.auto.rsc — итоговый файл для Микротика. mt_zapretip.auto.rsc — промежуточный файл. Он необходим для добавления в начало скрипта команды удаления всех ай-пи из списка блокировки на микротике. 10.10.0.1 — ip адрес сервера с Микротиком. На сервере должен быть разрешен доступ по tftp
После отправления скрипта на сервер он запустится автоматически.
Скрипты необходимо добавить в Cron ( crontab -e )
10 * * * * cd /data/reestr/; /usr/local/bin/python ./extract.py 12 * * * * cd /data/reestr/; ./script.sh Для получения выгрузки используем скрипт zapret_checker.py (оригинал).
Проведем официальную архивацию большой базы данных UTM5. Ранее архивация никакими самописными скриптами не проводилась.
Имеем
- биллинг NetUP UTM billing system core. Compile date: Apr 1 2016 13:13:49 Version:5.3-003-update15-bsd93_x64 Rev #15609. У биллинга 6-летняя 40 гигабайтная база, к которой не применялись самопальные скрипты по архивации огромных таблиц.
- Система FreeBSD localhost 9.3-RELEASE FreeBSD 9.3-RELEASE #0: Sun Nov 23 21:43:56 MSK 2014 @ :/usr/obj/usr/src/sys/GENERICIPFW amd64
1. Делаем бекап базы данных. Воспользуемся стандартным скриптом в каталоге /netup/utm5/bin/utm5_backup.sh/netup/utm5/bin/utm5_backup.sh
2. После слова Done проверяем наличие бекапа базы в каталоге /netup/utm5/backup/ , копируем бекап на внешний носитель
3. Создаем архив через java-админку биллинга в разделе Настройки — Архивирование БД — Создать
ВНИМАНИЕ: разработчики биллинга к сожалению не предусмотрели возможность архивирования хотя бы по годам. Поэтому наши 6-летние таблицы уйдут в один архив. Нет и возможности удаления из админки старых архивов. Например, старше 3 лет.
4. После запуска архивации начнется медленная процедура по переносу быстрорастущих таблиц в архивные таблицы. На нашей базе это действие заняло где-то ночь
5. После завершения архивации начинается самое страшное. В отчетах пропали все данные. В разделе Настройки — Архивирование БД наш архив подсвечивается красным, а в колонке статус висит единицы. Природа этого явления и расшифровка статусов в официальном руководстве не описана. Без паники.
6. Не знаю, как с точки зрения разработчиков, но мы решили остановить биллинг. Добавили в utm5.cfg следующие значения (при их отсутствии)
verify_database=enable
verify_archive_tables=enable
7. Стартуем ядро биллинга и (если не запустилось) rfw. Теперь начинается медленная процедура проверки архивных таблиц. Следить за проверкой можно в консоли mysql-сервера. С биллингом можно работать в обычном режиме. Проверка идет в фоне
mysql
show processlist;
8. После завершения проверки строка архива в разделе Настройки — Архивирование БД позеленеет. А статус перейдет из единицы в нуль.
9. Теперь все отчеты будут доступны. Особого быстродействия при работе с ними не получилось, так как запаковались они в один архив.
10. Следующую архивацию можно производить не ранее чем через 28 дней
ВНИМАНИЕ: один из администраторов биллинга столкнулся с проблемами при архивировании в полночь последнего дня месяца. Считаю, что лучше делать архивацию в любой день, кроме последнего.
Пишу этот опус, так как в сети маловато информации по обновлению. Есть стандартная инструкция, в которой не раскрыты многие мелочи.
Имеем
- биллинг UTM5 версии 5.2-008. У биллинга 6-летняя 40 гигабайтная база, к которой не применялись самопальные скрипты по архивации огромных таблиц. Переход на 5.3-003 требуется из-за официальной архивации и увеличившегося функционала.
- Система FreeBSD localhost 9.3-RELEASE FreeBSD 9.3-RELEASE #0: Sun Nov 23 21:43:56 MSK 2014 @ :/usr/obj/usr/src/sys/GENERICIPFW amd64
1. Останавливаем биллинг
/usr/local/etc/rc.d/utm5_core.sh stop
/usr/local/etc/rc.d/utm5_rfw.sh stop
2. Делаем бекап базы данных. Воспользуемся стандартным скриптом в каталоге /netup/utm5/bin/utm5_backup.sh
/netup/utm5/bin/utm5_backup.sh
3. После слова Done проверяем наличие бекапа базы в каталоге /netup/utm5/backup/ , копируем бекап на внешний носитель и делаем резервную копию каталога netup
cp -R /netup/ /netup_old
Сделайте копии и скриптов запуска (вдруг понадобится откатиться на старую версию)
° /usr/local/etc/rc.d/utm5_core.sh ° /usr/local/etc/rc.d/utm5_radius.sh ° /usr/local/etc/rc.d/utm5_rfw.sh
4. Удалим старый UTM5
pkg info
(если в списке нет utm5-2.1.008, то удаляем вручную все файлы из каталога /netup/utm5/ и )
pkg delete utm5-2.1.008
5. Далее по официальной инструкции необходимо установить новый utm5.3-003
pkg add utm5-3.003.tbz
Но у меня этот вариант почему-то не прошел. Я просто разархивировал utm5-3.003.tbz и распихал все в каталог /netup/utm5/ , а скрипты запуска utm5_core.sh, utm5_radius.sh и utm5_rfw.sh в каталог /usr/local/etc/rc.d/
6. Далее воспользуемся грамотной статьей http://linuxsnippets.net/ru/node/360 и обработаем старую базу данных под новое ядро биллинга
ВНИМАНИЕ: Проверьте версию mysql. Если она ниже 5.6 желательно сделать обновление (по требованию разработчиков). У меня все работает на 5.1.73.
7. Обновим структуру (операция проходит быстро)
mysql -p -f UTM5 < /netup/utm5/UTM5_MYSQL_update.sql
8. Обновим индексы (ВНИМАНИЕ: начинается самая медленная операция. Длилась она больше 14 часов на базе 40Гб). Если у вас нестабильное интернет-соединение, воспользуйтесь утилитой screen, чтобы не потерять связь с терминалом.
ВНИМАНИЕ: Перед обновлением необходимо увеличить параметр mysql-сервера max_allowed_packet до 32M . Его нужно поправить в файле /etc/my.cnf и перезапустить mysql-сервер. Сам забыл поправить, но на 10М все отработало без ошибок.
mysql -p -f UTM5 < /netup/utm5/UTM5_indexes.sql
Чтобы понять, чем конкретно занят mysql-сервер, нужно зайти в его консоль (например, с другого SSH- или виртуального screen терминала) и выполнить запрос show processlist;
mysql
show processlist;
9. Когда processlist будет пуст, значит обновление индексов завершилось.
10. Правим файлы rfw5.cfg и utm5.cfg (данные можно взять из предварительно сохраненных файлов в директории /netup_old )
В utm5.cfg я внес
verify_database=enable
verify_archive_tables=enable
и заккоментировал verify_database_index=enable
11. Переносим свои скрипты (если есть) из каталога /netup_old в каталог /netup/utm5/ на свои места.
11.1 Копируем в каталог /netup/utm5/ новый ключ reg.sql (его нужно взять в личном кабинете на сайте UTM5. Файл должен подцепиться автоматически при старте биллинга. Можно залить ключ в базу и вручную)
12. Пробуем стартовать биллинг
/usr/local/etc/rc.d/utm5_core.sh start
13. RFW у меня не поднялся сам. Приходится запускать вручную
/usr/local/etc/rc.d/utm5_rfw.sh start
14. Смотрим, появились ли процессы
sockstat -4
15. Для работы с новым биллингом качаем из личного кабинета на сайте UTM5 новую java-админку.
Это не мое. Использовались python и php скрипты c
http://forum.nag.ru/forum/index.php?showtopic=80677
Для корректной работы их пришлось немного модифицировать.
Задачи:
- Получить с сайта реестра запрещенных ресурсов выгрузку в формате xml
- Сделать парсинг — извлечь ip и url адреса из файла выгрузки
- Закинуть это на маршрутизатор mikrotik
1. Для получения будем использовать python-скрипты от автора Pavel Yegorov
zapretinfo.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__version__ = «0.0.4»
__author__ = «Pavel Yegorov»
import suds
from base64 import b64encode
#API_URL = «http://www.zapret-info.gov.ru/services/OperatorRequest/?wsdl»
API_URL = «http://vigruzki.rkn.gov.ru/services/OperatorRequest/?wsdl»
В нем мы изменили api_url на новый и версию на 2.2 в 39 строке
result=client.service.sendRequest(xml,sert,»2.2″)
zapret_checker.py
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
# yegorov-p.ru
from xml.etree.ElementTree import ElementTree
from datetime import datetime,timedelta
from zapretinfo import ZapretInfo
import time
import zipfile
from base64 import b64decode
XML_FILE_NAME = «/data/reestr/request.xml»
P7S_FILE_NAME = «/data/reestr/request.xml.sig»
VER = «2.2»
Где XML_FILE_NAME и P7S_FILE_NAME файл запроса и файл запроса, подписанный цифровой подписью. Последний может иметь расширения sign, sig, p7s.
Файл запроса должен быть в формате cp1251.
<?xml version=»1.0″ encoding=»windows-1251″?>
<request>
<requestTime>2012-10-01T01:01:01.000+04:00</requestTime>
<operatorName>имя оператора</operatorName>
<inn>ИНН оператора</inn>
<ogrn>ОГРН оператора</ogrn>
<email>обратная связь</email>
</request>
Как пишут на http://habrahabr.ru/sandbox/51575/ реально проверяются только ИНН и ОГРН. Я убедился, что можно сколь угодно раз посылать эти два файла и получать выгрузку. Хотя по идее, они должны сверять дату.
Файл провайдер подписывал в Крипто-ПРО. Ее можно установить в пробном режиме на 30 дней. Можно каждый раз создавать новый файл запроса (в вышеуказанных ссылках в скриптах он генерируется) и подписывать через openssl, как, например, здесьhttp://blog.timba.org.ua/post/1896.
Чтобы скрипт работал, должен быть установлен python2.6 или 2.7 (в версии 3 скрипт не работает. Я тестировал на 2.7) и модуль suds
Python2.7 ставим из портов
cd /usr/ports/lang/python27
make install clean
Модуль suds тоже из портов
cd /usr/ports/net/py-suds
make install clean
или вручную http://www.py-my.ru/post/4e818bd81d41c821a9000003#!
wget https://fedorahosted.org/releases/s/u/suds/python-suds-0.4.tar.gz
tar -xzf python-suds-0.4.tar.gz
cd python-suds-0.4/
python setup.py build
sudo python setup.py install
Присвоим скрипту права на выполнение и запускаем скрипт chmod +x zapret_checker.py ./zapret_checker.py В итоге сразу же отобразится идентификатор запроса, через некоторое время (7-10 минут) после фраз «Try it now…» появится фраза «Got in!«, что означает, что дамп реестра получен. Этот файл называется dump.xml.
2. Теперь перейдем к парсингу и закидыванию адресов в mikrotik. В прошлой версии статьи мы закидывали каждый адрес отдельным ssh запросом, что вызывало большое количество соединений по ssh и долгую загрузку всего листа с запрещенными адресами, который постоянно растет. Сейчас мы будем бросать список по протоколу ftp
2.1. Установим xml и lftp. Они необходимы для работы нового скрипта
cd /usr/ports/*/xml make install clean cd /usr/ports/*/lftp make install clean
2.2. Создадим в каталоге со скриптом каталог tmp
mkdir tmp
2.3. Создадим новый скрипт с расширением sh
ee new_script.sh
2.4. Добавим в него (по статье http://forum.nag.ru/forum/index.php?showtopic=79836&st=926 ) следующее
#!/bin/sh cd /data/reestr rm /data/reestr/tmp/mt_zapretip.auto.rsc echo -e "/ip firewall address-list remove numbers=[find list=blocklist]" > /data/reestr/tmp/mt_zapretip.auto.rsc echo -e "/ip firewall address-list\r" >> /data/reestr/tmp/mt_zapretip.auto.rsc /usr/local/bin/xml pyx /data/reestr/dump.xml | sort | uniq | grep ^- | sed 's,-,add list=blocklist address=,g;s,$,,g' >> /data/reestr/tmp/mt_zapretip.auto.rsc /usr/local/bin/lftp -u utm, -e "put /data/reestr/tmp/mt_zapretip.auto.rsc ; bye" IPадрес_микротика
Присвоим скрипту права на выполнение. Перед запуском заходим на микротик через winbox, в раздел IP-Services, включаем ftp и добавляем IP сервера со скриптом в список разрешенных. Возвращаемся на сервер, запускаем скрипт. В каталоге Files микротика должен появиться файл mt_zapretip.auto.rsc , который выполнится автоматически.
chmod +x new_script.sh
./new_script.sh
3. Закидываем скрипты в cron.
crontab -e
Добавляем
45 9 * * * root cd /data/reestr/; /data/reestr/zapret_checker.py
0 10 * * * root cd /data/reestr/; /data/reestr/new_script.sh
Между скриптами 15 минутный перерыв, так как между запросом и выгрузкой необходимо подождать несколько минут.
Все скрипты в архиве…reestr_mikrotik, кроме new_script.sh
От автора: не знаю, как будет дальше, но надзор который роском все ужесточает и ужесточает требования к реестру запрещенных ресурсов. Следующим шагом, как мне кажется, станет блокировка сайтов по url и по словам в url. Для создания этой блокировки можно почитать следующую статью https://habrahabr.ru/post/187574/
Это не мое. Использовались python и php скрипты c
http://forum.nag.ru/forum/index.php?showtopic=80677
Для корректной работы их пришлось немного модифицировать.
Задачи:
- Получить с сайта реестра запрещенных ресурсов выгрузку в формате xml
- Сделать парсинг — извлечь ip и url адреса из файла выгрузки
- Закинуть это на маршрутизатор mikrotik
1. Для получения будем использовать python-скрипты от автора Pavel Yegorov
zapretinfo.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__version__ = «0.0.4»
__author__ = «Pavel Yegorov»
import suds
from base64 import b64encode
#API_URL = «http://www.zapret-info.gov.ru/services/OperatorRequest/?wsdl»
API_URL = «http://vigruzki.rkn.gov.ru/services/OperatorRequest/?wsdl»
В нем мы изменили api_url на новый.
zapret_checker.py
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
# yegorov-p.ru
from xml.etree.ElementTree import ElementTree
from datetime import datetime,timedelta
from zapretinfo import ZapretInfo
import time
import zipfile
from base64 import b64decode
XML_FILE_NAME = «/data/reestr/request.xml»
P7S_FILE_NAME = «/data/reestr/request.xml.sig»
Где XML_FILE_NAME и P7S_FILE_NAME файл запроса и файл запроса, подписанный цифровой подписью. Последний может иметь расширения sign, sig, p7s.
Файл запроса должен быть в формате cp1251.
<?xml version=»1.0″ encoding=»windows-1251″?>
<request>
<requestTime>2012-10-01T01:01:01.000+04:00</requestTime>
<operatorName>имя оператора</operatorName>
<inn>ИНН оператора</inn>
<ogrn>ОГРН оператора</ogrn>
<email>обратная связь</email>
</request>
Как пишут на http://habrahabr.ru/sandbox/51575/ реально проверяются только ИНН и ОГРН. Я убедился, что можно сколь угодно раз посылать эти два файла и получать выгрузку. Хотя по идее, они должны сверять дату.
Файл провайдер подписывал в Крипто-ПРО. Ее можно установить в пробном режиме на 30 дней. Можно каждый раз создавать новый файл запроса (в вышеуказанных ссылках в скриптах он генерируется) и подписывать через openssl, как, например, здесь http://blog.timba.org.ua/post/1896.
Чтобы скрипт работал, должен быть установлен python2.6 или 2.7 (в версии 3 скрипт не работает. Я тестировал на 2.7) и модуль suds
Python2.7 ставим из портов
cd /usr/ports/lang/python27
make install clean
Модуль suds тоже из портов
cd /usr/ports/net/py-suds
make install clean
или вручную http://www.py-my.ru/post/4e818bd81d41c821a9000003#!
wget https://fedorahosted.org/releases/s/u/suds/python-suds-0.4.tar.gz
tar -xzf python-suds-0.4.tar.gz
cd python-suds-0.4/
python setup.py build
sudo python setup.py install
Присвоим скрипту права на выполнение и запускаем скрипт
chmod +x zapret_checker.py
./zapret_checker.py
В итоге сразу же отобразится идентификатор запроса, через некоторое время (7-10 минут) после фраз «Try it now…» появится фраза «Got in!», что означает, что дамп реестра получен. Этот файл называется dump.xml.
2. Теперь перейдем к парсингу и закидыванию адресов в mikrotik.
В версии скрипта для php есть способ закидывания ip и url в базу данных mysql. Также этот скрипт может подписывать и генерировать xml запрос, кидать его на сайт Роскомнадзора и получать ту же выгрузку. Так как я не сильно силен в php и python, скрипт php почему-то не пошел. Поэтому я убрал из него ненужные функции и оставил только закидывание в БД и на микротик. По сути, в начало скрипта я добавил
exec(‘ssh login@ip /ip firewall address remove [find list=blocklist]’);
Этим мы очистим blocklist. О нем расскажу позже. И в конец файла в цикл работы с базой данных добавляем
exec(«ssh login@ip /ip firewall address-list add list=blocklist address=’$ips'»);
Также вводим параметры подключения к БД
$db = Database::obtain
(
‘127.0.0.1’,
‘login’,
‘password’,
‘rzs’
);
‘rzs‘ — имя базы данных. Ее необходимо предварительно создать и подготовить. В ней два поля: ip и url. Первое поле тип INT, второе TEXT.
Присвоим скрипту права на выполнение и запускаем скрипт
chmod +x parser.php
./parser.php
3. Немного о маршрутизаторе Mikrotik. Для начала необходимо добавить в него логин без пароля и предоставить этому логину доступ к ssh с ip сервера, на котором лежат скрипты. После этого с сервера необходимо один раз подключиться по ssh к Mikrotik, чтобы сервер запомнил ключи ssh. Я осуществил блокировку через access-list, хотя в интернете есть реализация под layer 7, но там вся процедура получения,парсинга и закидывания на Mikrotik описана на языке С.
Закидываем скрипты в cron.
crontab -e
Добавляем
45 9 * * * root cd /data/reestr/; /data/reestr/zapret_checker.py
0 10 * * * root cd /data/reestr/; /data/reestr/parser.php
Между скриптами 15 минутный перерыв, так как между запросом и выгрузкой необходимо подождать несколько минут.
Все скрипты в архиве…reestr_mikrotik
UPD: Вышло обновление статьи. Читать Выгрузка реестра запрещенных ресурсов на Mikrotik через сервер с FreeBSD. 2.0
Останавливаем биллинг:
/usr/local/etc/rc.d/utm5_core.sh stop
Заходим в mysql:
mysql
Правим баланс:
UPDATE UTM5.accounts SET balance = 0 WHERE (id=1022);
quit
Запускаем:
/usr/local/etc/rc.d/utm5_core.sh start
Поправить баланс в базе можно также через phpmyadmin (на биллинг все-равно должен быть остановлен), либо через откат платежа в интерфейсе администратора (без остановки биллинга)
Layer 7 применяется для определения типов трафика.
В MikroTik он располагается в меню IP->Firewall
Настройки p2p для Layer 7:
1) Правило для utp
Name:
\B5TP
Regexp:
\\x7F\\xFF\\xFF\\xFF\\xAB
2) Правило для DHT
Name:
\DHT
Regexp:
^d1:[a|r]d2:id20:.*:y1:[q|r]e
Настройки интернет-радио для Layer 7:
3) Правило для shoutcast
Name:
shoutcast
Regexp:
^get /.*icy-metadata:1|icy [1-5][0-9][0-9] [\x09-\x0d -~]*(content-type:audio|icy-)
Настройки ip-телефонии для Layer 7:
4) Правило для ip-телефонии по протоколу sip (SIP, Mail.RU агент)
Name:
sip
Regexp:
^(invite|register|cancel|message|subscribe|notify) sip[\x09-\x0d -~]*sip/[0-2]\.[0-9]
5) Правило для skype для звонков на телефоны
Name:
skypeout
Regexp:
^(\x01.?.?.?.?.?.?.?.?\x01|\x02.?.?.?.?.?.?.?.?\x02|\x03.?.?.?.?.?.?.?.?\x03|\x04.?.?.?.?.?.?.?.?\x04|\x05.?.?.?.?.?.?.?.?\x05|\x06.?.?.?.?.?.?.?.?\x06|\x07.?.?.?.?.?.?.?.?\x07|\x08.?.?.?.?.?.?.?.?\x08|\x09.?.?.?.?.?.?.?.?\x09|\x0a.?.?.?.?.?.?.?.?\x0a|\x0b.?.?.?.?.?.?.?.?\x0b|\x0c.?.?.?.?.?.?.?.?\x0c|\x0d.?.?.?.?.?.?.?.?\x0d|\x0e.?.?.?.?.?.?.?.?\x0e|\x0f.?.?.?.?.?.?.?.?\x0f|\x10.?.?.?.?.?.?.?.?\x10|\x11.?.?.?.?.?.?.?.?\x11|\x12.?.?.?.?.?.?.?.?\x12|\x13.?.?.?.?.?.?.?.?\x13|\x14.?.?.?.?.?.?.?.?\x14|\x15.?.?.?.?.?.?.?.?\x15|\x16.?.?.?.?.?.?.?.?\x16|\x17.?.?.?.?.?.?.?.?\x17|\x18.?.?.?.?.?.?.?.?\x18|\x19.?.?.?.?.?.?.?.?\x19|\x1a.?.?.?.?.?.?.?.?\x1a|\x1b.?.?.?.?.?.?.?.?\x1b|\x1c.?.?.?.?.?.?.?.?\x1c|\x1d.?.?.?.?.?.?.?.?\x1d|\x1e.?.?.?.?.?.?.?.?\x1e|\x1f.?.?.?.?.?.?.?.?\x1f|\x20.?.?.?.?.?.?.?.?\x20|\x21.?.?.?.?.?.?.?.?\x21|\x22.?.?.?.?.?.?.?.?\x22|\x23.?.?.?.?.?.?.?.?\x23|\$.?.?.?.?.?.?.?.?\$|\x25.?.?.?.?.?.?.?.?\x25|\x26.?.?.?.?.?.?.?.?\x26|\x27.?.?.?.?.?.?.?.?\x27|\(.?.?.?.?.?.?.?.?\(|\).?.?.?.?.?.?.?.?\)|\*.?.?.?.?.?.?.?.?\*|\+.?.?.?.?.?.?.?.?\+|\x2c.?.?.?.?.?.?.?.?\x2c|\x2d.?.?.?.?.?.?.?.?\x2d|\..?.?.?.?.?.?.?.?\.|\x2f.?.?.?.?.?.?.?.?\x2f|\x30.?.?.?.?.?.?.?.?\x30|\x31.?.?.?.?.?.?.?.?\x31|\x32.?.?.?.?.?.?.?.?\x32|\x33.?.?.?.?.?.?.?.?\x33|\x34.?.?.?.?.?.?.?.?\x34|\x35.?.?.?.?.?.?.?.?\x35|\x36.?.?.?.?.?.?.?.?\x36|\x37.?.?.?.?.?.?.?.?\x37|\x38.?.?.?.?.?.?.?.?\x38|\x39.?.?.?.?.?.?.?.?\x39|\x3a.?.?.?.?.?.?.?.?\x3a|\x3b.?.?.?.?.?.?.?.?\x3b|\x3c.?.?.?.?.?.?.?.?\x3c|\x3d.?.?.?.?.?.?.?.?\x3d|\x3e.?.?.?.?.?.?.?.?\x3e|\?.?.?.?.?.?.?.?.?\?|\x40.?.?.?.?.?.?.?.?\x40|\x41.?.?.?.?.?.?.?.?\x41|\x42.?.?.?.?.?.?.?.?\x42|\x43.?.?.?.?.?.?.?.?\x43|\x44.?.?.?.?.?.?.?.?\x44|\x45.?.?.?.?.?.?.?.?\x45|\x46.?.?.?.?.?.?.?.?\x46|\x47.?.?.?.?.?.?.?.?\x47|\x48.?.?.?.?.?.?.?.?\x48|\x49.?.?.?.?.?.?.?.?\x49|\x4a.?.?.?.?.?.?.?.?\x4a|\x4b.?.?.?.?.?.?.?.?\x4b|\x4c.?.?.?.?.?.?.?.?\x4c|\x4d.?.?.?.?.?.?.?.?\x4d|\x4e.?.?.?.?.?.?.?.?\x4e|\x4f.?.?.?.?.?.?.?.?\x4f|\x50.?.?.?.?.?.?.?.?\x50|\x51.?.?.?.?.?.?.?.?\x51|\x52.?.?.?.?.?.?.?.?\x52|\x53.?.?.?.?.?.?.?.?\x53|\x54.?.?.?.?.?.?.?.?\x54|\x55.?.?.?.?.?.?.?.?\x55|\x56.?.?.?.?.?.?.?.?\x56|\x57.?.?.?.?.?.?.?.?\x57|\x58.?.?.?.?.?.?.?.?\x58|\x59.?.?.?.?.?.?.?.?\x59|\x5a.?.?.?.?.?.?.?.?\x5a|\[.?.?.?.?.?.?.?.?\[|\\.?.?.?.?.?.?.?.?\\|\].?.?.?.?.?.?.?.?\]|\^.?.?.?.?.?.?.?.?\^|\x5f.?.?.?.?.?.?.?.?\x5f|\x60.?.?.?.?.?.?.?.?\x60|\x61.?.?.?.?.?.?.?.?\x61|\x62.?.?.?.?.?.?.?.?\x62|\x63.?.?.?.?.?.?.?.?\x63|\x64.?.?.?.?.?.?.?.?\x64|\x65.?.?.?.?.?.?.?.?\x65|\x66.?.?.?.?.?.?.?.?\x66|\x67.?.?.?.?.?.?.?.?\x67|\x68.?.?.?.?.?.?.?.?\x68|\x69.?.?.?.?.?.?.?.?\x69|\x6a.?.?.?.?.?.?.?.?\x6a|\x6b.?.?.?.?.?.?.?.?\x6b|\x6c.?.?.?.?.?.?.?.?\x6c|\x6d.?.?.?.?.?.?.?.?\x6d|\x6e.?.?.?.?.?.?.?.?\x6e|\x6f.?.?.?.?.?.?.?.?\x6f|\x70.?.?.?.?.?.?.?.?\x70|\x71.?.?.?.?.?.?.?.?\x71|\x72.?.?.?.?.?.?.?.?\x72|\x73.?.?.?.?.?.?.?.?\x73|\x74.?.?.?.?.?.?.?.?\x74|\x75.?.?.?.?.?.?.?.?\x75|\x76.?.?.?.?.?.?.?.?\x76|\x77.?.?.?.?.?.?.?.?\x77|\x78.?.?.?.?.?.?.?.?\x78|\x79.?.?.?.?.?.?.?.?\x79|\x7a.?.?.?.?.?.?.?.?\x7a|\{.?.?.?.?.?.?.?.?\{|\|.?.?.?.?.?.?.?.?\||\}.?.?.?.?.?.?.?.?\}|\x7e.?.?.?.?.?.?.?.?\x7e|\x7f.?.?.?.?.?.?.?.?\x7f|\x80.?.?.?.?.?.?.?.?\x80|\x81.?.?.?.?.?.?.?.?\x81|\x82.?.?.?.?.?.?.?.?\x82|\x83.?.?.?.?.?.?.?.?\x83|\x84.?.?.?.?.?.?.?.?\x84|\x85.?.?.?.?.?.?.?.?\x85|\x86.?.?.?.?.?.?.?.?\x86|\x87.?.?.?.?.?.?.?.?\x87|\x88.?.?.?.?.?.?.?.?\x88|\x89.?.?.?.?.?.?.?.?\x89|\x8a.?.?.?.?.?.?.?.?\x8a|\x8b.?.?.?.?.?.?.?.?\x8b|\x8c.?.?.?.?.?.?.?.?\x8c|\x8d.?.?.?.?.?.?.?.?\x8d|\x8e.?.?.?.?.?.?.?.?\x8e|\x8f.?.?.?.?.?.?.?.?\x8f|\x90.?.?.?.?.?.?.?.?\x90|\x91.?.?.?.?.?.?.?.?\x91|\x92.?.?.?.?.?.?.?.?\x92|\x93.?.?.?.?.?.?.?.?\x93|\x94.?.?.?.?.?.?.?.?\x94|\x95.?.?.?.?.?.?.?.?\x95|\x96.?.?.?.?.?.?.?.?\x96|\x97.?.?.?.?.?.?.?.?\x97|\x98.?.?.?.?.?.?.?.?\x98|\x99.?.?.?.?.?.?.?.?\x99|\x9a.?.?.?.?.?.?.?.?\x9a|\x9b.?.?.?.?.?.?.?.?\x9b|\x9c.?.?.?.?.?.?.?.?\x9c|\x9d.?.?.?.?.?.?.?.?\x9d|\x9e.?.?.?.?.?.?.?.?\x9e|\x9f.?.?.?.?.?.?.?.?\x9f|\xa0.?.?.?.?.?.?.?.?\xa0|\xa1.?.?.?.?.?.?.?.?\xa1|\xa2.?.?.?.?.?.?.?.?\xa2|\xa3.?.?.?.?.?.?.?.?\xa3|\xa4.?.?.?.?.?.?.?.?\xa4|\xa5.?.?.?.?.?.?.?.?\xa5|\xa6.?.?.?.?.?.?.?.?\xa6|\xa7.?.?.?.?.?.?.?.?\xa7|\xa8.?.?.?.?.?.?.?.?\xa8|\xa9.?.?.?.?.?.?.?.?\xa9|\xaa.?.?.?.?.?.?.?.?\xaa|\xab.?.?.?.?.?.?.?.?\xab|\xac.?.?.?.?.?.?.?.?\xac|\xad.?.?.?.?.?.?.?.?\xad|\xae.?.?.?.?.?.?.?.?\xae|\xaf.?.?.?.?.?.?.?.?\xaf|\xb0.?.?.?.?.?.?.?.?\xb0|\xb1.?.?.?.?.?.?.?.?\xb1|\xb2.?.?.?.?.?.?.?.?\xb2|\xb3.?.?.?.?.?.?.?.?\xb3|\xb4.?.?.?.?.?.?.?.?\xb4|\xb5.?.?.?.?.?.?.?.?\xb5|\xb6.?.?.?.?.?.?.?.?\xb6|\xb7.?.?.?.?.?.?.?.?\xb7|\xb8.?.?.?.?.?.?.?.?\xb8|\xb9.?.?.?.?.?.?.?.?\xb9|\xba.?.?.?.?.?.?.?.?\xba|\xbb.?.?.?.?.?.?.?.?\xbb|\xbc.?.?.?.?.?.?.?.?\xbc|\xbd.?.?.?.?.?.?.?.?\xbd|\xbe.?.?.?.?.?.?.?.?\xbe|\xbf.?.?.?.?.?.?.?.?\xbf|\xc0.?.?.?.?.?.?.?.?\xc0|\xc1.?.?.?.?.?.?.?.?\xc1|\xc2.?.?.?.?.?.?.?.?\xc2|\xc3.?.?.?.?.?.?.?.?\xc3|\xc4.?.?.?.?.?.?.?.?\xc4|\xc5.?.?.?.?.?.?.?.?\xc5|\xc6.?.?.?.?.?.?.?.?\xc6|\xc7.?.?.?.?.?.?.?.?\xc7|\xc8.?.?.?.?.?.?.?.?\xc8|\xc9.?.?.?.?.?.?.?.?\xc9|\xca.?.?.?.?.?.?.?.?\xca|\xcb.?.?.?.?.?.?.?.?\xcb|\xcc.?.?.?.?.?.?.?.?\xcc|\xcd.?.?.?.?.?.?.?.?\xcd|\xce.?.?.?.?.?.?.?.?\xce|\xcf.?.?.?.?.?.?.?.?\xcf|\xd0.?.?.?.?.?.?.?.?\xd0|\xd1.?.?.?.?.?.?.?.?\xd1|\xd2.?.?.?.?.?.?.?.?\xd2|\xd3.?.?.?.?.?.?.?.?\xd3|\xd4.?.?.?.?.?.?.?.?\xd4|\xd5.?.?.?.?.?.?.?.?\xd5|\xd6.?.?.?.?.?.?.?.?\xd6|\xd7.?.?.?.?.?.?.?.?\xd7|\xd8.?.?.?.?.?.?.?.?\xd8|\xd9.?.?.?.?.?.?.?.?\xd9|\xda.?.?.?.?.?.?.?.?\xda|\xdb.?.?.?.?.?.?.?.?\xdb|\xdc.?.?.?.?.?.?.?.?\xdc|\xdd.?.?.?.?.?.?.?.?\xdd|\xde.?.?.?.?.?.?.?.?\xde|\xdf.?.?.?.?.?.?.?.?\xdf|\xe0.?.?.?.?.?.?.?.?\xe0|\xe1.?.?.?.?.?.?.?.?\xe1|\xe2.?.?.?.?.?.?.?.?\xe2|\xe3.?.?.?.?.?.?.?.?\xe3|\xe4.?.?.?.?.?.?.?.?\xe4|\xe5.?.?.?.?.?.?.?.?\xe5|\xe6.?.?.?.?.?.?.?.?\xe6|\xe7.?.?.?.?.?.?.?.?\xe7|\xe8.?.?.?.?.?.?.?.?\xe8|\xe9.?.?.?.?.?.?.?.?\xe9|\xea.?.?.?.?.?.?.?.?\xea|\xeb.?.?.?.?.?.?.?.?\xeb|\xec.?.?.?.?.?.?.?.?\xec|\xed.?.?.?.?.?.?.?.?\xed|\xee.?.?.?.?.?.?.?.?\xee|\xef.?.?.?.?.?.?.?.?\xef|\xf0.?.?.?.?.?.?.?.?\xf0|\xf1.?.?.?.?.?.?.?.?\xf1|\xf2.?.?.?.?.?.?.?.?\xf2|\xf3.?.?.?.?.?.?.?.?\xf3|\xf4.?.?.?.?.?.?.?.?\xf4|\xf5.?.?.?.?.?.?.?.?\xf5|\xf6.?.?.?.?.?.?.?.?\xf6|\xf7.?.?.?.?.?.?.?.?\xf7|\xf8.?.?.?.?.?.?.?.?\xf8|\xf9.?.?.?.?.?.?.?.?\xf9|\xfa.?.?.?.?.?.?.?.?\xfa|\xfb.?.?.?.?.?.?.?.?\xfb|\xfc.?.?.?.?.?.?.?.?\xfc|\xfd.?.?.?.?.?.?.?.?\xfd|\xfe.?.?.?.?.?.?.?.?\xfe|\xff.?.?.?.?.?.?.?.?\xff)
6) Правило для skype для звонков внутри системы
Name:
skypetoskype
Regexp:
^..\x02………….
Задача, поднимать пользователям скорость в ночное время. Решение очень простое, особенно, если Вы используете Queue Tree в связке с Queue Type (подробнее…).
Идем по меню на MikroTik System->Scheduler
Ничего сложного. Просто меняем значения pcq-rate.
Грабли: Если установлено значение burst-rate, например тариф Link1: скорость 2500k, burst-rate 4M, то при переходе на ночную скорость с значением 7500k скрипт не выполнится полностью, так как значение pcq-rate для ночи больше burst-rate. Так что не забываем обнулять burst или увеличивать его значение перед изменением pcq-rate.
Дневной.