Туннели, которые поднимаются, когда SSH к публичному адресу сервера перестаёт работать, выглядят как сервер, отклоняющий подключение. В Windows более вероятная причина локальна: AllowedIPs полного туннеля со значением /0 включает ограничительные правила межсетевого экрана, которые разрешают собственный транспорт туннеля и очень мало что ещё. Зашифрованные пакеты, доходящие до этого адреса, ничего не говорят о том, может ли выйти отдельное TCP-соединение к тому же адресу.

Отделите публичный адрес конечной точки от её внутреннего адреса туннеля, прежде чем трогать список пиров. Почти каждая попытка исправить это правкой AllowedIPs делает политику слабее, а не маршрут правильным.

Разрешение на маршрутизацию и разрешение межсетевого экрана — разные вещи

Маршрут решает, куда будет отправлен пакет, а правило межсетевого экрана — можно ли его отправлять вообще. Поэтому добавление маршрута для публичного IP конечной точки создаёт путь, который фильтр всё ещё может заблокировать, и именно эту путаницу порождает данный симптом. В Windows фильтр является частью реализации, а не надстройкой, поэтому ни одна запись маршрута его не меняет. Эти два решения раздельны и в других местах, хотя значения по умолчанию различаются.

Поэтому traceroute до конечной точки может успешно пройти, тогда как попытка SSH завершается неудачей. Первое несёт служба, которой принадлежит исключение, второе — нет.

Что делает /0 в Windows

Когда у единственного пира разрешённые адреса охватывают всё пространство IPv4, WireGuard for Windows применяет ограничительную позицию межсетевого экрана, которая блокирует трафик, иначе выходящий за пределы туннеля. Собственный транспорт службы туннеля разрешён, поскольку VPN иначе не мог бы работать. Другое приложение к тому же публичному адресу такого разрешения не получает, так как исключение относится к транспорту, а не к адресу. Заметки о сети Windows описывают такое поведение и соответствующий элемент управления в редакторе.

Эти правила — механизм, стоящий за выражением kill switch. Они включаются формой конфигурации, а не флажком с таким названием.

Исключения меняют модель защиты

Замена /0 двумя полузначениями по умолчанию — документированный способ сохранить широкую маршрутизацию без ограничительной семантики, и это другая модель защиты, а не более короткая запись. Вычитание адреса конечной точки из разрешённых префиксов — другой распространённый обход, который удлиняет список и тоже меняет набор включаемых правил. Ни то, ни другое не является локальной правкой с локальным эффектом. Каждое сдвигает границу для каждого потока на машине, а не только для соединения, которое вы чинили.

Там, где прямой публичный SSH действительно необходим, владелец профиля должен спроектировать и внешний маршрут, и его разрешение в межсетевом экране, и решить, что произойдёт с несвязанным трафиком при падении туннеля. Отдельный разбор IPv4 и IPv6 тоже к этому относится, поскольку правила выражаются по семействам. Широкий обход, добавленный ради спасения одного сеанса управления, обычно раскрывает больше, чем этот сеанс.

Проверьте выбранный путь управления

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

ipconfig | findstr /i "WireGuard IPv4"
wg show
ssh -v [email protected]
Test-NetConnection 203.0.113.9 -Port 22

Успешный SSH к внутреннему адресу доказывает, что туннель несёт трафик управления и что собственный межсетевой экран сервера принимает его из диапазона пиров. Неудача на обеих целях — это проблема на стороне сервера или с ключом, а не проблема маршрутизации Windows. Если внутренний адрес работает, а внешний нет, локальная позиция межсетевого экрана делает именно то, для чего она создана. Прочитайте три результата в этом порядке, прежде чем править профиль.

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

Похожие статьи