Category: компьютеры

Category was added automatically. Read all entries about "компьютеры".

cat-updown

Внезапно торкнуло

Меня внезапно торкнуло.

Вот есть механизм Path MTU Discovery. Типичный случай.

Клиент устанавливает HTTPS-соединение. Сервер начинает слать ему payload с флагом DF (Don't Fragment). Роутер где-то по дороге понимает, что пакет не протиснется через очередное звено маршрута, а фрагментировать пакет низззя потому что DF. Тогда он шлёт серверу ICMP-сообщение "Fragmentation needed" и говорит, мол, "кромсай на пакетики помельче". После чего всё благополучно бегает. Это если совсем на пальцах. И к слову о том, почему не стоит из соображений "безопасности" фильтровать ICMP.

Но тут я внезапно вспомнил, что сейчас уже почти на всех современных сетевых картах есть поддержка TCP Segmentation Offloading (TSO). И в ядре она практически всегда включена по умолчанию.

То есть, если вы натравите какой-нибудь tcpdump / wireshark и иже с ними на сетевой интерфейс и будете изучать исходящий трафик, то "без палева" внезапно увидите там пакетики длиной килобайта по четыре и шосукахарактерно с неправильной контрольной суммой. Это вот как раз оно и есть. Покромсает потом уже сама сетевая карта. И если хочется узреть "настоящую" длину кадра и контрольную сумму, то надо либо отключать offloading в драйвере интерфейса, либо снимать пакет с порта коммутатора. Кому интересно, подробнее есть вот здесь.

Но теперь я задумался: класть бороду под одеяло или на одеяло как TSO уживается совместно с Path MTU Discovery? То есть по идее, сетевая плата не сможет обработать входящее ICMP-сообщение "Fragmentation needed", она для этого недостаточно умная. Ядро его, конечно, получит и примет к сведению... но на что это повлияет, когда на кадры режет-то всё равно сетевуха? Этот вопрос отныне не будет давать мне спать ночами.

А задался я им вот почему. Тут шаловливые мои ручки решили "пооптимизировать" один IPSEC-тоннель и выставить на нем MTU=1446, дабы шифрованный туннелированный пакет вместе с оверхедом по-прежнему бы умещался в один кадр на сети провайдера. Но при этом отвалились HTTPS-ресурсы по одну из сторон тоннеля. И как прикажете понимать, это я вляпался в очередной баг ждунипера, или же просто Path MTU Discovery не работает одновременно с TSO?

Посидел бы со снифферами, но на боевой среде отлаживать это достаточно тяжело. Слишком много всякого говна трафика летает.

Cat-light

Впечатления от NextHop-2021

Послушал вчера конференцию Yandex NextHop-2021.

Четыре доклада из десяти мне даже понравились. То есть примерно одна треть этой конференции оказалась для меня полезной. Вполне неплохой выхлоп.

Что касается остальных докладов. Мне эти-то сведения на практике точно никогда не применить. А уж остальные-то и подавно. Не так много в мире компаний масштабов рылокниги или тындекса, где вот реально нужны все эти spine-leaf, top-of-rack, 400-гигабитные линки и прочие непотребства. Но вообще всегда интересно чего новенького успели напридумать яйцеголовые, особенно если кто-нибудь умеет доступным языком рассказать. Но, к сожалению, с последним пукнтом почти всегда возникают проблемы.

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

Оратор из Juniper-а — это вообще позорище ходячее. Сочинил один раз какой-то весьма посредственный доклад про квантовые ключи и торгует с ним хлебалом на каждой более-менее подходящей по тематике конференции.

Про то, как в гугле пять лет тому назад вообще упразднили отдел мониторинга сети, и как там у них автоматически создаются тикеты на RMA (замену неисправных деталей) в случае выхода из строя железок, конечно, занятно послушать. Но это не стоило размусоливать на 45 минут. Кинули бы просто понты за 5...10 минут, да и ушли под аплодисменты.

Про ZTP и Segment Routing Policy я вообще не осилил. Уснул.

SwitchDEV — это всё, конечно, хорошо и замечательно. Но кому он реально нужен помимо FAANG, непонятно.

Собственно, и всё остальное примерно в том же духе. Наверное, действительно полезной была только инфа про различные форматы / стандарты SFP-модулей и про проблемы их (не)совместимости с чипами / шинами коммутаторов. А-ля ликбез. Но опять же, лично мне такие SFPшки, про которые шла речь, вряд ли когда-либо доведется хотя бы просто в руках подержать.

Правда, по результатам пары докладов меня таки посетили интересные мысли, ближе к философским рассуждениям.

... Когда-то далеко в начале 2000-ых, возможно году в 2005...2007 (точнее уже не вспомню) я на NAG-е (nag.ru) читал статью о том, как один небольшой украинский ISP забубенил себе маршрутизатор ядра сети на amd64. Они тогда хвастались, что сами пропатчили драйвера Intel-евых сетевух дабы раскидать их очереди по 24 ядрам процессоров, чтобы добиться приемлемых показателей pps (packets-per-second). А наградой за их труды стало очень-очень быстрое схождение Full View BGP на скольких-то там не занятых под транзит трафика оставшихся ядрах.

С тех пор проходит больше десяти лет, и что мы видим? Яндекс строит пограничный (!) FireWall на... та-да-а-а-ам... Linux + Intel X86_64 ! Правда, с тех пор много воды утекло. Появилась магия в виде eBPF и DPDK. Но сам факт. Как поёт группа "Пикник", "Маятник качнётся, всё опять начнётся". Ну да, ну да... от чего уходили, к тому и вернулись. ASIC-и, уясики, это всё не то. Хочешь настоящей гибкости и настоящей вычислительной мощности — при всём богатстве выбора другой альтернативы нет. © Только x86_64, только хардкор.

... А другой доклад мне очень сильно напомнил метания между тем, как же распределить обязанности между различными компонентами той или иной системы. Например, Intel встраивает графику в ядро CPU. А NVidia наоборот, предлагает ускорять всё на свете на мощностях видеоадаптера. Вроде бы они заняли каждый свою нишу. Но!

Теперь NVidia всерьёз полезла на рынок телекома и всего что с ним связано. Они предлагают вместо "традиционного" сетевого интерфейса совать в сервер ещё один сервер, только маленький. ARM-based SoC (System on Chip). Они называют это "DPU": "Data Processing Unit". Который уже и кофеварка, и кофемолка, и кофевозделывательная плантация. От привычного сетевого интерфейса там остались разве что шина PCI-Express да частично принципы взаимодействия с ядром операционной системы.

Как всегда обещают углубить, улучшить, расширить, ускорить и всё в этом духе. Мол, теперь ваша сетевая карточка — это прям вот полноценный L3, может прокачивать через себя какие-то лютые PPS и не подавиться. А вам уже не нужно ничего знать, только кнопочки нажимать: опытные сетевые инженеры всё настроят централизованно вместо вас. И вам уже не нужны дорогущие TOR-свитчи (Top-of-Rack) для превращения L2 в L3, типа экономия. При том, что вы можете мутить MPLS, eVPN и прочие оверлейные сети прямо на адаптере, воткнутом в ваш сервер.

По мне так, "ну кому нужен бильярдный шар с растущими на нём волосами"? © Но не знаю. Может и правда взлетит. Народ жы ж сходит с ума по облакам. Ждём ответа от Intel, где сетевая карточка будет встроена в CPU, использовать штатную оперативную память, уметь писать прямо в процесс внутри виртуальной машины, а выводы будут разведены прямо с ножек процессора в разъём RJ-45... Зачем? А хрен знает. Но прикольно же!

... Сначала рылокнига героически делает крутейшее централизованное управление сетью. Потом так же централизованно её валит на шесть часов. Красота! "Может не надо, Шурик? Надо, Федя. Надо." ©

Ох уж этот новый дивный мир.

Lynx

Небольшой рост посещаемости

... Вчера кто-то разместил ссылку на мой предыдущий псто в телеграм-канале "ЗаТелеком" (кстати, рекомендую). Нет, это был не я. Даже не знаю откуда про меня узнала редакция канала. В связи с этим произошел небольшой рост посещаемости этого ЖЖ.

На всякий случай уточняю. Я не настоящий телеком, просто где-то Juniper SRX нашел. Точнее не нашел, а получил по наследству. И ненавижу их примерно столь же люто, как и микротики по причине неисчерпаемого изобилия багов, которые никто не исправляет десятилетиями.

... Впрочем, не уверен, что Cisco будут принципиально лучше. Сегодня вот скачал свеженькую прошивку для коммутатора Catalyst 9200L. Весит примерно полгигабайта (!). Прошивка. Для коммутатора (!). Чего они туда насовали?!? Анимированных фотообоев в веб-интерфейс что ли?

... Пользуясь моментом, хочу передать привет всем, кто тоже пользуется "моментом", напоминаю, что мы по-прежнему ищем себе сисадмина-инфраструктурщика по направлениям OpenSource и телеком. Вдруг, кто-то прочтёт это объявление из тех, кто раньше в мой ЖЖ не заходил. Есличо, готовы учить. Но нужно чтобы был прочный фундамент из понимания основополагающих принципов работы вычислительной техники и операционных систем, на который можно надстраивать всё остальное. Пишите деду Сергеичу на s@staser.ru .

Всем посещаемости и вылизанных прошивок.

Cat-light

Lenovo продолжает скатываться в г...но

Есть у нас в проде энное количество серверов имени Lenovo ThinkSystem. Это бывшие IBM Xseries, после того как они продались индусам. Точное количество и марку не назову, ибо NDA. Но не суть.

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

Окей, а как нам их обновлять, когда серваки в жёстком проде стоят? Для этого нужно снять с железки всю нагрузку, обновить прошивки, вернуть нагрузку взад. Вроде и не то чтобы сложно, но когда у тебя таких вот сервачков за полсотни, а на них крутится несколько сотен виртуалок, это превращается в довольно интересный challenge. Пока ты их всех обновишь, глядишь, уже и новый релиз Debian-а вышел, и новые прошивки подоспели. И опять всё по кругу. Смешно, да. А тебе не хотят жесткий диск по гарантии менять на основании того, что  якобы у него прошивка тухлая.

И вот тоже вопрос. Каким это таким волшебным образом прошивка влияет на работоспособность привода? Она внезапно исправит дефекты поверхности? Что-то мне подсказывает, что они просто расширяют пределы допусков и пороги срабатывания alert-ов. Ну чудес-то не бывает. Физику не обманешь. Типа, протянуть бы гарантийный срок, а дальше хоть трава не расти.

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

Еще энное количество таких сервантов уже после гарантийного срока отказали по чисто аппаратным причинам. Какой-то просто умер без объяснения причин, где-то BMC-шка сдохла, кто-то перестал память-процессоры опознавать.

В общем, будь моя воля, я бы не связывался с этими Lenovo больше. Вопрос только, что брать вместо них. На будущее.

Cat-light

ОколоITшный дыбр #19

... В одном из прошлых постов я уже рассказывал про заказчиков-дятлов, которые хотят чтобы им всё инсталлировали и запустили в лучшем виде, но при этом всё анально огораживают. Ни тебе доступа в интернет, ни нормальных зеркал дистрибутивов, ни IPSec-тоннеля, попадать на машины SSH-ем через три промежуточных хопа и всё в этом духе.

Теперь они хотят, чтобы внутри их же контура (!) всё бегало исключительно по SSL / TLS. Вот спрашивается, на хуа? Там у них vSphere, у меня есть подозрение, что трафик с одного физического хоста-то никуда не уходит. Но таково требование "безопасников". Ну ладно, предложил им что сгенерирую самоподписанные X509-сертификаты сроком на 50 лет и раскатаю их везде по всем сервисам. Нет, говорят. Хотят чтобы всё было подписанно их собственным PKI-ем. В чём разница, не понимаю. От чего они таким образом пытаются защититься? Ну ладно, начинаю им рассказывать про X509v3 Extended Key Usage и про X509v3 Subject Alternative Name, объясняю какие значения должны быть выставлены в этих полях, чтобы такие сертифкаты нормально зохавали бы всякие Clickhous-ы и Zookeeper-ы. Они не знают как это сделать на их PKI. Ну зашибись...

... Их не то сисадмин, не то "безопасник" не смог openssl-ем сгенерировать самоподписанный сертификат для nginx-а. Просто по собственной невнимательности: создал один файл с закрытым ключом, а nginx-у подсунул другой. Потом долго удивлялся, почему оно не взлетает. Чтобы разобраться, ему потребовалось созвать конф-колл по этому поводу на четверых инженеров и одного PM-а. Я с них просто охреневаю.

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

... Кстати, может кто-нибудь знает, как проще всего подцепить в RedHat 7 пакетные репозитории от CentOS 7? Это у другого заказчика-дятла. Приходится туда софт доустанавливать через SSH-тоннель и TinyProxy. Но RedHat, сцуко, подписЬку требует. Я где-то уже раньше так делал. Но где, не могу вспомнить.

... А ещё вопрос к цискарям, если оные меня читают. Где можно взять / стырить последнюю-распоследнюю прошивку для Cisco ISR 2911? Завалялась у меня парочка где-то в шкафу. Выбрасывать жалко. А так, глядишь, может подо что-то и приспособлю.

... Вот не понимаю. "Ростелеком" раскидывает по почтовым ящикам листовки со своей рекламой. Мол, подключайтесь, вкусные тарифы, все дела. А звонишь им — говорят "стояки забиты, подключить не можем". Ну и где логика? На хрена тогда рекламой своей спамить? Чудики.

... Моя суперсучка умудрилась сломать себе хвост. Пруфпик ниже. Истеричная, засранка. Подумала, что её дома одну оставили. А когда я проснулся, от радости долбанула со всей дури этим самым хвостом о стеллаж.

Всем вменяемых заказчиков и целых хвостов.

Cat-light

Juniper, Fortigate, IPSec

У меня заточен отдельный зуб на тех, кто использует у себя в проде всякие там микротики, убиквити, чекпойнты, фортигейты и прочие opnsense-ы. Но сейчас не об этом.

В ждунипере (Juniper) есть давно известный баг, который приводит к невозможности построить IPSec с использованием IKEv2 до оборудования другого вендора, если в криптодомене содержится более одной записи (больше одного traffic selector-а). Проявляется, когда с другой стороны стоят некоторые Cisco ASA, Checkpoint, Fortigate. С Cisco FirePower (FTD) работает нормально. Видимо, народ забодал техподдержку последних, и они включили какой-то workaround в свои актуальные прошивки.

Вариантов решения, к сожалению, немного.


  1. Откатываться на IKEv1, потеряв при этом возможность использовать современные криптоалгоритмы.

  2. Договариваться с вражеской стороной, чтобы в криптодомене присутствовала бы только одна запись. Например, "0.0.0.0/0", как вариант.

Мне вот искренне интересно, начиная с какой версии JunOS они исправили этот баг, и исправили ли вообще. Так-то это хороший повод обновить прошивку, но чё-то нет уверенности, что это не будет заменой шила на мыло.
Cat-light

Juniper не дружит с IKEv2

Продолжаю рубрику о ненависти к Juniper-ам.

Практика показала, что когда строишь тоннель между Juniper-ом и чем-то другим, то в случае попыток использования IKEv2 тебя ждут большие проблемы.

Самая мелкая из них заключается в том, что Juniper не даёт явно выставлять Pseudo-Random Function. Об этом я уже писал раньше.

Следующий прикол — разработчики софта традиционно по-разному трактуют RFC. А в IKEv2 появилась возможность делать как по принципу "одна SA — один тоннель", так и запихивать в рамки одной и той же SA несколько различных identities (грубо говоря, несколько маршрутов в одном тоннеле с одной SA). Так вот, иногда они не могут договориться: пруф 1, пруф 2. На практике это выглядит так, что тоннель поднимается только по запросу одной из сторон, а Juniper постоянно гадит в логи про то, что не может согласовать какие-то security associations (SA).

И самое мерзкое, с чем лично мне пришлось столкнуться — это конкретное такое "залипание" тоннелей на IKEv2. Настолько конкретное, что не спасают "clear security ike бла-бла-бла", "clear security ipsec бла-бла-бла" от слова "совсем". То есть формально Juniper показывает, что всё нормально, SPI меняются, но трафик не ходит. Помогает только деактивация проблемного traffic selector из конфига, выжидание 10 минут, потом активация обратно.

Короче говоря, между двумя Juniper-ами там особых проблем нет. А вот между какой-нибудь Cisco ASA и Juniper надо всё-таки брать IKEv1 и не вы**ываться.

Хотя, с другой стороны, мне известен как минимум один обратный кейс. Когда строили IPSec-тоннель между Juniper SRX и каким-то Huawei, то там было наоборот. IKEv1 не хотел подниматься из-за косяков в прошивке "хуявого", а вот IKEv2 таки взлетел.

Техника несовершенна. Но Juniper — это лютая попа-боль.

Cat-light

Энергоэффективная, блин, Lenovo

— А чо у вас сервак такой тормозной?
— Он не тормозной, он энергоэффективный!

Мы с коллегой относимся к поколению старых пердунов oldschool. Никаких данных ни в каких облаках не держим. Есть свой собственный парк железных серверов, чуть меньше сотни. Холим их, лелеем, меняем в них жёсткие диски, обновляем всякие UEFI и прочие FirmWare периодически.

В очередной раз обновили прошивку на одном из ящиков имени Lenovo. Водрузили туда высоконагруженный Javaписьный сервис. И заметили, что по производительности он просел больше чем в два раза по сравнению с "необновлённым" сервером. Latency по ответам выросли раза в четыре. А "сборщик мусора" дык вообще захлёбываться начал.

Стали искать причину. Я подозревал одно, коллега другое. В конце концов выяснили, что после обновления UEFI железка примерно в два раза занизила частоту всех ядер CPU. Типа, из соображений экологичности, энергоэффективности и всё вот это. Она решила, что раз ядра не утилизируются на все 100%, то нагрузки на них якобы нет. А раз так, то можно немного поэкономить электричество и зарезать тактовую частоту. Причём, из самой операционной системы повлиять на режим работы никак нельзя.

Понятно, что в BIOS / EFI есть соответствующая настройка. Которую просто никто никогда не трогал, вот она и осталась "с завода" по умолчанию. Но раньше с этим проблем никогда не было. А после обновления вот производитель решил, что негоже столько электричества кушать, ночью надо спать и выключать.

Ну охренеть, короче говоря. А самое западло, что "на лету" поменять эту настройку нельзя. Точнее, поменять-то можно, но новое значение вступит в силу только после полной перезагрузки. Теперь придётся перезагружать все сервера, которые мы успели обновить. Что само по себе является ещё тем развлечением...

М-дя. Я вот не понимаю, каким местом рассуждают производители энтырпрайзного жылеза? По-моему, "энергоэффективный сервер" это что-то типа безалкогольной водки или пожаровзрывобезопасного топлива. Он для того и нужен, чтобы жрать электроэнергию и считать, считать, считать. Не для мебели же он в шкафу прикручен.

А вы как думаете?

Cat-light

ОколоITшный дыбр #18

... Вроде бы, причина неработоспособности видеонаблюдения стала чуть яснее. Посмотрел внимательнее WireShark-ом. Почему то в тот момент, когда камера (Dahua) отправляет на сервер ONVIF-событие о начале движения в кадре, на несколько секунд прекращается / задерживается трансляция RTSP-потока. Старые версии BlueIris-а на это никак не реагировали (просто на записи картинка "подлагивала"), более свежие обзавелись WatchDog-ом и стали отбивать / перезапускать RTSP-сессию. А в совсем свежих поменялся алгоритм этого WatchDog-а, поэтому камеры стали постоянно отваливаться. То есть, баг по всей видимости был всегда, просто раньше я его не замечал или списывал на маломощность ноутбука. Остались два традиционных вопроса: "кто виноват и что делать".

... Если строить site-to-site IPSec-тоннель между Juniper SRX и Cisco ASA, то можно обнаружить, что раз в полчаса (при дефолтных настройках) он рвётся и тут же восстанавливается обратно. Проблема описана, например, здесь, но на тот псто никто не ответил. С одной стороны, "быстро поднятое упавшим не считается". С другой стороны, SRX успевает опустить-поднять ST-интерфейс, событие улетает в мониторинг, условный Zabbix срабатывает, у дежурных инженеров начинает бомбить. А причина заключается в том, что на Cisco ASA по умолчанию стоит "vpn-idle-timeout". Если за полчаса через тоннель не проходит никакого трафика (DPD не считается), то циска опускает его. Как вариант, можно на SRX-е настроить RPM Probe (пингушку) на вражескую сторону. Помогает.

... Чё-то перестал у меня работать ЖЖ из-под FireFox-а с плагинами. На "голом" работает. Подозреваю, что uMatrix мешает. Тут народ всерьез начал присматриваться к Teletype. У меня всё лапки, опять же, не дойдут. Только аккаунт там себе зарегал, и всё. Кто-нибудь уже пробовал, как оно?

... И я, кажется, нашел нормальную замену для Evernote. Называется "Notion". Умеет всё то же самое и для личного использования [пока] бесплатен. Тяжко менять привычки, так что скорее всего просто "уйду" туда.

... Безопасность должна быть безопасной. Один "безопасник" настроил параноидальные параметры по сроку действия / требования к обновлению пользовательских паролей на *nix-машинах. Только не учёл, что в не менее параноидальной CentOS-и из коробки openssh-демон проверяет в том числе и это тоже через "pam_unix.so". Ходили-ходили пользователи три месяца по SSH-ключам, а потом "бац" — и внезапно их перестало туда пускать. Смешно. Казалось бы, при чём здесь Лужков пароли? А вот поди ж ты. Ещё смешнее то, что я начинаю объяснять почему так получилось, а мне не верят...

... По долгу службы поимел много секса с Apache Cassandra. С одной стороны, вроде хорошо продуманная навороченная мощная отказоустойчивая система. Кластеры-уястеры, кворумы, восстановление после сбоев и всё вот это вот. С другой стороны, вот никогда не поймешь чем конкретно она занимается в данный момент времени. Попытался по официальной инструкции перенести seed-ноду на другую машину: всё уронил к херам. Оказывается, я неправильно истолковал эту самую инструкцию, и переносить seed-ноды на самом деле нельзя. Назначил другие ноды seed-овыми, перезапустил. Cassandra начала что-то люто читать с дисков. До перезапуска 30 Мбайт/с, после рестарта — 2 ГБайт/с. Почему? А хрен его знает, товарищ прапорщик! Через полдня упало до 300 Мбайт/с. Что это было? ХЗ. По логам не понять.

В другой раз решил заменить стандартный allocator памяти на jemalloc. Только забыл установить jna и поменять в конфиге кассандры директиву "memtable_allocation_type". Точнее, не забыл, а просто не знал. Она не выругалась, с виду вроде всё работало. Но когда пошла предновогодняя нагрузка... у-у-у-у-у. Хана, короче. Тушите свет, сливайте воду. Хорошо, главный разработчик ткнул пальцем куда надо смотреть. Иначе бы я ещё сильнее огрёб. Ох и чудесатая же это штука. Не для среднего ума вроде моего.

... Прикольный артефакт. XMPP-бот, написанный на bash и sed. Я вот теперь думаю, можно ли его слегка доработать таким образом, чтобы он полученные сообщения отправлял не обратно, а на два других аккаунта. Вот надо мне это. Или может что-нибудь другое проще для этой цели взять?

... Снёс с телефона официальное приложение Сбебранка, установил допиленное народным умельцем, с выкорчеванным антивирусом, без рекламы и проверки рута. Какой же кайф! Заодно и телефон стал меньше лагать. И чего я раньше так не сделал?

... Хочу продуть от пыли теплообменник своего холодильника. У кого-нибудь есть небольшой компрессор или пароочиститель погонять на недельку? Поделитесь, а?

... Чем бы помазать уплотнители дверей в автоведре, чтобы они не примерзали? Силиконовым спреем, или чем-то другим?

... Собака чего-то нажралась, схватила аллергию, расчесала себе ухо до крови. Вот блин, всегда так. Чем породистее, тем больше проблем с питанием. Сука. И главное, понять не могу на что именно. Подозреваю яблоки, но обосновать не могу.

Всем чистых теплообменников и бархатных неповрежденных ушей.