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

Рекомендуемые сообщения

Опубликовано

Из внутренней домашней сети тоже не коннектится ?

ps. Лог-то, когда выклыдавайте, хотя бы ключи подчищайте...

Опубликовано
3 hours ago, Kirya said:

Из внутренней домашней сети тоже не коннектится ?

ps. Лог-то, когда выклыдавайте, хотя бы ключи подчищайте...

Из внутренней тоже, + в терминале пишет unable to connect 'ip телеги' 443, ключи стандартные, пока не заработало смысл менять/скрывать))

Опубликовано
12 минуты назад, Stas Zevs сказал:

+ в терминале пишет unable to connect 'ip телеги' 443

Так с этого и надо было начинать.

Прокси не может достучаться до серверов ТГ.

Блокировка (Как Вы ранее писали у вас же пров РТ).

Вам нужно каким-либо способом её обойти для серверов ТГ. 😎

  • 1 месяц спустя...
Опубликовано

Прошло минорное обновление uvloop до 0.12.2

В принципе для работы MTP оно похоже не важно, так как снова правятся баги в SSL, которое MTP не задействует.

Но ещё и роут лики. Правда я у нас такого не наблюдал.

Но мало ли.

Не пропадать же вилочке для Mipself.

uvloop-0.12.2-cp37-cp37-mipsel-34.whl

Опубликовано (изменено)

Добрый день.

при старте прокси он стартует, но не видит IPv6, то есть не "IPv6 found, using it for external communication".

IPv6 проброшен через туннельного брокера и раздается в домшнюю сеть.

Если сделать ping6 из под Entware, то тишина. Аналогично тишина если ping6 сделать через gui кинетика, раздел диагностика.

 

 В маршрутизации относительно v6 две записи:

Действующие маршруты IPv6

 

::/0
::
 IPv6 Tunnel
20хх:ъъъ:ёёёё::/64                     
::             
Домашняя сеть

 

UPD: Решил проблему иначе: поставил Entware на NAS который в домашней сети получает IPv6., далее по аналогии. На роутере пробросил нужный порт на NAS и всё Ок

     
   
 
Изменено пользователем Almi
remedy
Опубликовано
5 часов назад, Almi сказал:

Добрый день.

при старте прокси он стартует, но не видит IPv6, то есть не "IPv6 found, using it for external communication".

IPv6 проброшен через туннельного брокера и раздается в домшнюю сеть.

Если сделать ping6 из под Entware, то тишина. Аналогично тишина если ping6 сделать через gui кинетика, раздел диагностика

     
   
 

Странно.

По алгоритму перед коннектом прокси вычисляет свой внешний ipv6 по запросу на http://v6.ident.me/ и http://ipv6.icanhazip.com/

Если коннект хотя бы до одного срабатывает, то только после этого, если ipv6 в настройках специально не понижен в конфиге ключем PREFER_IPV6, прокся начинает работать по ipv6 и выдаёт процитированное Вами сообщение.

Сильно похоже на какой-то фаерволл у Вас, который пропускает http запросы, но режет всё остальное...

Опубликовано (изменено)

Пересобрал вилочку uvloop-а 0.12,2 под Entware 1903.

uvloop-0.12.2-cp37-cp37-mipsel-34_Ent1903.whl

И в первом посту треда обновил init.d скрипт для запуска.

Поприличней сделал.

😎

Изменено пользователем Kirya
Пересбор whl под обновленное Entware.
  • 1 месяц спустя...
Опубликовано (изменено)
В 24.03.2019 в 18:44, Kirya сказал:

Пересобрал вилочку uvloop-а 0.12,2 под Entware 1903.

uvloop-0.12.2-cp37-cp37-mipsel-34_Ent1903.whl 1 \u041c\u0431 · 3 downloads

Обязан сделать одну ремарочку, т.к. сам с пайтоном "на Вы", и слишком долго бился над установкой этого "колеса": при попытке установить его стандартной командой

python3 -m pip install ./uvloop-0_12.2-cp37-cp37-mipsel-34_Ent1903.whl

пип ругался подобным образом -

ERROR: uvloop-0_12.2-cp37-cp37-mipsel-34_Ent1903.whl is not a supported wheel on this platform.

С энного захода в гугл и по удачной ссылке в выдаче, таки выяснил что pip чувствителен к названию файла .whl, т.к. в нём содержится информация о версии пайтона и о платформе, для которой колесо собрано, и что переименование файла "для удобства хранения" чревато вот такими ошибками при попытке установки колеса.

Вооружившись этим знанием (а так же способом выяснить, какие "колёса" поддерживает пайтон на роутере):

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

~ # python3
Python 3.7.2 (default, Mar 23 2019, 05:17:43) 
[GCC 7.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pip._internal
>>> print(pip._internal.pep425tags.get_supported())
[('cp37', 'cp37', 'linux_mips'), ('cp37', 'abi3', 'linux_mips'), ('cp37', 'none', 'linux_mips'), ('cp36', 'abi3', 'linux_mips'), ('cp35', 'abi3', 'linux_mips'), ('cp34', 'abi3', 'linux_mips'), ('cp33', 'abi3', 'linux_mips'), ('cp32', 'abi3', 'linux_mips'), ('py3', 'none', 'linux_mips'), ('cp37', 'none', 'any'), ('cp3', 'none', 'any'), ('py37', 'none', 'any'), ('py3', 'none', 'any'), ('py36', 'none', 'any'), ('py35', 'none', 'any'), ('py34', 'none', 'any'), ('py33', 'none', 'any'), ('py32', 'none', 'any'), ('py31', 'none', 'any'), ('py30', 'none', 'any')]

 

переименовал файл из "uvloop-0_12.2-cp37-cp37-mipsel-34_Ent1903.whl" в "uvloop-0_12.2-cp37-cp37-linux_mips.whl". После этой манипуляции колесо успешно установилось:

python3 -m pip install ./uvloop-0_12.2-cp37-cp37-linux_mips.whl 

Processing ./uvloop-0_12.2-cp37-cp37-linux_mips.whl
Installing collected packages: uvloop
Successfully installed uvloop-0.12.2

Надеюсь, этот "дебаг" поможет остальным обновиться до более актуальной версии uvloop 🙂

Изменено пользователем UweStrich
уточнения, стилистика
  • 4 месяца спустя...
Опубликовано

На фоне новостей про "тестирование РКН окончательной блокировки Telegram на тюменцах", а так же продолжающемуся развитию python-версии MTProto, решился на выходных основательно засесть за "допиливание" крутящегося на роутере личного проксика таким образом, чтобы он и в качестве бэкэнда работал за другим проксирующим сервером (в моём случае - nginx), и чтобы при этом работала поддержка fake-tls, маскирующегося при этом под сертификат на фронтенде.

Важный дисклеймер: описанный ниже способ несовместим с защищёнными доменами от KeenDNS (по крайней мере - на прошивке 2.16), так как nginx из Entware нужно будет слушать на порту 443, также используемой прошивочной службой. Помимо этого, должен оговорить что доменное имя получено от noip (статья по настройке), айпи-адрес при этом - "белый", купленный за сотню в месяц у провайдера.

Шаг нулевой (поначалу - неочевидный): скомпилировать nginx, как минимум - поддерживающий необходимый для проксирования набор опций ("--with-stream_proxy_module" и "--with-stream_ssl_preread"), а как максимум - ещё и несколько опций, полезных при логировании перенаправлений ("--with-stream_realip_module", например); полный вывод "nginx -V" - под катом, установочный архив под mipsel - nginx-extratest_1.16.1-1c_mipsel-3.4.ipk (под mips - т.е. для Zyxel Keenetic LTE, например, - не компилировал, но позже могу добавить, если окажется востребованным)

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

~ # nginx -V
nginx version: nginx/1.16.1
built by gcc 7.4.0 (OpenWrt GCC 7.4.0 r944-a63df64b)
built with OpenSSL 1.1.1b  26 Feb 2019
TLS SNI support enabled
configure arguments: --crossbuild=Linux::mipsel --with-cc=mipsel-openwrt-linux-gnu-gcc --with-cc-opt='-I/home/baz/entstbl/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt/include -I/home/baz/entstbl/Entware/staging_dir/toolchain-mipsel_mips32r2_gcc-7.4.0_glibc-2.27/include -O2 -pipe -mno-branch-likely -mips32r2 -mtune=mips32r2 -fno-caller-saves -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float -I/home/baz/entstbl/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt/include/libxml2 -Wno-error=parentheses -Wno-error=implicit-fallthrough' --with-ld-opt='-L/home/baz/entstbl/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt/lib -Wl,-rpath,/opt/lib -Wl,-rpath-link=/home/baz/entstbl/Entware/staging_dir/target-mipsel_mips32r2_glibc-2.27/opt/lib -Wl,--dynamic-linker=/opt/lib/ld.so.1 -L/home/baz/entstbl/Entware/staging_dir/toolchain-mipsel_mips32r2_gcc-7.4.0_glibc-2.27/lib -lxml2' --prefix=/opt --conf-path=/opt/etc/nginx/nginx.conf --http-log-path=/opt/var/log/nginx/access.log --error-log-path=/opt/var/log/nginx/error.log --lock-path=/opt/var/lock/nginx.lock --pid-path=/opt/var/run/nginx.pid --modules-path=/opt/lib/nginx --http-client-body-temp-path=/opt/var/lib/nginx/body --http-fastcgi-temp-path=/opt/var/lib/nginx/fastcgi --http-proxy-temp-path=/opt/var/lib/nginx/proxy --http-scgi-temp-path=/opt/var/lib/nginx/scgi --http-uwsgi-temp-path=/opt/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-http_log_module --without-http_upstream_zone_module --without-stream_upstream_zone_module --with-http_addition_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_mp4_module --with-http_random_index_module --with-http_secure_link_module --with-http_sub_module --with-http_xslt_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-stream=dynamic --with-stream_log_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-stream_proxy_module --with-stream_realip_module --add-dynamic-module=/home/baz/entstbl/Entware/build_dir/target-mipsel_mips32r2_glibc-2.27/nginx-1.16.1/modules/http-headers-more-filter --add-dynamic-module=/home/baz/entstbl/Entware/build_dir/target-mipsel_mips32r2_glibc-2.27/nginx-1.16.1/modules/http-auth-pam --add-dynamic-module=/home/baz/entstbl/Entware/build_dir/target-mipsel_mips32r2_glibc-2.27/nginx-1.16.1/modules/http-cache-purge --add-dynamic-module=/home/baz/entstbl/Entware/build_dir/target-mipsel_mips32r2_glibc-2.27/nginx-1.16.1/modules/http-dav-ext --add-dynamic-module=/home/baz/entstbl/Entware/build_dir/target-mipsel_mips32r2_glibc-2.27/nginx-1.16.1/modules/http-ndk --add-dynamic-module=/home/baz/entstbl/Entware/build_dir/target-mipsel_mips32r2_glibc-2.27/nginx-1.16.1/modules/http-echo --add-dynamic-module=/home/baz/entstbl/Entware/build_dir/target-mipsel_mips32r2_glibc-2.27/nginx-1.16.1/modules/http-fancyindex --add-dynamic-module=/home/baz/entstbl/Entware/build_dir/target-mipsel_mips32r2_glibc-2.27/nginx-1.16.1/modules/nchan --add-dynamic-module=/home/baz/entstbl/Entware/build_dir/target-mipsel_mips32r2_glibc-2.27/nginx-1.16.1/modules/http-lua --add-dynamic-module=/home/baz/entstbl/Entware/build_dir/target-mipsel_mips32r2_glibc-2.27/nginx-1.16.1/modules/rtmp --add-dynamic-module=/home/baz/entstbl/Entware/build_dir/target-mipsel_mips32r2_glibc-2.27/nginx-1.16.1/modules/http-uploadprogress --add-dynamic-module=/home/baz/entstbl/Entware/build_dir/target-mipsel_mips32r2_glibc-2.27/nginx-1.16.1/modules/http-upstream-fair --add-dynamic-module=/home/baz/entstbl/Entware/build_dir/target-mipsel_mips32r2_glibc-2.27/nginx-1.16.1/modules/http-subs-filter

 

Шаг 0.5: настройки в веб-интерфейсе. Отключаем доступ к админке через интернет:

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

access.png.a68168bf7c1f458f1ba3189a7c2da4c4.png

настраиваем перенаправление с 80-го порта внешнего интерфейса на другой адрес (в данном случае - 127.0.0.1:8888)

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

reroute.thumb.png.21cd1034df0a5fc5c61e50312561e660.png

Шаг 1: настроить получение сертификата Let's Encrypt для nginx. Настройка проводилась по инструкции на гитхабе проекта Entware (на английском, но наиболее современная; некоторые команды и ссылки в аналогичной инструкции на русском за годы с момента написания успели устареть).

Неизбежные отклонения из-за другого пакета (пакет на базе nginx-extras вместо обычного nginx) и из-за требований для маскировки прокси под TLSv1.3:

во-первых, за неимением какого-либо поднятой на роутере обычной страницы, пришлось методом копирования "привить" от обычного пакета "стандартную заглушку" (html.zip), т.к. в своё время при настройке nginx-extras стандартной заглушки от него я не заметил;

во-вторых, описанные в инструкции настройки, по большей части, проводились не в nginx.conf, а в "/sites-available/default"; изменения для поддержки TLSv1.3 также пришлось внести и в "ssl.conf". По окончании всех шагов, содержимое файла "default" приняло такой вид (комментарии из оригинального файла удалены для краткости, домены - заменены):

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

server {
        listen 127.0.0.1:8888;
        server_name имя.дднс.нет;
        #listen [::]:80 ipv6only=on;
        return 301 https://имя.дднс.нет$request_uri;
    }

server {
        #слушаем на сокете для проксирования
        listen unix:/tmp/post.sock ssl proxy_protocol http2;
        #а так же - по адресу, который mtprotoproxy будет использовать для получения сертификата
        listen 127.0.0.1:8443 ssl http2;
        #отбитые ниже настройки позволяют получать 
        #реальный айпи клиентов вместо айпи/сокета nginx
        #(полезно для логов)
        ##############################
        set_real_ip_from 127.0.0.1;
        set_real_ip_from ::1;
        set_real_ip_from unix:;
        real_ip_header proxy_protocol;
        ##############################
        include ssl.conf;
        resolver 127.0.0.1 [::1];

        location / {
            root /opt/share/nginx/html;
            index index.html index.htm;
        }

        location ^~ /.well-known {
            allow all;
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
}

 

а файла "ssl.conf" - такой:

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

ssl_certificate /opt/etc/nginx/certs/имя.дднс.нет/fullchain.pem;
ssl_certificate_key /opt/etc/nginx/certs/имя.дднс.нет/privkey.pem;
ssl_trusted_certificate /opt/etc/nginx/certs/имя.дднс.нет/chain.pem;
ssl_ciphers 'TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
ssl_dhparam /opt/etc/nginx/dhparams.pem;
#ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_protocols TLSv1.3 TLSv1.2;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_stapling on;
ssl_stapling_verify on;
ssl_ecdh_curve auto;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; always";

 

сертификат при этом запрашивался следующей командой:

bash ./dehydrated --domain имя.дднс.нет --ocsp -a rsa -t http-01 --cron

Шаг 2: Настраиваем config.py у mtprotoproxy для работы с фронтендом:

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

PORT = 3257

# name -> secret (32 hex chars)
# дефолтные имена и секреты из неправленного конфига
USERS = {
    "tg":  "00000000000000000000000000000000",
    "tg2": "0123456789abcdef0123456789abcdef"
}

# Tag for advertising, obtainable from @MTProxybot
# AD_TAG = "3c09c680b76ee91a4c25ad51f742267d"
# Быстрый режим с упрощённым шифрованием - отключен;
# при желании/необходимости - можно вариант False закомментировать
# и раскомментировать вариант True
FAST_MODE = False
#FAST_MODE = True
# Включаем поддержку работы с фронтэндом
PROXY_PROTOCOL = True
# Makes the proxy harder to detect
# Can be incompatible with very old clients
SECURE_ONLY = True
# Makes the proxy even more hard to detect
# Compatible only with the recent clients
# TLS_ONLY = True
TLS_DOMAIN = "google.com"
MASK_HOST = "127.0.0.1"
MASK_PORT = 8443
# указываем слушающий юникс-сокет во временной памяти роутера
LISTEN_UNIX_SOCK = "/tmp/telegraph.sock"
# заставляем прокси слушать только на локалхосте, чтобы не 
# светить в других интерфейсах
LISTEN_ADDR_IPV4 = "127.0.0.1"
LISTEN_ADDR_IPV6 = "::1"

 

далее - в папке /opt/etc/nginx создаём файл "stream.conf" с примерно таким содержимым:

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

stream {
#       proxy_protocol on;
        resolver 127.0.0.1 [::1];
#       proxy_ssl_server_name on;

        upstream mtproto_tls {
                server unix:/tmp/telegraph.sock;
        }
        upstream web {
                server unix:/tmp/post.sock;
        }
        upstream mtproto_dd {
                server unix:/tmp/telegraph.sock;
                #server 127.0.0.1:3257;
                #server [::1]:3257;
        }

        map $ssl_preread_server_name $name {
                www.google.com mtproto_tls;
                "" mtproto_dd;
                имя.дднс.нет web;
        }

        server {
                listen 443 so_keepalive=on;
                listen [::]:443 ipv6only=on so_keepalive=on;
                proxy_pass $name;
                proxy_protocol on;
                proxy_ssl_server_name on;
                tcp_nodelay on;
                proxy_socket_keepalive on;
                ssl_preread on;
        }
}

 

и прописываем строчку "include stream.conf" в конфиге "nginx.conf" перед/после блока http, а в шапке конфига - прописываем

load_module "/opt/lib/nginx/ngx_stream_module.so";

 пример рабочего "nginx.conf":

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

user nobody;
worker_processes auto;
worker_cpu_affinity auto;
worker_priority 5;
pid /opt/var/run/nginx.pid;
include /opt/etc/nginx/modules-enabled/*.conf;
load_module "/opt/lib/nginx/ngx_stream_module.so";
lock_file "/tmp/nginx.lock";

events {
        use epoll;
        worker_connections 768;
        multi_accept on;
        accept_mutex on;
}


http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;

        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

        include /opt/etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # SSL Settings
        ##

        #ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        #ssl_prefer_server_ciphers on;

        ##
        # Logging Settings
        ##
#       log_format combined '$proxy_protocol_addr - $remote_user [$time_local] '
#                           '"$request" $status $body_bytes_sent '
#                           '"$http_referer" "$http_user_agent"';
        access_log /opt/var/log/nginx/access.log;
        error_log /opt/var/log/nginx/error.log;

        ##
        # Gzip Settings
        ##

        gzip on;
        gzip_disable "msie6";

        #gzip_vary on;
        gzip_static on;
        gzip_proxied any;
        gzip_comp_level 1;
        gzip_buffers 16 8k;
        gzip_http_version 1.1;
        gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

        include /opt/etc/nginx/conf.d/*.conf;
        include /opt/etc/nginx/sites-enabled/*;
}

include /opt/etc/nginx/stream.conf;

 

после чего - перезагружаем mtprotoproxy и nginx ("/opt/etc/init.d/S80nginx reload")

Эта конфигурация обеспечивает не только работу fake-tls на 443 порту, но также и обеспечивает "обратную совместимость" с более старой версией mtproto (секреты, начинающиеся с "dd"); работает она у меня уже несколько дней, и насколько могу судить - mtprotoproxy за nginx оказался даже более производительным, чем наоборот, как понимаю - в первую очередь из-за использования юникс-сокета во временной памяти: по "оценкам на глаз по пингу в Телеграмме" - где-то в полтора-два раза быстрее.

Однако хочу сразу заметить, что всё описанное выше не претендует на "идеальность" или "полноту", и если имеются какие-то замечания и исправления от опытных специалистов - готов внести исправления и уточнения.

P.S.: минутка зависти к владельцам роутеров с поддержкой ядра линукса 4.9 - на них, скорее всего, в ядре включен REUSEPORT, а значит - с Debian вместо Entware можно было бы добиться большей производительности и nginx, и самого mtprotoproxy.py...

Опубликовано
1 час назад, UweStrich сказал:

Эта конфигурация обеспечивает не только работу fake-tls на 443 порту, но также и обеспечивает "обратную совместимость" с более старой версией mtproto (секреты, начинающиеся с "dd"); работает она у меня уже несколько дней, и насколько могу судить - mtprotoproxy за nginx оказался даже более производительным, чем наоборот, как понимаю - в первую очередь из-за использования юникс-сокета во временной памяти: по "оценкам на глаз по пингу в Телеграмме" - где-то в полтора-два раза быстрее.

У mtprotoproxy завышенное время пинга без подключения - это особенность работы.

После подключения пинг уменьшается.

https://github.com/alexbers/mtprotoproxy/issues/34

А nginx фронт это и делает.

  • 4 месяца спустя...
Опубликовано (изменено)

uvloop вошел в Entware.

Так что теперь просто opkg install python3-uvloop

и мы получаем ускорение.

Изменено пользователем Kirya
Опубликовано
2 минуты назад, TheBB сказал:

python3-crypt* тоже )))

Это ещё в прошлом году было добавлено в инструкцию по установке :)))

Вот как бы снова получить права на редактирование, чтобы подправить ?

по

Опубликовано
9 минут назад, Kirya сказал:

Это ещё в прошлом году было добавлено в инструкцию по установке :)))

не, не тестовые, а в репах, готовимся к удалению(?) ру2

10 минут назад, Kirya сказал:

Вот как бы снова получить права на редактирование, чтобы подправить ?

эт к администрации

Опубликовано
3 минуты назад, TheBB сказал:

не, не тестовые, а в репах, готовимся к удалению(?) ру2

эт к администрации

Ух ты, python3-cryptodome я сходу и не заметил.

Сейчас затестим.

И пойду писать админам...

Опубликовано
On 2/3/2020 at 10:31 PM, Kirya said:

uvloop вошел в Entware.

Так что теперь просто opkg install python3-uvloop

и мы получаем ускорение.

Сделал так

~ # opkg install python3-uvloop
Installing python3-uvloop (0.14.0-1) to root...
Downloading http://bin.entware.net/mipselsf-k3.4/python3-uvloop_0.14.0-1_mipsel-3.4.ipk
Configuring python3-uvloop.
~ #


при старте мтпрото получаю ошибку. Удаление python3-uvloop не помогает

 

Traceback (most recent call last):
  File "/opt/root/mtprotoproxy/mtprotoproxy.py", line 1340, in <module>
    main()
  File "/opt/root/mtprotoproxy/mtprotoproxy.py", line 1287, in main
    try_setup_uvloop()
  File "/opt/root/mtprotoproxy/mtprotoproxy.py", line 171, in try_setup_uvloop
    asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
AttributeError: module 'uvloop' has no attribute 'EventLoopPolicy'

 

Опубликовано

1. Почему-то у Вас не стартует uvloop

2. pip3 list что показывает по установленным питоновским модулям ?

3. opkg remove почему-то при удалении за собой оставляет неочищенными /opt/lib/python3.8/site-packages/uvloop и uvloop-0.14.0-py3.8.egg-info

Для корректного удаления их нужно тоже грохнуть.

4. Странные у Вас номера строк mtprotoproxy.

Вы давно его обновляли ?

  • 3 месяца спустя...
Опубликовано

Господа! Можно для тех, кто в танке...На сегодня (28.05.2020) - это работающий механизм? И на сером IP через KeenDNS?

Опубликовано

Для серых IP с KeenDNS доменами решение на данный момент не найдено.

На прямом ip всё работает на ура.

Опубликовано
В 03.02.2020 в 22:56, Kirya сказал:

Ух ты, python3-cryptodome я сходу и не заметил.

Сейчас затестим.

И как тесты прошли? uvloop все-таки лучше?

Опубликовано
16 минут назад, DennoN сказал:

И как тесты прошли? uvloop все-таки лучше?

Тест в том сообщении был сравнении python3-cryptodome и python3-cryptography.

Разница оказалась микроскопична.

А uvloop - это замена на более быструю реализацию стандартного асинхронного питоновского сервера.

Это про другое.

  • 5 лет спустя...
  • 3 недели спустя...
Опубликовано

Всем добрый день!

По приложенной инструкции удалось запустить прокси сервер. Однако такой момент. Мне необходимо весь трафик приходящий на MTproto-сервер перенаправлять через интерфейс с Wireguard соединением, а не через соединение с провайдером. Как это организовать?

Заранее благодарю.

Опубликовано

Тоже все поставил и запустил по предложенной инструкции - большой респект автору!

Нужный трафик завернул через SSTP куда надо - вроде как работает.

Смущает только запись в логе out.txt Failed to connect to MASK_HOST (Errno -3) Temporary failure in name resolution

Причем от выбранного домена в config.py это не зависит.

Проверяю nslookupом - ip выбранного домена выдается.

Читал на гите у автора скрипта - вроде как это связано с версией TLS домена выбранного в config.py - даже дописал нужный фикс в mtprotoproxy.py - но Failed to connect все равно присутствует((

Опубликовано
17 часов назад, Gonzik сказал:

@DeadClaus в разделе "Маршрутизация", добавьте маршрут до нужного сервера и там же выберите нужный интерфейс.

Не работает. Таким образом будет маршрутизироваться трафик до определённого сервера через указанный интерфейс. Может я что-то не понимаю и делаю не так... Мне необходимо весь трафик, приходящий на MTProto-сервер, запущенный на Keenetic'е, через интерфейс с Wiregurad-соединением.

Опубликовано (изменено)

Тема еще актуальна? Короче, не подключается к прокси. Всё перепроверил. Порты открыты. IP статика. TLS менял на другой. Какие логи нужны? Вижу только это 

Цитата

 

New IPs:
192.168.1.140

tg: tg://proxy?server=*.*.*.*&port=2580&secret=ключ
The default TLS_DOMAIN www.google.com is used, this is not recommended
You should use random existing domain instead, bad clients are proxied there
Warning: one or more default settings detected
Found uvloop, using it for optimal performance
Got cert from the MASK_HOST www.google.com, its length is 2656

 


 

Изменено пользователем dronix27
Опубликовано
8 часов назад, DeadClaus сказал:

Не работает. Таким образом будет маршрутизироваться трафик до определённого сервера через указанный интерфейс. Может я что-то не понимаю и делаю не так... Мне необходимо весь трафик, приходящий на MTProto-сервер, запущенный на Keenetic'е, через интерфейс с Wiregurad-соединением.

Исходник надо править, если просто, то во все "asyncio.open_connection" надо добавить агрумент "local_addr". И передать локальный ip с нужного интерфейса. Либо через опции подключения к socks серверу (поднятому в entware, но это немного криво).

У альтернативных серверов не во всех реализована такая опция (насколько помню). Проще поднять http/socks сервер (dante (socksd) / tinyproxy и т.п). Если такое подходит.
 

Опубликовано (изменено)

 

 

Случайно увидел тему.. Вчера только себе поставил telemt на роутер.
Вроде не особо сложно вышло
https://github.com/telemt/telemt


Если упрощенно, то инструкция такая:
1) Делаем папку в Entware, где это будет храниться и переходим в неё

mkdir -p /opt/etc/telemt && cd /opt/etc/telemt


2) Выбираем свою архитектуру в релизах на гитхабе. У меня aarch64, поэтому качаю вот это

wget -O telemt.tar.gz https://github.com/telemt/telemt/releases/latest/download/telemt-aarch64-linux-musl.tar.gz

3) Распаковываем и даём права бинарнику

tar -xzf telemt.tar.gz
chmod +x telemt

4) Создаем в этой же директории рядом с бинарником конфиг config.toml (желательно в UTF-8)


конфиг config.toml такой 

# === Базовые настройки ===
[general]
# ВАЖНО: Вставь сюда свой тег от @MTProxybot!
ad_tag = "babababababababababababababababa" 
use_middle_proxy = true

[general.modes]
classic = true
secure = true
tls = true

# === Настройки сервера (Входящие подключения) ===
[server]
port = 6666  # Порт, к которому будут подключаться твои клиенты (по белому IP / KeenDNS)
# Интерфейс, который смотрит в интернет для приема клиентов
# Если белый IP прямо на роутере, можно оставить 0.0.0.0
listen_addr_ipv4 = "0.0.0.0"

[server.api]
enabled = false # API тебе на роутере вряд ли нужно, отключаем для экономии памяти

# === Обход блокировок ===
[censorship]
# Домен для маскировки (fake-tls)
tls_domain = "petrovich.ru"

# === Пользователи (Секреты) ===
[access.users]
# Формат: "имя" = "32-символьный Hex секрет"
# Секрет можешь взять тот, что сгенерировал @MTProxybot
user1 = "babababababababababababababababa"


# === ИСХОДЯЩАЯ МАРШРУТИЗАЦИЯ (То самое пускание в AWG/VPN) ===
[[upstreams]]
type = "direct"
weight = 1
# Строго привязываем исходящие TCP соединения к интерфейсу AWG/VPN. 
# ВПИШИ СЮДА СВОЙ ИНТЕРФЕЙС! Например, "nwg0" (AmneziaWG/Wireguard)
interface = "nwg0" 

[general.links]
public_host = "ТУТ_IP_или_Keenetic/Netcraze_домен"
public_port = 6666


5) Для автозапуска делаем файлик например /opt/etc/init.d/S99telemt
примерно такого содержания
 

#!/bin/sh

ENABLED=yes

PROG=/opt/etc/telemt/telemt
CONF=/opt/etc/telemt/config.toml
DESC="Telemt MTProxy"

. /opt/etc/init.d/rc.func

start() {
    echo -n "Starting $DESC... "
    if [ "$ENABLED" != "yes" ]; then
        echo "disabled."
        return
    fi
    start-stop-daemon -S -b -x $PROG -- $CONF > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        echo "done."
    else
        echo "failed."
    fi
}

stop() {
    echo -n "Stopping $DESC... "
    start-stop-daemon -K -x $PROG
    echo "done."
}

status() {
    echo -n "Checking $DESC... "
    if [ -n "$(pidof $PROG)" ]; then
        echo "alive."
    else
        echo "dead."
    fi
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        sleep 2
        start
        ;;
    status)
        status
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|status}"
        exit 1
        ;;
esac

6) Выдаём права файлу автозапуска

chmod +x /opt/etc/init.d/S99telemt

 

7) В идеале сжать бинарник, чтобы он весил в моём случае вместо 12Мб около 3Мб

opkg update
opkg install upx
upx --best /opt/etc/telemt/telemt

и можно удалить после этого upx
opkg remove upx

 😎 выдаем права бинарнику ещё раз на всякий случай

chmod +x telemt


9) Дальше по дефолту запуск/стоп/рестарт/статус

/opt/etc/init.d/S99telemt start

/opt/etc/init.d/S99telemt stop

/opt/etc/init.d/S99telemt restart

/opt/etc/init.d/S99telemt status

10) В роутере настроить проброс порта примерно таким образом (на замазанном - мой провайдер)

 image.thumb.png.1cd95e8b1e6007c5c305a04f85aad5ac.png

Изменено пользователем KEIJ

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   2 пользователя онлайн

×
×
  • Создать...

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

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