Jump to content

r13

Forum Members
  • Posts

    5,223
  • Joined

  • Last visited

  • Days Won

    64

Posts posted by r13

  1. 24 минуты назад, coolmen0509 сказал:

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

    Тут нужно прдробнее, что не получает, что за провайдер. 

  2. Только что, coolmen0509 сказал:

    А понял, глупый вопрос конечно - как в политиках по умолчанию убрать ВПН соединение, или если только для интернета основного новую политику?

    Никак, просто его в самый низ по приоритетам сдвинуть и оно не будет использоваться. 

  3. 6 минут назад, coolmen0509 сказал:

    там ссылки на 1001е таблицы, тогда тоже нужно менять на те, что с политик?

    Нет там ссылка на маркировку, а привязка к таблице в первом скрипте:

    42 минуты назад, coolmen0509 сказал:

    ip rule add fwmark 1001 table 42

    Если маркировка 1001 то идти в таблицу 42. Если очень хочется можно везде сменить и маркировку тоже на номер таблицы, но это если хочется чтоб было красиво), на функционал не влияет.

  4. 28 минут назад, coolmen0509 сказал:

    Спасибо.ю сейчас попробую настроить. Как я понимаю скрипты /opt/etc/ndm/netfilter.d/011-bypass6.sh и /opt/etc/ndm/netfilter.d/019-bypass.sh тоже не нужны...

    Нет, нетфильтр остается, это маркировка трафика для перенаправления в нужную таблицу маршрутизации

  5. Также можно упростить инструкцию и вместо создания маршрутов скриптами использовать нативные политики keenos, которые уже являются таблицами маршрутизации.

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

    Далее с помощью команды cli show ip policy смотрим связанный с политикой номер таблицы маршрутизации:

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

    (config)> show ip policy

               policy, name = Policy1, description = VPN:
                     mark: ffffd00
                   table4: 42
     

    И используем эту таблицу в скрипте /opt/etc/init.d/S52ipset

    Скрытый текст
    #!/bin/sh
    
    PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    
    if [ "$1" = "start" ]; then
        ipset create bypass hash:ip
        ipset create bypass6 hash:ip family inet6
        ip rule add fwmark 1001 table 42
        ip -6 rule add fwmark 1001 table 42
    fi

    в таком случае скрипты /opt/etc/ndm/ifstatechanged.d/010-bypass-table.sh и /opt/etc/ndm/ifstatechanged.d/011-bypass6-table.sh вообще не нужны. Эту функцию будет выполнять сама KeenOS, ну и бонусом будет резервирование/агрегация каналов предоставляемая политиками.

    • Thanks 3
  6. 1 час назад, coolmen0509 сказал:

    Chmod +x конечно сделано, причем не работает именно эти скрипты, которые маршруты добавляют .. маркирование трафика работает ..

    Такс, подправил скрипт, сократив количество проверок, попробуйте с ним.

     

  7. 33 минуты назад, coolmen0509 сказал:

    Не создаются маршруты, не надо добавлять - ниже процитировал? 

    м

     

    Да, этот кусок

    [ "$1" == "hook" ] || exit 0

    не нужен.

    Зы, если все равно не создастся,  отлавливать какое из условий скрипта не отрабатывает.

    Зы2 chmod +x для новых скриплов было выполнено?

  8. Дополненная инструкция для поддержки ipv6. Требуется KeeneticOS 4.x+ и настроенный ipv6 на туннельном интерфейсе

    Дополнен скрипт /opt/etc/init.d/S52ipset,

    добавлены скрипты  /opt/etc/ndm/netfilter.d/011-bypass6.sh и /opt/etc/ndm/ifstatechanged.d/011-bypass6-table.sh

    Скрипт с примером /opt/etc/AdGuardHome/ipset.conf дополнен ipset`ом bypass6

    ЗЫ работоспособность скриптов проверил, но сейчас в локации без v6 так что полностью проверю через пару дней как буду дома(там аналогичная конструкция работает).

     

    В 08.06.2023 в 11:01, Александр Рыжов сказал:

    Контент последней статьи с сайта keenetic-gi.ga, архив доступен здесь

    В самом алгоритме нет ничего нового, но благодаря недавнему обновлению AdGuard Home (далее AGH) его можно реализовать довольно изящно: использование VPN для заданных вами доменов возможно тройкой коротких скриптов. 

     

    Требования

    • Развёрнутая среда Entware,
    • Рабочее VPN-соединение поверх провайдерского, по которому будет идти обращение к определённым доменам.

     

    Установка пакетов

    Подразумевается, что AGH будет использоваться вместо встроенной в прошивку службы DNS Proxy. Установите необходимые пакеты:

    opkg install adguardhome-go ipset iptables ip-full

    Выполните первоначальную настройку AGH, для чего в CLI роутера наберите:

    opkg dns-override
    system configuration save

    В этот момент Entware-сервисы будут перезапущены, а интерфейс для первоначальной настройки AGH станет доступен по адресу http://192.168.1.1:3000, где 192.168.1.1 — IP-адрес роутера. Настройки по умолчанию подходят для большинства случаев.

     

    Скриптовая обвязка

    Результаты разрешения указанных доменных имён AGH будет помещать в ipset (bypass в примере), правилами iptables трафик по этим IP-адресам будет помечаться fwmark, а для роутинга помеченного трафика будет использоваться своя таблица маршрутизации. Первый скрипт — создание ipset'а при старте роутера. Создайте файл /opt/etc/init.d/S52ipset со следующим содержимым:

    #!/bin/sh
    
    PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    
    if [ "$1" = "start" ]; then
        ipset create bypass hash:ip
        ipset create bypass6 hash:ip family inet6
        ip rule add fwmark 1001 table 1001
        ip -6 rule add fwmark 1001 table 1001
    fi

    Второй — для поддержания актуальности таблицы роутинга. Файл /opt/etc/ndm/ifstatechanged.d/010-bypass-table.sh с содержимым:

    #!/bin/sh
    
    [ "$system_name" == "nwg0" ] || 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

    Тоже упражнение но для поддержки ipv6. Файл /opt/etc/ndm/ifstatechanged.d/011-bypass6-table.sh с содержимым:

    #!/bin/sh
    
    [ "$system_name" == "nwg0" ] || exit 0
    [ ! -z "$(ipset --quiet list bypass6)" ] || exit 0
    [ "${connected}-${link}-${up}" == "yes-up-up" ] || exit 0
    
    if [ -z "$(ip -6 route list table 1001)" ]; then
        ip -6 route add default dev $system_name table 1001
    fi

     

     

    где nwg0 — сетевой интерфейс VPN-соединения для выборочного обхода блокировок. Если затрудняетесь в его поиске, то посмотрите вывод ip addr, его адрес будет совпадать с тем, что виден в веб-интерфейсе. Третий — пометка трафика с помощью fwmark. Актуальная прошивка активно использует эту возможность, поэтому маркировать трафик приходится точечно. Создайте файл /opt/etc/ndm/netfilter.d/010-bypass.sh c контентом:

    #!/bin/sh
    
    [ "$type" == "ip6tables" ] && exit
    [ "$table" != "mangle" ] && exit
    [ -z "$(ip link list | grep nwg0)" ] && exit
    [ -z "$(ipset --quiet list bypass)" ] && exit
    
    if [ -z "$(iptables-save | grep bypass)" ]; then
         iptables -w -t mangle -A PREROUTING ! -i nwg0 -m conntrack --ctstate NEW -m set --match-set bypass dst -j CONNMARK --set-mark 1001
         iptables -w -t mangle -A PREROUTING ! -i nwg0 -m set --match-set bypass dst -j CONNMARK --restore-mark
    fi

    Тоже упражнение но для поддержки ipv6. Создать скрипт /opt/etc/ndm/netfilter.d/011-bypass6.sh

    #!/bin/sh
    
    [ "$type" != "ip6tables" ] && exit
    [ "$table" != "mangle" ] && exit
    [ -z "$(ip -6 link list | grep nwg0)" ] && exit
    [ -z "$(ipset --quiet list bypass6)" ] && exit
    
    if [ -z "$(ip6tables-save | grep bypass6)" ]; then
         ip6tables -w -t mangle -A PREROUTING ! -i nwg0 -m conntrack --ctstate NEW -m set --match-set bypass6 dst -j CONNMARK --set-mark 1001
         ip6tables -w -t mangle -A PREROUTING ! -i nwg0 -m set --match-set bypass6 dst -j CONNMARK --restore-mark
    fi

    где nwg0 — снова сетевой интерфейс VPN-соединения.

    Сделайте скрипты исполняемыми:

    chmod +x /opt/etc/init.d/S52ipset
    chmod +x /opt/etc/ndm/ifstatechanged.d/010-bypass-table.sh
    chmod +x /opt/etc/ndm/ifstatechanged.d/011-bypass6-table.sh
    chmod +x /opt/etc/ndm/netfilter.d/010-bypass.sh
    chmod +x /opt/etc/ndm/netfilter.d/011-bypass6.sh

    и переходите к финальному пункту.

     

    Список доменов для обхода блокировок

    Найдите в конфигурационном файле AGH /opt/etc/AdGuardHome/AdGuardHome.yaml строчку ipset_file: "" и поменяйте на ipset_file: /opt/etc/AdGuardHome/ipset.conf.

    Файл /opt/etc/AdGuardHome/ipset.conf будет единственным, требующим редактирования время от времени, в зависимости от изменения вашего персонального списка доменов для разблокировки. Он имеет следующий синтаксис:

    intel.com,ipinfo.io/bypass,bypass6
    instagram.com,cdninstagram.com/bypass,bypass6
    epicgames.com,gog.com/bypass,bypass6

    Т.е. в левой части через запятую указаны домены, требующие обхода блокировок, справа после слэша — ipset, в который AGH складывает результаты разрешения DNS-имён. Можно указать всё в одну строчку, можно разделить логически на несколько строк как в примере. Домены третьего уровня и выше также включаются в обход блокировок, т.е. указание intel.com включает www.intel.com, download.intel.com и пр.
    Рекомендую добавить какой-нибудь «сигнальный» сервис, показывающий ваш текущий IP-адрес (ipinfo.io в примере). Так вы сможете проверить работоспособность настроенного решения. Учтите, что AGH не перечитывает изменённый файл, поэтому после правки перезапустите его с помощью:
     

    /opt/etc/init.d/S99adguardhome restart

    При желании можно использовать несколько VPN-соединений для обращения к разным доменам, для простоты понимания здесь это не описано.

     

    Диагностика проблем

    • Убедитесь в том, что набор ipset создан и наполняется в процессе работы:
    # Проверка  ipv4
    ipset --list bypass
    # Проверка  ipv6
    ipset --list bypass6

    Вывод должен быть не пустой.

    • Убедитесь в существовании нужной таблицы роутинга для обхода блокировок:
    # Проверка  ipv4
    ip rule list | grep 1001
    # Проверка  ipv6
    ip -6 rule list | grep 1001
    • Убедитесь, что в таблице присутствует необходимый маршрут:
    # Проверка  ipv4
    ip route list table 1001
    # Проверка  ipv6
    ip -6 route list table 1001
    • Посмотрите, существуют ли правила netfilter для пометки пакетов:
    # Проверка  ipv4
    iptables-save | grep bypass
    # Проверка  ipv6
    ip6tables-save | grep bypass6
    • После перезагрузки роутера проверьте в веб-интерфейсе Системный журнал, в нём не должно быть красных строк, связанных с настроенными скриптами.

    Удачи в начинаниях!

     

    • Thanks 1
    • Upvote 1
  9. 6 часов назад, coolmen0509 сказал:

    Спасибо, заработало! :) Раз такая пьянка пошла, то уже с IPv6 стало работать данное решение (я имею ввиду включенное от провайдера+VPN поддерживает IPV6))?

    Да, с v6 тоже заработает если под него сконфигурить.

  10. @vst Добрый день, как с этим поведением реализовать сценарий:

    default policy - макс приоритет у интерфейса без v6(например обычный провайдер без поддержки ipv6)

    policy0 -  макс приоритет у интерфейса c v6(например vpn c поддержкой ipv6)

    В 25.07.2023 в 14:19, vst сказал:

    Да, для ipv6 подключений, которые должны стать основными, нужно ставить приоритет выше, чем активное ipv4 соединение.

    Активное ipv4 соединение начиная с 4.xx версий формирует минимальный приоритет. Все ipv6 соединения с более низким приоритетом не будут активны, даже если активное ipv4 соединение не поддерживает ipv6.

     

    • Upvote 1
  11. 8 минут назад, ANDYBOND сказал:

    А сообщеия выше с алгоритмами воспроизведения ошибки подтверждают практику и факты, что не работает. Но, ясное дело, фанатизм мешает некоторым принять факты. Была просьба о содействии (а не в фанатизме) - я откликнулся. Бодаться с фанатами - пустая трата времени: они ж фанаты.

    Так в первом посте, а так же в тестовом примере и идет речь о том что при использовании политик работает безусловный перехват днс

  12. 2 часа назад, corniger сказал:

    Перехват трафика должен включаться если задействован один из (любой) режимов фильтрации.
    Транзит запросов нужен только в случае включенного перехвата трафика, для того чтобы разрешать имена в адреса через явно указанные на устройствах сервисы.
    Система "никуда ничего не посылает", только запрос и только туда куда указано по указанным настройкам. Складируется только в локальный кеш (это нормальное поведение любого резолвера, вести кеш).
    Пожалуйста, если вы идите другое поведение, опишите как воспроизвести. Здесь или в обращении в Техническую поддержку.

    Днс для политик перехватывается всегда, @Le ecureuil говорил что так и задумано. 

  13. @eralde добры день, время от времени ловлю бан при авторизации из-за OPTIONS через chrome:

     

    [W] May 29 19:27:15 ndm: Core::Scgi::Auth: unsupported method "OPTIONS". 
    [W] May 29 19:27:25 ndm: Core::Syslog: last message repeated 2 times.
    [I] May 29 19:27:25 ndm: Netfilter::Util::Conntrack: flushed 132 IPv4 connections for 192.168.50.160. 
    [I] May 29 19:27:25 ndm: Netfilter::Util::BfdManager: "Http": ban remote host 192.168.50.160 for 15 minutes. 

    Зависимость пока не понял, с чем это может быть связано?

    ЗЫ + селфтест

  14. Он не сломан, как мне сказали это так и задумано.

    Настройка транзита относится только к политике по умолчанию.

    Для созданных политик запросы перехватываются всегда.

  15. 1 час назад, immergast сказал:

    Ссылку видел. Там целый 1 модем кат 19 и то не в usb варианте. Из просмотренных мной модемов cat 12-19 все были PCI. Хотелось бы без страданий и прочих м.2 переходников, готовое USB решение.

    В usb вариантах высоко-категорийных модемов не существует. Так что только конструктор.

    • Upvote 2
×
×
  • Create New...