Jump to content

AdGuard Home для селективной маршрутизации доменов


Recommended Posts

Возможен ли вариант, чтобы для резолвинга хостов из локального диапазона (ну типа homeserver ли smarthome.local) adh бы передавал эти запросы самому кинетику? (записи прописаны в кинетике)

Или при включенном dns override dns кинетика уже никаким боком не доступен?

Link to comment
Share on other sites

1 час назад, Joe сказал:

Возможен ли вариант, чтобы для резолвинга хостов из локального диапазона (ну типа homeserver ли smarthome.local) adh бы передавал эти запросы самому кинетику? (записи прописаны в кинетике)

Возможно

 

Link to comment
Share on other sites

  • 2 months later...

Возможно кто-то, как и я, использует AdGuardHome в качестве основного днс-резолвера, но установлен он на отдельном устройстве в сети, например на одноплатнике. В таком случае, все равно возможно использование ADGH вместе с кинетиком для выборочного доступа к заданным доменам.
На кинетике с помощью entware нужно поднять резолвер с возможностью складывать результаты в ipset. Поднимать еще один ADGH, думаю, глупо, так что можно воспользоваться dnsmasq или ipset-dns. ADGH умеет обращаться к апстрим серверам на нестандартный порт, и резолвер на кинетике для этой цели может крутиться на свободном порту не требуя opkg dns-override, а значит оставляя не тронутым прошивочный для, например, работы в других сегментах сети.

Сам использую dnsmasq с простейшим конфигом, где указано кроме прочего :
 

port=40
cache-size=0 #т.к. кеширует сам ADGH
ipset=/#/bypass

 Домены очень удобно указывать прямо в интерфейсе AdGuardHome. Просто как пример:

image.png.a366d308bb3512a3d69ccd26c96bc86a.png

Таким образом, на нужный порт роутера, где слушает dnsmasq, отправляются только заданные домены, результаты складываются в ipset. В остальном, все также, как расписано в этой теме, скрипты маркируют трафик и т.д. и т.п.

Из бонусов то, что прошивочный dns не тронут, ADGH может ссылаться на него для резолва локальных хостов. А в качестве апстрима для dnsmasq, наверное, могут быть указаны прошивочные DoT или DoH.  

  • Upvote 3
Link to comment
Share on other sites

Все установил, но не работает обход. В логах:

Opkg::Manager: /opt/etc/ndm/netfilter.d/010-bypass.sh: iptables v1.4.21: CONNMARK: trailing garbage after value for option "--set-mark".

Opkg::Manager: /opt/etc/ndm/netfilter.d/010-bypass.sh: Try `iptables -h' or 'iptables --help' for more information.

Прошивка 4.1.7

 

Link to comment
Share on other sites

9 часов назад, vkblack сказал:

Все установил, но не работает обход. В логах:

Opkg::Manager: /opt/etc/ndm/netfilter.d/010-bypass.sh: iptables v1.4.21: CONNMARK: trailing garbage after value for option "--set-mark".

Opkg::Manager: /opt/etc/ndm/netfilter.d/010-bypass.sh: Try `iptables -h' or 'iptables --help' for more information.

Прошивка 4.1.7

 

Такая же ситуация и никак не можем решить.

Link to comment
Share on other sites

8 часов назад, Marelych сказал:

Такая же ситуация и никак не можем решить.

А как вы ее пытаетесь решить?

Сам механизм ниже.

1. ipset create ИМЯ_списка hash:ip hashsize 4096

2. iptables ... -m set --match-set ИМЯ_списка dst -j MARK --set-mark ПОЛИТИКА_Policy

3.
ipset: []
ipset_file: /opt/home/AdGuardHome/ipset.conf

4.
/opt/home/AdGuardHome/ipset.conf
flxvpn.net,.....,nflxvideo.net/ИМЯ_списка

5. ПОЛИТИКА_Policy - web/cli команда "show ip policy" 

Policy0": {
			"description": "Cl",
			"mark": "ffffaaa",
...

ПОЛИТИКА_Policy - может быть созданная вами или готовая в системе.

Link to comment
Share on other sites

Ввиду снижения скорости загрузки youtube, хочу пустить его трафик через wg способом, указанным в этой теме. 
Есть ли у кого-то список адресов YouTube, чтобы прописать в ipset для обхода?

Link to comment
Share on other sites

1 час назад, vasek00 сказал:

А как вы ее пытаетесь решить?

Сам механизм ниже.

Делал все по последней актуальной инструкции. Было создано 3 файла. При проверке набор ipset появляются ip. Правила netfilter тоже выводятся. Но при проверке маршрута он не идет через выбранную политику. В ошибке он ругается что не может прочитать 0x$mark_id

Edited by vkblack
up
Link to comment
Share on other sites

6 часов назад, Mapuk37 сказал:

Ввиду снижения скорости загрузки youtube, хочу пустить его трафик через wg способом, указанным в этой теме. 
Есть ли у кого-то список адресов YouTube, чтобы прописать в ipset для обхода?

Расширение браузера ipvfoo показывает адреса к каким идет обращение.  Для ютуба надо еще видео включить, чтобы увидеть адрес непосредственно контента

Link to comment
Share on other sites

8 часов назад, Mapuk37 сказал:

Ввиду снижения скорости загрузки youtube, хочу пустить его трафик через wg способом, указанным в этой теме. 
Есть ли у кого-то список адресов YouTube, чтобы прописать в ipset для обхода?

Я-> тут <-пытался собрать DNS имена связанные с Ютубом, попробуйте поковырять.
По не проверенной информации чтоб престал тормозить видеопоток достаточно резолвить всего одно DNS имя: googlevideo.com

Link to comment
Share on other sites

14 часа назад, Mapuk37 сказал:

Ввиду снижения скорости загрузки youtube, хочу пустить его трафик через wg способом, указанным в этой теме. 
Есть ли у кого-то список адресов YouTube, чтобы прописать в ipset для обхода?

YT можно не пускать через VPN, достаточно фрагментировать sni.

Что бы понять, кто занижает скорость, достаточно выполнить запросы curl.

curl https://speedtest.selectel.ru/100MB -k -o/dev/null
curl --connect-to ::speedtest.selectel.ru https://manifest.googlevideo.com/100MB -k -o/dev/null
curl --connect-to ::speedtest.selectel.ru https://ya.ru/100MB -k -o/dev/null

Первая с фрагментацией, вторая без.

image.thumb.png.99d96f6f1a32ff5a3c15ada2e0024914.png

Edited by avn
  • Upvote 1
Link to comment
Share on other sites

20 часов назад, vkblack сказал:

В ошибке он ругается что не может прочитать 0x$mark_id

У вас скорей всего ошибка в строке

mark_id=`curl -kfsS http://localhost:79/rci/show/ip/policy 2>/dev/null | ... | .mark'`

Смотрите вывод команды - show ip policy в webcli наример Policy0 или Policy1 и так далее.

Link to comment
Share on other sites

8 часов назад, avn сказал:

достаточно фрагментировать sni.

https://habr.com/ru/articles/831846/comments/

Скрытый текст

.....Едва-ли фрагментированный SNI повлияет на скорости загрузки......

 

Link to comment
Share on other sites

2 часа назад, vasek00 сказал:

https://habr.com/ru/articles/831846/comments/

  Скрыть содержимое

.....Едва-ли фрагментированный SNI повлияет на скорости загрузки......

 

Я ориентируюсь на свой опыт. Мне помогло. Тут каждый решает сам.

Link to comment
Share on other sites

4 часа назад, avn сказал:

Я ориентируюсь на свой опыт. Мне помогло. Тут каждый решает сам.

Да не вопрос, я просто ссылку почитать.

Link to comment
Share on other sites

В 02.08.2024 в 18:19, Ground_Zerro сказал:

Я-> тут <-пытался собрать DNS имена связанные с Ютубом, попробуйте поковырять.
По не проверенной информации чтоб престал тормозить видеопоток достаточно резолвить всего одно DNS имя: googlevideo.com

Да, действительное достаточно пустить только Гугл видео и перестает тормозить, но: для видео перестала сохраняться история просмотра. 
прописал все адреса из вашего списка - аналогично.

В 03.08.2024 в 11:03, avn сказал:

Я ориентируюсь на свой опыт. Мне помогло. Тут каждый решает сам.

А можно поподробней о реализации фрагментации?

Edited by Mapuk37
Link to comment
Share on other sites

Подскажите, пожалуйста, если ADH стоит рядом (на отдельном сервере 192.168.1.155).

Можно ли как то (костыльно?) наполнять ipset на роутере?...

Сейчас клиенты обращаются к ADH (в DNS прописан 192.168.1.155), как оптимальнее заполнить ipset по выборочным адресам?..

Upd: вроде нашел решение, проверю...

 

Edited by Aleksandr
Link to comment
Share on other sites

В 05.08.2024 в 11:19, avn сказал:

Для тех, кто в теме по dnsmasq и ADH, можете адаптировать под себя обвязку для YT.

Для ARM проца все ОК (AGH+tpws+iptable). tpws тут уже свой не для mipsle. Ручная проверка.

1. AGH

Скрытый текст
  ipset: []
  ipset_file: /opt/home/AdGuardHome/ipset.conf

  
  
  файл ipset.conf
  googlevideo.com/un-tpws

Создать hash таблицу

ipset create un-tpws hash:net timeout 86400 family inet -exist

timeout 86400 - 1 сутки.

2. tpws (ARM)

Скрытый текст
./tpws --user=nobody --port 9433 --bind-iface4=br0 --pidfile=/var/run/tpws.pid --disorder --tlsrec=sni --split-pos=2

 

3. iptables

Скрытый текст
iptables -t nat -I PREROUTING -i br0 -p tcp --dport 443 -m set --match-set un-tpws dst -j REDIRECT --to-port 9433

 

4. итог

Скрытый текст
На всякий случай 443 порт освобожден в ПО роутера

ip http ssl port 8443

Проверка наполнения hash таблицы адресов согласно ipset

~ # ipset list un-tpws


Проверка iptables

   51  4918 REDIRECT   tcp  --  br0    *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443 match-set un-tpws dst redir ports 9433

По status

~ # cat /proc/18571/status
Name:   tpws
Umask:  0022
State:  S (sleeping)
Tgid:   18571
Ngid:   0
Pid:    18571
PPid:   4052
TracerPid:      0
Uid:    65534   65534   65534   65534
Gid:    65534   65534   65534   65534
FDSize: 64
Groups:  
VmPeak:      508 kB
VmSize:      436 kB
VmLck:         0 kB
VmPin:         0 kB
VmHWM:       324 kB
VmRSS:       268 kB
RssAnon:             260 kB
RssFile:               8 kB
RssShmem:              0 kB
VmData:       32 kB
VmStk:       132 kB
VmExe:       412 kB
VmLib:  18446744073709551400 kB
VmPTE:        16 kB
VmPMD:        12 kB
VmSwap:        0 kB
Threads:        1


tpws    18571 nobody   3u     IPv4 1734630      0t0     TCP 192.168.1.1:9433 (LISTEN)
tpws    18571 nobody   4u  a_inode     0,9        0    1025 [eventpoll:3,21,22,29,30]
tpws    18571 nobody  21u     IPv4 1735756      0t0     TCP 192.168.1.1:9433->192.168.130.20:48016 (ESTABLISHED)
tpws    18571 nobody  22u     IPv4 1735758      0t0     TCP ххх.ххх.ххх.хх7:53410->213.xxx.xxx.78:https (ESTABLISHED)
tpws    18571 nobody  23r     FIFO     0,8      0t0 1735759 pipe
tpws    18571 nobody  24w     FIFO     0,8      0t0 1735759 pipe
tpws    18571 nobody  29u     IPv4 1735946      0t0     TCP 192.168.1.1:9433->192.168.1.2:58033 (ESTABLISHED)
tpws    18571 nobody  30u     IPv4 1735948      0t0     TCP xxx.xxx.xx.xx7:52548->sXXXXXXX-in-f32.xxxxxx.net:https (ESTABLISHED)

 

 

  • Upvote 1
Link to comment
Share on other sites

4 часа назад, Aleksandr сказал:

Можно ли как то (костыльно?) наполнять ipset на роутере?

Ну, можно формировать ipset на хосте AGH и передавать список адресов по BGP на роутер.

Не спрашивайте как:) Кажется, это правда костыльно.

Link to comment
Share on other sites

On 8/2/2024 at 11:18 AM, Mapuk37 said:

Ввиду снижения скорости загрузки youtube, хочу пустить его трафик через wg способом, указанным в этой теме. 
Есть ли у кого-то список адресов YouTube, чтобы прописать в ipset для обхода?

делал так, пока работает,

добавил адреса из файла russia-youtube.txt небезизвестной утилиты под винду -

youtube.com
youtu.be
googlevideo.com
ytimg.com


 

Link to comment
Share on other sites

В 05.08.2024 в 13:19, avn сказал:

Для тех, кто в теме по dnsmasq и ADH, можете адаптировать под себя обвязку для YT.

Большое спасибо за готовую к работе обвязку для tpws. Я для себя адаптировал, т.к. не пользуюсь ipv6.

Как пишет сам автор, tpws, очевидно, не поможет с quic, а т.к. приложение YT для AndroidTV, например, использует его, то для меня это актуально. У того же автора есть nfqws, которая помогает в том числе и с quic. Но с ней есть некоторые сложности на кинетике, я не стал вникать, решил добить работу через tpws.

В общем-то решение простое, можно заблокировать доступ к udp:443, что не позволит устройствам использовать https3/quic и вынудит их откатиться на обычный https. Правилo сделал максимально точным, чтобы не ломать https3 там где мне не нужно

Скрытый текст

 iptables -w -I _NDM_ACL_IN -i br0 -s 192.168.1.32/28 -p udp --dport 443 -m set --match-set tube dst -j DROP

Все вроде работает. У меня кн1910, при просмотре очень тяжелого 4k hdr нагрузка на процессор периодически подскакивает

Скрытый текст

image.thumb.png.87330714d8d9f23229080f445033b9a3.png

 но в среднем нагрузка от несущественной, до едва заметной) 

Edited by Werld
Орфография
  • Upvote 1
Link to comment
Share on other sites

 Всем привет. Настало время когда одного маршрута перестало хватать, поэтому хочу настроить сразу два. Вопрос по поводу написания скриптов. Смущает верно ли я выбрал флаги? Пока что в такой реализации у меня заработало, но потом я заметил, что вместо -z написал -n, а это как будто бы логику ломает. Однако оно завелось и работает. 
-n или -z требуется в каждой из проверок?

 

#!/bin/sh

# Обработка трафика для IPv4
[ "$type" == "ip6tables" ] && exit
[ "$table" != "mangle" ] && exit

# Пометка трафика для первого туннеля
[ -n "$(ipset --quiet list bypass)" ] && {
    if [ -z "$(iptables-save | grep bypass)" ]; then
        iptables -w -t mangle -A PREROUTING ! -i nwg0 -m conntrack --ctstate NEW -m set --match-set bypass dst -j CONNMARK --set-mark 0xffffd02
        iptables -w -t mangle -A PREROUTING ! -i nwg0 -m set --match-set bypass dst -j CONNMARK --restore-mark
    fi
}

# Пометка трафика для второго туннеля
[ -n "$(ipset --quiet list 2bypass)" ] && {
    if [ -z "$(iptables-save | grep 2bypass)" ]; then
        iptables -w -t mangle -A PREROUTING ! -i nwg2 -m conntrack --ctstate NEW -m set --match-set 2bypass dst -j CONNMARK --set-mark 0xffffd03
        iptables -w -t mangle -A PREROUTING ! -i nwg2 -m set --match-set 2bypass dst -j CONNMARK --restore-mark
    fi
}

 

Link to comment
Share on other sites

Почему-то по такому способу стал не очень хорошо работать инстаграм. instagram и cdninstagram завернуты в warp. Раньше лента обновлялась мгновенно при запуске приложения. Сейчас - раз 4-5 приходится запускать принудительное обновление ленты (началось буквально неделю назад наверное). Причем именно не обновляется лента. Сами видео, оказавшиеся сверху ленты с прошлого захода в инст начинают проигрываться сразу после запуска.

Кто-то сталкивался? Может еще какие домены в warp завернуть?

Edited by Mapuk37
Link to comment
Share on other sites

5 часов назад, Mapuk37 сказал:

Почему-то по такому способу стал не очень хорошо работать инстаграм. instagram и cdninstagram завернуты в warp. Раньше лента обновлялась мгновенно при запуске приложения. Сейчас - раз 4-5 приходится запускать принудительное обновление ленты (началось буквально неделю назад наверное). Причем именно не обновляется лента. Сами видео, оказавшиеся сверху ленты с прошлого захода в инст начинают проигрываться сразу после запуска.

Кто-то сталкивался? Может еще какие домены в warp завернуть?

 

В 02.03.2024 в 12:04, dogoma сказал:

Тестируя другие решения для маршрутизации обнаружил такой удобный репозиторий: https://github.com/v2fly/domain-list-community/tree/master/data там файлы с именем сайта, в котором список всех используемых им доменов

 

В 08.08.2023 в 19:48, r13 сказал:

Для работы через ipv6 наличие рабочего ipv6 на основном подключении и VPN

 

У инстаграмма гораздо больше доменов.

Плюс с ipv6 недавно ничего не делали? Не включали на роутере, например? Если подключением VPN ipv6 не поддерживается, то это будет мешать маршрутизации с сайтами, которые его поддерживают. Наиболее простое решение, удалить в роутере компонент, отвечающий за ipv6.

Link to comment
Share on other sites

  • Илья Хрупалов changed the title to AdGuard Home для селективной маршрутизации доменов

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...