Перейти к содержанию

avn

Участники форума
  • Постов

    686
  • Зарегистрирован

  • Посещение

  • Победитель дней

    7

Сообщения, опубликованные avn

  1. 3 часа назад, dchusovitin сказал:

    Я бы попробовал подобрать рабочий сервер, без использования asc. Шанс есть, но от провайдера конечно зависит.
    CloudflareWarpSpeedTest выдает список IP/порт с меньшей задержкой. И asc не забыть убрать.

    Можно ещё для warp client-id задать, он тоже видоизменяет пакеты.

     

    interface Wireguard2 wireguard peer bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo= !ZyWARP client-id send {client-id as integer}

     

    Спойлер
    JSCFAPI=$(curl -4s --interface $WGCFIF --connect-timeout 2 "https://api.cloudflareclient.com/v0a884/reg/$DEVICE_ID" -H "User-Agent: okhttp/3.12.1" -H "Authorization: Bearer $ACCESS_TOKEN")
    
    echo $JSCFAPI | jq -r '.config.client_id' | base64 -d | hexdump -e '/1 "%x"'

     

     

  2. 32 минуты назад, dimon27254 сказал:

    @FLK прав, наиболее "ресурсоемкой" задачей является свёртывание адресов-кандидатов в подсети.

    Я тестировал на списке из 11 тысяч адресов, на KN-1012 обработка занимала около двух секунд.

    В реальности, конечно, такие списки кандидатов могут собраться только при неработающем cron 😅

    Я рассмотрю ваше предложение по очистке ascn_ips при нахождении совпадения в ascn_subnets. 

    ip2net прекрасно с этим справляется. Причем ступенчато, может сначало /26 потом /25 и т.д.

    • Спасибо 1
    • Лайк 1
  3. 6 часов назад, Le ecureuil сказал:

    Для всех адресов попавших в NDP запускается периодический трекинг. Если адрес перестает отвечать на прямой запрос NDP трекеру, то медицина бессильна - это его проблема, этот хост невозможно отличить от "насовсем отключенного". Также если хост из-за privacy extensions меняет адрес, но не анонсирует его через DAD - он сами виноват, как это вообще можно узнать?

    Единственное решение в таком случае - дополнительный статический адрес, который всегда доступен.

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

  4. 6 минут назад, dimon27254 сказал:

    /24 мной была выбрана намеренно, т.к. по ней можно легко и быстро отслеживать и подсчитывать "похожие" адреса, просто проверяя совпадение первых трех октетов, т.е. 1.2.3.1, 1.2.3.14, 1.2.3.94 и так далее. Если количество "похожих" адресов больше порогового, на основе этих же трех октетов создается запись в ipset 1.2.3.0/24 для блокировки подсети целиком.

    С /23, /22 и более крупными такой "фокус" уже не пройдет.

    В данном направлении улучшений я пока что не планирую.

    zapret ip2net

     

  5. 2 часа назад, kaguyashaa сказал:


    Ещё интересно если у меня проброшен в локалку порт 443 для Nginx то его тоже будет обрабатывать и при необходимости ip блокировать?

    Нет

    • Лайк 1
  6. 4 часа назад, dimon27254 сказал:

    Бессрочное хранение включается только для списков заблокированных IP и подсетей. Список кандидатов на блокировку продолжает хранить записи в соответствии с установленным в конфиге сроком (DIFFERENT_IP_CANDIDATES_STORAGETIME), если вы явно не установите 0. При этом, кандидаты не сохраняются в постоянной памяти вовсе - при каждой перезагрузке роутера/скрипта они будут наполняться заново.

    Вариант с аптаймом устройства в год я полноценно не рассматривал, т.к. лично у меня роутер работает от обновления к обновлению.
    Однако, в данном случае на длительном аптайме полноценную точечную очистку записей реализовать не представляется возможным - максимальный срок хранения записей в ipset при использовании timeout составляет 2147483 секунды, что чуть меньше 25 дней. Ввиду этого ограничения при SAVE_IPSETS=1 значение timeout для ascn_ips и ascn_subnets полностью исключается и записи хранятся без срока.

    Могу, например, к следующей версии исключить принудительную установку "бессрочного" хранения для ipset, чтобы вы могли и дальше устанавливать свой таймаут. Однако, в этом случае я не вижу смысла в сохранении в файлы вовсе, если, условно говоря, через день/несколько часов записи все равно удалятся.

    Или есть вариант реализовать дополнительную задачу в cron, которая будет, например, раз в 3 месяца принудительно очищать все ipset и удалять сохраненные файлы, чтобы они могли наполняться "с нуля".

    Для правил iptables сразу маску /24 добавили? Вы же все равно ip кандидатов агрегируете по маске 24. Так пусть и правила работают по маске /24.

  7. 1 минуту назад, Denis P сказал:

    Речь была только о возможности сохранения системных наборов с "плохими адресами" в файл, при чем тут сторонние сервисы вообще? Этого никто не обещал.

    Ошибся цитатой, не Вам.

    • Лайк 1
  8. Способ интересный. Решил потестить

    Спойлер
    PORTS="80,443,22,8443,53"
    if [ "$type" == "iptables" ]; then
    	EXCLUDE_IPSET=localnet4
    	IPSET=blockscan4
    	MASK=255.255.255.0
    	MASKINT=24
    else
    	EXCLUDE_IPSET=localnet6
    	IPSET=blockscan6
    	MASK=ffff:ffff:ffff:ff00::
    	MASKINT=56
    fi;
    
    # Block scan
    ipt _NDM_ACL_IN -t filter -i eth3 -p tcp -m multiport --dports $PORTS -m set ! --match-set ${EXCLUDE_IPSET} src -m connlimit --connlimit-mask $MASKINT --connlimit-above 20 -j SET --add-set $IPSET src
    ipt _NDM_ACL_IN -t filter -i eth3 -p tcp -m multiport --dports $PORTS -m set ! --match-set ${EXCLUDE_IPSET} src -m conntrack --ctstate NEW -m recent --name $IPSET --mask $MASK --rsource --update --seconds 30 --hitcount 15 -j SET --add-set $IPSET src
    ipt _NDM_ACL_IN -t filter -i eth3 -p tcp -m multiport --dports $PORTS -m set ! --match-set ${EXCLUDE_IPSET} src -m conntrack --ctstate NEW -m recent --name $IPSET --mask $MASK --rsource --set
    ipt _NDM_ACL_IN -t filter -i eth3 -p tcp -m multiport --dports $PORTS -m set ! --match-set ${EXCLUDE_IPSET} src -j SET --add-set $IPSET-buf src
    ipt _NDM_ACL_IN -t filter -i eth3 -p tcp -m multiport --dports $PORTS -m set --match-set $IPSET src -j DROP

     

     

    _NDM_ACL_IN

    Использую, т.к. проходит через input и forward

     

     

     

    • Спасибо 1
  9. В 14.05.2025 в 13:57, Denis P сказал:

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

    Если требуется защитить сторонние сервисы, которые находятся не на роутере (другое устройство со свои ip) - данный способ работать не будет. Таффик не будет проходить через INPUT.

    • Спасибо 1
  10. 8 часов назад, MonoBOY сказал:

    Есть кинетик ультра с установленной версией ОС 4.3.1, есть поднятый entware (тоже обновлен по состоянию на сегодня), в entware есть curl версии:

    curl 8.10.1 (aarch64-openwrt-linux-gnu) libcurl/8.10.1 OpenSSL/3.0.15 zlib/1.3.1

    делаю curl https://api.telegram.org и получаю curl: (35) Recv failure: Connection reset by peer

    Перезагружаю роутер, снова делаю curl https://api.telegram.org и получаю нормальный ответ, снова перезагружаю роутер получаю curl: (35) Recv failure: Connection reset by peer..... 

    Прошу помощи, что нужно предоставить из логов?

    Ipset используете? Что-то у вас с маршрутизацией намудрено. 

  11. 1 час назад, ZlydenGL сказал:

    Здорово что появляются новые решения, но всё же, можно в двух словах описать, чем они отличаются от имеющихся-то? Даже сравнивая со старичком ipset-dns. Потому что читаю я вот содержимое шапки:

    1. Не требует отключения встроенного в Keenetic DNS сервера - всё работает методом перенаправления портов.
    2. Работает с любыми туннелями, которые умеют поднимать UNIX интерфейс.
    3. Несколько типов правил - domain, namespace, wildcard и regex.
    4. Не тянет за собой огромное количество сторонних пакетов пакетов. Вся конфигурация находится в одном месте (в одном файле).
    5. Возможность создавать несколько групп на разные сети.
    6. Моментальное бесшовное включение/выключение сервиса.

    И не понимаю, что из перечисленного нельзя отнести к тому же решению ipset-dns. Ну разве что пункт 3 на словах выглядит более гибким, да пункт 5 напрямую не  реализован. А всё остальное - прекрасно подходит: и отключения штатного ПО не требуется, и туннели знает любые, лишь бы сам Keenetic под эту сущность выделял интерфейс, и сторонние "пакеты пакеты" не тянет (при этом базируется всё на том же dnsmasq), и погасить его можно и моментально, и бесшовно... Да ещё и управление перечнем доменов у ipset-dns по сути заведено в штатный интерфейс ndm, т.е. при необходимости доконфигурить перечень доменов можно даже через мобильное приложение. А ещё можно спокойно ставить во внутреннюю память, так как ipset-dns её не "изнашивает". Так в чём же цимес/гешефт/нужное_подчеркнуть от утилиты из данной темы? Только в уходе от текущего ограничения Keenetic на 60 доменов?

    Ipset-dns больше не нужен, есть штатное решение в прошивке.

  12. 29 минут назад, pppppppo_98 сказал:

    но судя по записи из таблицы монтажа файловых систем 

    #mount

    /dev/root on / type squashfs (ro,relatime)
    tmpfs on /dev type tmpfs (rw,nosuid,noexec,relatime)
    none on /dev/pts type devpts (rw,nosuid,noexec,relatime,mode=600,ptmxmode=000)
    proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
    tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime)
    sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
    none on /sys/kernel/debug type debugfs (rw,nosuid,noexec,relatime)
    /dev/ubi0_0 on /storage type ubifs (rw,relatime,compr=zlib)
    /dev/sda1 on /tmp/mnt/fe9517a3-99f2-4397-a45f-c820180f99a3 type ext4 (rw,noatime,data=ordered)
    /dev/sda1 on /opt type ext4 (rw,noatime,data=ordered)

     

    Все дерево /opt вместе с /opt/tmp находится на флеш накопителе (/dev/sda1). И тогда ИМХО вся проблема останется той же. Или у Вас /opt/tmp имеет другое место монтирования

    Я же все написал, и скрипт приложил

    $ ls -al /opt/tmp
    lrwxr-xr-x    1 root     root             4 Mar 25 16:21 /opt/tmp -> /tmp

     

  13. 3 минуты назад, pppppppo_98 сказал:

    Не знаю в нужную ли ветку я попал. Просьба модераторам перенести в нужную. 

     

    1. Итак у меня есть кинетик (не мой но под моим управлением и даже не один) с внешней флешкой, на который установлен У Entware (opkg). Уже два раза столкнулся с выходом флешки из строя. Везде установлены ext4. Насколько я понимаю  ext4 не самая оптимальная файловая система для флеш-накопителей. Какие есть иные варианты файловых систем для entware? btrfs?

    2. Расширение первого вопроса. Хозяин одного из кинетиков (kn1712) попросил и я ему поставил i2pd. Когда я увидел что i2pd постоянно пишет тысячи мелких файлов, я хозяину сказал, что в конце концов i2pd убьет флешку. Так и случилось, через 2 года флешка убилась. Расширяю первый вопрос. А есть ли какая нибудь файловая система для флеш-накопителя,  с установленным  entware, которая позволит постоянно (так работает i2pd) перезаписовать тысячи мелких файлов? Может быть есть какие то иные технические решения, аля организовать два раздела, или огранизовать раздел в памяти ?   

    А /opt/tmp не пробовали на /tmp перенести? У меня раньше тоже флэшки мерли, но теперь на них нету записи, все в tmp.

     

    Спойлер
    #!/bin/sh
    
    case $1 in
    	start)
    	rm -fR /opt/var /opt/tmp
    	ln -s /var /opt
    	ln -s /tmp /opt
    	mkdir -p /var/spool/cron/crontabs /var/lock /var/log /var/run
    	cp -f /opt/root/.ash_history /tmp/.ash_history
    	;;
    esac

     

     

  14. 3 часа назад, Le ecureuil сказал:

    Конечно есть.

    1. tcp rst - это, по хорошему, вмешательство в трафик. Хотя вроде администратор сам этого хочет.

    2. А сколько должна жить эта блокирующая запись в нетфильтре?

    3. На нее могут попадать и легитимные соединения от, скажем, другого проброса - что не очень хорошо.

    Так, стоп, тут не хорошо, а то что мы натыкаемся в правилах на не легитимную цепочку по 443 порту, то это нормально?

    == Chain INPUT ==
    src: 0.0.0.0/0, dst: 0.0.0.0/0, in: "*", out: "*", proto: "TCP"; "tcp" match, mask: , cmp: , dport: 443; jump to "_NDM_HTTP_INPUT_TLS_"

     

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

    Это знаю. У меня висят хэндлеры на это. Проблема в том, что тут совпадают тайминги с запуском программы и началом очистки, от чего программа падает

    Значит надо избавиться от цепочек, переделать в одну команду. Я так и сделал в свое время.

    • Лайк 1
  16. 19 минут назад, Le ecureuil сказал:

    Нет, для нас главное - выявить аномалии в работе.

    Это в логе и есть аномалия, пусть и вызванная вероятно легитимным интерфейсом tun0, который вы создали в opkg.

    А от аномалии избавите?

  17. @Le ecureuil

    А можно как-то покомпактнее падать, сильно лог раздувается?

    Спойлер
    [E] Apr  8 17:35:35 ndm: Network::Ip6::RoutingTable: unable to resolve 'tun0' '' '2606:4700:110:85e5:b845:9edb:7fd6:3a36/128' '::'. 
    [E] Apr  8 17:35:35 ndm: Network::Ip6::RoutingTable: "Queue::SFMMNSOKLEIDRHHP::http/rci" (1618) backtrace: 
    [E] Apr  8 17:35:35 ndm: Network::Ip6::RoutingTable:   Network::Ip6::RoutingTable::GetRoutes_(AutoPVector<Network::Ip6::RoutingTable::Entry, StdDeleter>&, LockedPtr<Network::Interface::Ip6 const> const&, Network::Ip6::CBlock const&, unsigned int, bool, Log::VerboseT) const+0xa8 
    [E] Apr  8 17:35:35 ndm: Network::Ip6::RoutingTable:   Network::Ip6::RoutingTable::GetRoutes(AutoPVector<Network::Ip6::RoutingTable::Entry, StdDeleter>&, CString const&, Network::Ip6::CBlock const&, unsigned int, Log::VerboseT) const+0x88 
    [E] Apr  8 17:35:35 ndm: Network::Ip6::RoutingTable:   Command::(anonymous namespace)::ShowIpv6Route::Execute(Command::Request const&, Command::Response&) const+0x178 
    [E] Apr  8 17:35:35 ndm: Network::Ip6::RoutingTable:   Core::Configurator::Execute(Command::Base const*, Command::Request const&, Command::Response&)+0x158 
    [E] Apr  8 17:35:35 ndm: Network::Ip6::RoutingTable:   Core::Configurator::Serve(Command::Request const&, Command::Response&)+0x3c8 
    [E] Apr  8 17:35:35 ndm: Network::Ip6::RoutingTable:   Core::Scgi::Tools::(anonymous namespace)::JsonPostObject_(Core::Configurator&, Command::Request const&, Core::Scgi::Trace&, Json::Object const*, Json::Object*)+0x704 
    [E] Apr  8 17:35:35 ndm: Network::Ip6::RoutingTable:   Core::Scgi::Tools::(anonymous namespace)::JsonPostValue_(Core::Configurator&, Command::Request const&, Core::Scgi::Trace&, Json::Value const*, Json::Object*) [clone .lto_priv.0]+0x19c 
    [E] Apr  8 17:35:35 ndm: Network::Ip6::RoutingTable:   Core::Scgi::Tools::(anonymous namespace)::JsonPostObject_(Core::Configurator&, Command::Request const&, Core::Scgi::Trace&, Json::Object const*, Json::Object*)+0xc3c 
    [E] Apr  8 17:35:35 ndm: Network::Ip6::RoutingTable:   Core::Scgi::Tools::(anonymous namespace)::JsonPostValue_(Core::Configurator&, Command::Request const&, Core::Scgi::Trace&, Json::Value const*, Json::Object*) [clone .lto_priv.0]+0x19c 
    [E] Apr  8 17:35:35 ndm: Network::Ip6::RoutingTable:   Core::Scgi::Tools::(anonymous namespace)::JsonPostObject_(Core::Configurator&, Command::Request const&, Core::Scgi::Trace&, Json::Object const*, Json::Object*)+0xc3c 
    [E] Apr  8 17:35:35 ndm: Network::Ip6::RoutingTable:   Core::Scgi::Tools::(anonymous namespace)::JsonPostValue_(Core::Configurator&, Command::Request const&, Core::Scgi::Trace&, Json::Value const*, Json::Object*) [clone .lto_priv.0]+0x19c 
    [E] Apr  8 17:35:35 ndm: Network::Ip6::RoutingTable:   Core::Scgi::Tools::(anonymous namespace)::JsonPostObject_(Core::Configurator&, Command::Request const&, Core::Scgi::Trace&, Json::Object const*, Json::Object*)+0xc3c 
    [E] Apr  8 17:35:35 ndm: Network::Ip6::RoutingTable:   Core::Scgi::Tools::(anonymous namespace)::JsonPostArray_(Core::Configurator&, Command::Request const&, Core::Scgi::Trace&, Json::Array const*, Json::Array*)+0xf8 
    [E] Apr  8 17:35:35 ndm: Network::Ip6::RoutingTable:   Core::Scgi::Tools::(anonymous namespace)::JsonPostValue_(Core::Configurator&, Command::Request const&, Core::Scgi::Trace&, Json::Value const*, Json::Object*) [clone .lto_priv.0]+0x468 
    [E] Apr  8 17:35:35 ndm: Network::Ip6::RoutingTable:   Core::Scgi::Tools::JsonPost(Core::Configurator&, Core::Scgi::Request const&, Json::Document const&, Core::Scgi::Trace&, Json::Document&, bool*)+0x144 
    [E] Apr  8 17:35:35 ndm: Network::Ip6::RoutingTable:   Core::Scgi::ThreadPool::Task_::ProcessJsonRequest_(Core::Scgi::Request const&, Core::Scgi::Trace&, Array<char>&, Io::OStream&)+0x358 
    [E] Apr  8 17:35:35 ndm: Network::Ip6::RoutingTable:   Core::Scgi::ThreadPool::Task_::Run()+0x14c 
    [E] Apr  8 17:35:35 ndm: Network::Ip6::RoutingTable:   Task::Thread::Run_()+0x150 
    [E] Apr  8 17:35:35 ndm: Network::Ip6::RoutingTable:   Task::Thread::Run()+0x18 
    [E] Apr  8 17:35:35 ndm: Network::Ip6::RoutingTable:   Thread::StartRoutine_(void*)+0x2cc 
    [E] Apr  8 17:35:35 ndm: Network::Ip6::RoutingTable:   start()+0x90 
    [E] Apr  8 17:35:35 ndm: Network::Ip6::RoutingTable:   __clone()+0x30 

     

     

  18. 3 минуты назад, vasek00 сказал:

    По пробовал на другом провайдере и фишка

      Скрыть контент
    2025/04/08 15:57:16 Registering with locale en_US and model PC
    You must accept the Terms of Service (https://www.cloudflare.com/application/terms/) to register. Do you agree? (y/n): y
    2025/04/08 15:57:29 Failed to register: failed to send request: Post "https://api.cloudflareclient.com/....../reg": net/http: TLS handshake timeout
    /opt/home/usque #

    Registering with locale en_US and model PC

    Подсунул VPN (Европа) тогда ОК, регистрация. Повторяется - как и раньше - процедура регистрации.

     

    Попробуй для готового конфига usque enroll

  19. 23 минуты назад, vasek00 сказал:

    Вот что получилось

      Скрыть контент
    /opt/home/usque # ./usque register
    2025/04/08 15:05:13 Config file not found: failed to open config file: open config.json: no such file or directory
    2025/04/08 15:05:13 You may only use the register command to generate one.
    2025/04/08 15:05:13 Registering with locale en_US and model PC
    You must accept the Terms of Service (https://www.cloudflare.com/application/terms/) to register. Do you agree? (y/n): y
    2025/04/08 15:05:25 Enrolling device key...
    2025/04/08 15:05:26 Successful registration. Saving config...
    2025/04/08 15:05:26 Config saved to config.json
    /opt/home/usque # ./usque nativetun
    2025/04/08 15:06:18 created TUN device: tun0
    2025/04/08 15:06:18 Tunnel established, you may now set up routing and DNS
    2025/04/08 15:06:18 Establishing MASQUE connection to 1хх.ххх.ххх.ххх:443
    2025/04/08 15:06:20 Connected to MASQUE server
    2025/04/08 15:06:20 dropping proxied packet (76 bytes) that can't be proxied: connect-ip: datagram Hop Limit too small: 1
    2025/04/08 15:06:20 dropping proxied packet (76 bytes) that can't be proxied: connect-ip: datagram Hop Limit too small: 1
    2025/04/08 15:06:20 dropping proxied packet (76 bytes) that can't be proxied: connect-ip: datagram Hop Limit too small: 1
    2025/04/08 15:06:20 dropping proxied packet (76 bytes) that can't be proxied: connect-ip: datagram Hop Limit too small: 1
    
    
    ~ # ifconfig
    ...
    tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
              inet addr:172.16.0.2  P-t-P:172.16.0.2  Mask:255.255.255.255
              inet6 addr: fe80:.....:2031/64 Scope:Link
              inet6 addr: 2606:.....:568a/128 Scope:Global
              UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1280  Metric:1
              RX packets:17 errors:0 dropped:0 overruns:0 frame:0
              TX packets:25 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:500
              RX bytes:5111 (4.9 KiB)  TX bytes:2410 (2.3 KiB)
    
    ~ # ping -I tun0 1.1
    PING 1.1 (1.0.0.1): 56 data bytes
    64 bytes from 1.0.0.1: seq=0 ttl=64 time=28.770 ms
    64 bytes from 1.0.0.1: seq=1 ttl=64 time=26.136 ms
    64 bytes from 1.0.0.1: seq=2 ttl=64 time=26.556 ms
    ^C
    --- 1.1 ping statistics ---
    3 packets transmitted, 3 packets received, 0% packet loss
    round-trip min/avg/max = 26.136/27.154/28.770 ms
    ~ # curl --interface tun0 https://cloudflare.com/cdn-cgi/trace
    fl=8.......3
    h=cloudflare.com
    ip=104.........
    ts=1......7
    visit_scheme=https
    uag=curl/8.10.1
    colo=DME
    sliver=none
    http=http/1.1
    loc=RU
    tls=TLSv1.3
    sni=plaintext
    warp=on
    gateway=off
    rbi=off
    kex=......9
    ~ #
    
    
    {
      "private_key": "M.....................................................................................................g==",
      "endpoint_v4": "1хх.ххх.ххх.1",
      "endpoint_v6": "2606:.......::1",
      "endpoint_pub_key": "-----BEGIN PUBLIC KEY-----\n.....................................6w==\n-----END PUBLIC KEY-----\n",
      "license": "0F7............................E3",
      "id": "fda.............8b9",
      "access_token": "fe..........39",
      "ipv4": "172.16.0.2",
      "ipv6": "2606:...........:568a"
    }

     

     

    Я и говорю, круто-же.

    Спойлер

    usque-upgrade.sh

    #!/bin/sh
    
    masq_dir=/opt/sbin
    masq_fn=usque
    
    function get_download_url {
    	curl -kfsS https://api.github.com/repos/$1/$2/releases/latest 2>/dev/null | jq -r '.assets[] | select(.browser_download_url | endswith("_linux_arm64.zip")) | .browser_download_url'
    }
    
    URL=$(get_download_url Diniboy1123 usque)
    echo $URL
    curl -kfsSL $URL -o /tmp/$masq_fn.zip
    
    if [ ! -z "$1" ]; then
    	cp -f $masq_dir/$masq_fn $masq_dir/$masq_fn.1
    fi
    unzip -o /tmp/$masq_fn.zip -d /tmp ${masq_fn}
    rm -f /tmp/$masq_fn.zip
    mv -f /tmp/${masq_fn} $masq_dir/$masq_fn
    chmod +x $masq_dir/$masq_fn
    ls -al $masq_dir/$masq_fn*
    
    /opt/etc/init.d/S77usque restart

    S77usque

    #!/bin/sh
    
    ENABLED=yes
    PROCS=usque
    CONF="/opt/etc/usque/usque.json"
    ARGS="--config $CONF nativetun"
    PREARGS=""
    DESC=$PROCS
    PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    
    case $1 in
    	start|restart)
    	ipv4=`cat $CONF 2>/dev/null | jq -r '.endpoint_v4'`
    	ipv6=`cat $CONF 2>/dev/null | jq -r '.endpoint_v6'`
    	ip -4 route add $ipv4 dev eth3 2>/dev/null
    	ip -6 route add $ipv6 dev eth3 2>/dev/null
    	;;
    esac
    
    . /opt/etc/init.d/rc.func

     

  20. Ура дождались.

    Проект USQUE. Меня пока радует, удалось зарегистрироваться и прогнать трафик через http,sock. Пока непонятно как tun организовать.

    Спойлер
    root@RPi4:~# cd /tmp/1
    root@RPi4:/tmp/1# chmod +x usque
    root@RPi4:/tmp/1# usque --help
    -ash: usque: not found
    root@RPi4:/tmp/1# ls -al
    drwxr-xr-x    2 root     root            60 Apr  8 15:17 .
    drwxrwxrwt   20 root     root           580 Apr  8 15:17 ..
    -rwxr-xr-x    1 root     root      10813624 Apr  1 00:54 usque
    root@RPi4:/tmp/1# ./usque --help
    An unofficial Cloudflare Warp CLI that uses the MASQUE protocol and exposes the tunnel as various different services.
    
    Usage:
      usque [command]
    
    Available Commands:
      completion  Generate the autocompletion script for the specified shell
      enroll      Enrolls a MASQUE private key and switches mode
      help        Help about any command
      http-proxy  Expose Warp as an HTTP proxy with CONNECT support
      nativetun   Expose Warp as a native TUN device
      portfw      Forward ports through a MASQUE tunnel
      register    Register a new client and enroll a device key
      socks       Expose Warp as a SOCKS5 proxy
      version     Print the version number of usque
    
    Flags:
      -c, --config string   config file (default is config.json) (default "config.json")
      -h, --help            help for usque
    
    Use "usque [command] --help" for more information about a command.
    root@RPi4:/tmp/1# ./usque register
    2025/04/08 12:18:44 Config file not found: failed to open config file: open config.json: no such file or directory
    2025/04/08 12:18:44 You may only use the register command to generate one.
    2025/04/08 12:18:44 Registering with locale en_US and model PC
    You must accept the Terms of Service (https://www.cloudflare.com/application/terms/) to register. Do you agree? (y/n): y
    2025/04/08 12:18:50 Enrolling device key...
    2025/04/08 12:18:51 Successful registration. Saving config...
    2025/04/08 12:18:51 Config saved to config.json
    root@RPi4:/tmp/1# mc
    
    root@RPi4:/tmp/1# ./usque nativetun
    2025/04/08 12:20:53 Are you root/administrator? TUN device creation usually requires elevated privileges.
    2025/04/08 12:20:53 failed to create TUN device: no such file or directory
    root@RPi4:/tmp/1# ./usque socks
    2025/04/08 12:21:30 SOCKS proxy listening on 0.0.0.0:1080
    2025/04/08 12:21:30 Establishing MASQUE connection to 162.159.198.1:443
    2025/04/08 12:21:32 Connected to MASQUE server

     

     

    • Лайк 2
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.