Перейти к содержанию

Рекомендуемые сообщения

Опубликовано

Подскажите, пожалуйста, где я ошибаюсь. Уже весь мозг сломал себе. Есть два рабочих подключения vpn wireguard. Настроен ipset-dns по методу из первого. Все прекрасно работает. Пытаюсь добавить второе подключение (нужно для одного из приложений)

Последовательность действий.

 1. Разархивирую скаченный архив

2. Вношу свои данные в файл myset.conf

3. Все 5 файлов, которые были в архиве, переношу в роутер - в папку opt/etc

4. В ssh терминале вхожу в данную папку (cd /opt/etc) и пробую запустить скрипт makefile.

Пробую команды

- make

-make start

-makefile start

 И...ничего  не происходит. Или я на каком-то этапе что-то не так делаю или я уже даже не знаю. Огромная просьба помочь, кто знает. Заранее спасибо!

  • 2 недели спустя...
  • Ответов 296
  • Создана
  • Последний ответ

Топ авторов темы

Опубликовано
В 26.04.2024 в 15:36, zako сказал:

Подскажите, пожалуйста, алгоритм действий. Куда нужно поместить эти файлы, нужно ли их распаковывать и как запустить Makefile. 

Там просто набор дубликатов скриптов исходного решения с чуть подправленными именами. Если очень хочется, можно просто положить рядом с оригинальными. 
Как мне кажется, не оптимальный вариант, проще прописать несколько вариантов ВПН сразу в исходные скрипты и запускать по копии ipset-dns на своём порту для каждого.

На коленке набросал для маршрутов через мои WG и ss-redir, вроде работает, но прошу отнестись с осторожностью:
 

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

тупо задваиваем конфиг  

cat /opt/etc/bypass.conf

DNS_1=1.1.1.1
SET_NAME_1=bypass_1
VPN_NAME_1=nwg0
VPN_SUBNET_1=172.16.0.2/24
DNS_2=8.8.8.8
SET_NAME_2=bypass_2
VPN_NAME_2=br0
VPN_OUTPORT_2=1082

поднимаем два экземпляра ipset-dns, каждый по своему ipset 

cat /opt/etc/init.d/S52ipset-dns

#!/bin/sh

PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

. /opt/etc/bypass.conf

if [ "$1" = "start" ]; then
    ipset create $SET_NAME_1 hash:ip timeout 86400
    ipset add $SET_NAME_1 $DNS_1
    ip rule add fwmark 1001 table 1001
    ipset-dns $SET_NAME_1 $SET_NAME_1 0.0.0.0:5353 $DNS_1
#
    ipset create $SET_NAME_2 hash:ip timeout 86400
    ipset add $SET_NAME_2 $DNS_2
    ip rule add fwmark 1002 table 1002
    ipset-dns $SET_NAME_2 $SET_NAME_2 0.0.0.0:5454 $DNS_2
fi

Добавляем маршруты при переподнятии интерфейса. На самом деле маршруты для ss-redir в этом примере не будут пересоздаваться, т.к. это прокси, а не интерфейс, и это надо привязывать или к процессу или к факту соединения, но для примера сойдёт, т.к. маршруты добавятся при старте роутера. 

 cat /opt/etc/ndm/ifstatechanged.d/010-bypass-table.sh

#!/bin/sh

. /opt/etc/bypass.conf

[ "$1" == "hook" ] || exit 0
[ "${connected}-${link}-${up}" == "yes-up-up" ] || exit 0
# do not need route to ss, usinng proxy instead
[ "$system_name" == "br0" ] && exit 0

if [ "$system_name" == "$VPN_NAME_1" ] &&
   [ -n "$(ipset --quiet list $SET_NAME_1)" ] &&
   [ -z "$(ip route list table 1001)" ]; then
    ip route add default dev $system_name table 1001
fi

if [ "$system_name" == "$VPN_NAME_2" ] &&
   [ -n "$(ipset --quiet list $SET_NAME_2)" ] &&
   [ -z "$(ip route list table 1002)" ]; then
    ip route add default dev $system_name table 1002
fi

и создаём правила, если их нет

cat /opt/etc/ndm/netfilter.d/010-bypass-netfilter.sh

#!/bin/sh

. /opt/etc/bypass.conf

[ "$type" == "ip6tables" ] && exit
[ "$table" != "mangle" ] && exit

if [ -n "$(ip link list | grep $VPN_NAME_1)" ] &&
   [ -n "$(ipset --quiet list $SET_NAME_1)" ] &&
   [ -z "$(iptables-save | grep  $SET_NAME_1)" ]; then
     iptables -w -t mangle -A PREROUTING ! -s $VPN_SUBNET_1 -m conntrack --ctstate NEW -m set --match-set $SET_NAME_1 dst -j CONNMARK --set-mark 1001
     iptables -w -t mangle -A PREROUTING ! -s $VPN_SUBNET_1 -m set --match-set $SET_NAME_1 dst -j CONNMARK --restore-mark
fi
# Shadowsocks
if [ -n "$(ipset --quiet list $SET_NAME_2)" ] &&
   [ -z "$(iptables-save | grep  $SET_NAME_2)" ]; then
     iptables -I PREROUTING -w -t nat -i $VPN_NAME_2 -p tcp -m set --match-set $SET_NAME_2 dst -j REDIRECT --to-port $VPN_OUTPORT_2
     iptables -I PREROUTING -w -t nat -i $VPN_NAME_2 -p udp -m set --match-set $SET_NAME_2 dst -j REDIRECT --to-port $VPN_OUTPORT_2
fi


 

Опубликовано

@Alex T Спасибо! Вечером буду пробовать настроить. Уточню еще такой момент.

А я правильно понимаю, что если у меня два подключения WG, то нужно по аналогии поменять так:

1) В bypass.conf:

22 часа назад, Alex T сказал:
VPN_OUTPORT_2=1082

Тут вместо этой строки вставляю свои данные 2го подключения: 

VPN_SUBNET_2=x.x.x.x/x

2) А в 010-bypass-netfilter.sh

22 часа назад, Alex T сказал:
# Shadowsocks
if [ -n "$(ipset --quiet list $SET_NAME_2)" ] &&
   [ -z "$(iptables-save | grep  $SET_NAME_2)" ]; then
     iptables -I PREROUTING -w -t nat -i $VPN_NAME_2 -p tcp -m set --match-set $SET_NAME_2 dst -j REDIRECT --to-port $VPN_OUTPORT_2
     iptables -I PREROUTING -w -t nat -i $VPN_NAME_2 -p udp -m set --match-set $SET_NAME_2 dst -j REDIRECT --to-port $VPN_OUTPORT_2
fi

 

Нужно будет немного исправить так (добавить еще строку [ -n "$(ip link list | grep $VPN_NAME_2)" ] &&) ?

if [ -n "$(ip link list | grep $VPN_NAME_2)" ] &&
   [ -n "$(ipset --quiet list $SET_NAME_2)" ] &&
   [ -z "$(iptables-save | grep  $SET_NAME_2)" ]; then
     iptables -I PREROUTING -w -t nat -i $VPN_NAME_2 -p tcp -m set --match-set $SET_NAME_2 dst -j REDIRECT --to-port $VPN_OUTPORT_2
     iptables -I PREROUTING -w -t nat -i $VPN_NAME_2 -p udp -m set --match-set $SET_NAME_2 dst -j REDIRECT --to-port $VPN_OUTPORT_2
fi

 

Опубликовано
5 минут назад, zako сказал:

то нужно по аналогии поменять так

1. Да.

2.Проще даже скопировать блок для первого  vpn и подправить _1 на _2 в переменных, и номер таблицы.

 Если уж править пример, то гораздо важнее поправить создаваемые правила iptables, в случае shadowsocks там идёт не пометка пакетов, а переадресация их на порт прокси. А для WG нужно будет --set-mark 1002. (ну или ваша таблица)
 

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

[ -n "$(ip link list | grep $VPN_NAME_1)" ] && в данном случае, одно из условий, выполнение которого требуется, чтобы добавить правила, а именно - что в списке интерфейсов вообще есть подстрока, которую мы обозначили переменной $VPN_NAME_1 (ну или _2)

[ -n - вот это вот, проверка на то, что команда вернула непустой ответ

[ -z  - поверка на пустой

Все три условия просто уменьшают шанс лишнего добавления или задвоения правил. Чтобы скрипт не тратил время на попытки добавить правила на несуществующий VPN и не сыпал ошибками в логи. 

Самое важное условие здесь [ -z "$(iptables-save | grep  $SET_NAME_2)" ] - оно разрешает добавить правила, только если ЕЩЁ нет правил работающих с нашим $SET_NAME_2

При этом, как часто бывает в  "наколеночных" скриптах, такое условие, может мешать, если уже существуют правила не укладывающиеся в логику скрипта. Или есть наборы, имена которых входят друг в друга(например set_1 и set_12)

 

  • 3 недели спустя...
Опубликовано (изменено)
В 08.04.2024 в 21:14, Drafted сказал:
port=5353

советую перенести на другой порт dnsmasq

этот совет касается и пользователей ipset-dns

потому что на этом порту живет

~ # netstat -nlpu | grep :5353
udp    0    0 0.0.0.0:5353      0.0.0.0:*       658/avahi-daemon

если используется smb и/или mdns
Изменено пользователем Denis P
Опубликовано (изменено)
1 час назад, Denis P сказал:

советую перенести на другой порт dnsmasq

этот совет касается и пользователей ipset-dns

потому что на этом порту живет

~ # netstat -nlpu | grep :5353
udp    0    0 0.0.0.0:5353      0.0.0.0:*       658/avahi-daemon

если используется smb и/или mdns

Большое спасибо за подсказку! Теперь понятно откуда ноги Race Condition растут в обоих решениях при старте. 

Обновил инструкцию с решением через dnsmasq.

Изменено пользователем Drafted
  • 2 недели спустя...
Опубликовано

Добрый день. Установил opkg на локальное хранилище по инструкции - https://help.keenetic.com/hc/ru/articles/360021888880-Установка-OPKG-Entware-на-встроенную-память-роутера

Установил ipset-dns, по инструкции из данного топика, но почему-то все равно не работает.

Добавленные адреса в Сетевые правила → Интернет фильтры → Настройка DNS не резолвятся совсем. В логе постоянные ошибки : [0659] failed to connect to server [6] 2a02:6b8::feed:ff#1253: network unreachable.

Единственное, что пошло не так, это нахождение имени интерфейса VPN, в консоли нашел вот это описание интерфейса:
index: 0
interface-name: Wireguard0
type: Wireguard
description: Keenetic-WG

Соответственно в /opt/etc/bypass.conf прописал так:
DNS=1.1.1.1
SET_NAME=bypass
VPN_NAME=Wireguard0
VPN_SUBNET=10.8.0.0/24

Что я сделал не так? Куда посмотреть? Что проверить? В маршрутах сейчас пусто, свои кастомные удалил.

Опубликовано
3 часа назад, Fantasque сказал:

 

Соответственно в /opt/etc/bypass.conf прописал так:
DNS=1.1.1.1
SET_NAME=bypass
VPN_NAME=Wireguard0
VPN_SUBNET=10.8.0.0/24

НУ имя интерфейса можно посмотреть командой  ip addr, у меня WG интерфейс отображается как  nwg1

Опубликовано
30 minutes ago, Андрей Волосков said:

НУ имя интерфейса можно один раз посмотреть   IP-адрес, у меня интерфейс WG отображается как nwg1

Да, прошу прощения. Вводил команды не в той консоли.

Нашел имя интерфейса - nwg0, прописал в конфиге. Рестартанул - /opt/etc/init.d/S52ipset-dns restart, перезагрузил роутер. Чудо не произошло, в логах все также ошибки:
image.png.f491d4109aa3aa6943cb0e17bfac317c.png

Опубликовано
51 minutes ago, Андрей Волосков said:

IPV6 отключите

Отключил, даже удалил как компонент, ошибки ушли, но функционал ipset-dns так и не заработал. Что еще можно проверить?

Опубликовано
1 час назад, Ape сказал:

@Drafted через UI'ку адреса не удалить. Только через терминал ipset редактировать?

Удаляйте, кто Вам мешает, там есть значок удаления... и редактирования

Опубликовано
19 часов назад, Андрей Волосков сказал:

Удаляйте, кто Вам мешает, там есть значок удаления... и редактирования

В UI он то удаляется, но по факту маршрут через VPN остается висеть

  • 1 месяц спустя...
Опубликовано

Так как "ndm/ifstatechanged.d (obsoleted since 4.0, kept only for backward compatibility)", то, думаю, лишь вопрос времени когда скрипты в этом хуке перестанут работать.

Теперь предлагается использовать "ndm/iflayerchanged.d (new and primary from 4.0)", соответственно скрипт
 010-bypass-table.sh можно перенести в /opt/etc/ndm/iflayerchanged.d внеся минимальные изменения:
 

#!/bin/sh

. /opt/etc/bypass.conf

[ "$1" == "hook" ] || exit 0
[ "$system_name" == "$VPN_NAME" ] || exit 0
[ ! -z "$(ipset --quiet list bypass)" ] || exit 0
[ "${layer}-${level}" == "link-running" ] || exit 0

if [ -z "$(ip route list table 1001)" ]; then
    ip route add default dev $system_name table 1001
fi

 

Опубликовано

Приветствую. Для текущей версии 4.2 beta 1 все остается актуальным из заглавного поста?
И версия пакета та же ipset-dns-keenetic_0.2-1_all или что-то изменилось - обновилось?

Опубликовано
19 часов назад, Keaf сказал:

Подскажите, как в конфиге прописать несколько DNS адресов?

Что значит несколько DNS адресов? Upstream DNS server? Или Вы хотите сделать отдельный резолвер с другой таблицей для заворачивания в другой тоннель?

Опубликовано (изменено)

у меня во время установки это вылезло, это норм или что-то не так делаю?

Opkg::Manager: invalid initrc "/opt/etc/initrc": no such file or directory, trying /opt/etc/init.d/.


Авг 2 03:46:08
ndm
Event::Forwarder: unable to send "Event::Type::DbKey" to "Opkg::Manager" for 30 seconds.
Авг 2 03:46:08
ndm
Event::Forwarder: "Opkg task queue" (1493) backtrace:
Авг 2 03:46:08
ndm
Event::Forwarder: futex_wait_queue_me()+0xf0
Авг 2 03:46:08
ndm
Event::Forwarder: futex_wait()+0x154
Авг 2 03:46:08
ndm
Event::Forwarder: do_futex()+0x144
Авг 2 03:46:08
ndm
Event::Forwarder: SyS_futex()+0xf4
Авг 2 03:46:08
ndm
Event::Forwarder: syscall_common()+0x34
Авг 2 03:46:08
ndm
Event::Forwarder: <unknown>()+0x0
Авг 2 03:46:08
ndm
Event::Forwarder: __cp_end()+0x0
Авг 2 03:46:08
ndm
Event::Forwarder: __syscall_cp_c()+0x88
Авг 2 03:46:08
ndm
Event::Forwarder: __timedwait_cp()+0x1bc
Авг 2 03:46:08
ndm
Event::Forwarder: __pthread_cond_timedwait_time64()+0x144
Авг 2 03:46:08
ndm
Event::Forwarder: Condition::Wait(long) const+0x11c
Авг 2 03:46:08
ndm
Event::Forwarder: Io::Process::Wait(long, bool&, bool&)+0x208
Авг 2 03:46:08
ndm
Event::Forwarder: Opkg::(anonymous namespace)::Init_::Run()+0x1ed8
Авг 2 03:46:08
ndm
Event::Forwarder: Task::Thread::Run_()+0x208
Авг 2 03:46:08
ndm
Event::Forwarder: Task::Thread::Run()+0x38
Авг 2 03:46:08
ndm
Event::Forwarder: Thread::StartRoutine_(void*)+0x420
Авг 2 03:46:08
ndm
Event::Forwarder: start()+0x98
Авг 2 03:46:08
ndm
Event::Forwarder: __clone()+0x6c
Авг 2 03:46:15
ndm
Opkg::Manager: /tmp/mnt/4380c772-4fcc-4d7a-b7bb-ac769f010c9d initialized.
Авг 2 03:46:15
ndm
Opkg::Manager: invalid initrc "/opt/etc/initrc": no such file or directory, trying /opt/etc/init.d/.
Авг 2 03:46:15
installer
[1/5] Начало установки системы пакетов "Entware"...

 

Изменено пользователем Evil_Raven
Опубликовано (изменено)

Захожу в "Профили DNS", прописываю pbs.twimg.com, но картинка по ссылке не открывается: https://pbs.twimg.com/media/GTmBD5-boAAASMU?format=jpg.

А вот если через маршрутизацию прописать 199.232.40.159, то всё работает. Большая часть сайтов открывается нормально, но с некоторыми возникают такие проблемы.

image.png.d73188b55fc0f1d5ecdcb5474db132e0.pngimage.png.b1be334ed740d0037a2240ed5a722b32.png

Изменено пользователем Evil_Raven
Опубликовано
В 08.04.2024 в 21:14, Drafted сказал:

Добавляем нужные хосты в разделе Интернет-фильтры -> Настройка DNS, указывая адрес сервера DNS: 192.168.1.1:5300

chrome_2024-05-27_13-48-07.png.22586109ce6e136473c6ce6ca1fa8b52.png

 

А как удалить этот роутинг без переустановки всего?
При удалении правила само правило из интерфейса удаляется, но трафик не перестает ходить через DNS 192.168.1.1:5300
Ребут также не помог 

Опубликовано
1 час назад, South_butovo сказал:

А как удалить этот роутинг без переустановки всего?
При удалении правила само правило из интерфейса удаляется, но трафик не перестает ходить через DNS 192.168.1.1:5300
Ребут также не помог 

Просто удаляете хост и полностью перезагружаете роутер.

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

Ребут также не помог

Значит где-то остался, либо другой домен резолвится на те же IP адреса.

Опубликовано (изменено)
В 08.04.2024 в 21:14, Drafted сказал:

В него вставляем содержимое, отредактировав VPN_NAME и VPN_SUBNET (можно подсмотреть командой: ip addr):

VPN_NAME=nwg0
VPN_SUBNET=10.77.77.0/24

Столкнулся со сложностью.
Я использую ВПН по протоколу IKEv2 и он не светится в списках интерфейсов ip addr.
Это можно как-то обойти?

причем WG светится как nwg1

Изменено пользователем South_butovo
Опубликовано
В 08.04.2024 в 21:14, Drafted сказал:

Если кому интересно вот инструкция:

Сносим opkg и ставим заново на всякий случай. Я устанавливаю во внутреннюю память роутера. Все нужные пакеты занимают около 7мб.

После установки opkg заходим по SSH в Entware. Для этого в командной строке:

ssh root@192.168.1.1 -p 222

Устанавливаем пакеты:

opkg update && opkg install ipset iptables dnsmasq

Создаем файл конфигурации:

vi /opt/etc/bypass.conf

В него вставляем содержимое, отредактировав VPN_NAME и VPN_SUBNET (можно подсмотреть командой: ip addr):

VPN_NAME=nwg0
VPN_SUBNET=10.77.77.0/24

Даем права на запуск:

chmod +x /opt/etc/bypass.conf

Создаем скрипт запуска:

vi /opt/etc/init.d/S52ipset-bypass

В него вставляем содержимое:

#!/bin/sh

PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

. /opt/etc/bypass.conf

if [ "$1" = "start" ]; then
    ipset create bypass hash:ip
    ip rule add fwmark 1001 table 1001
fi

Даем права на запуск:

chmod +x /opt/etc/init.d/S52ipset-bypass

Создаем хук ifstatechanged.d:

vi /opt/etc/ndm/ifstatechanged.d/010-bypass-table.sh

В него вставляем содержимое:

#!/bin/sh

. /opt/etc/bypass.conf

[ "$1" == "hook" ] || exit 0
[ "$system_name" == "$VPN_NAME" ] || exit 0
[ ! -z "$(ipset --quiet list bypass)" ] || exit 0
[ "${connected}-${link}-${up}" == "yes-up-up" ] || exit 0

if [ -z "$(ip route list table 1001)" ]; then
    ip route add default dev $system_name table 1001
fi

Даем права на запуск:

chmod +x /opt/etc/ndm/ifstatechanged.d/010-bypass-table.sh

Создаем хук netfilter.d:

vi /opt/etc/ndm/netfilter.d/010-bypass-table.sh

В него вставляем содержимое:

#!/bin/sh

. /opt/etc/bypass.conf

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

if [ -z "$(iptables-save | grep bypass)" ]; then
     iptables -w -t mangle -A PREROUTING ! -s $VPN_SUBNET -m conntrack --ctstate NEW -m set --match-set bypass dst -j CONNMARK --set-mark 1001
     iptables -w -t mangle -A PREROUTING ! -s $VPN_SUBNET -m set --match-set bypass dst -j CONNMARK --restore-mark
fi

Даем права на запуск:

chmod +x /opt/etc/ndm/netfilter.d/010-bypass-table.sh

Правим конфиг dnsmasq.conf:

vi /opt/etc/dnsmasq.conf

В него вставляем новый конфиг, заменяя старый. Адрес в server можно поменять на предпочтительный DNS сервер, например 1.1.1.1 или 9.9.9.9.

user=nobody
pid-file=/var/run/opt-dnsmasq.pid
port=5300

min-port=4096
cache-size=1536

bogus-priv
no-negcache
no-resolv
no-poll
no-hosts
clear-on-reload

server=8.8.8.8
ipset=/#/bypass

Если вы используете прошивочный DoT или DoH, то можно указать его, чтобы DNS запросы к перенаправленным хостам также шифровались. Подсмотреть адреса и порты локальных резолверов можно командой cat /tmp/ndnproxymain.stat Все что с портами 405***  это DoH/DoT серверы кинетика. Выбираем любой. Адрес с портом указываем так:

server=127.0.0.1#40500

Готово! Перезапускаем роутер.

Добавляем нужные хосты в разделе Интернет-фильтры -> Настройка DNS, указывая адрес сервера DNS: 192.168.1.1:5300

chrome_2024-05-27_13-48-07.png.22586109ce6e136473c6ce6ca1fa8b52.png

Если @Александр Рыжов сделает из этого пакет, то будет вообще сказка)

Повторюсь - это решение, за счет встроенного кеширования dnsmasq, работает намного стабильнее и быстрее в плане резолвинга, чем при использовании ipset-dns.

Лучшая инструкция, завелось. Я бы еще добавил, почему то, что "#!/bin/sh" криво копируются в vi, пришлось дописывать руками, попутно изучая vi :) ) что нужно поставить ip роутера на 192.168.2.1 (я кинул новый роутер keenetic к роутеру по ethernet в квартире, которую арендую, чтобы на нем уже поднять эту приблуду) и добавить если хочешь включать youtube, то добавить googlevideo.com.

Опубликовано

Дайте направление куда еще мыслить, настроил все как в первом посту. Если прописываю статичный маршрут через впн, все работает, через домен отказывается, трафик так же идет через провайдера. Куда и что еще смотреть не знаю.

 image.png.0849cb8e0491cf65c277ba76544c02c7.png  image.png.159b4681fe2237d618a3367348a097e1.png

image.png.dc868b88cff00e51d69ba047049f8720.png

 

image.png.adefb016f8003c4b801a3914e91bb84b.png

Что то упускаю видимо но могу понять что. В системном журнале я должен видеть хоть что то? 

Заранее спасибо за любую помощь)

Опубликовано
4 часа назад, Gorod_Besov сказал:

Что то упускаю видимо но могу понять что. В системном журнале я должен видеть хоть что то? 

Заранее спасибо за любую помощь

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

и  с учетом этого комента

так как первое решние у меня не работало, я заподозрил что провайдер перехватывает DNS каким то образом
и настроил через doh
у меня вышло так
server=127.0.0.1#40510

ps что бы снести opkg
image.thumb.png.32d68618d3df3c18812846b312a372ae.png

Опубликовано (изменено)
В 09.04.2024 в 01:14, Drafted сказал:

Если кому интересно вот инструкция:

Сносим opkg и ставим заново на всякий случай. Я устанавливаю во внутреннюю память роутера. Все нужные пакеты занимают около 7мб.

После установки opkg заходим по SSH в Entware. Для этого в командной строке:

ssh root@192.168.1.1 -p 222

Устанавливаем пакеты:

opkg update && opkg install ipset iptables dnsmasq

Создаем файл конфигурации:

vi /opt/etc/bypass.conf

В него вставляем содержимое, отредактировав VPN_NAME и VPN_SUBNET (можно подсмотреть командой: ip addr):

VPN_NAME=nwg0
VPN_SUBNET=10.77.77.0/24

Даем права на запуск:

chmod +x /opt/etc/bypass.conf

Создаем скрипт запуска:

vi /opt/etc/init.d/S52ipset-bypass

В него вставляем содержимое:

#!/bin/sh

PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

. /opt/etc/bypass.conf

if [ "$1" = "start" ]; then
    ipset create bypass hash:ip
    ip rule add fwmark 1001 table 1001
fi

Даем права на запуск:

chmod +x /opt/etc/init.d/S52ipset-bypass

Создаем хук ifstatechanged.d:

vi /opt/etc/ndm/ifstatechanged.d/010-bypass-table.sh

В него вставляем содержимое:

#!/bin/sh

. /opt/etc/bypass.conf

[ "$1" == "hook" ] || exit 0
[ "$system_name" == "$VPN_NAME" ] || exit 0
[ ! -z "$(ipset --quiet list bypass)" ] || exit 0
[ "${connected}-${link}-${up}" == "yes-up-up" ] || exit 0

if [ -z "$(ip route list table 1001)" ]; then
    ip route add default dev $system_name table 1001
fi

Даем права на запуск:

chmod +x /opt/etc/ndm/ifstatechanged.d/010-bypass-table.sh

Создаем хук netfilter.d:

vi /opt/etc/ndm/netfilter.d/010-bypass-table.sh

В него вставляем содержимое:

#!/bin/sh

. /opt/etc/bypass.conf

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

if [ -z "$(iptables-save | grep bypass)" ]; then
     iptables -w -t mangle -A PREROUTING ! -s $VPN_SUBNET -m conntrack --ctstate NEW -m set --match-set bypass dst -j CONNMARK --set-mark 1001
     iptables -w -t mangle -A PREROUTING ! -s $VPN_SUBNET -m set --match-set bypass dst -j CONNMARK --restore-mark
fi

Даем права на запуск:

chmod +x /opt/etc/ndm/netfilter.d/010-bypass-table.sh

Правим конфиг dnsmasq.conf:

vi /opt/etc/dnsmasq.conf

В него вставляем новый конфиг, заменяя старый. Адрес в server можно поменять на предпочтительный DNS сервер, например 1.1.1.1 или 9.9.9.9.

user=nobody
pid-file=/var/run/opt-dnsmasq.pid
port=5300

min-port=4096
cache-size=1536

bogus-priv
no-negcache
no-resolv
no-poll
no-hosts
clear-on-reload

server=8.8.8.8
ipset=/#/bypass

Если вы используете прошивочный DoT или DoH, то можно указать его, чтобы DNS запросы к перенаправленным хостам также шифровались. Подсмотреть адреса и порты локальных резолверов можно командой cat /tmp/ndnproxymain.stat Все что с портами 405***  это DoH/DoT серверы кинетика. Выбираем любой. Адрес с портом указываем так:

server=127.0.0.1#40500

Готово! Перезапускаем роутер.

Добавляем нужные хосты в разделе Интернет-фильтры -> Настройка DNS, указывая адрес сервера DNS: 192.168.1.1:5300

chrome_2024-05-27_13-48-07.png.22586109ce6e136473c6ce6ca1fa8b52.png

Если @Александр Рыжов сделает из этого пакет, то будет вообще сказка)

Повторюсь - это решение, за счет встроенного кеширования dnsmasq, работает намного стабильнее и быстрее в плане резолвинга, чем при использовании ipset-dns.

Пробовал ваш метод, но он почему то не работает, делал точно по инструкции на прошивке 3.7.4 .Запускал tracert сайтов что добавил, пишет "Не удается разрешить системное имя узла 2ip.ru". А вы на какой версии прошивке делали это? А вот способ от Александра Рыжова работает, правда не идеально, есть косяки, надо порт поменять 5353 на любой, а иначе после перезагрузки роутера не работает и надо вручную прописывать команду: 

/opt/etc/init.d/S52ipset-dns start

А еще заметил странность что сайты то открывает, то не открывает. Например, открыл сайт он моментально загрузился, через минуту снова открываешь, долго грузится, а может вообще долго висеть и соединение сбросится, потом нажимаешь F5 и снова быстро открылся. Dns разные подставлять пробовал и обычные и DOT и DOH думал в них дело. Использую wireguard с конфигом от cloudflare, может сервер поменять потом. Требуется доработка пакета программы. А вообще надеюсь что разрабы добавят в саму прошивку роутинг по доменам.

Update: Заново полностью переустановил entware и по 2 методу от пользователя Drafted с dnsmasq заработало, не знаю в чем причина была.

Изменено пользователем applick
заработал 2 метод

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.