LINUX.ORG.RU

ipv4-mapped ipv6 и подводные камни длительной непереустановки Дебиана

 , , ,


1

1

Забавная тут история произошла. Началось с того, что я заметил, что десктопный kdeconnect не хочет принимать файлы, посланные его клиентом с телефона. Причём никаких сообщений об ошибках, ничего — телефонный клиент рапортует, что файл послан, а КДЕ-шное уведомление о приёме продолжает висеть и никак не завершается.

Стал ковыряться. Сбэкпортил свежую версию — хрен, завёл чистого пользователя — хрен. Установил стабильный Дебиан в виртуалке — опа, работает. Но там, известно, системда, а на десктопе у меня нет. Снёс системду в виртуалке (подолбавшись, как водится) — работает. Включил и там и там QT-шный отладочный вывод kdeconnect.*, стал сравнивать — в виртуалке при обнаружении устройства сразу же устанавливается TCP-соединение, а на десктопе с ошибкой сваливается в fallback UDP. Так как вывод ни хрена не информативный, пришлось качать исходники и патчить, чтобы хоть понять, чего ему не нравится. Выяснилось, что демон Кдеконнекта обращается к адресу телефона в виде «::ffff:192.168.x.x», то есть так называемого «ipv4-mapped ipv6». Попробовал пингануть, из виртуалки - просто не пингуется, с десктопа - аж «network unreachable». Нагуглил, что в ядре за это дело отвечает параметр sysctl net.ipv6.bindv6only, и разумеется, в виртуалке он 0, а на десктопе — 1. Выключил — работает. Зашибись.

Но теперь стало интересно, какая же сволочь мне этой настройкой удружила. В /etc/sysctl.d лежит файлик bindv6only.conf. По apt-file и поиском на дебиановском сайте не находится. Стал гуглить дальше — следы обнаружились в багрепортах пакета netbase. Оказывается, эти гендерно-разнообразные этот файл при установке создавали скриптом postinst (нет бы хоть в пакет положили!). После того, как в багрепортах им насовали, создавать (аж с 2010 года) перестали, но и удалять, разумеется, его никто не будет. А раз я систему не переустанавливал никогда, так оно и лежит.

Мляя… Пердолился со всем этим, наверно, больше суток чистого времени. А мораль — если наблюдаются странности с сетевыми приложениями, смотрите /proc/sys/net/ipv6/bindv6only. Ну и, штабильность дебилиана такая штабильность.

★★★★★

Сомнительно что net.ipv6.bindv6only=1 было выставлено в пакете. Либо там какая-то ошибка была, либо это ты сам выставил. Посмотри на снапшотах во что пакет выставлял это значение.

anonymous
()
Ответ на: комментарий от Ololo_Trololo

Даже больше. Где-то в 2000-х. Самые старые файлы на линуксовых разделах — не то 2008, не то 2004 года (когда-то искал, щас уже не помню).

alegz ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Ну, видимо, бЕзОпАсНоСть там, все дела. Для серверов-то, возможно, это и оправдано, в отличие от десктопа. Ругань-то в багрепортах была из-за того, что джавовские приложения не работали, и ещё тогда советовали это отключать (даже тут, на ЛОРе), но так как у меня таких практически никогда не было, весь шум прошёл мимо.

alegz ★★★★★
() автор топика
Ответ на: комментарий от alegz

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

mamina_radost
()
Ответ на: комментарий от alegz

бЕзОпАсНоСть

Так нет, вроде, там ничего такого опасного нет. Это известная и часто применяемая фишка(тот же пример с джавой и не только). Они бы весь v6 тогда вырубили, если на совместимость/функциональность всё равно покласть.

Ладно, возможно кто-то хотел ускорить миграцию на v6. :)

anonymous
()
Ответ на: комментарий от mamina_radost

Да ничего особенного, практически дефолт. ФС — сначала ext2, сейчас ext4 под LVM, вроде бы даже с самого начала разбитая на отдельные /, /tmp, /var и /home. Экспериментировал со всякими рейдами и страйпами, но сейчас всё просто — /home на NVMe отзеркален ЛВМ-ом, файлопомойка на HDD — тоже отзеркалена, плюс закеширована им же. Инит как был SysV, так и остался — системда как-то поставилась без спроса при очередном апдейте, прибил и перелез обратно, так и живу (хотя на VPS-ках под Дебианом у меня всё-таки дефолтная системда, просто лень менять). Загрузчик всю дорогу grub, только менял с MBR на EFI. Оболочка — Кеды, и вот их-то я, насколько помню, в какой-то момент переустанавливал, в том смысле, что снёс пользовательские конфиги и настраивал заново.

alegz ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Вообще, RFC 3494 говорит, что это настройка сокета, предназначенная для приложений, которые «may want to restrict their use of an AF_INET6 socket to IPv6 communications only». В случае конкретного приложения это понятно — что хочет со своими сокетами, то и делает. Но вот на кой хрен эту настройку вообще иметь в качестве глобальной на уровне ядра (а уж тем более её включать в дистре по дефолту) — для меня загадка.

alegz ★★★★★
() автор топика
Ответ на: комментарий от alegz

под Дебианом у меня всё-таки дефолтная системда, просто лень менять

Подажи, а как её поменять? Дебиан же все пакеты прибил к системд, оно не должно без неё работать. Ты уверен, что у тебя на последнем дебиане SysV?

mamina_radost
()

старые грабли они на любой системе когда-нибудь стукнут многочасовым поиском проблем...

Sylvia ★★★★★
()
Ответ на: комментарий от mamina_radost

Да примерно, как и в арче: ставишь, пишешь или ищешь sysv-скрипты для запуска всего нужного, сносишь системду и перезагружаешься.

yars068 ★★★★★
()

Охренеть.. системе +- столько же сколько и мне, я вообще удивлен что такое возможно не в проде, да ещё и на дебиан! Если бы какой-нибудь РХЕЛ был бы, то не так интересно, а тут такой артифакт на деб, переживший столько всего

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

P.S. было бы интересно увидеть скрины десктопа в соответствующем разделе)).)

chebo7
()
Последнее исправление: chebo7 (всего исправлений: 2)
Ответ на: комментарий от mamina_radost

все пакеты прибил к системд

Не, такое было одно время, пока не запилили elogind, сейчас можно и снести. Но в отдельных случаях бывает, что какому-то софту либо нужен какой-то специфичный интерфейс D-Bus, который есть только в системде, либо инит-скрипты уже выкинуты, и остались только сервисы, а скрипты надо писать руками. Потому я и полез проверять в виртуалке с дефолтной установкой.

Плюс при сносе тоже есть уловка 22 — системдшный prerm тупо не даёт её удалить, если она в данный момент загружена. А чтобы загрузиться с другой инит-системой, нужно сначала её установить. А установить ты не можешь, пока не снесёшь системду. Правда, если заглянуть в этот скрипт, можно увидеть, что он проверяет наличие некоего каталога, который можно просто удалить, и всё заработает. Но до этого ведь нужно ещё догадаться.

alegz ★★★★★
() автор топика
Ответ на: комментарий от chebo7

Чего тебя удивляет в том что это дебиан? В нём межрелизные обновления всегда хорошо работали, в отличие от многих других, где советовали каждый релиз заново устанавливать.

firkax ★★★★★
()

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

vtVitus ★★★★★
()
Ответ на: комментарий от alegz

Вот поэтому я предпочитаю при смене техники или винчестера ставить систему заново.

usermod
()

Оказывается, эти гендерно-разнообразные этот файл при установке создавали скриптом

Типичный дебиан

James_Holden ★★★★★
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария