zako Posted April 26, 2024 Posted April 26, 2024 Подскажите, пожалуйста, где я ошибаюсь. Уже весь мозг сломал себе. Есть два рабочих подключения vpn wireguard. Настроен ipset-dns по методу из первого. Все прекрасно работает. Пытаюсь добавить второе подключение (нужно для одного из приложений) Последовательность действий. 1. Разархивирую скаченный архив 2. Вношу свои данные в файл myset.conf 3. Все 5 файлов, которые были в архиве, переношу в роутер - в папку opt/etc 4. В ssh терминале вхожу в данную папку (cd /opt/etc) и пробую запустить скрипт makefile. Пробую команды - make -make start -makefile start И...ничего не происходит. Или я на каком-то этапе что-то не так делаю или я уже даже не знаю. Огромная просьба помочь, кто знает. Заранее спасибо! Quote
Alex T Posted May 5, 2024 Posted May 5, 2024 В 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 1 Quote
zako Posted May 6, 2024 Posted May 6, 2024 @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 Quote
Alex T Posted May 6, 2024 Posted May 6, 2024 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) 1 Quote
Denis P Posted May 27, 2024 Posted May 27, 2024 (edited) В 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 Edited May 27, 2024 by Denis P 2 1 Quote
Drafted Posted May 27, 2024 Posted May 27, 2024 (edited) 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. Edited May 27, 2024 by Drafted 1 Quote
Fantasque Posted June 5, 2024 Posted June 5, 2024 Добрый день. Установил 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 Что я сделал не так? Куда посмотреть? Что проверить? В маршрутах сейчас пусто, свои кастомные удалил. Quote
Андрей Волосков Posted June 5, 2024 Posted June 5, 2024 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 Quote
Fantasque Posted June 5, 2024 Posted June 5, 2024 30 minutes ago, Андрей Волосков said: НУ имя интерфейса можно один раз посмотреть IP-адрес, у меня интерфейс WG отображается как nwg1 Да, прошу прощения. Вводил команды не в той консоли. Нашел имя интерфейса - nwg0, прописал в конфиге. Рестартанул - /opt/etc/init.d/S52ipset-dns restart, перезагрузил роутер. Чудо не произошло, в логах все также ошибки: Quote
Андрей Волосков Posted June 5, 2024 Posted June 5, 2024 7 часов назад, Fantasque сказал: IPV6 отключите Quote
Fantasque Posted June 5, 2024 Posted June 5, 2024 51 minutes ago, Андрей Волосков said: IPV6 отключите Отключил, даже удалил как компонент, ошибки ушли, но функционал ipset-dns так и не заработал. Что еще можно проверить? Quote
Андрей Волосков Posted June 5, 2024 Posted June 5, 2024 3 минуты назад, Fantasque сказал: Я делал по этой инструкции, которая на первой странице у меня работала криво Quote
Ape Posted June 5, 2024 Posted June 5, 2024 @Drafted через UI'ку адреса не удалить. Только через терминал ipset редактировать? Quote
Андрей Волосков Posted June 5, 2024 Posted June 5, 2024 1 час назад, Ape сказал: @Drafted через UI'ку адреса не удалить. Только через терминал ipset редактировать? Удаляйте, кто Вам мешает, там есть значок удаления... и редактирования Quote
Ape Posted June 6, 2024 Posted June 6, 2024 19 часов назад, Андрей Волосков сказал: Удаляйте, кто Вам мешает, там есть значок удаления... и редактирования В UI он то удаляется, но по факту маршрут через VPN остается висеть 1 Quote
Werld Posted July 28, 2024 Posted July 28, 2024 Так как "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 5 1 Quote
Keaf Posted August 1, 2024 Posted August 1, 2024 Подскажите, как в конфиге прописать несколько DNS адресов? Quote
Racer X Posted August 1, 2024 Posted August 1, 2024 Приветствую. Для текущей версии 4.2 beta 1 все остается актуальным из заглавного поста? И версия пакета та же ipset-dns-keenetic_0.2-1_all или что-то изменилось - обновилось? Quote
Drafted Posted August 1, 2024 Posted August 1, 2024 19 часов назад, Keaf сказал: Подскажите, как в конфиге прописать несколько DNS адресов? Что значит несколько DNS адресов? Upstream DNS server? Или Вы хотите сделать отдельный резолвер с другой таблицей для заворачивания в другой тоннель? Quote
Evil_Raven Posted August 2, 2024 Posted August 2, 2024 (edited) у меня во время установки это вылезло, это норм или что-то не так делаю? 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"... Edited August 2, 2024 by Evil_Raven Quote
Evil_Raven Posted August 2, 2024 Posted August 2, 2024 (edited) Захожу в "Профили DNS", прописываю pbs.twimg.com, но картинка по ссылке не открывается: https://pbs.twimg.com/media/GTmBD5-boAAASMU?format=jpg. А вот если через маршрутизацию прописать 199.232.40.159, то всё работает. Большая часть сайтов открывается нормально, но с некоторыми возникают такие проблемы. Edited August 2, 2024 by Evil_Raven Quote
Evil_Raven Posted August 2, 2024 Posted August 2, 2024 можно маршрутизацию включить только для определенных устройств? Quote
South_butovo Posted August 3, 2024 Posted August 3, 2024 В 08.04.2024 в 21:14, Drafted сказал: Добавляем нужные хосты в разделе Интернет-фильтры -> Настройка DNS, указывая адрес сервера DNS: 192.168.1.1:5300 А как удалить этот роутинг без переустановки всего? При удалении правила само правило из интерфейса удаляется, но трафик не перестает ходить через DNS 192.168.1.1:5300 Ребут также не помог Quote
Drafted Posted August 3, 2024 Posted August 3, 2024 1 час назад, South_butovo сказал: А как удалить этот роутинг без переустановки всего? При удалении правила само правило из интерфейса удаляется, но трафик не перестает ходить через DNS 192.168.1.1:5300 Ребут также не помог Просто удаляете хост и полностью перезагружаете роутер. 1 час назад, South_butovo сказал: Ребут также не помог Значит где-то остался, либо другой домен резолвится на те же IP адреса. Quote
South_butovo Posted August 3, 2024 Posted August 3, 2024 (edited) В 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 Edited August 3, 2024 by South_butovo Quote
Aleksandr Vorontsov Posted August 3, 2024 Posted August 3, 2024 В 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 Если @Александр Рыжов сделает из этого пакет, то будет вообще сказка) Повторюсь - это решение, за счет встроенного кеширования dnsmasq, работает намного стабильнее и быстрее в плане резолвинга, чем при использовании ipset-dns. Лучшая инструкция, завелось. Я бы еще добавил, почему то, что "#!/bin/sh" криво копируются в vi, пришлось дописывать руками, попутно изучая vi ) что нужно поставить ip роутера на 192.168.2.1 (я кинул новый роутер keenetic к роутеру по ethernet в квартире, которую арендую, чтобы на нем уже поднять эту приблуду) и добавить если хочешь включать youtube, то добавить googlevideo.com. Quote
Gorod_Besov Posted August 3, 2024 Posted August 3, 2024 Дайте направление куда еще мыслить, настроил все как в первом посту. Если прописываю статичный маршрут через впн, все работает, через домен отказывается, трафик так же идет через провайдера. Куда и что еще смотреть не знаю. Что то упускаю видимо но могу понять что. В системном журнале я должен видеть хоть что то? Заранее спасибо за любую помощь) 1 Quote
alexekoz Posted August 4, 2024 Posted August 4, 2024 4 часа назад, Gorod_Besov сказал: Что то упускаю видимо но могу понять что. В системном журнале я должен видеть хоть что то? Заранее спасибо за любую помощь у меня тоже не сработало по методу из поста, но тут в коментах ребята нашли решение и у меня оно заработало безупречно. ссылка на коменты и с учетом этого комента так как первое решние у меня не работало, я заподозрил что провайдер перехватывает DNS каким то образом и настроил через doh у меня вышло так server=127.0.0.1#40510 ps что бы снести opkg 1 Quote
applick Posted August 4, 2024 Posted August 4, 2024 (edited) В 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 Если @Александр Рыжов сделает из этого пакет, то будет вообще сказка) Повторюсь - это решение, за счет встроенного кеширования 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 заработало, не знаю в чем причина была. Edited August 4, 2024 by applick заработал 2 метод Quote
Recommended Posts
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.