Страница 2 из 3

Re: Проблема с DNS.

Добавлено: 24 окт 2022, 13:17
xvo
Тогда у меня только на правила mangle колдующие с ttl подозрение: типа для клиента ttl получается «правильный», для самого роутера - нет.

Например перенести их в forward (возможно добавив доп условия), чтобы они самого роутера не касались.

Re: Проблема с DNS.

Добавлено: 24 окт 2022, 13:31
WWW_223e
Если же я получаю dns (динамический dns) от провайдера, то ping в микротике работает (через dns сервера провайдера), минуя прописанные статические днс сервера (узнаю отсюда https://www.top10vpn.com/tools/what-is-my-dns-server/). И в компе тоже работает инет с правилами mangle. Там активно только одно правило, которое увеличивает ttl на единицу.

Re: Проблема с DNS.

Добавлено: 24 окт 2022, 13:47
xvo
Что-то у меня больше особо нет идей, как оно может нормально работать через него, но не с него самого.

Re: Проблема с DNS.

Добавлено: 24 окт 2022, 14:20
WWW_223e
xvo писал(а): 24 окт 2022, 13:17 Тогда у меня только на правила mangle колдующие с ttl подозрение: типа для клиента ttl получается «правильный», для самого роутера - нет.
Похоже это все таки блокировка провайдера.
Как я понимаю микротик обращается к серверам днс со своим ttl.
Если же у нас в mangle правила будут такими

/ip firewall mangle
add action=change-ttl chain=prerouting new-ttl=increment:1 passthrough=yes
add action=change-ttl chain=postrouting new-ttl=set:65 passthrough=yes

то ping проходит.
Только при переподключении приходится, изменять ttl второго правила на 64, потом обратно на 65 чтобы заработало.
Можно его как то автоматизировать?

Re: Проблема с DNS.

Добавлено: 24 окт 2022, 14:54
gmx
Можно :)

Отправить пакеты к 1.1.1.1 по другому маршруту - в впн.


Ну и скриптом можно, конечно, сами правила менять. Но это костыль, который в любой момент перестанет работать.

Самое надежное - отправлять в впн.

Re: Проблема с DNS.

Добавлено: 24 окт 2022, 15:06
xvo
WWW_223e писал(а): 24 окт 2022, 14:20 Только при переподключении приходится, изменять ttl второго правила на 64, потом обратно на 65 чтобы заработало.
При подключении чего куда?!
Вам надо чтобы ttl был в любом случае одинаковый (и тот который ожидает провайдер), независимо от того, откуда идет трафик - с самого микротика или от клиента за ним, так?
Ну так и попробуйте выставлять для микротика и для проходящего трафика их отдельно.
Там даже matcher должен быть для трафика, который сгенерирован локально.

Re: Проблема с DNS.

Добавлено: 24 окт 2022, 16:01
WWW_223e
xvo писал(а): 24 окт 2022, 15:06 При подключении чего куда?!
xvo писал(а): 24 окт 2022, 15:06 Вам надо чтобы ttl был в любом случае одинаковый (и тот который ожидает провайдер), независимо от того, откуда идет трафик - с самого микротика или от клиента за ним, так?
В mangle правило
add action=change-ttl chain=postrouting new-ttl=set:65 passthrough=yes

Только при включении режима самолета и отключении его в телефоне инет пропадает
- Пингую 1.1.1.1 - timeout
- Меняю правило "new-ttl=set:65" на "new-ttl=set:64", жду пока пинг пойдет
- Когда пинг идет - меняю обратно new-ttl=set:65

Теперь и ping ya.ru проходит.

Получается провайдеру одинаковый ttl и не нужен, в крайнем случае в начале?
gmx писал(а): 24 окт 2022, 14:54 Отправить пакеты к 1.1.1.1 по другому маршруту - в впн.
В таком случае не потребуется :-(

Re: Проблема с DNS.

Добавлено: 24 окт 2022, 18:36
xvo
Я что-то такое поведение вообще ничем не могу объяснить.

Re: Проблема с DNS.

Добавлено: 24 окт 2022, 21:50
WWW_223e
Пока временное решение - скрипт,
может кому понадобится

Код: Выделить всё

:local scriptName "Script_ChangeTTL"
:local lteInterface "lte1"
:local mangleComment "lte1_ChangeTTL"
:local dnsServer "1.1.1.1"
:local domain "ya.ru"
:local pingSeconds 10

:put "Script Start"
:local startScriptsCount [:len [/system script job find script=$scriptName]]

if ($startScriptsCount=1) do={
   do { 
       if ([/interface get $lteInterface running] = true) do={
          :put "   $lteInterface running"

          do {
             :resolve $domain server=$dnsServer
             :put "   DNS is working"    
          } on-error={    
            :local strTTL "set:65" 
            :local mangleID [/ip firewall mangle find comment="$mangleComment"]
            if ([:len $mangleID] = 0) do={        
               :put "   Add new mangle rule"
               /ip firewall mangle add action=change-ttl chain=postrouting new-ttl=$strTTL passthrough=yes comment=$mangleComment out-interface="$lteInterface" disabled=no
               :set mangleID [/ip firewall mangle find comment="$mangleComment"]
            } else={
              :put "   Renew mangle rule"
              /ip firewall mangle set [$mangleID] action=change-ttl chain=postrouting new-ttl=$strTTL passthrough=yes out-interface="$lteInterface" disabled=no
            }

            :local statusPing ([/ping address=$dnsServer count=1  as-value]->"status") 
            if ($statusPing = "timeout") do={
               :set strTTL "set:64"     
               :put "   ping $dnsServer timeout. new-ttl=$strTTL" 
               /ip firewall mangle set [$mangleID] new-ttl=$strTTL
            } else={          
              if ($statusPing = "no route to host") do={ 
                 :put "   Please reconnect the $lteInterface modem. statusPing = $statusPing"
              }
            } 

            :local iTime 0
            while (($statusPing = "timeout") and ($iTime<$pingSeconds)) do={  
                  :delay 700ms
                  :set statusPing ([/ping address=$dnsServer count=1  as-value]->"status")
                  :set iTime ($iTime + 1)
                  :put "   How many times did you ping: $iTime"    
            }

            if ($strTTL != "set:65") do={
               :set strTTL "set:65"
               :put "   new-ttl=$strTTL"
               /ip firewall mangle set [$mangleID] new-ttl=$strTTL
            }

            do {
                :resolve $domain server=$dnsServer
                :put "   Result_Good"
            } on-error={
              :put "   Result_Bad"
            }
          }
       } else={
         :put "   $lteInterface NOT running"
       }
  } on-error= {
    :put "   $lteInterface not connected"
  }
} else={
  :put "   The script is already running"
}
:put "Script End"


Re: Проблема с DNS.

Добавлено: 25 окт 2022, 08:40
gmx
Почему нельзя отправить запросы к 1.1.1.1 через впн?
Зачем же такие костыли?

Да и не сошелся свет клином на 1.1.1.1.
ADguard, nextdns выдадут вам ваши собственные IP ДНС. Они вряд ли будут заблокированы.