Jump to content

ipset-dns для выборочного роутинга


Recommended Posts

12 минуты назад, Nkllganov53 сказал:

А можно ли запустить 2 экз. dnsmasq со своими конфигами (порт прослушивания)?

Не знаю. Мне кажется, это ни к чему. Скриптовая обвязка от этого не изменится. 

Link to comment
Share on other sites

В 22.08.2024 в 12:53, applick сказал:

1)Я так понимаю если в роутере > через интернет фильтр добавлен сайт, например 2ip.ru, а потом удален, то маршрутизация не удаляется для этого сайта, очистка происходит только через перезагрузку роутера или если вручную очистить командой - ipset flush bypass.

Да, все верно. Удалять нужно вручную, либо ребутить роутер. Надо посмотреть есть ли хук на удаление записей из интернет-фильтра, чтобы чистить таблицу автоматически.

В 22.08.2024 в 12:53, applick сказал:

2)Можно ли как то это все дело подружить с vless, vmess, shadowsocks2022, singbox умеет заворачивать соединение в tun. Целый вечер убил на то чтобы singbox настроить и подключиться к серверу по shadowsocks2022, но так и не получилось подружить это с ipset dnsmasq.

Здесь не подскажу - не использую.

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

Стало понятнее.  А можно ли запустить 2 экз. dnsmasq со своими конфигами (порт прослушивания)? Может попроще будет с заведением доменов? С таблицами/скриптами наверное также.

По логике делается это так:

Дублируете скрипт запуска S56dnsmasq в /opt/etc/init.d/ и указываете в параметрах запуска через ключ -conf-file другой конфиг (например: /opt/etc/dnsmasq2.conf), в котором прописан новый pid-file (например /var/run/opt-dnsmasq2.pid), другой порт (например, 5301) и другой ipset (например bypass2). Далее дублируете и изменяете скрипт запуска /opt/etc/init.d/S52ipset-bypass и все хуки в /opt/etc/ndm/netfilter.d/ под новый ipset.

Link to comment
Share on other sites

7 минут назад, Drafted сказал:

Да, все верно. Удалять нужно вручную, либо ребутить роутер. Надо посмотреть есть ли хук на удаление записей из интернет-фильтра, чтобы чистить таблицу автоматически.

зачем усложнять, уже всё есть

ipset flush <ipset name>

изменения в интернет фильтрах можно мониторить по файлу /tmp/ndnproxymain.conf

там уже хеши сверяйте, мониторьте с помощью - inotifywait, entr, как угодно

Edited by Denis P
Link to comment
Share on other sites

В 23.08.2024 в 23:20, Denis P сказал:

зачем усложнять, уже всё есть

ipset flush <ipset name>

Да, я и написал вручную (через команду ipset flush bypass), либо ребут :)

Edited by Drafted
Link to comment
Share on other sites

54 минуты назад, Drafted сказал:

Да, я написал вручную (через команду ipset flush bypass), либо ребут :)

Используйте таймаут, равный таймауту dns (MaxTTL), записи сами удаляться будут.

 

image.png.786807111e967ee7ff195d4c14330ee6.png

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

Помогите пожалуйста, все настроил из шапки. Все корректно работает до перезагрузки - потом список доменов через VPN не идет пока не отключишь и заново не подключишь встроенное хранилище. Дальше до перезагрузки все работает идеально. Как будто пакет не запускается автозапуском.

Link to comment
Share on other sites

В 15.08.2024 в 10:09, Сергей Грищенко сказал:

Можете показать что у вас вышло в итоге, пожалуйста?

Конечно (только не забудьте на имена своих интерфейсов, номера таблиц маршрутизации, маркировки сменить):

#!/bin/sh

[ "$1" == "hook" ] || exit 0
[ "$layer" == "link" ] || exit 0
[ "$id" == "Wireguard2" ] || exit 0

IF_NAME=nwg2
IF_GW4=$(ip -4 addr show "$IF_NAME" | grep -Po "(?<=inet ).*(?=/)")

case ${layer}-${level} in

link-disabled|link-pending)
                logger "====WG2 DOWN====="
                ip -4 rule del fwmark 0xd1000 lookup 1001 priority 1778 2>/dev/null
                ip -4 route flush table 1001
        ;;

        link-running)
                logger "====WG2 UP====="
                ip -4 route add table 1001 default via "$IF_GW4" dev "$IF_NAME" 2>/dev/null
                ip -4 route show table main |grep -Ev ^default |while read ROUTE; do ip -4 route add table 1001 $ROUTE 2>/dev/null
                ip -4 rule add fwmark 0xd1000 lookup 1001 priority 1778 2>/dev/null
                ip -4 route flush cache
        ;;
esac
exit 0

 

Edited by ale_xb
  • Thanks 1
Link to comment
Share on other sites

В 23.08.2024 в 23:17, Drafted сказал:

По логике делается это так:

Дублируете скрипт запуска S56dnsmasq в /opt/etc/init.d/ и указываете в параметрах запуска через ключ -conf-file другой конфиг (например: /opt/etc/dnsmasq2.conf), в котором прописан новый pid-file (например /var/run/opt-dnsmasq2.pid), другой порт (например, 5301) и другой ipset (например bypass2). Далее дублируете и изменяете скрипт запуска /opt/etc/init.d/S52ipset-bypass и все хуки в /opt/etc/ndm/netfilter.d/ под новый ipset.

Вообщем запускается только один экземпляр dnsmasq. Соответственно работает либо VPN1 либо VPN2, но не оба. Нашел, как запустить два экземляра:

https://wiki.archlinux.org/title/Dnsmasq
3.3 More than one instance

https://github.com/optimistiCli/edgeos-dnsmasq-2

но знаний уже не хватило. Может у кого то был опыт? Или подскажите, что делать. Уже самому стало интересно.

 

Link to comment
Share on other sites

43 минуты назад, Nkllganov53 сказал:

Вообщем запускается только один экземпляр dnsmasq. Соответственно работает либо VPN1 либо VPN2, но не оба. Нашел, как запустить два экземляра:

https://wiki.archlinux.org/title/Dnsmasq
3.3 More than one instance

https://github.com/optimistiCli/edgeos-dnsmasq-2

но знаний уже не хватило. Может у кого то был опыт? Или подскажите, что делать. Уже самому стало интересно.

 

Зачем два экземпляра? Один может заполнять хоть 10 разных ipset

  • Upvote 2
Link to comment
Share on other sites

21 минуту назад, Denis P сказал:

Зачем два экземпляра? Один может заполнять хоть 10 разных ipset

Вы имеете в видуто, что предлагал @Werld

Цитата

В вашем случае просто прописываете все домены на один и тот же адрес и порт dnsmasq'a. А уже в конфиге dnsmasq.conf создаете две строки для двух ipset в каждый свои домены:
ipset=/ytimg.com/bypass
ipset=/intel.com/bypass2

Если так, то приходится вводить домены дважды: в Кинетике и в конф-файле. Хотя это и не так уж часто делается.

Link to comment
Share on other sites

Помогите пожалуйста, все настроил из шапки. Все корректно работает до перезагрузки - потом список доменов через VPN не идет пока не отключишь и заново не подключишь встроенное хранилище. Дальше до перезагрузки все работает идеально. Как будто пакет не запускается автозапуском.

Link to comment
Share on other sites

3 часа назад, CooLeR сказал:

Помогите пожалуйста, все настроил из шапки. Все корректно работает до перезагрузки - потом список доменов через VPN не идет пока не отключишь и заново не подключишь встроенное хранилище. Дальше до перезагрузки все работает идеально. Как будто пакет не запускается автозапуском.

Чтобы все работало после перезагрузки надо изменить порт в ipset-dns потому что происходит конфликт с avahi-daemon и поэтому не работает. Выполняем:
nano /opt/etc/init.d/S52ipset-dns и редактируем порт 5353 на 5300, сохраняем, перезагружаем роутер, теперь домены добавлять в роутере во вкладке > Сетевые правила > Интернет фильтр > в строке Адрес сервера DNS писать это значение 192.168.1.1:5300

@Александр Рыжов Измените информацию в шапке по поводу порта или дополните. Возможно причина проблемы кроется в том что люди устанавливают entware на внутреннее хранилище роутера а не на внешнее usb, отсюда и конфликт с avahi-daemon, потому что он занял порт, из за этого и проблема после рестарта роутера.

Edited by applick
Link to comment
Share on other sites

Проговорю очевидную вещь: любой мануал актуален на момент написания. Ни у одного автора нет цели поддерживать его актуальность бесконечно долго.

Если способны развить идею, не стесняйтесь начать новую тему. А что до этой, ей осталось недолго. По известным причинам её придётся удалить.

В 05.08.2024 в 10:32, Drafted сказал:

@Александр Рыжов можно Вас попросить добавить ссылку на мой способ через dnsmasq в шапку темы? Что-то тут все очень сильно оживилось и мой пост уже где-то в середине темы.

В 08.08.2024 в 22:48, keenet07 сказал:

@Александр Рыжов и другие.

Может кто-нибудь переписать эту приблуду таким образом чтоб она работала сразу с несколькими VPN (шлюзами, интерфейсами)?

15 часов назад, applick сказал:

@Александр Рыжов Измените информацию в шапке по поводу порта или дополните.

Link to comment
Share on other sites

16 часов назад, applick сказал:

Чтобы все работало после перезагрузки надо изменить порт в ipset-dns потому что происходит конфликт с avahi-daemon и поэтому не работает. Выполняем:
nano /opt/etc/init.d/S52ipset-dns и редактируем порт 5353 на 5300, сохраняем, перезагружаем роутер, теперь домены добавлять в роутере во вкладке > Сетевые правила > Интернет фильтр > в строке Адрес сервера DNS писать это значение 192.168.1.1:5300

Большое спасибо. Все стало работать корректно!

Link to comment
Share on other sites

22 часа назад, Александр Рыжов сказал:

По известным причинам её придётся удалить.

Но ведь можно сделать как на 4pda, закрыть доступ с ip российских провайдеров к некоторым темам. Формально все требования соблюдены. 

Link to comment
Share on other sites

2 часа назад, Host Di сказал:

Эх, теперь не работает через WG. Нет соединения.. 😢

Есть альтернативные решения?

У Вас начали блочить WG? Или почему теперь не работает?

Link to comment
Share on other sites

23 минуты назад, Александр Рыжов сказал:

Через любое другое VPN соединение. Решение не привязано к какому-то типу VPN'а.

Более того, даже не обязательно VPN. У меня через WISP соединение работает. Лишь бы интерфейс был представлен в системе и шлюз.

  • Upvote 2
Link to comment
Share on other sites

Всем привет!

Нужна помощь. Сделал настройки по инструкции Drafted от 08.04 - не заработало (

Снес все, сделал по инструкции топикстартера - опять-таки не заработало. Проброс на 2ip.ru дает российский адрес. ДНС порт на 5300 с 5353 "перевесил".

/dev/hand вроде не самые кривые, но..... куда копать? Как диагностировать?

Link to comment
Share on other sites

13 минуты назад, GWX DNKNS сказал:

ДНС порт на 5300 с 5353 "перевесил".

Наоборот, 5353 лучше не использовать. Диагностировать поэтапно. Проверяете создана ли таблица маршрутизации. Существует ли ipset. Наполняется ли он. На месте ли правила iptables. Естиь ли в созданной таблице маршрутизации маршрут по умолчанию и т.д.

Link to comment
Share on other sites

12 минуты назад, Werld сказал:

Наоборот, 5353 лучше не использовать

Не удачно написал. С 5353 ушел на 5300. Сразу ушел

12 минуты назад, Werld сказал:

Диагностировать поэтапно

А как?  Не подскажете команды? В моем списке команд есть только ipset list bypass и ipset test bypass 2ip.ru. В первом случае выводится длинный список адресов, во втором сообщение:

/ # ipset test bypass googlevideo.com
Warning: 216.58.210.164 is in set bypass.
/ # ipset test bypass youtube.com
Warning: 216.58.211.238 is in set bypass.
/ # ipset test bypass www.youtube.com
Warning: 173.194.69.198 is in set bypass.
/ # ipset test bypass 2ip.ru
Warning: 195.201.201.32 is in set bypass.

 

Для 2ip.ru маршрутизация в туннель заработала "сама собой" :( и это печалит. Т.е. трассировка идет через wg-туннель.

Для ютуба tracert показывает стандартный маршрут, без "туннелирования" в wg туннель :(

tracelog.png

Edited by GWX DNKNS
+tracelog
Link to comment
Share on other sites

Раз  ipset list bypass выводит список адресов, значит он наполняется.
Вы можете выполнить ipset flush bypass - это очистит указанный ipset. 
ip rule выведет правила маршрутизации, где вы должны увидеть вашу таблицу, например:

~ # ip rule | grep 1001
1776:   from all fwmark 0x3e9 lookup 1001

ip route list table 1001 должен показать наличие маршрута по умолчанию через нужный интерфейс.
iptables-save | grep bypass должен показать два правила осуществляющие маркировку.
Если все на месте, то все должно работать.

  • Thanks 1
Link to comment
Share on other sites

31 минуту назад, Werld сказал:

Если все на месте, то все должно работать.

Проверил. Все на месте, список адресов пополняется ("смыл" его flush'ем чтобы начать заново)

ip rule:

450:    from 192.168.3.121 lookup 74
451:    from 10.101.0.105 lookup 75
32764:  from all fwmark 0x3e9 lookup 1001
32765:  from all fwmark 0x3e9 lookup 1001

 

/ # ip route list table 1001
default dev nwg3 scope link

 

/ # iptables-save | grep bypass
-A PREROUTING ! -s 10.101.0.0/24 -m conntrack --ctstate NEW -m set --match-set bypass dst -j CONNMARK --set-xmark 0x3e9/0xffffffff
-A PREROUTING ! -s 10.101.0.0/24 -m set --match-set bypass dst -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff

 

Таблица заполняется, но ютуб так и не открывается. Внес все возможные имена ютуба (из сообщения от 13.08) в настройки ДНС.

Может что-то не так настроил?

1. У WG соединения, которое пробрасывается на забугорный сервер, стоит галка "выход в интернет"

2. ДНС у этого соединения 8.8.8.8

3. DoH и DoT не включены

4. В "интернет-фильтрах" (настройках ДНС) для ютуба и 2ip.ru в поле "подключение" указан WG туннель, не "любое подключение"

5. ДНС от провайдера (в качестве его используется другой мой роутер; просто на рабочем настраивать новое - не комильфо) отключен

Link to comment
Share on other sites

В 08.04.2024 в 21:14, Drafted сказал:
pass-table.sh

Пытаюсь настроить wink но кроме главной страницы ничего не работает, может кто что подскажет?

Link to comment
Share on other sites

В 04.09.2024 в 14:36, GWX DNKNS сказал:

Отключил у соединения внутренний DNS сервер, а так же сервер яндекс-днс, сделал ipconfig /renew и все заработало.

Спасибо!

Подскажите, как вы "отключили у соединения внутренний DNS"?

Link to comment
Share on other sites

В 26.04.2023 в 19:44, Александр Рыжов сказал:

Для настройки вам понадобится имя и подсеть VPN-интерфейса. Их можно увидеть в выводе команды ip addr. В примере это nwg3 и 10.7.0.0/24:

Так и не понял, как из списка найти нужный VPN интерфейс 😒

Link to comment
Share on other sites

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   1 member

×
×
  • Create New...