01

Сначала выберите режим сети

WSL2 по умолчанию работает через NAT, и дистрибутив не разделяет петлевой адрес Windows. Поэтому 127.0.0.1 внутри WSL до клиента не достучится никогда. Именно на этом спотыкается большинство попыток.

Свежие сборки Windows 11 поддерживают зеркальный режим: добавьте networkingMode=mirrored в секцию wsl2 файла .wslconfig в папке пользователя, перезапустите WSL — и 127.0.0.1 заработает напрямую. Это самый простой путь. Если остаётесь на NAT, нужен адрес хоста Windows в подсети WSL, и обязательно включите разрешение локальной сети, иначе ядро слушает только петлевой адрес.

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

Партнёрский материалОткуда взять ссылку на подписку?Партнёрский сервис даёт 1 ГБ высокоскоростного трафика Гонконга при регистрации — импорт в один клик.Получить быстрые серверы
02

Четыре шага до соединения

  1. 1

    Включите разрешение локальной сети

    Включите его в настройках Clash. В первый раз Windows спросит про доступ через брандмауэр — разрешите хотя бы для частных сетей.

  2. 2

    Найдите адрес хоста в режиме NAT

    Внутри WSL выполните ip route show default: третье поле и есть адрес хоста Windows, его нужно подставить в https_proxy. Адрес может меняться при каждом перезапуске WSL, поэтому читайте его динамически в .bashrc, а не прописывайте жёстко.

  3. 3

    Настройки прокси в Docker Desktop

    В разделе Resources и далее Proxies укажите http://host.docker.internal с вашим портом. Учтите, что это влияет только на скачивание образов и сборку: программы внутри контейнеров эти настройки не затрагивают.

  4. 4

    Внутри контейнера

    Передайте HTTPS_PROXY и HTTP_PROXY через -e в docker run либо задайте значения по умолчанию в секции proxies файла .docker/config.json в папке пользователя. Заодно добавьте localhost и внутренние реестры в noProxy.

03

Проверяйте обе стороны отдельно

В WSL выполните curl к ipinfo.io/ip и убедитесь, что возвращается адрес узла. Со стороны Docker запустите одноразовый контейнер с curl по тому же адресу. Работающий WSL не означает работающие контейнеры, поэтому проверять нужно независимо.

  • Настройки для зеркального режима и NAT не взаимозаменяемы: со сменой режима меняется и адрес
  • Правки .wslconfig применяются только после wsl --shutdown
  • Локальные реестры добавьте в noProxy, иначе скачивание станет медленнее
04

Частые вопросы

У меня включён TUN. WSL всё равно нужно настраивать?

Зависит от режима сети. При зеркальном режиме перехват обычно работает. При NAT трафик WSL идёт через виртуальный коммутатор Hyper-V и может полностью миновать адаптер TUN, поэтому переменные окружения остаются надёжным вариантом.

Вчера работало, сегодня нет.

Проверьте, не изменился ли адрес хоста. В режиме NAT он может меняться при каждом перезапуске WSL, и жёстко прописанное значение устаревает. Читайте его при старте оболочки.