Làm cách nào để đặt DNS của tôi khi độ phân giải bị ghi đè?


279

Hầu hết các thông tin tôi thấy trực tuyến đều nói là chỉnh sửa /etc/resolv.conf, nhưng mọi thay đổi tôi thực hiện ở đó chỉ bị ghi đè.

$ cat /etc/resolv.conf 
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- 
#     YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1

Có vẻ như 127.0.1.1 là một thể hiện cục bộ của dnsmasq. Các dnsmasqtài liệu nói để chỉnh sửa /etc/resolv.conf. Tôi đã thử đặt máy chủ tên tùy chỉnh /etc/resolv.conf.d/base, nhưng những thay đổi không hiển thị /etc/resolv.confsau khi chạy sudo resolvconf -u.

FYI, tôi không muốn thay đổi DNS trên cơ sở mỗi kết nối, tôi muốn đặt cài đặt DNS mặc định để sử dụng cho tất cả các kết nối khi không được chỉ định khác.

CẬP NHẬT:

Tôi đã tự trả lời câu hỏi này: https://unix.stackexchange.com/a/163506/67024

Tôi nghĩ đó là giải pháp tốt nhất kể từ:

  1. Nó hoạt động.
  2. Nó đòi hỏi ít thay đổi nhất và
  3. Nó vẫn hoạt động cùng với bộ đệm DNS của dnsmasq, thay vì bỏ qua nó.

Trả lời tốt hơn câu hỏi của bạn thay vì cập nhật câu hỏi của bạn Tôi nghĩ rằng ... sẽ dễ dàng hơn để tìm câu trả lời đúng mà bạn đã đưa ra cho vấn đề của mình
Philippe Gachoud

Có vẻ như hầu hết các câu trả lời đều theo định hướng Ubuntu và quá phức tạp. Một giải pháp phổ quát cho người dùng NetworkManager là chỉ cần thêm dns=nonevào /etc/NetworkManager/NetworkManager.conf(xem chi tiết trong câu trả lời của tôi bên dưới).
Skippy le Grand Gourou

Tôi nghĩ rằng câu trả lời này làm rõ lý do tại sao độ phân giải bị ghi đè, sau đó bạn biết cách định cấu hình nó.
foman

Câu trả lời:


250

Tôi tin rằng nếu bạn muốn ghi đè máy chủ tên DNS, bạn chỉ cần thêm một dòng tương tự như thế này trong basetệp của bạn resolv.conf.d.

Thí dụ

$ sudo vim /etc/resolvconf/resolv.conf.d/base

Sau đó đặt danh sách máy chủ tên của bạn như vậy:

nameserver 8.8.8.8
nameserver 8.8.4.4

Cuối cùng cập nhật resolvconf:

$ sudo resolvconf -u

Nếu bạn xem trang man cho resolvconfnó mô tả các tệp khác nhau bên dưới /etc/resolvconf/resolv.conf.d/.

   /etc/resolvconf/resolv.conf.d/base
          File  containing  basic  resolver  information.  The lines in this 
          file are included in the resolver configuration file even when no
          interfaces are configured.

   /etc/resolvconf/resolv.conf.d/head
          File to be prepended to the dynamically generated resolver 
          configuration file.  Normally this is just a comment line.

   /etc/resolvconf/resolv.conf.d/tail
          File to be appended to the dynamically generated resolver 
          configuration file.  To append nothing, make this  an  empty  
          file.   This file is a good place to put a resolver options line 
          if one is needed, e.g.,

              options inet6

Mặc dù có một cảnh báo ở đầu headtệp:

$ cat /etc/resolvconf/resolv.conf.d/head
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

cảnh báo này là có để khi các tệp này được xây dựng, cảnh báo cuối cùng sẽ hoạt động theo cách của nó vào resolv.conftệp kết quả mà các tệp này sẽ được sử dụng để thực hiện. Vì vậy, bạn có thể dễ dàng thêm các nameserverdòng được mô tả ở trên cho basetệp, vào headtệp.

Người giới thiệu


21
Ubuntu 14.04 - khi tôi đặt máy chủ tên vào basevà chạy resolvconf -u, máy chủ tên không được đặt vào độ phân giải - khi tôi đặt máy chủ tên vào head, chúng là
HorusKol

7
Ubuntu 14.04 - Cũng phải bình luận về cấu hình được đặt trong/run/resolvconf/interface/NetworkManager
bitsoflogic

3
loại nslookup google.comvà IP đầu tiên trong danh sách phải là máy chủ tên mới của bạn, nếu không, bạn đã làm sai
frazras

6
Ubuntu 16.04: Hoạt động nếu chỉ gắn vào /etc/resolvconf/resolv.conf.d/headchứ không phải với base. Khẳng định với nslookup google.com.
Acumenus

3
Ban đầu, bạn phải resolvconfcài đặt. Bạn có thể cài đặt nó bằng cách làm sudo apt-get install resolvconf.
MAChitgarha

79

Tôi cũng quan tâm đến câu hỏi này và tôi đã thử giải pháp đề xuất @sim.

Để kiểm tra nó, tôi đặt

nameserver 8.8.8.8

trong /etc/resolvconf/resolv.conf.d/base

nameserver 8.8.4.4

trong /etc/resolvconf/resolv.conf.d/head

Sau đó, tôi khởi động lại mạng với

sudo service network-manager restart

Kết quả là /etc/resolv.conftrông giống như

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.4.4
nameserver 127.0.1.1

nm-toolnói rằng dnsserver là

DNS:             208.67.222.222
DNS:             208.67.220.220

đó là những người được cung cấp bởi bộ định tuyến của tôi. Mặt khác, việc đào một địa chỉ cho biết rằng

;; Query time: 28 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)

Nếu tôi đúng, tôi kết luận từ tất cả những điều này

  1. chỉ phần "đầu" được đọc bởi decvonf: phần "cơ sở" được kiểm soát bằng cách nào đó bởi dnsmasq
  2. máy chủ dnsserver thực sự bị ép buộc đến 8.8.4.4 bất kể máy chủ được cung cấp bởi dhcp, NHƯNG bạn mất bộ nhớ đệm được cung cấp bởi dnsmasq, vì yêu cầu luôn được gửi đến 8.8.4.4
  3. dnsmasq vẫn đang sử dụng CHỈ các dnsserver được cung cấp bởi dhcp.

Nói chung, nó hoạt động nhưng tôi không nghĩ rằng đó là kết quả dự định được yêu cầu. Một giải pháp gần gũi hơn tôi nghĩ là như sau. Biên tập

sudo vim /etc/dhcp/dhclient.conf

sau đó thêm

supersede domain-name-servers 8.8.8.8;

Kết quả là như sau: decv.conf chỉ chứa 127.0.0.1, điều đó có nghĩa là bộ đệm dnsmasq được gọi và công cụ nm nói

DNS:             8.8.8.8

điều đó có nghĩa là nếu tên được tìm kiếm không có trong bộ đệm, thì nó sẽ được yêu cầu tại 8.8.8.8 và không phải tại máy chủ được cung cấp bởi dhcp.

Một tùy chọn khác (có lẽ tốt hơn) là sử dụng "trả trước" thay vì "thay thế": theo cách này, nếu tên không được giải quyết theo 8.8.8.8, thì yêu cầu sẽ rơi trở lại trên máy chủ khác. Trong thực tế, công cụ nm nói

DNS:             8.8.8.8    
DNS:             208.67.222.222
DNS:             208.67.220.220

4
Một câu trả lời tốt hơn nhiều so với hack vào các cấu hình NS. Đặc biệt là tùy chọn để đặt trước một máy chủ trước các dhcp được cung cấp. Có vẻ như sự cân bằng hoàn hảo của việc giải quyết vấn đề, mà không tạo ra cái mới!
Steve Midgley

2
Rất nhiều sự rõ ràng và suy nghĩ vào câu trả lời và không chỉ là một mệnh lệnh.
igaurav

3
Đàn ông ơi! "thay thế tên miền máy chủ-máy chủ 8.8.8.8;" là câu trả lời
Jack

Công cụ bước sóng đáng chú ý của nó đã được thay thế bằng nmcli
Fiddy Bux

59

Tôi phát hiện ra rằng bạn có thể thay đổi máy chủ tên dnsmasqsử dụng bằng cách thêm các dòng sau vào /etc/dnsmasq.conf:

server=8.8.8.8
server=8.8.4.4

/etc/dnsmasq.confMặc dù tôi không có tệp, vì nó được cài đặt bởi gói dnsmasq, nhưng Ubuntu chỉ đi kèm với dnsmasq-base. Tôi chạy sudo apt-get install dnsmasq, sau đó chỉnh sửa /etc/dnsmasq.conf, sudo service dnsmasq restartvà sau đó sudo service network-manager restart.

Tôi đã chạy sudo tail -n 200 /var/log/syslogđể kiểm tra nhật ký hệ thống của mình và xác minh rằng đó dnsmasqlà sử dụng máy chủ tên mà tôi đã chỉ định:

Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.8.8#53
Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.4.4#53

4
Có một lý do tại sao điều này được đánh dấu là câu trả lời tốt nhất ... bởi vì nó thực sự là! cảm ơn rất nhiều! Tôi sẽ nói thêm rằng, sau tất cả các bước bạn đã đề cập, việc khởi động lại mạng có thể cần thiết để mọi thứ hoạt động trơn tru (đó là đối với tôi .... sudo service network-manager restart)
Clint Eastwood

3
Trên Ubuntu 14.04 Server, khoảng một nửa thời gian khởi động nguội sẽ không có kết nối internet bằng URL nhưng Địa chỉ IP sẽ hoạt động. Tôi đã dành rất nhiều thời gian vô ích để cố gắng sửa nó, từ bỏ trong nhiều tháng, sau đó tìm thấy giải pháp này. Tôi cũng nghĩ rằng đó là câu trả lời tốt nhất.
Nate Lockwood

Thật thú vị khi dnsmasq phải được cài đặt. Điều này thực sự đã sửa DNS của tôi trong một tình huống bình thường, nhưng nó đã phá vỡ hoàn toàn cấu hình VPN của tôi (kết nối VPN hiện không thành công ...)
PlasmaBinturong

22

Đối với các tình huống IP tĩnh, Hướng dẫn máy chủ Ubuntu cho biết thay đổi tệp / etc / mạng / giao diện, có thể trông như thế này:

iface eth0 inet static
address 192.168.3.3
netmask 255.255.255.0
gateway 192.168.3.1
dns-search example.com
dns-nameservers 192.168.3.45 192.168.8.10

Bạn thay đổi IP 192.168.3.45 192.168.8.10 cho những cái bạn muốn, như 8.8.8.8

https://help.ubfox.com/14.04/serverguide/serverguide.pdf Trang 38


Điều này chắc chắn có vẻ đúng nhưng làm thế nào để tôi tạo lại độ phân giải?!
Joel Berger

3
@JoelBerger ifdown eth0; ifup eth0.
Dzamo Norton

17
  1. Tìm kiếm 'Kết nối mạng'
  2. Mở nó ra

                        nhập mô tả hình ảnh ở đây

  3. Sau đó chọn WiFi hoặc Ethernet hoặc bất cứ thứ gì bạn đang sử dụng và nhấp vào chỉnh sửa. Bạn sẽ nhận được điều này:

                  nhập mô tả hình ảnh ở đây

  4. Chọn ipv4 trong tab

  5. Chỉ chọn địa chỉ trong phương thức
  6. Nhập tên DNS của bạn bên dưới và lưu nó

  7. Bạn đã hoàn tất


Tôi phải làm điều này cho mỗi kết nối mạng. Trước đây, bạn có thể thay đổi mặc định cho tất cả các kết nối, đó là những gì tôi đang tìm kiếm để làm ở đây.
Seán Hayes

2
Em yêu anh! cài đặt giao diện người dùng này đã lưu ass của tôi khỏi mudo và vim mess: '(
Luke

Sử dụng Mint (trên Ubuntu 14.04) - nhưng cũng thấy điều này với KDE - vì một số lý do, việc đặt máy chủ DNS trong Trình quản lý mạng GUI không ảnh hưởng đến cài đặt DNS được sử dụng trong thiết bị đầu cuối
HorusKol

2
Câu trả lời hay nhất imho. Trên Ubuntu 14.04, tôi có 2 địa chỉ IP bên ngoài cho DNS không nhận ra máy khách trong mạng gia đình của tôi. Phương thức rời khỏi 'Tự động (DHCP)' cho kết nối có dây đã thêm địa chỉ IP của bộ định tuyến của tôi vào danh sách hiện có. Đối với kết nối không dây qua wlan0, điều đó không hoạt động, nhưng Phương thức trên 'Địa chỉ tự động (DHCP) chỉ thay thế các địa chỉ bên ngoài bằng IP bộ định tuyến của tôi và sau đó cũng hoạt động. Áp dụng thay đổi với sudo service network-manager restart, chờ một chút, xác minh với nmcli d list | grep 'DNS\|IP-IFACE'. Và ping khách hàng nội bộ của bạn theo tên.
RolfBly

13

Một cách giải quyết nhanh và bẩn chưa được đề cập đến là đặt cờ bất biến trên resolv.conftệp ngay sau khi chỉnh sửa.

$ sudo nano /etc/resolv.conf

Thêm cái này và lưu lại:

nameserver 8.8.8.8

Sau đó:

$ sudo chattr +i /etc/resolv.conf

Điều đó sẽ làm các trick. Tôi làm điều này trên hệ thống của tôi quá.


18
Bất cứ khi nào giải pháp của bạn liên quan đến chattr, nó không thực sự là một giải pháp.
Jeff Jirsa

1
đây là những gì tôi làm trên các hệ thống mà tôi cần tạm thời thay đổi DNS vì một số lý do và không muốn sửa đổi cấu hình. Là một giải pháp lâu dài, tôi sẽ không đề xuất nó.
hochl

3
"cách giải quyết nhanh và bẩn"
YouniS Bensalah

10
Đây không phải là bẩn. Các chương trình phá hủy cấu hình cục bộ vì họ nghĩ rằng họ biết rõ hơn là bẩn.

11

Cấu hình DNS trong Linux

Việc sử dụng DNS trên linux được thực hiện qua một tập hợp các thói quen trong thư viện C cung cấp quyền truy cập vào Hệ thống tên miền Internet (DNS). Tệp cấu hình trình phân giải ( resolv.conf) chứa thông tin được đọc bởi các trình phân giải thường trình trong lần đầu tiên chúng được gọi bởi một quy trình. Trong ngắn hạn, mỗi quá trình yêu cầu DNS sẽ đọc /etc/resolv.confqua thư viện. NSS được xếp lớp trên đầu này và được cấu hình bởi /etc/nsswitch.conf.

Cấu hình DNS Linux được đặt trong tệp /etc/resolv.conf NHƯNG có một số chương trình / dịch vụ muốn tự động quản lý và xử lý tệp cấu hình DNS tại /etc/resolv.conf. Trong một số tình huống bạn có thể muốn tự mình quản lý tệp này. Mỗi DNS quản lý chương trình / dịch vụ có các tệp cấu hình riêng như /etc/dnsmasq.conf(đối với dịch vụ dnsmasq) và nối thêm cấu hình DNS khi thay đổi kết nối và / hoặc trên các sự kiện khác ... một giải pháp nhanh là khóa tệp cấu hình DNS với chattr +i /etc/resolv.confnhưng điều này không được khuyến nghị trong một số trường hợp nhất định, một giải pháp tốt hơn là thiết lập chính xác tất cả các chương trình / dịch vụ bằng cách sử dụng DNS như (dnsmasq / network-manager / decvconf / v.v.)

Lấy lại quyền kiểm soát DNS

Dưới đây là danh sách đầy đủ các thiết lập để lấy lại quyền kiểm soát độ phân giải và tránh bị ghi đè ( làm thế nào để vô hiệu hóa / thiết lập DNS từ vị trí khác ngoài decv.conf) lưu ý rằng tùy thuộc vào hệ thống / cấu hình của bạn, bạn có thể không có một hoặc nhiều chương trình được liệt kê ở đây.

1. Giải quyết:

Cấu hình tập tin

cat /etc/resolvconf/resolv.conf.d/head
nameserver 8.8.4.4
cat /etc/resolvconf/resolv.conf.d/base
nameserver 8.8.4.4

Cập nhật cấu hình

sudo resolvconf -u

Vô hiệu hóa độ phân giải

systemctl disable --now resolvconf.service 

2. Dịch vụ Dnsmasq:

Cấu hình tập tin

cat /etc/dnsmasq.conf
server=1.1.1.1
server=8.8.4.4

Cập nhật cấu hình

sudo systemctl restart dnsmasq.service

3. Quản lý mạng:

Cấu hình tập tin

/etc/NetworkManager/*

Vô hiệu hóa DNS

$ cat /etc/NetworkManager/conf.d/no-dns.conf
[main]
dns=none

Kích hoạt DNS

$ cat /etc/NetworkManager/conf.d/dns.conf
[main]
dns=default

[global-dns]
searches=example.com

[global-dns-domain-*]

Sử dụng dịch vụ đã được giải quyết

$ cat /usr/lib/NetworkManager/conf.d/resolved.conf 
[main]
dns=systemd-resolved

Sử dụng độ phân giải

$ cat /usr/lib/NetworkManager/conf.d/resolvconf.conf 
[main]
rc-manager=resolvconf

Cập nhật cấu hình

systemctl restart NetworkManager.service

4. Giao diện mạng:

Cấu hình tập tin

$ cat /etc/network/interfaces
#nameservers
# or dns-search like so
# dns-search x.y 
dns-nameservers 4.4.4.4 8.8.8.8

Cập nhật cấu hình

reboot

5. Máy khách DHCP:

Cấu hình tập tin

$ cat /etc/dhcp3/dhclient.conf
supersede domain-name-servers <dns_ip_address1>,<dns_ip_address2>;

Cập nhật cấu hình

reboot

6. Dịch vụ Rdnssd:

Vô hiệu hóa rdnssd

systemctl disable --now rdnssd.service

7. Dịch vụ đã giải quyết:

Vô hiệu hóa giải quyết

systemctl disable --now systemd-resolved.service

8. Netconfig:

Cấu hình tập tin

/etc/sysconfig/network/config

Vô hiệu hóa netconfig

cat /etc/sysconfig/network/config
NETCONFIG_DNS_POLICY=""

Cập nhật cấu hình

reboot

Cài đặt Máy chủ DNS

Ví dụ về /etc/resolv.confcấu hình

#Cloudflare
nameserver 1.0.0.1

#Google
#nameserver 8.8.8.8
#nameserver 8.8.4.4

#Cloudflare 
#nameserver 1.1.1.1

#Classic Config
#nameserver 192.168.1.1
#search lan

10

Vấn đề của tôi là một chút khác nhau, tôi muốn ghi đè các máy chủ DNS bộ định tuyến của tôi. Tôi đã tìm thấy liên kết này từ Ubuntu: https://wiki.ubfox.com/OverrideDNSServers

Nó nói: Nếu bạn muốn ghi đè cài đặt DNS được cung cấp cho bạn bởi máy chủ DHCP, hãy mở

/etc/dhcp3/dhclient.conf

và thêm dòng sau:

supersede domain-name-servers <dns_ip_address1>,<dns_ip_address2>;

thay thế <dns_ip_address*>các mục với nội dung thích hợp.


Đây là câu trả lời đã giải quyết vấn đề của tôi.
Michael

Hoàn hảo. Chỉ cần thêm rằng bạn nên khởi động lại dịch vụ mạng để kích hoạt các thay đổi.
Nick Triantafillou

Nếu chúng ta không có dhcp3thư mục đó thì sao? Tôi có Xubfox 17.10, nó đã được chuyển sang /etc/dhcpđơn giản chưa?
PlasmaBinturong

4

Có thể tôi đang thiếu một cái gì đó, nhưng theo hướng dẫn cấu hình tại https://help.ubfox.com/14.04/serverguide/network-configuration.html tất cả những gì bạn làm là cập nhật như sau. Tôi không chạy proxy - chỉ là một máy phía sau tường lửa và DNS cục bộ (ví dụ hiển thị Googles, nhưng đặt nó thành bất cứ thứ gì bạn cần).

nano /etc/network/interfaces

Mặc định:

# This file...
# and how to activate...

# The loopback...
auto local
iface lo inet loopback

# The primary network interface 
auto eth0
iface eth0 inet dhcp

ĐÃ CẬP NHẬT:

# This file...
# and how to activate...

# The loopback...
auto local
iface lo inet loopback

# The primary network interface 
#iface eth0 inet dhcp
iface eth0 inet static
address x.x.x.x
netmask 255.255.255.0
gateway x.x.x.x

#nameservers
# you may not need dns-search
# I use it because I'm running this on a Windows network 
# so its useful to have
# dns-search x.y 
dns-nameservers 4.4.4.4 8.8.8.8

Khởi động lại, nếu bạn có thể.


3

Hãy thử thêm dns-nameservers XXX.XXX.XXX.Xvào /etc/networking/interfacestập tin của bạn .


Để lại một bình luận khi bạn downvote, xin vui lòng. Đây là phương pháp được đưa ra trong hướng dẫn , trang 38.
Zook

1
Hướng dẫn không đề cập cho thấy tất cả các IP trên một dòng. Câu trả lời này dường như đề nghị thêm một dòng. Và tại sao số cuối cùng chỉ có một chữ X rộng? Tôi nghĩ rằng nó chủ yếu là cách viết kiểu trò chuyện ngắn cực kỳ không chính thức và không chắc chắn đã thu hút được những người ủng hộ, @Zook.
Cees Timmerman

2

Một số câu trả lời ở đây chỉ hoạt động tốt. Tuy nhiên tôi đã không hài lòng với thực tế tôi phải tự đi qua các file cấu hình chỉ để thiết lập các "phù hợp" DNStôi đã đang nhận hơn DHCPvới NetworkManager.

Tôi đã đào một ít và nhận thấy rằng /etc/resolv.conftập tin thực sự là một liên kết và nó đang trỏ đến /run/systemd/resolve/stub-resolv.conf. Sau một số thử nghiệm, có vẻ như /run/systemd/resolve/thư mục đó chứa một tệp khác có tên resolv.confcác cài đặt bạn đã nhận được thông qua DHCP. Vì vậy, thay vì phải ghi đè / tạo tệp cấu hình theo cách thủ công /etc/, bạn chỉ cần liên kết /etc/resolv.conflại để trỏ đến /run/systemd/resolve/resolv.conftệp và tất cả đều ổn:

# sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

Bây giờ bạn có thể chỉnh sửa cài đặt ngay cả từ Trình quản lý mạng trong Gnome. :)

Không chắc chắn nếu điều này sẽ hoạt động trên Ubuntu cũ hơn nhưng nó có trên Ubuntu 17.10.


Khi chúng tôi chạy systemd-resolve --flush-cachetệp liên kết ban đầu bị cắt đứt rõ ràng, câu trả lời ở trên sẽ khôi phục chức năng ban đầu
hafizhanindito

1

EDIT tháng 6/2016

Tôi đã viết một tập lệnh để cập nhật tất cả các cài đặt cho các kết nối hệ thống trong /etc/Network-Manager/system-connections/thư mục. GUI mà bạn sử dụng để chỉnh sửa các kết nối riêng lẻ, chỉnh sửa một tệp cụ thể trong thư mục đó. Kịch bản cập nhật tất cả các tệp - nó chỉ tìm kiếm những người không đặt dns với grep và đặt nó với awk.

Vì việc truy cập các tệp đó yêu cầu sudoquyền truy cập, hãy chạy tập lệnh này sudovà sau đó - khởi động lại trình quản lý mạng

#!/bin/bash
# Author: Serg Kolo
# Date: May 6, 2015
# Description: this script checks all settings for connections in 
# /etc/NetworkManager/system-connections/ , and if there's no custom
# dns set , this script sets it;
# NOTE: run sudo service network-manager restart after running this script

set -x

for file in /etc/NetworkManager/system-connections/* ; do
        grep 'dns=208.67.220.220;' "$file"  || ( awk '{print;if ($1=="[ipv4]"){getline; print "method=auto\ndns=208.67.220.
220;\nignore-auto-dns=true"}}' "$file" > .tmpfile && ( cat .tmpfile > "$file") )
done

Kịch bản hoạt động:

nhập mô tả hình ảnh ở đây

POST GỐC Một số người dùng ở đây đã chỉ ra rằng DNS được kiểm soát bằng cách nào đó dnsmasq. Điều đó thực sự đúng. Tôi đã phải đối mặt với một vấn đề hơi nhỏ hơn, nơi không có vấn đề làm thế nào tôi thay đổi headhoặc bodytrong /etc/resolvconf/resolv.conf.d, máy tính của tôi có thể không thực sự truy cập thực tập nội trú theo tên miền - chỉ làm việc với các địa chỉ IP.

Những gì tôi đã làm là chỉnh sửa các /etc/NetworkManager/NetworkManager.conftập tin. Ban đầu, nó nói dns=dnsmasqnhưng tôi đã đổi nó thành : dns=208.67.222.222. Mặc dù theo cách này, nm-toolkhông đề cập đến 208.67.222.222, tôi vẫn có thể sử dụng tên miền, không chỉ địa chỉ IP.

Đây là cách NetworkManager.conftập tin của tôi bây giờ:

[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq
dns=208.67.222.222

[ifupdown]
managed=false

LƯU Ý: Để biết thêm chi tiết về vấn đề của tôi và giải pháp này, hãy tham khảo bài đăng của tôi trên Askubfox.com .

CẬP NHẬT # 1

Sau khi trở về nhà từ trường đại học, tôi phát hiện ra rằng tôi không thể kết nối với WiFi tại nhà. Tôi đã đọc một chút về man NetworkManager.confvà nó chỉ ra rằng dns=trong [main]thực sự là một dòng cho các plug-in, vì vậy dòng dns=dnsmasqlà thực sự thêm plugin dnsmasq cho NetworkManager, rõ ràng.

Vì vậy, giải pháp của tôi vẫn hoạt động, không như tôi mong đợi. Đây là đoạn trích từ trang người đàn ông:

dns=plugin1,plugin2, ... List DNS plugin names separated by ','. 

Các plugin DNS được sử dụng để cung cấp chức năng máy chủ lưu trữ bộ nhớ cache cục bộ (giúp tăng tốc truy vấn DNS) và để đẩy dữ liệu DNS đến các ứng dụng sử dụng nó.

Vì vậy, bằng cách thiết lập dns=208.67.222.222, về cơ bản, tôi có thể ngăn NetworkManager sử dụng plugin đó, nếu không thì sẽ sử dụng máy chủ DNS cục bộ (dường như không hoạt động).


1

hai phương pháp

Phương pháp 1

Máy chủ DNS để sử dụng có thể được thay đổi bằng cách cập nhật headtệp trongresolv.conf.d

$ echo 'nameserver 1.1.1.1' | sudo tee /etc/resolvconf/resolv.conf.d/base

và sau đó chạy

$ sudo resolvconf -u

Ở trên sẽ tạo ra một resolv.conftệp chung trong /etcthư mục. Tất cả các yêu cầu giải quyết của bạn sẽ được gửi đến máy chủ tên nói trên. Giải quyết.

Tuy nhiên có những tác động đến điều này. Khi sử dụng resolvconfđể truy vấn trực tiếp 1.1.1.1các độ phân giải địa chỉ, sức mạnh của bộ nhớ đệm được cung cấp bởi dnsmasq sẽ biến mất. Mọi yêu cầu sẽ đến1.1.1.1

Phương pháp 2

Nếu bạn không muốn ở trên xảy ra và sử dụng dnsmasq cho độ phân giải DNS, hãy tham khảo câu trả lời này . Câu trả lời được mô tả đơn giản ở đây.

Thêm nội dung sau vào /etc/dnsmasq.conftập tin.

máy chủ = 1.1.1.1

Sau đó khởi động lại dịch vụ dnsmasq

$ sudo systemctl restart dnsmasq.service

Mọi thứ sẽ hoạt động tốt. Giải quyết.


0

Cách dễ dàng để thay đổi DNS:

$ sudo nano /etc/network/interfaces

Nếu có vấn đề, cài đặt nano:

$ sudo apt-get install nano -y

sau đó ..

  1. tìm thấy điều này: dns-nameservers
  2. nếu bạn không tìm thấy nó chỉ cần gõ nó vào đó
  3. Tôi đã làm của tôi như thế này: dns-nameservers 199.85.126.10 199.85.127.10

Tôi hy vọng đây là cách tốt nhất, tôi đã làm nó như thế này trên VPS.


0

trên thư mục gốc:

  1. bình luận dns=dnsmasqvề/etc/NetworkManager/NetworkManager.conf
  2. thêm supersede domain-name-servers 4.2.2.1,4.2.2.3,4.2.2.5,4.2.2.4,4.2.2.1,4.2.2.2;vào cuối/etc/dhcp/dhclient.conf
  3. sudo service network-manager restart

Sau đây thực hiện các thay đổi được hiển thị ở trên:

$ sudo sed -i 's/dns\x3Ddnsmasq/\x23dns\x3Ddnsmasq/' \
   /etc/NetworkManager/NetworkManager.conf

$ echo 'supersede domain-name-servers 4.2.2.1,4.2.2.3,4.2.2.5,4.2.2.4,4.2.2.1,4.2.2.2;' | \
   sudo tee --append /etc/dhcp/dhclient.conf

$ sudo service network-manager restart

Đợi 7/10 giây để hoàn tất quá trình khởi động lại, hãy kiểm tra cấu hình của bạn với "nslookup nist.gov". Hoạt động tốt trên Ubuntu LTS 14.04.


0

NB: Giống như hầu hết các câu trả lời, câu trả lời này giả định việc sử dụng NetworkManager. Tuy nhiên, không giống như hầu hết các câu trả lời khác, nó không giả định việc sử dụng resolvconf, dhclienthoặc bất cứ điều gì khác - hãy cẩn thận mà họ có thể tiếp quản, mặc dù (xem cập nhật).

Với số lượt xem của câu hỏi này, thật khó tin là giải pháp 8 ký tự này chưa được đăng: theo man NetworkManager.conf,

dns: [Hoài] none: NetworkManager sẽ không sửa đổi độ phân giải. Điều này ngụ ý người quản lý RC không được quản lý

Do đó thêm

dns=none

trong [main]phần /etc/NetworkManager/NetworkManager.confsau đó khởi động lại NetworkManager và nó sẽ không sửa đổi /etc/resolv.confnữa.

Lưu ý rằng cài đặt rc-manager=unmanagedphải tương đương với dns=nonevà cài đặt đó rc-manager=symlinkcùng với việc có /etc/resolv.confmột liên kết tượng trưng có thể là một ý tưởng tốt hơn (đọc trang chủ được đề cập ở trên).

Cập nhật:

Sau khi NetworkManager ngừng ghi đè /etc/resolv.conf, tôi đoán rằng dhcpcdđã thay thế /etc/resolv.confbằng một tệp trống vô dụng khi khởi động. Trang web dhcpcd.conftrợ giúp, nó đủ để thêm

nohook resolv.conf

trong của bạn dhcpcd.conf(của tôi là trong /etc/dhcpcd.conf).


0

Trên máy chủ Linux centos7 của tôi, cách tốt nhất tôi có thể thay đổi tùy chọn này là sử dụng

nmtui

lệnh không được đề xuất trong bất kỳ câu trả lời ở đây. Bạn có thể chỉnh sửa máy chủ tên trong công cụ này và khi bạn thay đổi tùy chọn quản trị mạng từ tiện ích này, chúng sẽ được tự động áp dụng /etc/resolv.confsau khi khởi động lại. Ở đây bạn có thể tìm thêm thông tin .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.