r13
-
Posts
5,223 -
Joined
-
Last visited
-
Days Won
64
Content Type
Profiles
Forums
Gallery
Downloads
Blogs
Events
Posts posted by r13
-
-
Только что, coolmen0509 сказал:
А понял, глупый вопрос конечно - как в политиках по умолчанию убрать ВПН соединение, или если только для интернета основного новую политику?
Никак, просто его в самый низ по приоритетам сдвинуть и оно не будет использоваться.
-
6 минут назад, coolmen0509 сказал:
там ссылки на 1001е таблицы, тогда тоже нужно менять на те, что с политик?
Нет там ссылка на маркировку, а привязка к таблице в первом скрипте:
42 минуты назад, coolmen0509 сказал:ip rule add fwmark 1001 table 42
Если маркировка 1001 то идти в таблицу 42. Если очень хочется можно везде сменить и маркировку тоже на номер таблицы, но это если хочется чтоб было красиво), на функционал не влияет.
-
28 минут назад, coolmen0509 сказал:
Спасибо.ю сейчас попробую настроить. Как я понимаю скрипты /opt/etc/ndm/netfilter.d/011-bypass6.sh и /opt/etc/ndm/netfilter.d/019-bypass.sh тоже не нужны...
Нет, нетфильтр остается, это маркировка трафика для перенаправления в нужную таблицу маршрутизации
-
Также можно упростить инструкцию и вместо создания маршрутов скриптами использовать нативные политики 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, ну и бонусом будет резервирование/агрегация каналов предоставляемая политиками.
- 3
-
1 час назад, coolmen0509 сказал:
Chmod +x конечно сделано, причем не работает именно эти скрипты, которые маршруты добавляют .. маркирование трафика работает ..
Такс, подправил скрипт, сократив количество проверок, попробуйте с ним.
-
33 минуты назад, coolmen0509 сказал:
Не создаются маршруты, не надо добавлять - ниже процитировал?
м
Да, этот кусок
[ "$1" == "hook" ] || exit 0
не нужен.
Зы, если все равно не создастся, отлавливать какое из условий скрипта не отрабатывает.
Зы2 chmod +x для новых скриплов было выполнено?
-
Дополненная инструкция для поддержки 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
- После перезагрузки роутера проверьте в веб-интерфейсе Системный журнал, в нём не должно быть красных строк, связанных с настроенными скриптами.
Удачи в начинаниях!
- 1
- 1
-
5 минут назад, coolmen0509 сказал:
А есть уже у кого-то, готовые скрипты - так AGH поддерживает полностью v6...
Вечером накидаю рыбу с дополнениями к базовой инструкции.
- 1
-
6 часов назад, coolmen0509 сказал:
Спасибо, заработало! Раз такая пьянка пошла, то уже с IPv6 стало работать данное решение (я имею ввиду включенное от провайдера+VPN поддерживает IPV6))?
Да, с v6 тоже заработает если под него сконфигурить.
-
18 минут назад, Denis P сказал:
It's already implemented in cli. Web ui settings will be available in future releases
No, Inner v6 addressing is implemented currently. endpoints can be ipv4 only for now.
-
@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.- 1
-
Да, надо дорабатывать статьи и , возможно подсказки в вебе.
-
8 минут назад, ANDYBOND сказал:
А сообщеия выше с алгоритмами воспроизведения ошибки подтверждают практику и факты, что не работает. Но, ясное дело, фанатизм мешает некоторым принять факты. Была просьба о содействии (а не в фанатизме) - я откликнулся. Бодаться с фанатами - пустая трата времени: они ж фанаты.
Так в первом посте, а так же в тестовом примере и идет речь о том что при использовании политик работает безусловный перехват днс
-
4 минуты назад, ANDYBOND сказал:
Действительно нигде не работает в линейке прошивок 3.9.х.
Эта тема подтверждает что работает для политики по умолчанию, но с ньюансами...
-
1 минуту назад, ANDYBOND сказал:
А веб-интерфейс просто врёт. Понял.
Не, настройка в веб актуальна только для default политики, и для нее она действительно работает.
-
2 часа назад, corniger сказал:
Перехват трафика должен включаться если задействован один из (любой) режимов фильтрации.
Транзит запросов нужен только в случае включенного перехвата трафика, для того чтобы разрешать имена в адреса через явно указанные на устройствах сервисы.
Система "никуда ничего не посылает", только запрос и только туда куда указано по указанным настройкам. Складируется только в локальный кеш (это нормальное поведение любого резолвера, вести кеш).
Пожалуйста, если вы идите другое поведение, опишите как воспроизвести. Здесь или в обращении в Техническую поддержку.Днс для политик перехватывается всегда, @Le ecureuil говорил что так и задумано.
-
@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.
Зависимость пока не понял, с чем это может быть связано?
ЗЫ + селфтест
-
Да, но это касается клиентов сегмента, а не клиентов vpn сервера. Для впн сервера нет настроек через какую политику выходить
-
Это не настройка через что выходить, а к какому локальному сегменту(домашняя сеть например) есть доступ. То есть клиенты впн имеют доступ к сети prx_segment.
-
Он не сломан, как мне сказали это так и задумано.
Настройка транзита относится только к политике по умолчанию.
Для созданных политик запросы перехватываются всегда.
-
6 минут назад, Barodz сказал:
Да, нашел. Профиль создал и устройства привязал. Но подключение показывает только одно.
Значит у vpn соединения не стоит галка "использовать для выхода в интернет"
- 1
-
-
1 час назад, immergast сказал:
Ссылку видел. Там целый 1 модем кат 19 и то не в usb варианте. Из просмотренных мной модемов cat 12-19 все были PCI. Хотелось бы без страданий и прочих м.2 переходников, готовое USB решение.
В usb вариантах высоко-категорийных модемов не существует. Так что только конструктор.
- 2
-
Через пакет ser2net из opkg попробуйте
AdGuard Home для выборочного доступа к заданным доменам
in Каталог готовых решений Opkg
Posted
Тут нужно прдробнее, что не получает, что за провайдер.