Jump to content

Zeleza

Forum Members
  • Posts

    757
  • Joined

  • Days Won

    79

Posts posted by Zeleza

  1. Чуть модернизировал скрипт - преобразовал в функцию (все "в одном флаконе").
    Однако при работе с включёнными уже vpn интерфейсами (у которых долгое время соединения, например openvpn), приходится ставить на паузу минимум в 2 секунды. Может кто из опыта подскажет, как побороть данный недуг?

    HOOK_INFACE_FILE=/opt/etc/ndm/ifstatechanged.d/100-get-entware-inface
    INFACE_NAMES_FILE=/opt/etc/inface_equals
    URL_REQUEST='localhost:79/rci/interface'
    # ------------------------------------------------------------------------------------------
    #
    #	Получаем список соотвествия имен интерфейсов CLI keenetic = Entware
    #   	Список забираем из /opt/etc/inface_equals в формате:
    #  	<ID интерфейса в CLI>|<ID интерфейса в entware>|<Описание интерфейса в CLI>
    #
    # ------------------------------------------------------------------------------------------
    get_interface_name_list(){
    
    	# если нет файла по отлавливанию хука
    	if ! [ -f "${HOOK_INFACE_FILE}" ]; then
    	#	создаем файл
    cat <<EOF > "${HOOK_INFACE_FILE}"
    #!/bin/sh
    ! [ -f "${INFACE_NAMES_FILE}" ] && touch "${INFACE_NAMES_FILE}"
    [ -z "\$(grep "\${id}" "${INFACE_NAMES_FILE}")" ] && echo "\${id}|\${system_name}" >> "${INFACE_NAMES_FILE}"
    exit 0
    EOF
    	chmod +x "${HOOK_INFACE_FILE}"
    	fi
    	# обозначаем список типов обрабатываемых интерфейсов
    	types_inface="openvpn|wireguard|ike|sstp|pppoe|l2tp|cdcethernet"
    
    	# получаем список ID интерфейсов в наличии на роутере через пробел
    	inface_list=$(curl -s "${URL_REQUEST}" \
    	             | grep '"id"' \
    	             | grep -Ei "${types_inface}" \
    	             | cut -d':' -f2 \
    	             | tr -d ' ",' \
    	             | tr '\n' ' '\
    	             )
    	# проходимся по каждому интерфейсу
    	for inface_entware in ${inface_list}; do
    		# получаем текущее состояние инф-са для возвращения его к исходному состоянию
    		state=$(curl -s "${URL_REQUEST}" \
    		       | grep -i "${inface_entware}" -A7 \
    		       | grep -Ei 'state' \
    		       | cut -d: -f2 | tr -d ' ",'\
    		       )
    		# в зависимости от состояния - включаем и выключаем или выключаем и включаем интерфейс
    		# для того, чтобы сработал наш хук в файле /opt/etc/ndm/ifstatechanged.d/100-save-inface_entware
    		if [ "${state}" = 'up' ]; then
    			curl -s -d '{"down":"true"}' "${URL_REQUEST}/${inface_entware}" &>/dev/null
    		else
    			curl -s -d '{"up":"true"}' "${URL_REQUEST}/${inface_entware}" &>/dev/null
    		fi
            # Пауза мин. в 2 сек. для получения результата в соединениях, которые не сразу подключаются (как пример OpenVPN)
    		sleep 2
    		curl -s -d "{\"${state}\":\"true\"}" "${URL_REQUEST}/${inface_entware}" &>/dev/null
    		# получаем описание интерфейса
    		description=$(curl -s "${URL_REQUEST}" \
    		              | grep '"id"' -A7 \
    		              | grep -i "${inface_entware}" -A4 \
    		              | grep -Ei 'description' \
    		              | cut -d: -f2 | tr -d ' ",' \
    		              | sed 's|\/|\\/|g'\
    		              )
    		# вставляем описание в файл /opt/etc/infaces_names
    		sed -i 's/\('"${inface_entware}"'.*\)/\1|'"${description}"'/'  "${INFACE_NAMES_FILE}"
    	done
    	rm -f "${HOOK_INFACE_FILE}"
    	cat "${INFACE_NAMES_FILE}"
    
    }

     

  2. Доброго дня

    В 10.06.2022 в 08:24, i81 сказал:

    Осталось понять facebook, попробовать попользовать чаще. Сложилось впечатление, что блокировка обходит только часть заблокированных ресурсов. 

    Новости Минцфиры:

    Цитата

    «Был один или два прецедента по отключению российских операторов от международных точек обмена трафиком. Но мы видим, что сейчас на европейском направлении точки обмена трафиком для нас действуют. У нас есть план, в случае полного отключения российских операторов от международных точек обмена трафиком в Европе, — направить трафик через Азию».

    Возможно проблема связана именно с этим фактом.

  3. 9 часов назад, kilia сказал:

    Как я понял kvas работает только для основного профиля? возможно ли сделать чтобы работало на всех?

    Доброго утра,

    Нет опыта в этом направлении, но полагаю, что если эта возможность реализуема в скриптах, то проблем нет. 
    У Вас есть ссылка на вариант реализации или на сам алгоритм реализации этого функционала?

  4. Нашел "костыль", нужно просто перегрузить роутер, и все соединения срабатывают и получаем список 

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

    Wireguard0|nwg0
    OpenVPN0|ovpn_br0
    GigabitEthernet0|eth2
    GigabitEthernet1/0|eth3
    WifiMaster0|ra0
    WifiMaster1|rai0
    CdcEthernet0|cdc_br0
    UsbLte0|lte_br0
    Bridge0|br0
    GigabitEthernet0/Vlan2|eth2.2
    Bridge1|br1
    GigabitEthernet0/0|eth2
    GigabitEthernet0/1|eth2
    GigabitEthernet0/Vlan3|eth2.3
    Bridge2|br2
    IKE0|nikecli0
    IKE1|nikecli1
    Wireguard1|nwg1
    Wireguard2|nwg2
    GigabitEthernet0/Vlan1|eth2.1
    WifiMaster0/AccessPoint2|ra2
    WifiMaster0/AccessPoint0|ra0
    WifiMaster1/AccessPoint0|rai0

    С другой стороны так же нашел вариант включения хука:

    curl -s -d '{"up":"true"}' "localhost:79/rci/interface/OpenVPN0"

    Сам скрипт для получения соответствия интерфейсов через обработку "хука":
    ~ # cat /opt/etc/ndm/ifstatechanged.d/100-save-inface 

    #!/bin/sh
    # если файла с именами нет - создаем
    if ! [ -f /opt/etc/infaces_names ]; then touch /opt/etc/infaces_names; fi
    
    # если интефейса еще нет в списке, то добавляем его
    if [ -z "$(grep "${id}" /opt/etc/infaces_names)" ]; then
    	echo "${id}|${system_name}" >> /opt/etc/infaces_names
    # пишем в лог, по необходимости
    	logger "${id} -> ${system_name}"
    fi
    exit 0

    помним про права:

    chmod +/opt/etc/ndm/ifstatechanged.d/100-save-inface 

    S.P.
    Памяти ради, публикую скрипт для получения соответствия интерфейсов без перезагрузки роутера. Он работает в купе со скриптом по обработке "хука" выше:

    #!/bin/sh
    
    # очищаем файл с именами интерфейсов
    rm /opt/etc/infaces_names
    
    # обозначаем список типов обрабатываемых интерфейсов 
    types_inface="openvpn|wireguard|ike|sstp|pppoe|l2tp|cdcethernet"
    
    # получаем список ID интерфейсов в наличии на роутере через пробел  
    inface_list=$(curl -s localhost:79/rci/show/interface | grep '"id"' | grep -Ei "${types_inface}" | cut -d':' -f2 | tr -d ' ",' | tr '\n' ' ')
    # проходимся по каждому интерфейсу 
    for inface in ${inface_list}; do
    	# получаем текущее состояние инф-са для возвращения его к исходному состоянию  
    	state=$(curl -s localhost:79/rci/show/interface | grep -i "${inface}" -A7| grep -Ei 'state' | cut -d: -f2 | tr -d ' ",')
    	# в зависимости от состояния - включем и выключаем или выключаем и включаем интерфейс 
        # для того, чтобы сработал наш хук в файле /opt/etc/ndm/ifstatechanged.d/100-save-inface 
    	if [ "${state}" = 'up' ]; then
    	 	curl -s -d '{"down":"true"}' "localhost:79/rci/interface/${inface}" &>/dev/null
    	else
    		curl -s -d '{"up":"true"}' "localhost:79/rci/interface/${inface}" &>/dev/null
    	fi
    	curl -s -d "{\"${state}\":\"true\"}" "localhost:79/rci/interface/${inface}" &>/dev/null
    	# получаем описание интерфейса
    	description=$(curl -s localhost:79/rci/show/interface | grep -i "${inface}" -A3 | grep -Ei 'description' | cut -d: -f2 | tr -d ' ",' | sed 's|\/|\//|g')
    	# вставляем описание в файл /opt/etc/infaces_names
    	sed -i 's/\('"${inface}"'.*\)/\1|'"${description}"'/'  /opt/etc/infaces_names
    done
    
    cat /opt/etc/infaces_names

    На выходе получаем файл /opt/etc/infaces_names в формате: <ID интерфейса в CLI>|<ID интерфейса в entware>|<Описание интерфейса в CLI>

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

    CdcEthernet0|cdc_br0|My Yota
    IKE0|nikecli0|L2TP/IPsec
    IKE1|nikecli1|ikev2_main
    OpenVPN0|ovpn_br0|My OVPN
    Wireguard0|nwg0|My Wireguard-1
    Wireguard1|nwg1|My Wireguard-2
    Wireguard2|nwg2|My Gate

     

  5. 10 часов назад, Александр Рыжов сказал:

    Может будет достаточно инфы из хук-скриптов. Вместе имена интерфейсов вместе только там.

    Доброго утра,
    Благодарю Вас, почти то, что нужно)

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

    Wireguard0|nwg0
    Wireguard1|nwg1
    Wireguard2|nwg2
    IKE1|nikecli1
    IKE0|nikecli0
    OpenVPN0|ovpn_br0

    Остается придумать, как в процессе установки пакета запустить сами хуки для включения интерфейсов или смены их IP, или только вручную?

    P.S.
    Пробую curl -s "localhost:79/rci/interface/connect/via/OpenVPN0" - не поднимается и хук не срабатывает.
    Пробую curl -s "localhost:79/rci/interface/openvpn/connect/via/OpenVPN0" - тоже самое.

    Как запустить?

  6. 16 минут назад, r13 сказал:

    wireguard L3 интерфейс, у него нет mac

    Простите, не понял, как Ваш комментарии может помочь в решении вопроса по теме?

    10 часов назад, Zeleza сказал:

    Как сопоставить названия интерфейсов?
    Например, как определить автоматически, что название tunl0 соответствует OpenVPN0 и т.п.?

     

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

    ndmc -c show interface

    Доброго дня,

    Благодарю Вас, только не совсем Вас понял.
    Если речь идет о том, чтобы сопоставить mac адреса в обоих вариантах, то это возможно только для openvpn, а как быть с wireguard например?

  8. 1 час назад, i81 сказал:

    1. Какая конфигурация DNS у клиента должна быть для полноценной работы обходчика? Можно указывать сторонний DNS сервер у клиента?

    2. У меня сейчас есть два сегмента сети, а обход работает только на первом сегменте. Как сделать, что бы обход блокировки работал на всех сегментах.

    3. Пытаюсь добавить в обход nnmclub.to, в "списке разблокировки" он появляется, в таблице ipset IP (179.43.141.93) тоже есть, но браузер не открывает сайт, при этом 2ip.ru идёт через туннель SS. Что я делаю не так?

    Доброго дня

    1. Указать конечно можно, но теряется смысл установки dnscrypt-proxy2. Конфигурацию можно посмотреть в /opt/etc/dnscrypt-proxy.toml.
    2. Тут не совсем понял вопроса по поводу сегментов - прошу уточните пожалуйста, какие именно сегменты и из чего состоят. 
    3. Попробовал у себя этот же сайт - все добавилось, проблем не наблюдаю, в kvas debug все штатно. Попробуйте запустить обновление еще раз - unblock_update
  9. 22 часа назад, Zeleza сказал:

    Изменен порядок добавления доменных имен, сейчас, если Вы хотите добавить доменное имя и все его имена выше третьего уровня, то при добавлении ставим звездочку впереди (без точки) :
    kvas add *domen.com, в этом случае включается режим работы с регулярными выражениями, если добавить, как раньше 
    kvas add domen.com, то режим wildcard не включится.

    Доброго всем дня

    Вышла накладка и был опубликован пакет без реализации выше-указанного изменения. Исправляюсь.
    Прошу всех обновить пакет по той же ссылке для кого это изменение стоит в приоритете. 

    Прошу прощения за недоразумение.  

  10. Всем доброго дня,
    Прошу людей умудренных опытом подсказать как связать соответствие данных по имеющимся интерфейсам в системе.

    Для получения данных о текущих VPN (и не только) интерфейсах используем API от keenetic:

    curl -s "localhost:79/rci/show/interface"

    Где можем получить данные по ID, типу интерфейса и его названию и пр.

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

        "OpenVPN0": {
        "id": "OpenVPN0",
        "index": 0,
        "type": "OpenVPN",
        "description": "OVPN",
        "interface-name": "OpenVPN0",
        "link": "down",
        "connected": "no",
        "state": "down",
        "role": [
          "misc"
        ],
    --
      "Wireguard0": {
        "id": "Wireguard0",
        "index": 0,
        "type": "Wireguard",
        "description": "WireguardZ",
        "interface-name": "Wireguard0",
        "link": "down",
        "connected": "no",
        "state": "down",

    В entware получить информацию о текущих интерфейсах можно 

    ip a
    ifconfig
    Скрытый текст

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: tunl0@NONE: <NOARP> mtu 1480 qdisc noop qlen 1
        link/ipip 0.0.0.0 brd 0.0.0.0
    3: sit0@NONE: <NOARP> mtu 1480 qdisc noop qlen 1
        link/sit 0.0.0.0 brd 0.0.0.0
    4: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop qlen 1000
        link/ether ba:9b:92:aw:sb:cd brd ff:ff:ff:ff:ff:ff
    5: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop qlen 1
        link/tunnel6 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    6: ezcfg0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel qlen 1000
        link/ether ea:ef:06:35:55:15 brd ff:ff:ff:ff:ff:ff
        inet 38.47.115.120/32 brd 38.255.255.255 scope global ezcfg0
           valid_lft forever preferred_lft forever


    Так вот вопрос возник следующий - как связать эти данные? Как сопоставить названия интерфейсов?
    Например, как определить автоматически, что название tunl0 соответствует OpenVPN0 и т.п.?

  11. Пробуем kvas_0.9-10_all.ipk:

    1. Вышли из беты - убрали ряд недочетов в коде, связанных с формой подачи информации.
    2. Изменен порядок добавления доменных имен, сейчас, если Вы хотите добавить доменное имя и все его имена выше третьего уровня, то при добавлении ставим звездочку впереди (без точки) :
      kvas add *domen.com, в этом случае включается режим работы с регулярными выражениями, если добавить, как раньше 
      kvas add domen.com, то режим wildcard не включится.
    3. Исправление недочетов с импортом и экспортом доменных имен. 
    • Upvote 7
  12. 5 часов назад, Игорь Александрович Кривенко сказал:

    установку начало но потом выдало что якобы не хватает места. места не так много на самом деле 55МБ, + были уставлены netdata и minicom

    Доброго дня,  
    Судя по всему мы с Вами о разной памяти ведем речь.

    Как я понял, Вы устанавливали opkg на встроенную память, а не на флешку?
    И как понимаю у Вас нет USB хаба?

  13. 3 часа назад, i81 сказал:

    Интересный момент, в Giga (KN-1011) на той-же версии прошивки 3.8 Beta 2 нет ничего связанного с NetFilter. 

    Доброго дня,
    Не имею опыта работы с 3.8 Бета, работаю только на стабильной ветке.

    А какие возникли проблемы с работой пакета, кроме выше указанной на 3.8?

  14. 55 минут назад, Игорь Александрович Кривенко сказал:

    Я думаю что надо, пробовал поставить проект жезл что с ботом для телеграмм, не влезло в память роутера,

    Доброго утра,

    Вы устанавливали на Giga и не поместилось в память? В чем это проявилось?

    Вы ничего не путаете?

  15. 4 минуты назад, Игорь Александрович Кривенко сказал:

    можно ли прикрутить к данному пакету управление скажем через веб страничку "в локалке", а не телеграмм бота? 

    Доброго дня
    Конечно можно, все достижимо.
    Надо ли?

  16. 35 минут назад, avn сказал:

    Почитал исходники. ADH поддерживает ipset. DNSMasq - можно выкинуть из цепочки вообще. Я не пробовал.

    Дорого дня
    В продолжении темы, нашел немного о связке ADH + ipset (ниже перевод робота)


    image.thumb.png.d0b73bd649d1d956e35681dc6c9ba322.png

    Источник

     

    image.thumb.png.a54313b561c4d992b2fd5971373474cd.png

    Источник


    Если кто реализует подобную связку дайте знать пожалуйста.
    Был бы признателен за детали.

  17. 23 часа назад, TheBB сказал:

    grep "arch" /opt/etc/entware_release | cut -f2 -d"="`.

    Доброго дня
    Варианты dnsmasq зашил жестко без ссылок. Архитектуру определял по opkg, но Ваш вариант более эффективный.
    Благодарю.

  18. 3 часа назад, Art-9 сказал:

    Что мешает направить DNS запросы так: LAN клиенты > AdGuard Home > dnsmasq

    Доброго вечера, 
    Благодарю за мысль добрую - так не пробывал еще. 
    У Вас получилать подобная связка? Все работает?

  19. 1 час назад, i81 сказал:

    Подскажите пожалуйста, в КВАСе можно сделать так, что бы трафик с самого роутера тоже шол согласно списка обхода, а не только трафик br0?

    Доброго вечера, 

    Я тружусь в основном над обвязкой (или интерфейсом командной строки) для работы с белым списком. 
    Это больше вопрос к @avn и другим мудрым людям. В Квасе использованы скрипты на основе их наработок. 

×
×
  • Create New...