Jump to content

Alex T

Forum Members
  • Posts

    7
  • Joined

  • Last visited

Posts posted by Alex T

  1. 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)

     

    • Thanks 1
  2. В 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


     

    • Thanks 1
  3. 4 часа назад, Freedom сказал:

    Объясните пожалуйста, в чём разница между mipsel и mipsle версиями?

    Нету никакой разницы, есть единая архитектура MIPS. Сами железки могут работать с любым порядком байтов и  little-endian и big-endian. Выбирает система. Обзывать конкретные сборки приложений могут как mipsle, так и mipsel, кому как привычно. 

    Есть небольшая разница в сборках - то, что на сайте адгарда, собирают авторы, под некоторую универсальную среду. Через какое-то время, люди, которые поддерживают entware, собирают на основе этого же кода пакет для entware.

    4 часа назад, Freedom сказал:

    Я так понимаю пакеты, устанвленные через Entware, нужно обновлять только через Entware. Но в репозитории Entware лежит сильно старая версия AdGuardHome, так что это не вариант.

    Можно, при желании, ставить руками с гита авторов, но Вы, скорее всего, не обновили состав пакетов.

    Выполните opkg update, а затем opkg list| grep adguardhome-go

    у вас должно появиться adguardhome-go - v0.107.21-1, что на три минорных версии и месяц отстаёт от разработчика

    • Upvote 2
  4. Я идиот же. Мне не нужно пока рулить клиентами на адгарде.
    Отключил dns-override, поднял ь adguard на другом порту, и указал его как DNS-прокси.
    В итоге клиенты ходят на родной DNS роутера за локальными записями, а за внешними он их отправляет в адгард.


    Но на будущее интересно, можно ли настроить напрямую.

  5. Вопрос по адресам, которые раздаёт DHCP кинетика.

    Можно ли adguard научить их отдавать? Подбирая из  /var/ndnproxymain.conf  или иным образом.
    Догадываюсь, что если отключить DHCP роутера и включить на адгарде, то оно заработает. Но DHCP хотелось бы оставить на самом роутере.

    Сейчас адреса успешно добавляются в /var/ndnproxymain.conf штатным образом 

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


    #cat var/ndnproxymain.conf
    rpc_port = 54321
    rpc_ttl = 10000
    rpc_wait = 10000
    timeout = 7000
    proceed = 500
    stat_file = /var/ndnproxymain.stat
    stat_time = 10000
    static_a = my.keenetic.net 78.47.125.180
    static_a = DS210 192.168.20.20
    norebind_ctl = on
    norebind_ip4net = 10.1.30.1:24
    norebind_ip4net = 192.168.20.1:24
    norebind_ip4net = 255.255.255.255:32
    set-profile-ip 127.0.0.1 0
    set-profile-ip ::1 0
    rpc_only = on


    на DNS отвечает adguard

    # netstat -ntulp | grep AdGuard
    tcp        0      0 192.168.20.1:53         0.0.0.0:*               LISTEN      1459/AdGuardHome
    tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      1459/AdGuardHome
    tcp        0      0 192.168.20.1:3001       0.0.0.0:*               LISTEN      1459/AdGuardHome
    udp        0      0 192.168.20.1:53         0.0.0.0:*                           1459/AdGuardHome
    udp        0      0 127.0.0.1:53            0.0.0.0:*                           1459/AdGuardHome

    в конфиге которого всё типично

    dns:
      bind_hosts:
        - 127.0.0.1
        - 192.168.20.1
      port: 53
    
      private_networks: []
      use_private_ptr_resolvers: true
      local_ptr_upstreams: []

    Клиенты умудряются пинговать друг друга

    Не уверен, откуда их подтягивает ping - из объявлений avahi?

    >ipconfig /flushdns
    Настройка протокола IP для Windows
    Кэш сопоставителя DNS успешно очищен.
    
    >ping -a ds210
    Обмен пакетами с DS210.local [192.168.20.20] с 32 байтами данных:
    Ответ от 192.168.20.20: число байт=32 время<1мс TTL=64

    По nslookup (на клиенте) адгард их не возвращает

    nslookup ds210
    ╤хЁтхЁ:  UnKnown
    Address:  192.168.20.1
    
    *** UnKnown не удалось найти ds210: Non-existent domain
    
    nslookup DS210.local
    ╤хЁтхЁ:  UnKnown
    Address:  192.168.20.1
    
    *** UnKnown не удалось найти DS210.local: Non-existent domain
×
×
  • Create New...