Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save AlexSash1/6a3835fb83a0c9f4561e8371ada70e88 to your computer and use it in GitHub Desktop.
Save AlexSash1/6a3835fb83a0c9f4561e8371ada70e88 to your computer and use it in GitHub Desktop.
Обход блокировки протокола на mikrotik

У меня и ip порты жестко прописаны на разных микротиках, поэтому скрипт с ожиданием сброса порта. Не требует указания портов и ip. Все берет из пира. Скрипт ищет активные пиры с остановившейся передачей, разрывает соединение, ждет 7 минут, посылает мусор и включает пир обратно. Нужно поставить в шедулер с интервалом раз в 1 минуту. 🔴 Осторожно, скрипт удаляет все stream, packet-template в генераторе трафика.

:global Tx
:global Rx
/interface/wireguard/peers

:foreach i in=[find where disabled=no] do={
  :local LocalTx [get $i tx]
  :local LocalRx [get $i rx]
  :local LastHandshake [get $i last-handshake]
  :if (([:tostr $LastHandshake] = "") or (($LastHandshake > [:totime "2m"]) and ($Rx->[:tostr $i] = $LocalRx))) do={
   :local rawHeader [:rndstr length=4 from=123456789abcdef]
	:local EndpointAddress [get $i endpoint-address]
:local EndpointAddressIP $EndpointAddress
:do {:set EndpointAddressIP [:resolve $EndpointAddress] } on-error={:log info ("EndpointAddress is ip: $EndpointAddressIP") }
	:local name [get $i name]
	:local wgDstPort [get $i endpoint-port]
	:local interface [get $i interface]
	:local srcport [/interface/wireguard/get $interface listen-port];
        :log info ("WG name is $name, EndpointAddress $EndpointAddress , LastHandshake $LastHandshake, LastTx " . $Tx->[:tostr $i] . ", CurrentTx $LocalTx, LastRx " . $Rx->[:tostr $i] . ", CurrentRx $LocalRx")
        :log info ("WG Currentinterface $interface, srcport $srcport, EndpointAddressIP $EndpointAddressIP, DstPort $wgDstPort")
	:log info ("Generating spam for RKN")
	set $i disabled=yes
	:delay 7m
	/tool traffic-generator stream remove [find]
	/tool traffic-generator packet-template remove [find]
	:delay 1
/tool/traffic-generator/packet-template/add header-stack=mac,ip,udp,raw ip-dst=$EndpointAddressIP name=packet-template-wg raw-header=$rawHeader special-footer=no udp-dst-port=$wgDstPort udp-src-port=$srcport
	/tool traffic-generator stream add disabled=no mbps=1 name=stream1 id=3 packet-size=1450 pps=0 tx-template=packet-template-wg
	:delay 1
	/tool traffic-generator quick duration=4
	:log info ("WG $EndpointAddress is now up")
        set $i endpoint-address=$EndpointAddress
        set $i disabled=no
}
  :set ($Tx->[:tostr $i]) $LocalTx
  :set ($Rx->[:tostr $i]) $LocalRx
}
@Darkrogua
Copy link

Какая-то странная у вас логика, в скрипте есть задержка в 7 минут, а вы его хотите запускать раз в 1 минуту, тем самым скрипт будет запущен несколько раз (6) до того как выполнится хоть одна итерация

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment