Jump to content

ankar84

Forum Members
  • Posts

    403
  • Joined

  • Last visited

  • Days Won

    3

Everything posted by ankar84

  1. Доброго вам дня! Подскажите, не пришло ли время для привязки к домену dot/doh серверов?
  2. Для удобства пользователей прошу создать шаблон Instant View для Telegram для статей базы знаний и других статичных информационных страниц.
  3. Моих знаний сети и Linux уже тоже явно не хватает для решения вашей проблемы. Нужно звать @avn или еще кого-то из гуру.
  4. Добавить данный функционал в базовую прошивку было бы очень здорово и решило бы приличное количество проблем. Но пока этого нет, рекомендую данный способ (необходимо Entware)
  5. В настройках пира туннеля Wireguard должна быть вот такая разрешенная сеть 0.0.0.0/0 (весть интернет)
  6. Тогда давайте посмотрим traceroute до узла в списке. Как я писал выше, для проверки я добавил 2ip.ua в список обхода. Вот что получается у меня: ~ # traceroute 2ip.ua traceroute to 2ip.ua (77.123.139.189), 30 hops max, 38 byte packets 1 172.16.82.5 (172.16.82.5) 173.835 ms 173.622 ms 173.751 ms 2 внешний адрес туннеля То есть сразу же первым хопом мы должны получить второй конец тоннеля (в вашем случае это кажется будет 10.0.0.1) а у меня настроено по инструкциям из базы знаний сервер 172.16.82.1 и пир 172.16.82.5
  7. Адрес роутера на интерфейсе VPN. Видимо да, 10.0.0.4 Тут я смотрел в журнале роутера когда дергал тумблер своего wireguard подключения. Что в логах написано, то и нужно в этот скрипт записать. В моем случае без нуля (имя брал из журнала Диагностики роутера). У вас, возможно и с нулем, посмотрите как определяется в логах. Обновление: сейчас у себя в логах глянул, у меня тоже с нулем - а именно вот так Wireguard0 называется это подключение. Но точно было с маленькой буквы и без нуля ранее. А вот на 3.3.10 вот так. Пойду проверю работу схемы. Обновление 2: да, у меня и в диагностике Wireguard0 и в скрипте Wireguard0 и все работает. Вот как выглядит мой скрипт: ~ # cat /opt/etc/ndm/ifstatechanged.d/100-add_unblock_route.sh #!/bin/sh [ "$1" == "hook" ] || exit 0 [ "$change" == "link" ] || exit 0 [ "$id" == "Wireguard0" ] || exit 0 case ${id}-${change}-${connected}-${link}-${up} in Wireguard0-link-no-down-down) ip route flush table 1000 ip rule del from all table 1000 priority 1777 ;; Wireguard0-link-yes-up-up) ip rule add from all table 1000 priority 1777 /opt/bin/unblock_vpn.sh & ;; esac exit 0
  8. Правило есть, это очень хорошо. Осталось разобраться с заполнением таблицы. Я выше описал как это сделать.
  9. Давайте по порядку. Выполнили необходимые переименования имен интерфейсов под свой VPN туннель? В том же файле /opt/etc/ndm/ifstatechanged.d/100-add_unblock_route.sh нужно сделать замены в следующих строках вместо wireguard имя своего интерфейса [ "$id" == "wireguard" ] || exit 0 wireguard-link-no-down-down) wireguard-link-yes-up-up) А в строках 10 и 13 предлагаю использовать более универсальную команду, чтобы из всех источников пакеты отправлялись в туннель, если адрес назначения из таблицы 1000 ip rule add from all table 1000 priority 1776 Скорее всего нужный вам интерфейс носит название VPNL2TPServer и тогда скрипт должен выглядеть вот так: #!/bin/sh [ "$1" == "hook" ] || exit 0 [ "$change" == "link" ] || exit 0 [ "$id" == "VPNL2TPServer" ] || exit 0 case ${id}-${change}-${connected}-${link}-${up} in VPNL2TPServer-link-no-down-down) ip route flush table 1000 ip rule del from all table 1000 priority 1776 2>/dev/null ;; VPNL2TPServer-link-yes-up-up) ip rule add from all table 1000 priority 1776 2>/dev/null /opt/bin/unblock_vpn.sh & ;; esac exit 0 Но тут я могу и ошибаться, пробуйте. Нужно понять, заполняется ли вообще таблица. Что дает выполнение команды /opt/bin/unblock_vpn.sh ? Есть ли у вас файл /opt/etc/unblock-vpn.txt ? Есть ли в нем нужные вам данные? В файле /opt/bin/unblock_vpn.sh, так же нужно провести несколько замен под свои данные: ip route add table 1000 $cidr via 10.64.0.1 dev nwg1 2>/dev/null ip route add table 1000 $addr via 10.64.0.1 dev nwg1 2>/dev/null awk '{system("ip route add table 1000 "$1" via 10.64.0.1 dev nwg1 2>/dev/null")}' Здесь нужно заменить 10.64.0.1 на IP адрес роутера интерфейса вашего L2TP туннеля, и nwg1 нужно заменить на имя вашего интерфейса L2TP туннеля. Посмотреть имена всех интерфейсов можно командой ifconfig Затем пробуем сначала успешно забить таблицу адресами и сетями и проверяем ее заполненность командой ip route show table 1000 И если таблица заполнена нужными нам данными можно приступать к следующим шагам в диагностике запустить скрипт /opt/etc/ndm/ifstatechanged.d/100-add_unblock_route.sh и проверить таблицу маршрутизации ip rule list Там должно быть правило 1776, которое направляет все пакеты на адреса и сети из таблицы 1000 в нужный туннель. Если такое правило есть то можно приступать к последней стадии диагностики - проверять работу хука на остановку и поднятие туннеля. В веб интерфейсе выключить тумблер туннеля. Подождать, проверить таблицу 1000 и список маршрутизации -там должно быть чисто. Затем снова включить тумблер туннеля и немного подождать. Затем снова проверить таблицу 1000 и список маршрутизации - таблица должна быть заполнена и на нее должен быть маршрут.
  10. Возможно большинству именно это подойдет как более простое и полное решение. Спасибо!
  11. Подскажите, а эта команда добавит маршрутизацию только для таблицы 1000 но на всех интерфейсах роутера?
  12. и это я понимаю. Не хотелось городить что-либо стороннее для разрешения имен, так как в прошивку добавили мощные шифрованные DNS
  13. Да, трассировка на роутере у меня тоже показывает что запросы идут прямым путем, а не через VPN. Но тут или просить помощи у @avn или может кто из других знатоков поможем. У меня выводит (скрин прикладывал к посту) добавил в самом конце скрипта unblock_vpn.sh после done
  14. Нужное нам правило добавлено. Осталось понять, откуда проверяете? Если с компьютера в домашней сети, который ходит в интернет через интерфейс br0 роутера, то должно работать. Если еще из какого-то сегмента сети, который сейчас ходит в интернет через какой-то другой интерфейс, то нужно его так же прописать, как я это делал в примере для l2tp ip rule add iif l2tp0 table 1000 priority 1778
  15. Что покажет ip rule list ? И ppp0 это интерфейс для вашего туннеля и 10.10.10.1 это адрес роутера на интерфейсе ppp0 ?
  16. Это понятно и с этим я полностью согласен. И сам ранее очень активно использовал DNScrypt-proxy2 для этого. Но когда DoT и DoH появились "ис каропки" очень захотелось использовать именно их и вообще максимально штатными средствами.
  17. @Le ecureuil еще не пришло время для этого?
  18. Сейчас попробовал установить ваши скрипты. Вот сразу несколько моментов для тех, кто делает это с нуля. Ставим утилиту dig opkg install bind-dig Делаем скрипты исполняемыми: chmod +x /opt/bin/unblock_vpn.sh chmod +x /opt/etc/ndm/ifstatechanged.d/100-add_unblock_route.sh Делаем ссылку в крон ln -s /opt/bin/unblock_vpn.sh /opt/etc/cron.hourly/01unblock Так же подправил шлюз, имя подключения и имя файла с целями на выборочную маршрутизацию на свои. Дополнительно отмечу, что данная схема по умолчанию работает для устройств в Домашней сети (те устройства, что ходят через интерфейс br0) Если вы, к примеру, подключаетесь к роутеру по L2TP и хотите так же обращаться к нужным ресурсам через VPN то необходимо добавить следующую строку: ip rule add iif l2tp0 table 1000 priority 1778 То есть в моем случае скрипт уже будет выглядеть вот так: #!/bin/sh [ "$1" == "hook" ] || exit 0 [ "$change" == "link" ] || exit 0 [ "$id" == "Wireguard0" ] || exit 0 case ${id}-${change}-${connected}-${link}-${up} in Wireguard0-link-no-down-down) ip route flush table 1000 ip rule del iif br0 table 1000 priority 1777 2>/dev/null ip rule del iif l2tp0 table 1000 priority 1778 2>/dev/null ;; Wireguard0-link-yes-up-up) ip rule add iif br0 table 1000 priority 1777 2>/dev/null ip rule add iif l2tp0 table 1000 priority 1778 2>/dev/null /opt/bin/unblock_vpn.sh & ;; esac exit 0 Итог: @avn выражаю огромную благодарность за реализацию выборочного обхода через таблицу. @keenet07 в этой схеме учтены, кажется, все ваши пожелания вот отсюда - проверяйте.
  19. Это минус для диагностики. Подскажите, есть же какие-то команды, которыми можно будет диагностировать работу скрипта. Типа # ip rule list # ip route
  20. Вообще, когда я перечитал пожелания @keenet07 чуть выше как раз пришел к такой идее. Но у меня совсем нет скилов в сетях под Linux. Но идея были именно такой. Строим таблицу. В настройках таблицы и только в них заложено, что все содержимое этой таблицы должно ходить через определенный интерфейс (WG в нашем случае). В кроне очищаем таблицу, и забиваем таблицу пусть даже моим алгоритмом через nslookup. Таким образом после выполнения скрипта получаем только актуальный список адресов для маршрутизации их через VPN. @avn большое вам спасибо! скорее всего то, что вы написали мне и нужно было. Просто ваши скрипты мне нужно изучить и "переварить" построчно я так понимаю тут 10.64.0.1 это адрес роутера в туннеле WG? Правильно ли я понимаю, что если у меня в файле только fqdn ресурсов для обхода, то мне нужна только эта строка?
  21. Мой скрипт подойдёт, если у вас есть VPN подключение (OpenVPN или wireguard) и вы хотите пускать через это VPN подключение не весь трафик к заблокированным ресурсам, а только к нужным только вам заблокированным ресурсам. Кстати, как вариант проверки работы схемы я добавил адрес 2ip.ua в файл и теперь на 2ip.ru виду свой реальный внешний IP, а на 2ip.ua вижу внешний адрес VPN подключения - значит скрипт работает
  22. У себя тоже встречаю такие ошибки время от времени, но чаще скрипт всё же выполняется корректно и без ошибок. Возможно данные ошибки как-то связаны с DNS, о чем в них и написано, собственно. Но в чём именно заключается проблема мне не известно.
  23. Должен оба адреса добавлять. Да, там все наглядно отображается. То есть это по сути просто автоматизированный способ добавить нужные маршруты в веб-конфигуратор. Как раз когда писал инструкцию раздумывал указать ли про это, видимо нужно было. Выглядит вот так:
  24. Пишу по мотивам моего поста в курилке, который сейчас уже в архиве, а мог бы быть многим полезен. Иногда на форуме и в канале я вижу вопросы по реализации выборочной маршрутизации некоторых ресурсов через поднятый на роутере VPN туннель, такой как OpenVPN или Wireguard. Мой скрипт очень простой и эффективный способ перейти на любимый ресурс, даже если он по какой-то причине заблокирован на территории страны. Многие инструкции предлагают обойти блокировку вообще всего, что заблокировано. Но вряд ли кто-то постоянно посещает все эти заблокированные ресурсы. Многим достаточно разблокировать лишь несколько своих нужных ресурсов. Небольшие комментарии по скрипту. /opt/root/vpnsitelist.txt - это обычный текстовый файл, где в каждой строке находится адрес заблокированного ресурса 127.0.0.1 - это ваш DNS сервер. У меня используется AdGuardDNS в режиме DoT/DoH из прошивки. У вас может быть другой. Узнать какой у вас можно выполнив команда nslookup ya.ru на роутере. ovpn_br0 - имя интерфейса туннеля OpenVPN. У вас может немного отличаться, чтобы посмотреть какой именно у вас воспользуйтесь командой ifconfig nwg0 - имя интерфейса туннеля Wireguard. У вас может немного отличаться, чтобы посмотреть какой именно у вас воспользуйтесь командой ifconfig Для тех у кого OpenVPN скрипт удобно разместить в директории /opt/etc/ndm/openvpn-up.d/ и сделать симлинк в крон ln -s /opt/etc/ndm/openvpn-up.d/1-unblock-static-route /opt/etc/cron.hourly/01unblock Выполнять скрипт в кроне с какой-либо периодичностью я рекомендую потому, что IP адреса заблокированных ресурсов могут часто меняться и нужно добавлять маршруты для них. У тех у кого Wireguard можно разместить скрипт в /opt/etc/ndm/ifstatechanged.d но тут нужна доработка по отслеживанию поднятия туннеля. Дополнения и улучшения скрипта приветствуются.
  25. У меня внешний диск Toshiba судя по диоду тоже спокойно засыпает при отсутствии активности. Ранее был WD, тоже без проблем спал без работы. А какая именно модель? Довольны?
×
×
  • Create New...