Search
Write a publication
Pull to refresh
0
0
Алексей Мухаматнабеев @GentleFly

User

Send message

Я в своих самых свежих скриптах, остановился на своем варианте dputs.

namespace eval tardil {
    # debug verbosity
    variable debug 0
}

proc ::tardil::dbg_puts {args} {
    variable debug
    if { ${debug} >= [expr [info level]-1] } {
        array set inf [info frame -1]
        set empty_prefix ""
        for {set i 0} {${i}<[expr [info level]-1]} {incr i} {
            set empty_prefix "  ${empty_prefix}"
        }
        puts "${empty_prefix}\[$inf(proc)\] [lindex ${args} 0]"
    }
}

# Устанавливаем глубину на которых будут работать dbg_puts
set ::tardil::debug 99

Данный вариант позволяет контролировать глубину стека вызовов процедур, на котором срабатывает эта dbg_puts. В вывод dbg_puts добавляется префикс в виде пробела (в зависимости от глубины стека) и имени процедуры из которой была вызвана dbg_puts с аргументами. Правда, только сейчас заметил, что это справедливо, когда руками вызываю в консоли Vivado, а если из скрипта вызвана (который запущен как source ./path_script.tcl ), то что то идет не так ..

Спасибо за статью!
Поделюсь немного своим опытом, на основе статьи. Входные данные:

  • MikroTik hAP ac² (IPQ-4018:Arm® Cortex®-A7)

  • RouterOS 7.15.3

DNS FWD

Так как у меня RouterOS 7.15.3, то /ip/dns/static/ add ... forwad-to=localhost... еще не работает. Но есть отдельная железка с Pi-hole, туда и направил. Работает.

Docker образ hev-socks5-tunnel-mikrotik

Docker образ snegowiki/hev-socks5-tunnel-mikrotik c тегом latest (на момент написания коментария), поддерживает две архитектуры amd64 и arm64, тоесть не подходят для моего роутера. К счастью, тег test поддерживает уже три архитектуры, включая arm/v7. В итоге его и использовал: snegowiki/hev-socks5-tunnel-mikrotik:test

Маркировка соединения, вместо маркировки пакетов

При маркировки пакетов, на основе списка, придется проверять каждый пролетающий пакет на наличие в этом списке. Можно ограничится проверкой присутствия в списке только первых пакетов соединений и пометить само соединение. А вторым правилом, на основе помеченных соединений, выдавать метку для роутинга. Так роутеру будет полегче. У меня выглядит так:

/ip firewall mangle
add action=mark-connection chain=prerouting comment="DPI bypass" \
    connection-mark=no-mark connection-state=new dst-address-list=za_dpi_FWD \
    in-interface-list=LAN new-connection-mark=dpi_mark packet-mark=no-mark \
    passthrough=yes
add action=mark-routing chain=prerouting comment="DPI bypass" \
    connection-mark=dpi_mark connection-state=established,related,new \
    in-interface-list=LAN new-routing-mark=dpi_mark passthrough=yes

fasttrack

fasttrack можно не отключать. Просто указать, чтобы не помечал уже помеченные соединения connection-mark=no-mark. Выглядит примерно так (убедившись в правильном порядке):

/ip firewall filter
add action=fasttrack-connection chain=forward connection-mark=no-mark \
    connection-state=established,related hw-offload=yes

Information

Rating
11,645-th
Location
Дубна, Москва и Московская обл., Россия
Registered
Activity