SSH / удалённый доступ 25 апреля 2026

2026: IPv6, AAAA и Happy Eyeballs — когда SSH к ProxyMac Mac mini кажется медленным

Инженерная команда ProxyMac 25 апреля 2026 ≈ 12 мин чтения

Инженеры любят винить «регион Токио», если ssh mini.jp.example перед баннером «дышит» несколько раз, а ssh -4 летит. Современные резолверы отдают и A, и AAAA; стеки делают гонку в духе Happy Eyeballs (RFC 8305), и попытки IPv6 могут зависать достаточно долго, чтобы казаться потерей пакетов, хотя ProxyMac Mac mini в Гонконге, Японии, Корее, Сингапуре или США здорова. Это не агитация за IPv6, а лист решений: матрица симптомов из четырёх строк, переключатели macOS (ssh -4, ssh -6, AddressFamily), квадратные скобки для литерального v6, семишаговый runbook со ссылками на DNS и split horizon, если ответы по VPN отличаются, PMTUD, если крупные TCP-сегменты пропадают, и keepalive, когда семейство адресов ясно. Если политика сначала всё гонит через Zero Trust, прочитайте маршрутизацию VPN, прежде чем охотиться на призраки AAAA.

С mini всё в порядке, но первый SSH «колеблется»

Три семейства: (1) фиксированная пауза в несколько секунд только на первой TCP-попытке каждую минуту; (2) рывки, связанные с истечением TTL DNS; (3) затычки от размера полезной нагрузки (SCP), а не от рукопожатия. Семейство 1 кричит о гонке семейств адресов; 3 чаще не про IPv6 — переходите к MTU, не читая страницу дважды.

  • Всегда фиксируйте метки времени ssh -vvv между Connecting и Connection established.
  • Сравните то же имя со стеком по умолчанию и с ssh -4 — если медленен только дефолт, гипотеза v6 стоит проверки.
  • Литеральный IPv6 требует скобок: ssh user@[2001:db8::1], чтобы парсер не принял двоеточия за порт.

Матрица симптомов A vs AAAA (первый шаг триажа)

ОщущениеВероятный слойПервая командаУглубление
Пауза 2–5 с, потом быстрая сессия; ssh -4 убирает паузуСломанный или hairpin IPv6dig AAAA hostname +time=2Эта статья + гайд DNS
По цифровому IP работает, по имени — нетПорядок резолверов / split DNSscutil --dns | head -n 80гайд DNS
Интерактив ок, SCP умирает в серединеPMTUD / middleboxСкан размеров пакетовгайд MTU
Разрыв после десятков минут простояТаймеры NATЗонды ServerAliveгайд keepalive
Гигиена тикетов: приложите выводы dig A и dig AAAA и одну строку, изменил ли ssh -4 настенное время до баннера — без этих двух диффов сетевые команды игнорируют простыни текста.

Гонка в духе Happy Eyeballs на MacBook (что наследует OpenSSH)

Приложения, резолвящие dual-stack имена, могут запускать параллельные подключения и предпочитать то, что завершится первым. Когда IPv6 почти верен — маршрутизатор анонсирует префиксы, а выше фильтруют ICMPv6 — вы платите налогом задержки без ясного «connection refused». Зафиксируйте дельту VPN вкл/выкл: многие ZTNA-клиенты переставляют резолверы или вставляют виртуальные IPv6-маршруты, отличные от кафе Wi‑Fi.

Не путайте traceroute на 8.8.8.8 с доказательством про вашу mini. Используйте трассировку из диагностики MTR к тому же имени, что и SSH — иначе вы меряете anycast Google, а не хост автоматизации.

Флаги OpenSSH, ~/.ssh/config и ответственное закрепление семейства адресов

Используйте ssh -4 и ssh -6 как диагностические переключатели, затем закодируйте победивший вариант в секции Host с AddressFamily inet или inet6, когда политика согласна. Избегайте постоянного -4 на ноутбуках, которые ходят между «чистым» v6 в кампусе и отелями только v4, без охраны Match exec — раздельные конфиги снижают сюрпризы.

Host proxymac-jp-stable HostName mini.example.jp User build AddressFamily inet ServerAliveInterval 30 ServerAliveCountMax 4

Что должна отдавать арендованная mini (и что вы всё равно проверяете сами)

ProxyMac даёт предсказуемые точки входа SSH, но авторитетный DNS для ваших имён может остаться у регистратора без делегирования. Проверьте, публикует ли зона только A, только AAAA или оба — и не вырезают ли корпоративные резолверы ответы AAAA «ради безопасности». Если IT режет AAAA, ноутбук не изобретёт IPv6; наоборот, при живом AAAA и сломанном uplink клиент всё равно может сначала пробовать v6.

Семь шагов до просьбы «перенесите mini»

  1. Снимок: dig A / dig AAAA из офиса, VPN и дома.
  2. Замер: ssh -vvv против ssh -4 -vvv на то же имя — разница >1 с подозрительна.
  3. Проверка: порядок scutil --dns при переключении VPN; кривые search-домены маскируются под IPv6.
  4. Исключить MTU по связанному гайду, если bulk-копия падает, а shell живой.
  5. Наложить keepalive, когда семейство адресов стабильно.
  6. Задокументировать финальную секцию Host в Git рядом с тикетами файрвола.
  7. Только потом сравнивать регионы по MTR, а не по ощущениям.

FAQ

Отключать IPv6 на mini? Лучше чинить путь; глобальное отключение v6 может сломать легитимный dual-stack мониторинг.

Screen Sharing наследует ту же гонку? Часто да — без QUIC это всё ещё TCP; проверьте DNS и семейство адресов до обвинений кодека.

Меняет ли CGNAT картину? Меняет ритм NAT-портов, не гонку DNS — сочетайте с корпоративным CONNECT SSH, если наружу только 443.

Почему ProxyMac Mac mini остаётся правильным якорем, когда DNS и dual-stack понятны

Apple Silicon M4 mini в HK / JP / KR / SG / US дают имя для реальных измерений: сегодняшний dig должен читаться так же завтра. Когда правда резолвера совпадает с политикой маршрутизации, агенты автоматизации, CI и люди бьют в тот же металл, который уже одобрил финансы. Бронируйте регионы на странице цен, держите SSH-сниппеты из справки рядом с runbook и уходите на VNC, когда macOS требует GUI-свидетеля для TCC.

Арендуйте железо там, где правда DNS совпадает с RTT

HK / JP / KR / SG / US · дружественный к dual-stack SSH