Google и его порочные практики

Не люблю я, когда всякие сервисы собирают персональную информацию. Но есть у меня некоторое количество аккаунтов корпорации добра (уже нет) и время от времени гугл их блочит - ну, например, симка стухла. Всё! Аккаунт немедленно блокируется на основании "необычной активности". Я уже добавил это в смысловой ряд к "борьбе с терроризмом" и "защите детей" - метод тот же, под громким лозунгом предполагающим ОПАСНОСТЕ в жопу вводится швабра.
Следите за руками:
1. Мы зарегистрировали необычную активность в вашем аккаунте и НЕ КОРЫСТИ РАДИ А БЕЗОПАСНОСТИ БЛЯ его заблокировали. Хотите разблокировать?
2. Хотите, да? Ура! Введите ваш пароль. Ага, а теперь одноразовый код из Google Authenticator, какой вы молодец что им пользуетесь...
3. Да! Это вы! Мы очень вам рады. Но знаете, пс-с-с... мы тут недавно зарегистрировали НЕОБЫЧНУЮ АКТИВНОСТЬ. Так что введите новый пароль.
4. Отличный пароль! Но, НЕОБЫЧНАЯ АКТИВНОСТЬ, сами понимаете... так что мы НА ВСЯКИЙ СЛУЧАЙ сбросили все 2FA и пароли приложений.
5. Хотите добавить 2FA и пароли? ПАААДТВЕРДИТЕ ВАШ НОМЕР ТЕЛЕФОНА!

Напоминаю всем читателям. Любой сервис, идентифицирующий вас по некоему уникальному идентификатору, будет торговать вашими данными так, словно завтра никогда не наступит. А в случае с всепоглощающей инфраструктурой всяких гигантов, вроде Google и Facebook - они еще и держат в заложниках ваши данные, и в любой момент, ничего не объясняя, могут их заблокировать, удалить, поменять условия использования, и многое-многое другое.
"Облака" - это просто красивое слово. Нет облаков. Есть чужие компьютеры.

Про цифровую безопасность

Опсосы отслеживают перемещения на уровне регистрации сим-карты. Милые будни цифрового концлагеря.

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

Кому-нибудь тут еще интересны мои посты про наращивание бронетазика на жопе?

Beeline домашний интернет скурвился окончательно

У Билайна было много косяков за шесть лет использования. Сначала это был L2TP, который на роутерах настраивался с таким уровнем церебрального секса, что проще было бы просто воткнуть провод в комп. Затем это был IPoE, который подключался 10 минут, привязываясь к MAC-адресу устройства, и отвратительно работающий в nix-системах. Их техподдержка, с которой нельзя связаться никак иначе, кроме как по телефону - и, конечно, мой звонок очень важен для них. О-о-очень. Техподдержка через чат в личном кабинете? Пфф, ишь чего захотел!
Ну и пользоваться google из-под билайна нельзя, если только не хочешь решать капчу каждый запрос. Проблема существует давно и никого не волнует.
Все это компенсировалось двумя вещами.
Первая - соотношение цена\качество. Билайн у меня самый дешевый провайдер, который дает полнодуплексные 100 мбит, при этом надежность - чуть ли не 99.999% аптайма в год.
Вторая - динамический белый IP-адрес. Который без смены оборудования менялся всего лишь пару раз.
Но, увы-увы, сегодня я обнаружил что все VPNы до моего компа упали, веб-сервер недоступен, а адрес нынче выдается из диапазона Carrier Grade NAT - то есть, я потерял оба "компенсатора". Какой толк в полнодуплексном 100мбит, если воспользоваться "на отдачу" им нельзя?
Так что билайн теперь перешел в категорию "провайдеров для самых непритязательных". Жалко, но что поделать. Буду теперь искать другого.

Собственный репозиторий F-Droid

У меня (и у всей семьи, как следствие) телефоны не используют гуглы и рутованы. Но, к сожалению, моя семья использует омерзительное поделие фейсбука - WhatsApp, а оно навязывает свое анальное рабство, принуждая пользователя постоянно обновляться (и нет, оно делает это вовсе не потому что сервера меняют протокол. У меня несколько лет подряд работал мод с 4pda, где можно было прям в приложении написать цифирь от актуальной версии приложения - и все работало). Да и есть некоторое другое количество софта, которое бы мне хотелось у них обновлять, вроде VPN-клиентов.
Стал поднимать репозиторий F-Droid. Сначала натолкнулся на статью, типа, используйте repomaker, это стильно, модно, молодежно, а старый fdroidserver это грустно и консольно. Ну, думаю, попробую модно-молодежно...
Сначала мне пришлось скомпилировать питон 3.6 - на версиях старше в репозиториях этого repomaker нет. Потом оказалось что он толком не запускается. Но запустил - а он слушает только на 127.0.0.1 и нет никаких указаний, как бы его заставить слушать на другом адресе. Пробросил порт через SSH, потестить... работает. Стильно, модно, молодежно, кидаешь туда APKшки и всякое прочее, и норм. Но что-то много секса, да и софт какой-то неактуальный. Полез на форумы.
Оказалось, что repomaker слишком сложно поддерживать и переносить на актуальные версии питона, джанги и прочей хрени что он качает - а поэтому пользователи могут страдать самостоятельно.
Хорошо еще, что fdroidserver упомянули. По нему нашел нормальную инструкцию в вики F-Droid
Горько порыдал, потому что на repomaker я убил полдня...
А fdroidserver ставится вот так:

После чего копируем содержимое папки repo на веб-сервер, на который будут цепляться клиенты f-droid
Все! Единственное что мне не понравилось - полгигабайта зависимостей у fdroidserver, но никто ж не мешает его собрать (а и то и сразу скачать) в каком-нибудь докере.

Вывод: ну их нахрен, модные и молодежные технологии...

Напрягает меня в вакансиях...

...слово "стрессоустойчивость".
Предполагается ведь, что "стрессоустойчивость" - это способность работать, работать и работать несмотря ни на что, аки розовый заяц-энерджайзер.
Но вот какая штука - усталость-то от постоянного стресса никуда не девается. Работа-то получается на износ, вечная гонка между вашей регенерацией и условиями окружающей среды.
"Стрессоустойчивость", вроде, всеми воспринимается как должное. А вот "регенерация"?
"Требуется кандидат, обязательное требование - высокая регенерация". Уже попахивает BDSM :)

Вечное сияние чистого Firefox

Время от времени мне нужно использовать браузер в его "первозданном" виде. Для захода на долбанутые сайты со скриптамии, сделанными левым полужопием индусского студента и тому подобного. Бывает, в общем, всякое.
Итак, метода: берется Firefox Portable от PortableApps. К файлу Firefox Portable кидается батник:

Этот батник очищает профиль от всего, кроме:
1. Установленных и настроенных расширений
2. Настроенных userchrome-файлов
3. Настроенных опций user.js

Разбирайте, кому надо.

Про размер Hello World в C и Go

Понадобилась мне махонькая и очень быстрая прожка, которая бы перерабатывала строку на входе и кидала ее в другую программу. Я бы написал ее на обычном CMD, но - чтобы скрыть консольное окно, нужно запускать еще одну программу, лишний шаг :)
Для начала взял Go - шустрый, компилируемый - вроде ништяк. Взял обычный код hello world с их сайта, и решительно его скомпилировал.
После чего выпал в осадок: скомилированная программа из трех коротких строчек весила 2.05 мегабайта.
Полез искать ответ на вопрос - "а не дохрена ли?". Прошерстил несколько интересных тредов, включая открытый Issue на GitHub... и ответ: "не, нормально, у C так же, если статически линковать"
Думаю - да ладно? Дай-ка проверю.
Скачал MinGW, положил аналогичный Hello World, скомпилировал. Программа весит 47кб... но в зависимостях у нее Kernel32.dll (747кб) и msvcrt.dll (623кб). Как их статически собрать под MinGW я не знаю, да и пофиг, для примерной оценки подойдет.
Hello World на Go, скомпилированный без дополнений для дебага ( -ldflags="-s -w" ) - 1.46Мб
Hello World на C, с зависимостями - 47 + 747 + 623 = 1.42Мб
Таки не соврали, одно и то же получается :)
Так что я плюнул и написал-таки нужную мне прожку на CMD

И, кстати, один любопытный факт найденный в ходе исследований. Проги на Go версии старше 1.12 компилируются с приоритетом на минимальное время запуска, что несколько увеличивает их размер. Но - UPX никто не отменял :)

UPD, вынесенное из слов yaun - Обе этих библиотеки для C входят в состав любой Винды которая не рассыпается от времени, так что статическая линковка для kernel32.dll и msvcrt.dll - неразумное излишество.

Установка форума FlaskBB

Недавно коллега hvostat_hvostat искал для кого-то из знакомых форум, и даже обратился ко мне за советом. Форумов я ранее не поднимал, поэтому стали искать вместе. PHPBB был сброшен со счетов сразу, душа требовала чего-то не связанного с PHP. В итоге нашли FlaskBB, заценили демку - решили что круто.
Хвостат пошел ставить... и через некоторое время пришел ругаться на кривой свободный софт, который нифига не устанавливается, и требует множества половых взаимодействий, где непонятно кто в активной позиции.
Мне стало обидно за державу, и я пошел устанавливать это все добро сам.
Получил тот же результат что и Хвостат.
В этот момент я осознал: это личное...

Печаль в том, что документация на сайте несколько не соответствует реальному положению дел. Одна инструкция датируется 2013 годом, другая 2017, но чтобы оно заработало - нужны обе и еще порыскать по сети. Не для того чтобы найти инструкцию - в сети только такие же горемыки, которые не могут поставить этот форум. А для того чтобы найти Python и Flask-специфические особенности.
Итоговая инструкция - под катом:
Collapse )

Надкусил OpenVPN 2.5-beta

Из приятных ништяков:
1. Поддержка WinTUN (tun-драйвер от разработчиков WireGuard)
Чтобы включить его, нужно добавить в конфиг параметр windows-driver wintun
Плюсы:
латентность "напрямую" - 3 мс
латентность "через windows-tap6" - 5мс (стандартный драйвер OpenVPN)
латентность "через WinTUN" - 4мс
iperf3:
"через windows-tap6" - 193Mb\s
"через winTUN" - 253Mb\s

2. TLS-AUTH-V2, который позволяет использовать разные ключи tls-auth для клиентов.

А вот с Ed25519 - облом. Оно поддерживается только в OpenSSL 1.1.1, а в OpenSSL 1.1.0 (вокруг которого OpenVPN 2.5 и собран) есть только X25519 - а он не подходит для подписи сертификатов. Видимо, ed25519 увидим только в OpenVPN 2.6
С другой стороны, при клиент-серверном tls-auth можно и NIST-кривые использовать - все равно обмен зашифрован будет :)
OpenVPN без tls-crypt:

OpenVPN c tls-crypt:


И да. Проверка показала, что OpenVPN с tls-crypt все равно ловится продвинутыми DPI-ками, но иногда помогает нестандартный порт.
А совсем против DPI помогает obfs-proxy или udp-2-raw tunnel.

Недостатки WireGuard

1. WireGuard разрешает DNS-имя один раз: когда подключается в первый раз. Чтобы он уточнил, не изменилось ли это имя, его надо перезапустить, целиком.
2. WireGuard не позволяет указывать альтернативные точки подключения. То есть, у одного сервера может быть только один IP. Не знаю как он поведет себя в случае если DNS-имени соотвествует несколько адресов, но полагаю что возьмет первый и не будет заморачиваться.
3. WireGuard не позволяет построить сеть, в которой будет несколько равноправных серверов, которые бы перехватывали общую маршрутизацию друг у друга в случае выхода одного из строя. Т.е конструкция в конфиге клиента:

[Peer] # Сервер-1
AllowedIPs = 172.26.1.0/24
Endpoint = server1.tech:51844

[Peer] # Сервер-2
AllowedIPs = 172.26.1.0/24
Endpoint = server2.tech:51844

Работать не будет. Клиент будет пытаться маршрутизироваться через последний такой сервер в конфиге, и да, подключение к сервер-1 будет выполнено, но достучаться до него будет нельзя. Так же, естественно, нельзя будет достучаться до клиентов которые маршрутизируются через другой сервер в этой же сети. Логично, в принципе... но я так надеялся! :)
4. Виндовый клиент может одновременно подключаться только к одному конфигу. Два сразу - индийская национальная изба. Скорость работы виндового клиента сильно зависит от количества пиров внутри конфига. Я забацал 250, и сделал на винде сервер WireGuard - работает, и вполне неплохо, но загружается почти минуту, зохавав одно ядро только под себя.

Итого: под fullmesh-сеть по прежнему нет ничего лучше tinc.
Wireguard же чисто утилита построения туннелей для тех, кому не нравится IPsec. Ну и VPN с переадресацией всего трафика на мобилке из него тоже неплохой.