Вопрос или проблема
У меня есть сеть Tailscale. Одно из устройств предлагает маршрутизатор подсети для 10.1.2.0/24
, что позволяет мне удаленно получить доступ к частям моей сети, которые не имеют и не совместимы с клиентами Tailscale.
Когда я подключаюсь к Tailnet в сети, которая не использует эту подсеть, всё в порядке, и я могу удаленно получить доступ к устройствам в этой подсети. Однако если локальная сеть использует 10.1.2.0/24
, то система предпочитает маршрутизировать трафик в локальную сеть, а не в Tailnet.
Например, если у меня есть SSH-сервер на 10.1.2.3
, и я использую Tailscale в Wi-Fi сети, которая использует 10.1.2.0/24
в качестве своей подсети и 10.1.2.1
в качестве маршрутизатора, SSH-соединения к 10.1.2.3
терпят неудачу, потому что система маршрутизирует 10.1.2.3
в локальную сеть, а не к маршрутизатору подсети Tailscale.
Но если я сделаю это на macOS:
sudo route add -host 10.1.2.3 -interface utun8
…где utun8
— это имя устройства моего адаптера Tailscale, тогда соединения работают. Это, конечно, не помогает на iOS.
Есть ли способ автоматически исправить это для клиентов с помощью конфигурации Tailscale или чего-то еще, помимо очевидного «не используйте две сети с одной и той же подсетью?»
Ответ или решение
Для решения проблемы маршрутизации трафика в Tailscale, когда к одной и той же подсети, такой как 10.1.2.0/24
, подключаются как клиенты Tailscale, так и локальные устройства, следует предпринять несколько шагов по настройке. Эта проблема возникает, когда клиент находит локальную подсеть более привлекательной для маршрутизации, чем подсеть, предлагаемая Tailscale. Тем не менее, существует несколько подходов для эффективного решения этой проблемы.
1. Настройка маршрутов Tailscale
Во-первых, убедитесь, что ваш маршрутизатор Tailscale правильно настроен для рекламы подсетей. Это можно сделать с помощью команды tailscale up
с указанием параметра --advertise-routes
, чтобы указать, какие подсети будут доступны для удаленного доступа. Вот пример команды:
tailscale up --advertise-routes=10.1.2.0/24
Убедитесь, что маршрутизатор также имеет подключение к интернету и доступ к другим устройствам в этой подсети.
2. Приоритет маршрутов
Для того чтобы маршруты Tailscale имели приоритет над локальными сетями, необходимо вручную изменить таблицы маршрутизации на уровне клиента. Это особенно актуально для таких операционных систем как macOS. Используя команду, которую вы уже применили:
sudo route add -host 10.1.2.3 -interface utun8
Данная команда добавляет маршрут для конкретного хоста через интерфейс Tailscale, что позволяет избежать использования локального интерфейса.
3. Использование VPN
Если у вас есть возможность применения VPN, рассмотрите вариант настройки Tailscale в режиме "локальный VPN". Это позволит клиентам всегда использовать Tailscale для доступа к ресурсам, включая подсети, которые совпадают с локальными.
4. Конфигурация DNS
Также полезно настроить DNS, чтобы указать на Tailscale в качестве основного источника для разрешения имен. Используйте следующие параметры для операторов DNS при настройке Tailscale:
- Убедитесь, что вы используете DNS-серверы, которые поддерживают и маршрутизируют запросы через Tailscale.
- Настройте A-записи для хостов в Tailscale, что позволит клиентам всегда разрешать имена через Tailscale.
5. Альтернативные методы
Если вы хотите избежать сложных настроек маршрутизации на каждом клиенте, рассмотрите возможность использования сетевых адресов, которые не пересекаются. Например, если у вас есть контроль над локальной сетью, стоит изменить подсеть локальной сети на другую, например 10.1.3.0/24
. Это избавит вас от необходимости выполнять манипуляции с маршрутом, так как клиенты будут использовать Tailscale автоматически.
Заключение
Решение проблемы маршрутизации трафика в Tailscale, когда используется одна и та же подсеть, требует тщательной настройки маршрутов, применения VPN-технологий и, возможно, изменения конфигурации вашей локальной сети. Применение этих шагов поможет вам не только получить доступ к ресурсам Tailscale, но и устранить конфликт маршрутизации, что значительно упростит работу с вашим Tailscale-окружением.