Posted
·
Edited by Kirya Сделал новый скрипт автозапуска с логированием всего.
К тестированию меня сподвигла ситуация, что при наличии подключения IPV6 дома Телеграм отлично работает напрямую по IPV6, но у моего мобильного оператора IPV6 на сети его нет. Гонять же VPN по соте крайне расточительно для аккумулятора.
Также как показала практика, при работе смарта с MTProxy, чем меньше задержка до прокси из сотовой сети, тем меньше расход аккумулятора (но это не точно, и требует доп. проверок и изучения). Также учитывая то, что многие хостеры в РФ ввели у себя запрет на размещение средств обхода блокировок, а у себя дома этому никто не мешает и имея такой прекрасный роутер, как Keenetic я начал исследовать этот вопрос.
Для тестирования была выбрана реализация прокси сервера на Python3 от Александра Берсенёва.
Особенностью работы MTProtoproxy является то, что прокси может работать в двух режимах соедения с серверами телеграмма: напрямую, в режиме эмуляции клиента, и через middle-proxy Телеграмма, как официальная реализация. Отмечу, что тестирование показало, что работа напрямую происходит в полтора раза быстрее и занимает практически в 2 раза меньше памяти, чем через middle-proxy. Однако нужно отметить, что только работа через middle-proxy позволяет пользователям своего прокси подключать рекламный канал (ну а вдруг...)
MTProtoproxy для Entware.
in Вопросы по сборке и настройке Opkg
Posted · Edited by Kirya
Сделал новый скрипт автозапуска с логированием всего.
К тестированию меня сподвигла ситуация, что при наличии подключения IPV6 дома Телеграм отлично работает напрямую по IPV6, но у моего мобильного оператора IPV6 на сети его нет. Гонять же VPN по соте крайне расточительно для аккумулятора.
Также как показала практика, при работе смарта с MTProxy, чем меньше задержка до прокси из сотовой сети, тем меньше расход аккумулятора (но это не точно, и требует доп. проверок и изучения). Также учитывая то, что многие хостеры в РФ ввели у себя запрет на размещение средств обхода блокировок, а у себя дома этому никто не мешает и имея такой прекрасный роутер, как Keenetic я начал исследовать этот вопрос.
Для тестирования была выбрана реализация прокси сервера на Python3 от Александра Берсенёва.
( Статья автора https://habr.com/post/414139/ )
Особенностью работы MTProtoproxy является то, что прокси может работать в двух режимах соедения с серверами телеграмма: напрямую, в режиме эмуляции клиента, и через middle-proxy Телеграмма, как официальная реализация. Отмечу, что тестирование показало, что работа напрямую происходит в полтора раза быстрее и занимает практически в 2 раза меньше памяти, чем через middle-proxy. Однако нужно отметить, что только работа через middle-proxy позволяет пользователям своего прокси подключать рекламный канал (ну а вдруг...)
Для работы должен быть развернут Entware на Вашем оборудовании https://forum.keenetic.net/topic/4299-entware/
Инсталляция.
1. Устанавливаем, если их нет, Python3 и библиотеку Cryptography.
opkg install python3 python3-cryptography
2. Устанавливаем Git, если его нет.
opkg install git git-http
3. Разворачиваем с Git образ MTProtoproxy
git clone -b stable https://github.com/alexbers/mtprotoproxy.git
(Экстремалы могу развернуть и master-ветку, в которую например 01.07.2018 была добавлена также поддержка пакетов переменной длины,
и теперь можно сказать определённо - привет DPI-ям, которые будет пробовать блочить на уровне пакетов mtproxy.
git clone -b master https://github.com/alexbers/mtprotoproxy.git )
4. Переходим к конфигурированию.
cd mtprotoproxy/
Конфигурирование заключается в редактировании файла config.py
1. Генерим секретный ключ подключения к прокси.
(Ставим при необходимости xxd: opkg install xxd)
head -c 16 /dev/urandom | xxd -ps
Можно сгенерить и другими путями, или придумать ключ самому.
Вставляем его в конфиг после "tg":, заменив им нули.
По умолчанию конфиг настроен на работу по двум ключам.
Но их кол-во одновременно работающих ключей можно менять по необходимости, как сократив до одного, так и увеличив.
MTProtoproxy ведёт статистику подключений по каждому ключу.
2. Для увеличения скорости работы рекомендуется добавить опцию к конфиге FAST_MODE = True .
3. При желании подключить рекламный канал или работать именно через слой middle-proxy регистрируем свой прокси у бота @MTProxybot.
(Рекомендация: Лучше всего давать ему имя хоста в доменном, а не в ip формате, особенно при dual stack ipv4-ipv6 подключении)
Получаем у него proxy tag, раскомментируем и вписываем его в конфиге в разделе AD_TAG.
Запускаем для проверки:
python3 mtprotoproxy.py
Постоянный запуск из консоли лучше проводить командой
python3 mtprotoproxy.py >> out.txt &
Тогда прокси уйдёт работать в фон и будет выводить свою статистику раз в 10 минут в файл out.txt.
Небольшой файл для автозагрузки в /etc/init.d с логированием ошибок и выдачей статистики также приложен к сообщению.
S61mtprotoproxy
Для подключения к прокси снаружи не забываем открыть соответсвующий порт в фаерволле Keenetic-a.
Как говорилось ранее для хоста желательно, особенно для ipv4-ipv6 dual stack, иметь доменное имя,
с AAAA и A записями, тогда перадавать ссылку можно будет не ip адресами, а просто хостнеймом
одновременно для ipv4 и ipv6.
Обсуждение работы и поведения лучше всего вести или здесь, или на канале https://t.me/Keenetic_ru
где я тоже присутствую.
Детали работы для опытных.
Mtprotoproxy имеет возможность работать на 4-х библиотеках шифрования.
Встроенной AES, очень медленной, фактически она подходит лишь для тестирования работы python-а,
Cryptography, Pycryptodome и Pycrypto.
Как показали мои синтетические тесты разницы в скорости работы между Cryptography и Pycryptodome
практически нет, но если всё-таки найдутся проблемы, то следует удалить библиотеку python3-cryptography
и поставить тестовый build http://bin.entware.net/mipselsf-k3.4/keenetic/test/python3-pycryptodome_3.7.3-1_mipsel-3.4.ipk
для моделей DSL, LTE, VOX
http://bin.entware.net/mipssf-k3.4/keenetic/test/python3-pycryptodome_3.7.3-1_mips-3.4.ipk