sis

Схемы взаимодействия подсистем Linux и профилирования ПО и просто полезное

sis

Чиним сломанный SSL из-за протухшего корневого сертификата на OS X Mojave/Catalina

В связи с вчерашней проблемой, связанной с устареванием корневого сертификата и криворукостью некоторых, куча народу столкнулась с тем, что перестали работать утилиты вроде curl или стало нельзя зайти на некоторые сайты.

Для Linux решение уже и так есть по ссылке выше, для прочих программистов описываю решение здесь.
Если у вас curl сейчас выдаёт такое при запросе к любому сайту с SSL:

curl: (60) SSL certificate problem: certificate has expired
More details here: https://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
of Certificate Authority (CA) public keys (CA certs). If the default
bundle file isn't adequate, you can specify an alternate file
using the --cacert option.



Для начала проверяем что у нас используется:

openssl version -a
LibreSSL 2.6.5
built on: date not available
platform: information not available
options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx)
compiler: information not available
OPENSSLDIR: "/private/etc/ssl"



Нужно заменить LibreSSL на OpenSSL где этой проблемы нет, поскольку там правильно реализована проверка сертификатов.

Для начала считаем, что скорее всего brew у вас уже стоит. :)


brew update && brew upgrade # на всякий, многие забывают обновляться
brew install openssl # это если у вас вдруг его нет
brew link --force openssl
export PKG_CONFIG_PATH="/usr/local/opt/openssl@1.1/lib/pkgconfig"
echo 'export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"' >> ~/.zshrc # любители Bash и так знают что делать



Далее запускаем новый шелл и проверяем:

openssl version -a
OpenSSL 1.1.1g 21 Apr 2020
built on: Tue Apr 21 13:28:37 2020 UTC
platform: darwin64-x86_64-cc
options: bn(64,64) rc4(16x,int) des(int) idea(int) blowfish(ptr)
compiler: clang -fPIC -arch x86_64 -O3 -Wall -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -D_REENTRANT -DNDEBUG
OPENSSLDIR: "/usr/local/etc/openssl@1.1"
ENGINESDIR: "/usr/local/Cellar/openssl@1.1/1.1.1g/lib/engines-1.1"


This is crosspost from https://techquisitor.dreamwidth.org/326570.html
sis

Чиним работу Avahi/Bonjour в локальной сети с собственным резолвером DNS

Крайне презабавную проблему недавно решил у себя. На полноценную статью не тянет. Так, заметка для младоадминов.

Долгое время было лень глянуть, с чего у меня в локальной сети крайне странно отдавались устройства с включённым Zeroconf (то есть с Avahi/Bonjour на борту). Особенность до кучи была в том, что Avahi по умолчанию работает с доменами .local, про что до сих пор не знают многие. Опытные админы уже явно приготовятся кидать в меня что-нибудь тяжёлое, но погодите возмущаться. Лучше загляните в RFC6762, который с 2013 года считается черновым, но уже крайне активно используется как известными вендорами, так и отдельными разработчиками (привет Леннарту Потеррингу, например). Более того, даннный псевдодомен первого уровня уже не рекомендовалсяк использованию в Windows Server 2003. Так что в настоящий момент данный TLD отдан под использование в сервисах mDNS.

Впрочем, отвлёкся. Итак, в чём странность?

А вот в этом:

# avahi-browse -ar

= wlp0s20f3 IPv4 Hostname _xbmc-events._udp local
hostname = [hostname.local]
address = [192.168.1.100]
port = [9777]
txt = []
= wlp0s20f3 IPv4 Hostname _xbmc-jsonrpc-h._tcp local
hostname = [hostname.local]
address = [192.168.1.100]
port = [8080]
txt = ["uuid=410d41db-e758-4593-85cf-f4d0f0569a96" "txtvers=1"]

Казалось бы всё хорошо, Avahi корректно отдаёт и получает данные. Как от устройства локального, так и в домашней сети.

Но не тут-то было:

# host hostname
hostname has address 192.168.1.100

# host hostname.local
hostname has address 127.0.0.200


«Что за ерунда?», спросите вы. Ведь хост один и тот же! Более того, если вы попробуете опросить другие устройства с суффиксом .local (в моём случае это были смартфон и планшет) он упорно будет выдавать вам адрес 127.0.0.200.

Но при использовании утилиты dig, всё становится понятным моментально:


;; ANSWER SECTION:
hostname.local. 0 IN A 127.0.0.200

;; Query time: 5 msec
;; SERVER: 192.168.1.1#53(192.168.1.1) <== вот наши источник проблемы


Ответ прилетает от моего резолвера который установлен в роутере.

А разгадка проста. Когда была куцая прошивка от весьма дешманского роутера Xiaomi, просто не мог посмотреть в чём проблема и потому забил. После перепрошивки на что-то не столь убогое, у меня появился полноценный интерфейс с доступом к конфигурационным файлам роутера и там обнаружился всё тот же dnsmasq с пустым конфигурационным файлом.

Решение лежит на поверхности:

# Never forward plain names (without a dot or domain part)
domain-needed

# Never forward addresses in the non-routed address spaces.
bogus-priv

# Add local-only domains here, queries in these domains are answered
# from /etc/hosts or DHCP only
local=/local/

# Set the domain for dnsmasq. this is optional, but if it is set, it
# does the following things.
# 1) Allows DHCP hosts to have fully qualified domain names, as long
# as the domain part matches this setting.
# 2) Sets the "domain" DHCP option thereby potentially setting the
# domain of all systems configured by DHCP
# 3) Provides the domain part for "expand-hosts"
domain=local

Всё, после чего все устройства будут отдавать правильные адреса и будут корректно работать с приложениями Zeroconf использующими.

This is crosspost from https://techquisitor.dreamwidth.org/326155.html
sis

Отключаем обновления до OS X Catalina

Что-то почитав список до сих пор вылезающих проблем в OS X Catalina, принял волевое решение:

sudo softwareupdate --ignore "macOS Catalina"

defaults write com.apple.systempreferences AttentionPrefBundleIDs 0

killall Dock


Теперь только сесурити апдейты на Мохаве. Ну или через релиз обновлюсь, если всё хорошо будет.

This is crosspost from https://techquisitor.dreamwidth.org/325890.html
sis

Резолвинг DNS внутри сплит-туннеля в OS X (Mojave, Catalina)

Попалась на глаза проблема в сабже. В гуях вкладка "DNS" в свойствах VPN-подключение игнорируется, описание домена, который нужно резолвить, и его DNS-сервера в /etc/resolvers/ тоже игнорируется. Проверено на High Sierra, Mojave, Catalina.

По Интернету гуляет инструкция вроде этой, но как выяснилось — неверная. Решение нашёл уважаемый коллега Антон Марков из одного околоадминского чата. Так что передаю слово ему.

Итак, решение:

- создаём директорию /etc/resolver (не /etc/resolvers, как пишет индус!)
- создаём там файлы с именами доменов, которые нужно ресолвить, к примеру, contoso.com
- в файлы пишем как минимум строки вида
nameserver 10.0.0.253
nameserver 10.0.0.252

Индус утверждает, что имена файлов не имеют значения, а внутри принимаются также параметры вида:
domain contoso.com
search_order 1
timeout 5

Я не проверял эти параметры, но как минимум в принятии параметра domain я что-то уже сомневаюсь.

Работа описанного метода проверена на Mojave и Catalina. В недрах инета я встречалось упоминание, что это игнорируется как минимум Mountain Lion.

This is crosspost from https://techquisitor.dreamwidth.org/325432.html
sis

Вытаскиваем докерфайл из образа

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

Решается просто вот этой копипастой:

docker history --no-trunc <IMAGE_ID> | tac | tr -s ' ' | cut -d " " -f 5- | sed 's,^/bin/sh -c #(nop) ,,g' | sed 's,^/bin/sh -c,RUN,g' | sed 's, && ,\n & ,g' | sed 's,\s*[0-9]*[\.]*[0-9]*[kMG]*B\s*$,,g' | head -n -1

Не секретно, просто чтобы легче найти было.

This is crosspost from https://techquisitor.dreamwidth.org/325340.html
umnokot

Не онлайном единым я жив!

Долго не решался написать что-то, но думаю теперь самое время. Тем более, что обещал.

Суть простая. Помимо занятий онлайновых, про которые здесь уже писал, стал посещать себе оффлайновые занятия по математике от проекта popmath.ru. Про них узнал, кажется, из Телеграма года три-три с половиной назад и как-то отложил в закладочки. Чтобы потом заняться, как придёт время. И оно пришло. Несколько месяцев назад таки переборол себя и записался. Аккурат одновременно с курсеровским курсом по Python.

Зачем? Скажу честно – взаимоотношения с данной дисциплиной у меня не просто плохие, а кошмарные. В школе математика мне давалась отвратительно с самых первых классов. Хуже того, все окружающие меня люди делали абсолютно всё, чтобы я её возненавидел звериной, лютой ненавистью на очень долгие годы. Одна из таких вещей – меня ей наказывали, например. За провинности в учёбе, дисциплинарные нарушения и так далее. То есть вы понимаете, что когда все остальные после уроков гуляли там или шли в кино, я сидел и корпел над примерами. Итог такого подхода был печален. Я сбегал с занятий, игнорировал домашки (до кучи, врал родителям), а если всё же попадал на урок, то на плевал в потолок до десятого класса примерно. А на летних каникулах я без конца занимался решением бессмысленных для себя задачек, которые воспринимал исключительно как извращённое унижение. Естественно, забывал про них незамедлительно как урок заканчивался.
В общем, понимания предмета все эти меры мне не добавляли, зато ненависти к – через край. Её было столько, что при одном взгляде на формулы или уравнения и вообще хоть что-то связанное с математикой, у меня просто отключался мозг. К старшим классам школы я реально был в буквальном смысле чистый лист в плане математических знаний. Пока в десятом классе со мной не стала заниматься знакомая наших родителей, преподававшая для классов с усиленной математической подготовкой. За пару лет она вытянула меня на неплохой уровень (для гуманитарного класса), хотя и всё равно тяжко было. Но если б не занятия с ней – так бы и сам себя считал непригодным к оному предмету всю оставшуюся жизнь. Она и же и показала мне, что это не я тупой, а объясняли очень плохо мне, порождая вместо понимания злость.
Теперь всё иначе. В проекте popmath двое преподавателей. Один читает лекции, а второй ведёт семинары. Оба хорошо и понятно объясняют, наглядно визуализируют логику и механику вещей, которые обычно так плохо рассказывают в школе. После них понимаешь, что на самом деле, на школьных занятиях порой страшно переусложняют объяснение местами крайне простых вещей! Да, есть реально мудрёные доказательства, но это уже другой коленкор.

Сейчас, когда я упёрся в непонимание кучи вещей по работе, наконец-то дошло – мой тупик связан именно с отсутствием в моей голове многих математических концепций, матлогики и умения решать задачи в целом. Те, кто говорят, что айтишникам не нужна математика (мол, есть стандартные библиотеки где всё готовое или зачем админам оно, им же не надо ничего такого) – очень-очень заблуждаются!
Начнём с банального – то, как надо размышлять над задачей. Умение отсекать лишнее оно как раз примерно на уроках по математике и закладывается. Приёмы сокращения выражений – очень помогают в программировании. Логика примерно та же. Когда сдавал "Learn to Program: The Fundamentals" невероятно остро ощутил, насколько другое мышление требуется, чтобы решить задачу. У меня порой в буквальном смысле взрывался мозг! Просто те, кто нормально в школе и университете дружили с математикой и физикой немного не догоняют что люди могут думать сильно иначе. И реально не понимают, почему у других с этим возникают сложности. Вот же, всё просто. Да. Просто. Для вас. Потому как вас учили как надо думать. К слову, не так давно на Хабре статья была опубликована, которая как раз этому посвящена. Скомканная на мой взгляд, но лучше чем ничего.

Покамест пробежался по базовым вещам и общей механике процесса. Если говорить о программе, то затронута большая часть школьной программы и где-то до первых курсов непрофильного ВУЗа или же профильного колледжа. Последняя лекция, что у меня была – введение в начала матлогики.
С октября уже планирую заниматься усиленно. То есть, сначала вернусь назад, к самым основам и основательно прорешаю их, а уже потом вернусь снова к уже пройденному, но уже с другим уровнем понимания как, что и зачем. В итоге мне б хотелось куда-нибудь поступить и продолжить своё обучение на ином уровне.
Да, тяжёлый путь выбрал, да ещё и в 36 лет. Но и перспектива не улыбается быть выброшенным на обочину профессиональной карьеры. ИТ-инфраструктуры всё больше усложняются, увы. Требуется понимание много более сложных концептов и подходов. Времена, когда от админов требовалось в основном накатить то, да чуть настроить это – практически прошли и не вернутся. Точно так же, как сначала вымерли сисопы, превратившись в админов. И теперь постепенно вымирают админы, постепенно замещаясь DevOps/SRE.

Смогу ли? Получится ли? Не знаю. Даже страшно, если уж говорить по правде. Но взяться стоит. Иначе куда мне потом идти? Да и в целом мне очень надоело ощущение калеки на костылях. Последнее меня раздражает больше всего. Не знаю с чем сравнить. Примерно как нищий смотрит через окно на праздник жизни внутри богатого дома. Это злит и расстраивает. Но и хочется это, наконец, изменить. Хотя бы честно попытаться во всяком случае. А результат… Да хрен его знает. Посмотрим.

This is crosspost from https://techquisitor.dreamwidth.org/324956.html
angry cat

Я очень редко жалуюсь публично

…но в этот раз моё терпение лопнуло. Скопипащу сюда.

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

Почти полгода назад я решил попробовать заказать что-нибудь для своей PS3, у лавочки под названием Ретробот (я не знаю, как в ВК на них ссылаться, так что дам линком: https://vk.com/retrobot_games). Которые, типа, доставляют картриджи, диски и прочий стафф. Так вот. Очень вас прошу: НИКОГДА, НИ ЗА ЧТО, НИЧЕГО у них не берите!
Я специально заказал не очень дорогую игру, чтобы проверить как они справятся с заказом. Первый же момент, который меня моментально напряг — деньги надо переводить на карточку непонятно кому. То есть, платёжного шлюза у этого "магазина" нет.
Далее, по ходу пьесы они даже не собираются вам что-либо сообщать о статусе заказа.
Они будут вас кормить завтраками, будут молчать до тех пор, пока вы сами уже разве что не с матом и угрозами не начнёте им писать. Только тогда они, наконец, соизволят вам ответить.
Но главная их фишка: они будут вам врать "что по нашей информации такого-то числа вот точно приедет заказ". Наступает этот день и в ответ "ой, у нас задержка" или "ой, Почта России потеряла ваш заказ, мы заказываем заново". И так многократно.

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

Линк на оригинальный пост в группе «8bit old» во Вконтакте. Да, эта лавочка присутствует много где. В том числе на «Авито». Имейте в виду. Шарить обязательно.

This is crosspost from https://techquisitor.dreamwidth.org/324773.html
iam

Sosnooley — это же иммерсив икспирэнс говорили они…

…но лаг, онли фан, ага.

Посмотрев, как умудрялось тормозить с диска интерактивное кинцо от Telltale на моей PlayStation 3, не выдержал и решил в честь первой законченной специализации на Курсере прихватить давно желаемый SSD. С выбором мучиться не стал, для плойки взял Samsung 860 EVO той же ёмкости, что и старый диск. То есть, 500Гб. А большего и не надо, в общем-то.

Плюсы видны невооружённым глазом. Перестал тормозить PS Store, игры устанавливаются заметно быстрее. Ну и сама консоль от состояния нажатия кнопки питания до полной загрузки XMB Menu теперь меньшее время тратит.

А раньше там стоял Seagate Momentus 5400.6. Тормоза не очень удивительны, в общем-то.

This is crosspost from https://techquisitor.dreamwidth.org/324555.html