Обычно самая странная и заковыристая проблема вызвана очень простой человеческой ошибкой.
Как вы, наверное, знаете, это я на работе руками вожу и языком работаю, а для души я сисадминством занимаюсь.
Есть у меня железный сервер с установленным на нём PVE 7 и пачкой виртуалок. Довольно старый, но свои функции выполняет. Настолько старый, что в нём успела сдохнуть батарейка CMOS. Жить это особо не мешает, за исключением перезагрузки, из которой сервер сам может и не выйти.
Т.к. с доступом к ilo проблемы, то дёргать лишний раз железку не хотелось, так что аптайм там набежал год с лишним... И вот недавно, наконец, собрался с духом, отправил курьера с батарейкой и кое-каким железом для апгрейда (чтоб два раза не вставать, ага). Апгрейд провели, сервер включился...
А вот виртуалки на нём не работают. Включаются, но не видят шлюз (который висит на бридже на этом самом сервере). Настройки в порядке, сам себя сервер пингует, из интернета доступен... В общем, где-то в половину второго ночи я плюнул и пошёл спать.
На следующий день решил для начала обновить PVE - всё равно ничего не работает. Проблема не ушла, мысли кончились, пришлось обращаться к разуму @linkmeup_chat и коллегам. Попутно выяснил, что проблема не только с бриджем, но и просто соседний сервер, включенный прямым шнурком, тоже не пингуется. Общий симптом - видны входящие арп-запросы, но ответов от сервера не видно. Исходящий arping проходит успешно, но в арп-таблицу ответы не добавляются.
Перебрали, кажется всё - sysctl, маршруты, фаервол. Опытным путём с помощью bpftrace (спасибо, Рома!) установили, что арпы таки отправляются. Но куда - хрен его знает. Так прошёл ещё один день. Вечером чисто ради интереса бутнул сервер с livecd - естественно, всё заработало, т.е. дело было не в железе.
В общем, я уже морально был готов сдаться и идти ресетапить ось, но один добрый человек предложил посмотреть свежим взглядом. И таки нашёл проблему! за пять минут, буквально.
Дело было в ipsec. Когда-то давно (вы ж помните, что сервер год не ребутался?) туда заехал strongswan - потому что на всех остальных pve у меня настроен ipsec, так или иначе. А на этом нет. Поэтому strongswan туда приехал, но ненастроенный. А ненастроенный, он создаёт ip rule на всю серую сеть, заворачивая трафик в интерфейс ipsec0, где тот благополучно погибает. Скорее всего, когда strongswan только поставился, я его выключил, а вот удалить забыл. А после рестарта он поднялся и всё сломал.
Морали не будет :) Разве что почаще ребутаться, чтобы вовремя отлавливать такие вот проблемы.
P.S. А ещё я когда-то вебинар записал по тшуту. Подходы оттуда до сих пор актуальны, главное пользоваться с головой, а не как я ;)