máy chủ tên đã bị xóa sau khi systemctl khởi động lại mạng.service


7

Tôi đang làm việc trên centos 7 và có hành vi có vấn đề khi cài đặt giao diện mạng từ dhcp sang cấu hình ip tĩnh.

Tôi chỉnh sửa /etc/resolv.confvà chạy systemctl restart network.service
Các thay đổi mà tôi đã thực hiện đã biến mất và một tệp chung được tạo:

cat /etc/resolv.conf
# Generated by NetworkManager


# No nameservers found; try putting DNS servers into your
# ifcfg files in /etc/sysconfig/network-scripts like so:
#
# DNS1=xxx.xxx.xxx.xxx
# DNS2=xxx.xxx.xxx.xxx
# DOMAIN=lab.foo.com bar.foo.com

THÔNG BÁO: PEERDNS = "có" trong tệp ifcfg-ske160.
PEERDNS =, đây là một trong những điều sau đây: có - Sửa đổi /etc/resolv.conf nếu chỉ thị DNS được đặt. Nếu sử dụng DHCP, thì có là mặc định.
không - Không sửa đổi /etc/resolv.conf.

Lấy từ đây: https://access.redhat.com/documentation/en-US/Red_Hat_ Entryprise_Linux / 3

Tôi đoán nó có liên quan đến nó, nhưng nó hoạt động tốt khi cài đặt thành dhcp, vì vậy tôi hy vọng rằng nếu nó /etc/resolv.conftự động cấu hình thì nó sẽ thành công.

Một cách giải quyết là chỉnh sửa /etc/resolv.confsau khi dịch vụ được khởi động lại.
Nhưng tôi muốn hiểu hành vi và làm cách nào để tránh tập tin được đặt lại thành thông báo lỗi mặc định này.


Trong tệp ifcfg-ske160 của bạn, bạn đã chỉ định máy chủ DNS chưa? DNS{1} = x.x.x.x, DNS{2}=x.x.x.x
Ray

Tôi có nên không? Nhân tiện, quy trình tương tự hoạt động tốt trên CentOS 6.2. Có thể có điều gì đó đã thay đổi trong cách xử lý các dịch vụ - systemctlcông cụ
csny

Tôi không nghĩ các máy chủ DNS sẽ cư trú nếu bạn không xác định chúng. Theo RedHat , DNS{1,2}=<address>, where <address> is a name server address to be placed in /etc/resolv.conf if the PEERDNS directive is set to yes.tôi sẵn sàng đặt cược rằng ifcfgtệp trên bản dựng CentOS6.2 mà bạn đề cập có các máy chủ DNS được xác định hoặc PEERDNS="no".
Ray

Bạn mất tiền đặt cược :) Các ips DNS chỉ được ghi vào /etc/resolv.confPEERDNS=yes. Làm thế nào nó có thể làm việc trước đây?
csny

Đã tìm thấy cái này: unixmen.com/setting-dns-server-centos-7 Không nói rằng tệp ifcfg phải bao gồm các mục nhập DNS
csny

Câu trả lời:


10

Bạn có thể trộn lẫn cổ điển /etc/init.d/network(được dịch sang network.service) với NetworkManager.service. Trong khi những người được dự kiến ​​sẽ cùng tồn tại một phần, tốt hơn hết là chọn chỉ một trong số họ và dừngvô hiệu hóa phần còn lại.

Dù bằng cách nào, tốt hơn hết là không viết /etc/resolv.conftrực tiếp mà thay vào đó hãy cấu hình /etc/sysconfig/networkvà / hoặc /etc/sysconfig/network-scripts/ifup-*tệp đúng cách .

Bạn nên kích hoạt dhcp hoặc đặt máy chủ tên theo cách thủ công /etc/sysconfig.

Ví dụ (DHCP):

BOOTPROTO=dhcp

Ví dụ (tĩnh):

BOOTPROTO=none
DNS1=192.168.1.1

Nếu bạn thực sự muốn đặt /etc/resolv.conftrực tiếp và bạn muốn đảm bảo NetworkManager sẽ không ghi đè lên nó, bạn có thể thiết lập nó /etc/NetworkManager/NetworkManager.conf.

[main]
dns=none

Về câu hỏi bổ sung của bạn về số lượng máy chủ tên, bạn không bao giờ cần nhiều hơn một hoặc hai máy chủ tên /etc/resolv.conf. Bạn không nên mong đợi nhiều từ hành vi của trình phân giải libc, nó chỉ thử các máy chủ tên theo thứ tự và bạn sẽ gặp phải sự chậm trễ lâu nếu bạn có máy chủ tên không còn tồn tại trong danh sách.

Tôi không biết lý do của bạn để sử dụng nhiều hơn ba máy chủ tên. Nhưng nếu có, bạn chắc chắn cần phải định cấu hình máy chủ DNS chuyển tiếp cục bộ như không gắn kết hoặc dnsmasq và trỏ /etc/resolv.confđến 127.0.0.1. Để có trải nghiệm tốt nhất với cấu hình động, bạn nên sử dụng NetworkManager trong trường hợp này.

Trình quản lý mạng với dnsmasq đã được hỗ trợ từ lâu và là mặc định trên Ubuntu và có thể các bản phân phối khác.

[main]
dns=dnsmasq

Trình quản lý mạng không liên kết có chất lượng alpha trong các phiên bản NetworkManager mới nhất và hiện tại cũng cần kích hoạt dnssec vì trường hợp sử dụng chính là cung cấp xác thực DNSSEC trên máy chủ cục bộ.

[main]
dns=unbound

Cả hai dnsmasq và plugin không ràng buộc cấu hình /etc/resolv.confđể nameserver 127.0.0.1cho bạn và mỗi người trong số họ cấu hình máy chủ DNS địa phương tương ứng.


Pavel, cảm ơn. Cái nhìn sâu sắc của bạn đã giúp tôi. Tôi chỉ đặt BOOTPROTO = none và thêm các máy chủ DNS1, DNS2, DNS3, DNS4 và khởi động lại mạng bằng cách sử dụng khởi động lại mạng dịch vụ. Bây giờ, khởi động lại đã không xóa các mục trong /etc/resolv.conf. Tuy nhiên, điều tôi tìm thấy là nó chỉ có thể thêm tối đa 3 máy chủ DNS trong tệp /etc/resolve.conf. Thêm DNS thứ tư ghi lại một thông báo trong tệp: #### LƯU Ý: trình phân giải libc có thể không hỗ trợ nhiều hơn 3 máy chủ tên. ### Máy chủ tên được liệt kê dưới đây có thể không được công nhận.
Manoj Kumar

0

Sử dụng dhclient.conf để chỉ định máy chủ tên. Nó cung cấp cho bạn quyền kiểm soát chi tiết đối với thứ tự các mục nhập máy chủ tên và phù hợp với "Red Hat Way" trong việc định cấu hình mạng.

dhclient.conf không tồn tại theo mặc định nhưng bạn có thể tạo nó:

interface "eth0" {
    prepend domain-name-servers 8.8.8.8;
    append domain-name-servers 8.8.4.4;
}

Kết quả giải quyết.

# Generated by NetworkManager
search example.com
nameserver 8.8.8.8
nameserver 10.0.2.3
nameserver 8.8.4.4

Đã thử nghiệm với Vagrant:

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  config.vm.provision "shell", inline: <<VAGRANTEOF
  cat <<EOF > /etc/dhcp/dhclient-eth0.conf
interface "eth0" {
    prepend domain-name-servers 8.8.8.8;
    append domain-name-servers 8.8.4.4;
}
EOF
  sudo service network restart
VAGRANTEOF
end

Đọc thêm:

  • trang web dhclient.conf
  • /usr/share/doc/dhclient-4.2.5/dhclient.conf.example

0

Tôi sẽ khuyên bạn nên sử dụng công cụ GUI của Trình quản lý mạng, để định cấu hình độ phân giải với các giá trị vĩnh viễn - sẽ vẫn còn sau khi khởi động lại mạng:

$ nmtui

Hoặc là:

$ nm-connection-editor

Thêm máy chủ DNS, Tên miền tìm kiếm, v.v .: nhập mô tả hình ảnh ở đây

Bây giờ hãy xác minh các giá trị đó vẫn được xác định sau khi khởi động lại mạng:

$ sudo systemctl restart network
$ cat /etc/resolv.conf
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.