Настройка ограничения объема трафика на Mikrotik RBSXTR R11e-LTE

В моих скрижалях есть нашел я нашел одну заметку, о которой стоит написать еще одну краткую опорную статью – настройка ограничения объема трафика на Mikrotik RBSXTR R11e-LTE. Хотя, устройство Mikrotik может быть и другое. И даже не обязательно выполнять настройку ограничения именно для LTE интерфейса. Скрипт, про который я расскажу ниже, можно адаптировать и для Ethernet интерфейса.

Этот скрипт написал не я. Я взял за основу вот это решение и немного его скорректировал.

Описание решения

Есть резернвый канал связи, который использует LTE на устройстве Mikrotik RBSXTR R11e-LTE. Тариф предусматривает определенный объем ежемесячного трафика. Необходимо настроить скрипт, который будет отключать LTE интерфейс по достижении указанного порогового значения.

Звучит достаточно понятно. Приступим к реализации.

Реализация

Как я уже сказал ранее, я взял за основу уже готовое решение и скорректировал его для работы с LTE интерфейсом:

:global persistVar do={
	:local varName $1;
	:local varValue $2;
	:local varID [/ip firewall layer7-protocol find name="$varName"];

	:if ([:typeof $varValue] = "nothing") do={
		:if ($varID != "") do={
			:set $varValue [/ip firewall layer7-protocol get $varID value-name=regexp];
		}
	} else={
		:if ($varID = "") do={
			/ip firewall layer7-protocol add name="$varName" regexp="$varValue"
		} else={
			/ip firewall layer7-protocol set $varID regexp="$varValue"
		}
	}

return $varValue
}

:do {              
####################################################################################################
# User config
#Set limit in MB                                                                                                                                                     
:local limit 92160;
#Set day to reset limit
:local dayresetlimit "22";
#Set interface
:local interf "lte1";
#Set auto bring up interface 
:local autointon true;
####################################################################################################
:local day ([:pick [/system clock get date] 4 6]);
:local newdata;
:local result;
:local ref;
:local status;
:local tx [/interface get $interf tx-byte];
:local rx [/interface get $interf rx-byte];

:set $newdata (($rx + $tx) / 1024 / 1024);

:if ([:len [$persistVar wan_counter]] < 1 ) do={
	$persistVar wan_counter 0;
}

:if ([:len [$persistVar wan_rebootblock]] < 1 ) do={
	$persistVar wan_rebootblock 1;
}

:if ([:len [$persistVar wan_offset]] < 1 ) do={
	$persistVar wan_offset 0;
}

:if ([:len [$persistVar wan_refdata]] < 1 ) do={
	$persistVar wan_refdata 0;
}

:local rebootblocker ([$persistVar wan_rebootblock]);

:if ( $day = $dayresetlimit and $rebootblocker = 0) do={
	$persistVar wan_counter 0;
	$persistVar wan_offset $newdata;
	$persistVar wan_refdata 0;
	/interface lte set $interf disabled=no
	$persistVar wan_rebootblock 1;
	:log info "Limit reset, int $interf bring up";
}

:if ( $day != $dayresetlimit ) do={
	$persistVar wan_rebootblock 0;
}

:local before [$persistVar wan_counter];
:local offset [$persistVar wan_offset];

:if ( $newdata < $before ) do={
	$persistVar wan_offset 0;
	:set $ref [$persistVar wan_refdata];
	:if ( $newdata < $ref ) do={
		set $ref (0)
	}
	:set $result ($before + $newdata - $ref); 
	$persistVar wan_refdata $newdata;
	$persistVar wan_counter $result;
} else={
	:set $result ($newdata - $offset);
	$persistVar wan_counter $result;
}

:local traffic ([$persistVar wan_counter]);
:local percent ($traffic*100 / $limit);
:log warning "Limit: $limit MB Traffic: $traffic MB Used: $percent%";

:if ($percent >= 100) do={
	/interface lte set $interf disabled=yes
 }

:if ($percent < 100 and $autointon = true) do={
	:set $status [/interface get $interf value-name=disabled];
	:if ($status = true) do={
		/interface lte set $interf disabled=no
	}
}
} on-error={ :log error "Error LTE Limiter "};

Жирным шрифтом я отметил ключевые моменты в скрипте.

Далее необходимо добавить скрипт в конфигурацию Mikrotik:

А также настроить его запуск в планировщике. Например, запускать его раз в час.

После этого скрипт будет рапортовать в журнал текущий объем израсходованного за месяц трафика и отключать LTE интерфейс при превышении его объема.

Настройка ограничения объема трафика на Mikrotik RBSXTR R11e-LTE завершена.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *