Вопрос или проблема
Я использую Tailscale на системе Linux, но у меня возникла проблема с функцией “Magic DNS” в Tailscale, которая перезаписывает мой файл /etc/resolv.conf и мешает разрешению имен серверов.
Вот моя настройка:
У меня установлены Tailscale в директории, где находятся бинарные файлы tailscale и tailscaled.
Я запускаю демона с помощью shell-скрипта после каждой загрузки, который выглядит следующим образом:
/data/tailscale/tailscaled -no-logs-no-support -statedir /data/tailscale/state
Согласно документации, Magic DNS можно отключить, выполнив
tailscale up --accept-dns=false
что предотвратит изменение /etc/resolv.conf
.
Поскольку tailscaled уже запускается и включает Magic DNS (без явного выполнения мной tailscale up), я не уверен, как применить настройку --accept-dns=false
до того, как демон изменит /etc/resolv.conf
.
Есть ли способ настроить Tailscale так, чтобы отключить Magic DNS с самого начала, или мне следует изменить свой скрипт запуска, чтобы включить tailscale up
сразу после запуска tailscaled
?
Любые советы по правильной последовательности или настройке, чтобы предотвратить перезапись /etc/resolv.conf
, будут очень appreciated. Спасибо!
Ответ или решение
Чтобы предотвратить перезапись файла /etc/resolv.conf службой Tailscale на Linux, необходимо понимать, как работает этот инструмент, а также какие настройки можно применить для решения вашей проблемы. Ниже приведены детальные шаги, которые помогут вам эффективно настроить Tailscale, сохранив требуемую конфигурацию DNS.
Понимание проблемы
Tailscale автоматически обновляет файл /etc/resolv.conf для поддержки функции "Magic DNS". Это может вызвать проблемы, если в вашей сети требуется использовать определенные настройки DNS, отличающиеся от тех, что предоставляет Tailscale. Следовательно, вам необходимо отключить эту функциональность перед тем, как Tailscale произведет изменения в вашем DNS.
Решение: отключение Magic DNS
-
Использование
tailscale up
: Один из способов избежать перезаписи файла /etc/resolv.conf — выполнить командуtailscale up --accept-dns=false
сразу после запуска демонаtailscaled
. Тем не менее, вы правы, что эта команда должна быть выполнена до того, как Tailscale сможет внести изменения. -
Модификация вашего скрипта запуска: Вам следует изменить ваш скрипт для запуска
tailscaled
, добавив командуtailscale up
сразу после того, как запустится демон. Вот пример, как это может выглядеть:#!/bin/bash /data/tailscale/tailscaled -no-logs-no-support -statedir /data/tailscale/state & sleep 2 # ожидание старта демона /data/tailscale/tailscale up --accept-dns=false
В этом случае мы запускаем
tailscaled
в фоновом режиме, а затем ожидаем пару секунд, чтобы убедиться, что демон полностью запущен, после чего выполняемtailscale up
с необходимым параметром. -
Настройка конфигурации Tailscale: В случае, если вы не хотите, чтобы Tailscale менял файл
/etc/resolv.conf
, вы также можете рассмотреть возможность создания конфигурационного файла в/etc/tailscale
(если такой существует) или настройку параметров при помощи системы конфигурации вашего дистрибутива Linux, которая отвечает за управление сетевыми интерфейсами. Однако, как правило, использование командыtailscale up
является наиболее простым и надежным способом.
Альтернативные варианты конфигурации
Если для вашего сценария важна недоступность изменения файла /etc/resolv.conf
, вы можете также рассмотреть следующие методы:
-
Изменение политики DNS в системе: Вы можете вернуть управление DNS на уровень системы, что позволит обойти автоматическую конфигурацию, установленную Tailscale. В этом случае вы можете управлять разрешением имен так, как вам нужно, хотя это потребует дополнительных настроек.
-
Создание ротации копий файла
/etc/resolv.conf
: Хотя это менее элегантное решение, вы можете создать скрипт, который будет периодически восстанавливать ваш оригинальный файл/etc/resolv.conf
. Это может быть полезно в короткий срок, но не решает основную проблему.
Заключение
Итак, самый эффективный способ предотвратить перезапись вашего файла /etc/resolv.conf
Tailscale — это модифицировать ваш скрипт запуска, добавив команду tailscale up --accept-dns=false
сразу после запуска демона. Этот подход позволит вам использовать Tailscale, сохраняя при этом желаемые настройки DNS в вашей системе. Если у вас возникнут дополнительные вопросы, не стесняйтесь обратиться за помощью.