Loess.ru

having fun

Базовые инструменты для трассировки приложений в Linux

$ strace -e trace=open,access -o strace.log uname

$ strace -e trace=read,write -p <PID>

классы вызовов: file, process, network, signal, ipc, <etc, etc>:

-e trace=network (Trace all the network related system calls.)
-e trace=signal (Trace all signal related system calls.)
-e trace=ipc (Trace all IPC related system calls.)
-e trace=desc (Trace all file descriptor related system calls.)
-e trace=memory (Trace all memory mapping related system calls.)
(https://stackoverflow.com/questions/7482076/how-does-strace-connect-to-an-already-running-process)

Опции strace:
-i — выводить указатель на инструкцию во время выполнения системного вызова;
-k — выводить стек вызовов для отслеживаемого процесса после каждого системного вызова;
-o — выводить всю информацию о системных вызовах не в стандартный поток ошибок, а в файл;
-q — не выводить сообщения о подключении о отключении от процесса;
-qq — не выводить сообщения о завершении работы процесса;
-r — выводить временную метку для каждого системного вызова;
-s — указать максимальный размер выводимой строки, по умолчанию 32;
-t — выводить время суток для каждого вызова;
-tt — добавить микросекунды;
-ttt — добавить микросекунды и количество секунд после начала эпохи Unix;
-T — выводить длительность выполнения системного вызова;
-x — выводить все не ASCI-строки в шестнадцатеричном виде;
-xx — выводить все строки в шестнадцатеричном виде;
-y — выводить пути для файловых дескрипторов;
-yy — выводить информацию о протоколе для файловых дескрипторов;
-c — подсчитывать количество ошибок, вызовов и время выполнения для каждого системного вызова;
-O — добавить определённое количество микросекунд к счетчику времени для каждого вызова;
-S — сортировать информацию выводимую при опции -c. Доступны поля time, calls, name и nothing. По умолчанию используется time;
-w — суммировать время между началом и завершением системного вызова;
-e — позволяет отфильтровать только нужные системные вызовы или события;
-P — отслеживать только системные вызовы, которые касаются указанного пути;
-v — позволяет выводить дополнительную информацию, такую как версии окружения, статистику и так далее;
-b — если указанный системный вызов обнаружен, трассировка прекращается;
-f — отслеживать также дочерние процессы, если они будут созданы;
-ff — если задана опция -o, то для каждого дочернего процесса будет создан отдельный файл с именем имя_файла.pid.
-I — позволяет блокировать реакцию на нажатия Ctrl+C и Ctrl+Z;
-E — добавляет переменную окружения для запускаемой программы;
-p — указывает pid процесса, к которому следует подключиться;
-u — запустить программу, от имени указанного пользователя.

ldd — показывает список совместно используемых библиотек ELFфайла

$ cat ~/script.sh
while inotifywait -e modify \
/var/log/apache2/error.log;
do
tail -1 /var/log/apache2/error.log | \
notify-send "Apache needs love!"
done

incrontab:
Формат заданий:
<путь> <событие> <команда> (с разделением через пробел)

Самые интересные события:
IN_ACCESS — файл был прочитан
IN_ATTRIB — изменились метаданные файла/каталога
IN_MODIFY — файл был изменен
IN_CREATE — файл или каталог был создан в отслеживаемой директории
IN_DELETE — файл или каталог был удален в отслеживаемой директории
IN_DELETE_SELF — отслеживаемый файл или каталог был удален
IN_MOVE — файл был перемещен из отслеживаемого каталога или в него
IN_ALL_EVENTS — все события
В описании команды можно использовать внутренние переменные. Самые полезные:

$@ — полное имя отслеживаемого файла/каталога
$# — относительное имя файла, вызвавшего событие (только при мониторинге каталога)
$% — название события

https://xakep.ru/2011/01/13/54477/ (pdf)

более современные инструменты:
https://github.com/iovisor/bcc/blob/master/docs/tutorial.md
BCC is a toolkit for creating efficient kernel tracing and manipulation programs, and includes several useful tools and examples. It makes use of extended BPF (Berkeley Packet Filters), formally known as eBPF, a new feature that was first added to Linux 3.15. Much of what BCC uses requires Linux 4.1 and above.

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 остаётся очень медленным.

Mikrotik IPSec + Android PSK XAuth

quick and dirty, по мотивам https://wiki.mikrotik.com/wiki/Manual:IP/IPsec :

/ip ipsec peer
add name=mobile passive=yes
/ip ipsec profile
set [ find default=yes ] enc-algorithm=camellia-192,aes-128,3des
/ip ipsec proposal
set [ find default=yes ] enc-algorithms=camellia-192,aes-128-cbc,3des
/ip pool
add name=ipsec ranges=private.ip.range/mask #ip range, "выдаваемый" подключенным клиентам Read More

Arcanum OST


Soundtrack Credits
------------------

Arcanum: Of Steamworks & Magick Obscura
Original Computer Game Soundtrack
Music Composed by Ben Houge

Leonid Keylin, violin I
Kathy Stern, violin II
Vincent Comer, viola
Susan Williams, cello

Evan Buehler, marimba on "Qintarra"
Ben Houge, djembe and rainstick on "Qintarra;"
synthesizer on "The Wheel Clan," "The Void," and "Kerghan's Castle"

Recorded and mixed by Sam Hofstedt and John Burton at Studio X, Seattle, WA.
Percussion overdubs recorded by Mike Caviezel at Sierra Studios, Bellevue, WA.
Synthesizer tracks recorded by Ben Houge at Sierra Studios, Bellevue, WA.
Remixed and digitally edited by Ben Houge and Mike Caviezel.

Soundtrack produced by Ben Houge and Jeff Pobst.

You can read Ben Houge’s notes and comments on the soundtrack here:
http://www.benhouge.com/arcanum.html
Автор даже ноты выложил на своём сайте. Это эпичный альбом, не замеченный никем, кроме почитателей Arcanum.
Arcanum OST Lossless download at
wav http://www.terra-arcanum.com/downloads/arcanum/Arcanum_OST_Lossless.exe
flac cd rip https://rutracker.org/forum/viewtopic.php?t=1531750

Кстати, в 18 году вышла сборка Arcanum multiverse edition. Должна решать все проблемы и делать сочной игру двадцатилетней выдержки.
https://boosty.to/multiverse_team
https://rutracker.org/forum/viewtopic.php?t=5213556