Jump to content

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


Recommended Posts

В 11.08.2024 в 10:15, alexekoz сказал:

То есть дело в том что не хватает какого то домена(может конечно они захардкодили в приложухе какие то IP...)

Это, конечно жуткий оффтоп для этой темы, наравне с статическими маршрутами. Но, чтобы эта тема не развивалась тут дальше, вот вам список:

ggpht.com

googlevideo.com

youtu.be

youtube.com

youtubei.googleapis.com

ytimg.com

И для ребенка youtubekids.com

Edited by V.A.S.t
Link to comment
Share on other sites

А нельзя это все как то подружить вместе с настройками интернет фильтров?

Получается что все управление идет через профиль "Системный", а свои рядом уже не получается создавать, потому что тогда системный список начинает игнорироваться.

Link to comment
Share on other sites

В 08.08.2024 в 23:24, ale_xb сказал:

Спасибо. Работает! Я на всякий случай добавил оба условия и потерю коннекта и "административный down":

case ${layer}-${level} in
        link-disabled|link-pending)

....

        link-running)

.....

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

Link to comment
Share on other sites

В 04.08.2024 в 20:07, ViruZZZ сказал:
32: ovpn_br0: <BROADCAST,POINTOPOINT,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 52:e3:1f:a3:0c:ae peer ff:ff:ff:ff:ff:ff
    inet 192.168.121.97/21 scope global ovpn_br0
       valid_lft forever preferred_lft forever
    inet6 fe80::50e3:1fff:fea3:cae/64 scope link 
       valid_lft forever preferred_lft forever

ovpn_br0 указывать

Link to comment
Share on other sites

вопрос по одновременной работе ipset и tpws

кто нибудь пробовал? не будет конфликтов при одновременной работе?

я ставил отдельно tpws - ютюб отлично работает с ним. но хочется и часть заблокированных сайтов через vpn пускать ...

Edited by semenal89
Link to comment
Share on other sites

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

вопрос по одновременной работе ipset и tpws

Все ОК, проблем не замечено.

Скрытый текст
iptables ... -m set --match-set tpws-list dst -j REDIRECT --to-port ...

Можно проверить по проще

ipset -exist create tpws-list hash:net timeout 86400 counters comment
ipset -exist add tpws-list .../16 comment "rout1"
ipset -exist add tpws-list .../16 comment "rout2"
...

timeout выбираете сами

Очистить
ipset flush tpws-list

Удалить 
ipset destroy tpws-list

Потом наполнение списка как душе угодно с любого сервиса для этого.

443 лучше перенаправить на другой

ip http ssl port ВАШ_ПОРТ

 

 

Edited by vasek00
Link to comment
Share on other sites

На одном телефоне Youtube работает, на другом нет. Частный DNS и прочее отключено. Куда копать?🤩

Link to comment
Share on other sites

Всем привет! настроил по данному способу, н оесть проблемы со скорость, очень медленное соединение, хотя если прост очерез впн скорость на хорошем уровне. в чем может быт ьпроблема?

 

Link to comment
Share on other sites

В основе оригинальный скрипт. Через OpenVPN соединение всё работает. Как пустить нужные домены через WISP подключение? (это когда роутер подключается по WIFI к точке доступа на мобильном телефоне)

Нашёл его в списке интерфейсов apcli0. VPN_SUBNET вписал 172.20.10.10/32. Именно та что получает устройство при подключении.

Список ip адресов bypass формируется. Маршрут по умолчанию из table подставляется. Скрипты работают.

Но трассировка спотыкается на втором хопе.

Трассировка маршрута к myip.ru [178.62.9.171]
с максимальным числом прыжков 30:

  1     1 ms    <1 мс    <1 мс  192.168.1.1
  2  172.20.10.10  сообщает: Заданный узел недоступен.

Трассировка завершена.

Это я проверяю с клиента домашней сети. Почему не идёт трафик? Где и что ещё нужно дополнительно разрешить?

Особенности работы с WISP. Не знаю имеет ли это значение. В системе WISP является резервным подключением.

Когда ставлю его основным подключением, понятное дело весь трафик роутера идёт через него. И всё что нужно работает. Проблемы с самой точкой доступа нет.

Когда основным подключением является проводной провайдер. А WISP подключен, но висит как резервное подключение. Если добавить статический маршрут к нужному сайту через WISP по IP в меню Маршрутизация, то трафик корректно идёт через него, но вторым хопом там становится 172.20.10.1 (шлюз на ТД) а не 172.20.10.10 (адрес клиента WISP который получает роутер). Нужный сайт открывается.

Скрипт же подставляет в маршрут именно 172.20.10.10 и в итоге трафика нет. Даже если в конфиге скрипта указать прямо адрес 172.20.20.1 то вторым хопом который недоступен всё равно будет 172.20.20.10. Он видимо сам его берет из системы по названию сетевого интерфейса apcli0 или исходя из самого маршрута. Но так не работает.

Как это поправить? Может NAT какой в команде iptables нужен? В чем принципиальная разница между VPN соединением и WISP для роутера?

Edited by keenet07
Link to comment
Share on other sites

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

Когда основным подключением является проводной провайдер. А WISP подключен, но висит как резервное подключение. Если добавить статический маршрут к нужному сайту через WISP по IP в меню Маршрутизация, то трафик корректно идёт через него, но вторым хопом там становится 172.20.10.1 (шлюз на ТД) а не 172.20.10.10 (адрес клиента WISP который получает роутер). Нужный сайт открывается.

Очевидно как-то не правильно вы пишете дефолтный маршрут в таблицу. Определите корректный шлюз по умолчанию для этого интерфейса и скорректируйте скрипт 010-bypass-table.sh Как-то так:
ip route add default via 172.20.20.1 table 1001

Либо, как вариант, вы можете использовать частично способ из темы про AdguardHome. Не создавать таблицу и маршрут самостоятельно. А просто создать через веб роутера новую политику, сделать в ней единственным подключением ваш WISP. Роутером будет создана таблица маршрутизации для определенной метки. Вам останется лишь подкорректировать скрипт /opt/etc/ndm/netfilter.d/010-bypass-netfilter.sh , чтобы трафик маркировался меткой нужной для этой таблицы:

Скрытый текст
#!/bin/sh

[ "$type" == "ip6tables" ] && exit
[ "$table" != "mangle" ] && exit
[ -z "$(ipset --quiet list bypass)" ] && exit

if [ -z "$(iptables-save | grep bypass)" ]; then
     mark_id=`curl -kfsS http://localhost:79/rci/show/ip/policy 2>/dev/null | jq -r '.[] | select(.description == "<Имя полиси>") | .mark'`
     iptables -w -t mangle -A PREROUTING ! -i nwg0 -m conntrack --ctstate NEW -m set --match-set bypass dst -j CONNMARK --set-mark 0x$mark_id
     iptables -w -t mangle -A PREROUTING ! -i nwg0 -m set --match-set bypass dst -j CONNMARK --restore-mark
fi

 

  • Upvote 1
Link to comment
Share on other sites

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

Очевидно как-то не правильно вы пишете дефолтный маршрут в таблицу. Определите корректный шлюз по умолчанию для этого интерфейса и скорректируйте скрипт 010-bypass-table.sh Как-то так:
ip route add default via 172.20.20.1 table 1001

Спасибо. Вы абсолютно правы. Буквально несколько минут назад сам догадался указать вручную шлюз в эту строку через via и всё заработало. 

Edited by keenet07
Link to comment
Share on other sites

В 17.08.2024 в 18:53, keenet07 сказал:

PN_SUBNET вписал 172.20.10.10/32. Именно та что получает устройство при подключении.

Вроде бы нужно указывать не ip, а всю 24 подсеть.

Link to comment
Share on other sites

В 15.08.2024 в 19:56, vasek00 сказал:

Все ОК, проблем не замечено.

спасибо за комментарий и примеры. с ip адресами в tpws-list понятно.

а можно ли сделать чтобы не ip адреса а домены добавлять в ваш пример в tpws-list?

Link to comment
Share on other sites

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

спасибо за комментарий и примеры. с ip адресами в tpws-list понятно.

а можно ли сделать чтобы не ip адреса а домены добавлять в ваш пример в tpws-list?

А чем ipset не подходит, есть список доменов

aaaaaaa.com,ssssssss.com,dddddddd.com/name-list

 

Link to comment
Share on other sites

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

А чем ipset не подходит, есть список доменов

aaaaaaa.com,ssssssss.com,dddddddd.com/name-list

возможно тем, что у домена может быть больше одного ip адреса?

Link to comment
Share on other sites

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

возможно тем, что у домена может быть больше одного ip адреса?

и дальше что ?

 

Link to comment
Share on other sites

В 07.05.2024 в 00:50, zako сказал:

@Alex T огромное Вам спасибо! Все получилось!

Уважаемый zako, у меня такая же ситуация с двумя VPN. Не могли бы Вы выложить модифицированные файлы для 2-х VPNов WG? Заранее спасибо

Link to comment
Share on other sites

Уважаемый @Drafted, есть пару вопросов, могли бы ответить?

На текущий момент у меня прошивка на роутере 3.7.4 настроен выборочный роутинг по вашему методу через dnsmasq.

Настроено Vpn подключение wireguard и DNS-over-HTTPS для шифрования DNS-запросов.

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

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

в файле конфигурации  

/opt/etc/bypass.conf

меняю значения на

VPN_NAME=tun0
VPN_SUBNET=172.16.250.1/30

Сайты не открываются, маршруты в ipset list bypass не добавляются хотя само соединение tun0 отображается в ip addr и проверку проходит через команду:

 curl  --interface tun0 http://myip.wtf/json

Настраивал singbox по этой инструкции

Причина всему этому послужило то что, вчера wireguard отвалился на пару часов, пробовал разные сервера не устанавливалось подключение и все, щас работает как обычно, походу гайки то закручивают все туже и туже, это лишь вопрос времени когда wireguard перестанет полностью работать.

UPDATE: ip адреса все таки добавляются в ipset list bypass, но сайты не открываются, похоже не хватает какого правила для фаервола или конфиг для singbox надо подправить.

Текущий конфиг для singbox:

{
  "log": {
    "level": "debug"
  },
  "inbounds": [
    {
      "type": "tun",
      "interface_name": "tun0",
      "domain_strategy": "ipv4_only",
      "inet4_address": "172.16.250.1/30",
      "auto_route": false,
      "strict_route": false,
      "sniff": true 
   }
  ],
  "outbounds": [
  {
      "type": "shadowsocks",
      "server": "222.111.111.111",
      "server_port": 22700,
      "method": "2022-blake3-chacha20-poly1305",
      "password": "parol"
  }
  ],
  "route": {
    "auto_detect_interface": true
  }
}

Edited by applick
Link to comment
Share on other sites

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

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

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

В моем случае VPN и WISP подключение. Второе нужно для выхода на некоторые ресурсы с которыми у многих сейчас проблемы через интернет розданный с мобильного телефона на WISP. Там это пока работает.

Идеально было бы если бы записи к разным "ВПН" можно было задавать просто меня порт подключения в записи.

Например, в моем случае это могло быть так: 192.168.1.1:5353 это через VPN и 192.168.1.1:5454 это через WISP соединение.

Способ рабочий. По сути достаточно только три домена прописать.

Присоединяюсь к просьбе. Использую инструкцию от @Drafted Очень бы хотелось такое для двух VPN.

Link to comment
Share on other sites

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

Причина всему этому послужило то что, вчера wireguard отвалился на пару часов, пробовал разные сервера не устанавливалось подключение и все, щас работает как обычно, походу гайки то закручивают все туже и туже, это лишь вопрос времени когда wireguard перестанет полностью работать.

Как удалось восстановить работу? У меня после вчерашнего так и не завелось ничего, подключение к серверу вижу, но передачи данных нет, хэндшейки по таймауту валятся. Причем Cloudflare 1.1.1.1 WARP+ VPN со вчерашнего дня тоже перестал работать через wireguard и не только у меня, но и у друзей.

Link to comment
Share on other sites

41 минуту назад, introws сказал:

Как удалось восстановить работу? У меня после вчерашнего так и не завелось ничего, подключение к серверу вижу, но передачи данных нет, хэндшейки по таймауту валятся. Причем Cloudflare 1.1.1.1 WARP+ VPN со вчерашнего дня тоже перестал работать через wireguard и не только у меня, но и у друзей.

Возможно причина в блокировке wireguard? Установите бету кинетика и установите amneziawg на кинетик, всё будет работать. У меня сейчас как раз так работает, сервер в digitalocean

  • Upvote 1
Link to comment
Share on other sites

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

Как удалось восстановить работу? У меня после вчерашнего так и не завелось ничего, подключение к серверу вижу, но передачи данных нет, хэндшейки по таймауту валятся. Причем Cloudflare 1.1.1.1 WARP+ VPN со вчерашнего дня тоже перестал работать через wireguard и не только у меня, но и у друзей.

Само заработало через пару часов, попробуйте разные ip подключения использовать 162.159.193.*:2408, за место * цифры подставлять от 1 до 255 у меня на проводном инете с цифрой 5 пускает, может и вас пустит. На мобильном инете теперь вообще не подключается какие цифры бы не подставлял.

49 минут назад, Сергей Грищенко сказал:

Возможно причина в блокировке wireguard? Установите бету кинетика и установите amneziawg на кинетик, всё будет работать. У меня сейчас как раз так работает, сервер в digitalocean

На моем роутере бетку установить пока еще нельзя. В entware этот клиент наверное не установить. Хотелось бы конечно, чтобы кто нибудь подружил все это с singbox.

Link to comment
Share on other sites

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

Присоединяюсь к просьбе. Использую инструкцию от @Drafted Очень бы хотелось такое для двух VPN.

Там решение простое. Чтоб меньше переписывать, просто дописываете недостающие параметры в конфиг. И дублируете все скрипты во всех папках которые ставятся в оригинальном решении. Попутно меняете во вторых копиях параметры на настройки для второго VPN из конфиге. И в одном из скриптов указываете какой порт слушать вместо 5353. Дальше просто. Если нужно направить домен через первый VPN ставите в записи порт 5353, если через второй то с другим портом. Работать будет параллельно.

Edited by keenet07
Link to comment
Share on other sites

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

Там решение простое. Чтоб меньше переписывать, просто дописываете недостающие параметры в конфиг. И дублируете все скрипты во всех папках которые ставятся в оригинальном решении. Попутно меняете во вторых копиях параметры на настройки для второго VPN из конфиге. И в одном из скриптов указываете какой порт слушать вместо 5353. Дальше просто. Если нужно направить домен через первый VPN ставите в записи порт 5353, если через второй то с другим портом. Работать будет параллельно.

Спасибо за ответ. Но в каком скрипте прописывается 2-ой порт прослушивания? Он же задается в dnsmasq.conf

Link to comment
Share on other sites

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

Спасибо за ответ. Но в каком скрипте прописывается 2-ой порт прослушивания? Он же задается в dnsmasq.conf

У меня то через ipset-dns.

Link to comment
Share on other sites

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

Спасибо за ответ. Но в каком скрипте прописывается 2-ой порт прослушивания? Он же задается в dnsmasq.conf

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

Link to comment
Share on other sites

9 часов назад, Сергей Грищенко сказал:

Возможно причина в блокировке wireguard? Установите бету кинетика и установите amneziawg на кинетик, всё будет работать. У меня сейчас как раз так работает, сервер в digitalocean

спасибо, помогло

Link to comment
Share on other sites

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

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

Гениально! А в скриптах надо что то менять? Номера таблиц?

Link to comment
Share on other sites

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

Гениально! А в скриптах надо что то менять? Номера таблиц?

Ну да.Оба ipset'a должны существовать. Должно быть две таблицы, с разными номерами. В каждой должен быть маршрут по умолчанию через нужный интерфейс. Трафик для попадания в разные таблицы должен маркироваться разными метками.

Link to comment
Share on other sites

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

Ну да.Оба ipset'a должны существовать. Должно быть две таблицы, с разными номерами. В каждой должен быть маршрут по умолчанию через нужный интерфейс. Трафик для попадания в разные таблицы должен маркироваться разными метками.

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

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...