qzeleza / kvas

vpn и shadowsocks клиент для роутеров keenetic
Other
649 stars 41 forks source link

Новый формат конфига adguard (before v0.107.33) #71

Closed badigit closed 11 months ago

badigit commented 11 months ago

Описание проблемы. С версии 107.33 сменился формат конфига (июль), подробнее: https://github.com/AdguardTeam/AdGuardHome/releases/tag/v0.107.33

изменения касаются хранения адреса и порта

BEFORE:

'bind_host': '1.2.3.4' 'bind_port': 8080 'web_session_ttl': 720

AFTER:

'http': 'address': '1.2.3.4:8080' 'session_ttl': '720h'

Следовательно в функциях vpn нужно учесть

старый

dns_ip="$(cat < "${ADGUARDHOME_CONFIG}" | grep '^bind_host: ' | cut -d':' -f2 | tr -d ' \n')"

новый

dns_ip="$(cat "${ADGUARDHOME_CONFIG}" | grep "'address':" | cut -d':' -f3 | cut -d' ' -f1 | tr -d ' ')"

Это касается строк 363, 410, 462

badigit commented 11 months ago

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

часть может задевать другие строки конфига, начинающиеся на port? Например в разделе конфига pprof

cmd_adguardhome_off(){
    ready "AdGuard Home в качестве DNS сервера удален"
    [ -f "${ADGUARDHOME_CONFIG}" ] && sed -i "s/\( port:\) .*/\1 0/" "${ADGUARDHOME_CONFIG}"
    #   меняем номер порта в файле конфигурации adguard
    sed -i "s/\( port:\) .*/\1 ${port}/" "${ADGUARDHOME_CONFIG}"

И еще как мне кажется в строке 363

# dns_ip="$(cat < "${ADGUARDHOME_CONFIG}" | grep '^bind_host: ' | cut -d':' -f2 | tr -d ' \n')"

не сработает, потому что в новом формате адрес dns хранится в виде:

dns:
  bind_hosts:
    - 10.9.8.1
  port: 53

На всякий случай приложил мой файл конфига https://gist.github.com/badigit/92616cbaa614effdace55f982e99a77e

qzeleza commented 11 months ago

Спасибо, посмотрю

qzeleza commented 11 months ago

Версию обновил, прошу проверить.

badigit commented 11 months ago

adh завелся, но не работает обход блокировок.

Меня смущает что в конфиге adh блок ipset пустые - а вроде бы должен ссылаться на файл?

ipset: [] ipset_file: ""

Попробовал прописать руками ipset_file: /opt/etc/AdGuardHome/kvas.ipset

и выполнить /opt/etc/init.d/S99adguardhome restart

Не помогло - adh и интернет работает, но не работает обход блокировок.

Затем попробовал сделать kvas test все зависло на шаге Заполнение ipset таблицы скриптами КВАСа

~ # kvas test
-----------------------------------------------------------------------------------
Сервис AdGuard Home                                                 ВКЛЮЧЕН
Список правил ipset для AdGuard Home                                ЗАПОЛНЕН
-----------------------------------------------------------------------------------
Журнал загрузки AdGuard Home (20 крайних записей)
из файла /opt/var/log/AdGuardHome.log
-----------------------------------------------------------------------------------
2023/09/20 13:45:29.867117 [info] Ratelimit is enabled and set to 20 rps
2023/09/20 13:45:29.867418 [info] The server is configured to refuse ANY requests
2023/09/20 13:45:29.867620 [info] dnsproxy: cache: enabled, size 4194304 b
2023/09/20 13:45:29.867915 [info] dnsproxy: max goroutines is set to 300
2023/09/20 13:45:29.868467 [info] dnsproxy: creating udp server socket 10.9.8.1:53
2023/09/20 13:45:29.869421 [info] dnsproxy: listening to udp://10.9.8.1:53
2023/09/20 13:45:29.869780 [info] dnsproxy: creating tcp server socket 10.9.8.1:53
2023/09/20 13:45:29.870237 [info] dnsproxy: listening to tcp://10.9.8.1:53
2023/09/20 13:45:29.871565 [info] dnsproxy: entering tcp listener loop on 10.9.8.1:53
2023/09/20 13:45:29.877314 [info] dnsproxy: entering udp listener loop on 10.9.8.1:53

-----------------------------------------------------------------------------------
Состояние vpn соединения homedi ikev2                               ПОДКЮЧЕНО
Таблица VPN маршрутов id=1001                                       ЗАПОЛНЕНА
Таблица VPN маршрутов id=1001 в правилах маркировки                 ПРИСУТСТВУЕТ
Правила маркировки трафика в iptable                                ДОБАВЛЕНЫ
-----------------------------------------------------------------------------------
Наличие правил разблокировки в iptable                              ЕСТЬ
Заполнение ipset таблицы скриптами КВАСа
qzeleza commented 11 months ago

Файл должен обязательно заполнятся.видимо старой версией пользуетесь.

badigit commented 11 months ago

Нет, файл main/adguard новый

badigit commented 11 months ago

С последними правками работает.