На этот раз всё было очень странно: по сути я впустую потратил целую ночь, и только под конец выяснилось, что проблема вообще не в самих узлах, а в том, что локальный прокси «вложился сам в себя».
Симптомы поначалу были очень чудные:
- Владелец серверного узла пришёл спросить, что вообще происходит, потому что на бэкенде постоянно идут непрерывные странные запросы.
- У меня на машине почти не подключался ни один узел.
- Ещё более странно то, что как бы я ни менял локальную конфигурацию прокси, на стороне узла всё равно продолжали видеть такие непрерывные запросы.
Сначала я подозревал кучу направлений, например:
- сам узел «умер»
- проблема в содержимом подписки
- неправильно написаны правила
- DNS или системный прокси переключились не до конца
- какая-то программа в фоне бешено ретраит
В итоге после разборов выяснилось, что ключевая проблема — это прокси-луп / вложенный прокси.
Если чуть конкретнее: на локальной машине в тот момент работал не один mihomo, а сразу два:
- один — текущий
mihomo, нормально поднятый Sparkle - второй — старый оставшийся «сиротский» процесс
Из-за этого путь трафика стал очень странным, как будто «короткое замыкание» — он начинал крутиться локально туда-сюда:
- локальную конфигурацию ты поменял, но трафик перехватывает не обязательно тот core, который ты думаешь
- некоторые запросы начинают повторно форвардиться, повторно матчиться, и в итоге на стороне узла это выглядит как непрерывные странные запросы
- а сама машина при этом проявляет себя как «массово недоступные узлы», почти ничего не коннектится
Только потом до меня дошло: это не просто «узел сломался», а локальный прокси поверх локального прокси / остаточный core добавил ещё один слой.
После того как я почистил старый остаточный процесс и заново открыл Sparkle, в системе вернулось к норме:
- один главный процесс Sparkle
- один дочерний процесс
mihomo, поднятый им
И всё стало нормально.
Урок из этого прямой:
- Когда видишь «на стороне узла странные непрерывные запросы + на локальной машине почти все узлы не работают», не стоит подозревать только удалённую сторону.
- Сначала проверь, сколько proxy core реально запущено на локальной машине, особенно для
mihomo— нет ли остаточных сиротских процессов. - Как только возникает вложенность или луп, симптомы будут очень «магическими», а на деле это просто локальный путь трафика уже развалился.
Если в будущем снова встречу похожее, думаю, первой реакцией должно быть — сначала проверить:
- сколько
mihomoзапущено - кто родительский процесс, а кто сирота
- какой экземпляр реально слушает
7890/7891/7892 - не указывает ли системный прокси снова на самого себя
Дико, но зато запомнил надолго.