Loess.ru

having fun

Wireguard VPN added to 5.6 kernel

https://www.opennet.ru/opennews/art.shtml?num=52636

Представлен знаковый выпуск VPN WireGuard 1.0.0, который отметил собой поставку компонентов WireGuard в основном составе ядра Linux 5.6 и стабилизацию разработки. Включённый в состав ядра Linux код прошёл дополнительный аудит безопасности, выполненный независимой фирмой, специализирующейся на подобных проверках. Аудит не выявил каких-либо проблем.

Напомним, что VPN WireGuard реализован на основе современных методов шифрования, обеспечивает очень высокую производительность, прост в использовании, лишён усложнений и хорошо зарекомендовал себя в ряде крупных внедрений, обрабатывающих большие объёмы трафика. Проект развивается с 2015 года, прошёл аудит и формальную верификацию применяемых методов шифрования. Поддержка WireGuard уже интегрирована в NetworkManager и systemd, а патчи для ядра входят в базовый состав дистрибутивов Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph и ALT.

Размещённые на сайте проекта результаты тестирования охватывают старую обособленную реализацию WireGuard и отмечены как недостаточно качественные. Со времени проведения тестов код WireGuard и IPsec был дополнительно оптимизирован и теперь работает быстрее. Более полное тестирование, охватывающее интегрированную в ядро реализацию, пока не проведено. Тем не менее, отмечается, что WireGuard в некоторых ситуациях по-прежнему обгоняет IPsec в силу многопоточности, в то время как OpenVPN остаётся очень медленным.

Useful linux network cmds

sudo lsof -i -P -n | grep LISTEN
netstat -tulnp | grep LISTEN

Show iptables nat with packet counters:

iptables -L -t nat -nvx

tcpdump -n -nn -v -i eth0 host 192.168.0.1

conntrack-tools (apt-get install conntrack):

conntrack -L [-j 192.168.0.1]

apache2ctl fullstatus

apache2 -V

python -m SimpleHTTPServer
python -m http.server 8000

ffmpeg+hls picture and audio streaming

Появилась задача — из говна и палок собрать переключение по расписанию
с видеопотока
на картинку+радиопоток
и обратно, и транслировать это в hls.

В первом приближении задача решена так:
cron поочерёдно запускает два скрипта:

killall -9 ffmpeg
find /mnt/ramdisk/ -mindepth 1 -mtime +1 -delete
/usr/bin/ffmpeg -stream_loop -1 -i /path/to/slide.ts \
-re -i http://audio.mp3.ip.address:8000/sample128 -bufsize 1920k -vf scale=w=720:h=576:force_original_aspect_ratio=decrease \
-c:a aac -b:a 128k \
-c:v libx264 -crf 21 -preset veryfast -pix_fmt yuv420p \
-hls_time 4 -hls_list_size 3 -hls_flags delete_segments+discont_start+append_list /mnt/ramdisk/video.m3u8 &>/dev/null &

при этом slide.ts собран ффмпегом из картинки (-i ‘/path/to/image.jpg’), ну просто потому что -i image.jpg работал крайне нестабильно при переключении потоков и вообще не работал в firefox:

/usr/bin/ffmpeg -y -f image2 -pattern_type glob -framerate 25 -i '/path/to/slide.jpg' -an -aspect 16:9 -qscale 2 -g 50 -f mpegts -pix_fmt yuv420p -r 25 /path/to/slide.ts

второй скрипт:

killall -9 ffmpeg
find /mnt/ramdisk/ -mindepth 1 -mtime +1 -delete

/usr/bin/ffmpeg -i http://video.mpeg2ts.ip.address:port/stream -bufsize 1920k -vf scale=w=720:h=576:force_original_aspect_ratio=decrease \
-c:a aac -b:a 128k \
-c:v libx264 -crf 21 -preset veryfast \
-hls_time 4 -hls_list_size 3 -hls_flags delete_segments+discont_start+append_list+temp_file /mnt/ramdisk/video.m3u8 &>/dev/null &

Опции для потоков сделаны специально одинаковыми, дабы минимизировать разницу между ними. Вторая строка удаляет лишние ts-файлы, которые остаются после каждого убийства ffmpeg.
Работает как говно, если честно, бывает, циклит ещё раз старые чанки, зато задачу свою выполняет довольно стабильно. Примерно это и требовалось, у меня больше нет желания заниматься экспериментами =@. Если будешь тюнить — имей в виду, что любая опция важна и может покрашить всё к чертям, и заставить браузерный hls-плеер тупить даже в те моменты, когда он тупить не должен.

https://ffmpeg.org/ffmpeg-formats.html#Options-5

Alternate data stream (ads)

В современных файловых системах существует такая особенность, как запись метаданных к любому файлу. При этом не изменяется его содержимое. Называется в разных фс по-разному, в NTFS — Alternate data stream, или ещё один уровень — extended attributes, в Linux-based ФС — xattr, но по сути — это одно и то же.
Например, самое безобидное применение — перед запуском скачанного из интернета бинарника винда показывает предупреждение:

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

Реальность

Пора заводить тег для постов про восприятие, реальность и когнитивность
1) Виртуальные миры — реальны
2) Анил Сет — Реальность, которую мы воспринимаем, — всего лишь галлюцинация [TED]
3) СОЗДАНИЕ ТОННЕЛЕЙ РЕАЛЬНОСТИ
или как мы воспринимаем окружающий мир

Наши модели вселенной и ее восприятие имеют генетические ограничения. Наша ДНК произошла от ДНК приматов. Она до сих пор имеет 98%-е сходство с ДНК шимпанзе и 85%-е — с ДНК южноамериканских паукообразных обезьян.

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

ДНК и производный от нее нейро-сенсорный аппарат создает тоннель реальности [окружающий мир], как он воспринимается данным субъектом. Собаки и кошки видят и ощущают не такой же «тоннель реальности», как приматы. [Отсюда и Закон Хайнлайна: «Никто и никогда еще не мог переупрямить кошку»]. Однако собачьи, кошачьи и обезьяньи тоннели реальности остаются в достаточной степени сходными для того, чтобы между собаками, кошками и приматами легко могли возникать общение и даже дружба.

Змеи живут в гораздо сильнее отличающемся тоннеле реальности. Они, например, видят тепловые волны и, кажется, не видят «объектов». Тот мир, который видит змея, очень похож на спиритический сеанс — во мраке плавают поля «жизненной энергии». Вот почему змея бросится на воздушный шарик, надутый горячим воздухом, если он «вторгнется» на ее территорию. Для змеи тепло воздушного шарика и тепло ноги охотника имеют одно и то же значение: пришел непрошеный гость. В обоих случаях змея будет защищать свою территорию.

Поскольку «тоннель реальности» змеи настолько фундаментально отличается от «тоннелей реальности» млекопитающих, дружба между людьми и змеями случается гораздо реже, чем между людьми и собаками или кошками.

Роберт Уилсон, из книги «Квантовая психология»

Ожирение софта

Спустя ещё два года после «ожирения сайтов» https://loess.ru/ожирение-сайтов/ и ряда катастроф (например, npm и leftpad, M.E.Doc и NotPetya и т.п.), ещё кто-то всё понял:
«Windows 10 takes 30 minutes to update. What could it possibly be doing for that long? That much time is enough to fully format my SSD drive, download a fresh build and install it like 5 times in a row.»
http://tonsky.me/blog/disenchantment/
https://habr.com/post/423889/ (pdf)
деффективный менеджмент и кинопоиск

А вывод прост и очевиден: «не строить софт на базе огромной кучи дерьма, которую поставляют современные инструменты.» А чтобы это делать, надо хорошо учиться и много знать =)

Записки про Win7 и HiveOS

1. Win7 при отключении из розетки имеет тенденцию запускать вместо Win7 «средство восстановления при загрузке», которое, конечно же, не может «справиться с неполадкой» ни в каком режиме. Отключить это ненужное поведение можно набрав в консоли:

bcdedit /set bootstatuspolicy ignoreallfailures

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

2. Для того, чтобы записать образ HiveOS на HDD из-под Windows, придётся потрудиться — ведь HDDRawCopy говорит «Error opening Target: …»
Не поможет ничего, кроме Etcher. Не забудьте включить unsafe mode в настройках =)