Есть ли способ изменить DNS-сервер, который система использует в командной строке?

Некоторые говорят, что следующее будет работать,

nmcli con mod <connectionName> ipv4.dns "8.8.8.8 8.8.4.4"

но сделав это, dig все еще говорит, что использует локальный DNS:

;; ANSWER SECTION:
google.com.             150     IN      A       172.217.2.174

;; Query time: 14 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)

Это вообще возможно?

3 ответа3

0

Суть в том, что вам нужно изменить соответствующую строку (и) сервера имен в вашем файле /etc/resolve.conf, чтобы изменить активный сервер имен. В зависимости от вашего конкретного дистрибутива и конф это может быть или не быть постоянным - обычно не из-за перезаписи его сетевым менеджером или установочным скриптом.

Самый простой способ сделать это с помощью текстового редактора (vi, pick или любой другой). В зависимости от того, что именно в нем содержится и что вы хотите заменить на него, вы можете написать сценарий или команду для этого.

Если вам нужны конкретные инструкции для ОС, вам нужно сообщить версию для дистрибутива и, возможно, другие особенности.

0
  • Нашел ответ для nmcli на https://askubuntu.com/a/922011/843820
    Это почти идеально, только последний шаг, «тогда вы должны отключить" dnsmasq "» , я не могу следовать под моей Ubuntu 18.04 сейчас. Как только это закончится, это идеальный ответ на изменение DNS-сервера с помощью команд.

  • Кроме того, есть и другие варианты, такие как прямое использование resolvconf или даже dnsmasq , и решение можно найти по адресу https://unix.stackexchange.com/a/323498.

0

Синтаксис, который вы используете, правильный, но поскольку вы используете NetworkManager nmcli , для того, чтобы это применилось, вы должны разорвать и снова разорвать соединение. Следующее:

nmcli con down <conname>; nmcli con up <conname>

Надеюсь, это поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .