Как я могу предотвратить перезапись /etc/resolv.conf Tailscale на Linux?

Вопрос или проблема

Я использую 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

  1. Использование tailscale up: Один из способов избежать перезаписи файла /etc/resolv.conf — выполнить команду tailscale up --accept-dns=false сразу после запуска демона tailscaled. Тем не менее, вы правы, что эта команда должна быть выполнена до того, как Tailscale сможет внести изменения.

  2. Модификация вашего скрипта запуска: Вам следует изменить ваш скрипт для запуска 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 с необходимым параметром.

  3. Настройка конфигурации 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 в вашей системе. Если у вас возникнут дополнительные вопросы, не стесняйтесь обратиться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...