systemctl이 network.service를 다시 시작한 후 이름 서버가 삭제됩니다.

systemctl이 network.service를 다시 시작한 후 이름 서버가 삭제됩니다.

Centos 7에서 작업 중인데 네트워크 인터페이스를 dhcp에서 고정 IP 구성으로 설정하는 데 문제가 있습니다.

변경 사항 이 /etc/resolv.conf사라지고 systemctl restart network.service
일반 파일이 생성되었습니다.

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

참고: ifcfg-ens160 파일의 PEERDNS="yes"입니다.
PEERDNS=, 여기서는 다음 옵션 중 하나입니다. yes — DNS 지시어가 설정된 경우 /etc/resolv.conf를 수정합니다. DHCP를 사용하는 경우 기본값은 yes입니다.
no - /etc/resolv.conf를 수정하지 마십시오.

여기에서 발췌 :https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/3/html/Reference_Guide/s1-networkscripts-interfaces.html

뭔가 관련이 있을 것 같지만 dhcp로 설정하면 제대로 작동하므로 /etc/resolv.conf자동으로 구성하면 성공할 것으로 기대합니다.

해결 방법은 /etc/resolv.conf서비스를 다시 시작한 후 편집하는 것입니다.
하지만 저는 이 동작과 파일이 기본 실패 메시지로 재설정되는 것을 방지하는 방법을 이해하고 싶습니다.

답변1

/etc/init.d/network고전 (으로 번역됨 network.service)을 와 비교할 수 있습니다 NetworkManager.service. 이것들은 부분적으로 공존할 것으로 예상되지만 그중 하나만 선택하고 다음을 수행하는 것이 가장 좋습니다.멈추다그리고장애를 입히다또 다른.

/etc/resolv.conf어느 쪽이든 직접 작성하지 않고 올바르게 구성 /etc/sysconfig/network및/또는 /etc/sysconfig/network-scripts/ifup-*파일링 하는 것이 좋습니다 .

활성화해야합니다DHCP또는 에서 네임서버를 수동으로 설정하세요 /etc/sysconfig.

예(DHCP):

BOOTPROTO=dhcp

예(정적):

BOOTPROTO=none
DNS1=192.168.1.1

실제로 /etc/resolv.conf직접 설정하고 NetworkManager가 덮어쓰지 않도록 하려면 에서 그렇게 할 수 있습니다 /etc/NetworkManager/NetworkManager.conf.

[main]
dns=none

네임서버 수에 대한 추가 질문과 관련하여 /etc/resolv.conflibc 확인자 동작에서 너무 많은 것을 기대해서는 안 됩니다. 단지 네임서버를 순서대로 시도하고 목록에 존재하지 않는 네임서버가 있는 경우 오랜 시간 지연이 발생하게 됩니다.

네임서버를 3개 이상 사용하시는 이유는 잘 모르겠습니다. 하지만 그런 것이 있다면 반드시 다음과 같은 로컬 전달 DNS 서버를 구성해야 합니다.속박되지 않은또는DNS동적 구성에 대한 최상의 경험을 위해서는 이 경우 NetworkManager를 사용해야 합니다 /etc/resolv.conf.127.0.0.1

NetworkManager 및 dnsmasq는 오랫동안 지원되어 왔으며 Ubuntu 및 기타 배포판의 기본값입니다.

[main]
dns=dnsmasq

바인딩되지 않은 NetworkManager는 최신 NetworkManager 버전에서 알파 품질이며 현재 다음이 필요합니다.dnssec 트리거주요 사용 사례는 로컬 호스트에서 DNSSEC 유효성 검사를 제공하는 것이기 때문입니다.

[main]
dns=unbound

dnsmasq 및 언바운드 플러그인이 모두 /etc/resolv.conf구성 되어 nameserver 127.0.0.1있으며 각 플러그인은 자체 로컬 DNS 서버를 구성합니다.

답변2

이름 서버를 지정하려면 dhclient.conf를 사용하십시오. 이는 네임서버 항목의 순서를 세밀하게 제어할 수 있으며 네트워크 구성의 "Red Hat 방식"과 일치합니다.

dhclient.conf는 기본적으로 존재하지 않지만 생성할 수 있습니다.

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

생성된 resolv.conf:

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

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

추가 자료:

  • dhclient.conf 맨페이지
  • /usr/share/doc/dhclient-4.2.5/dhclient.conf.example

답변3

NetworkManager GUI 도구를 사용하여 resolv.conf를 영구 값으로 구성하는 것이 좋습니다. 이 값은 네트워크를 다시 시작해도 유지됩니다.

$ nmtui

또는:

$ nm-connection-editor

DNS 서버, 검색 도메인 등을 추가하세요. 여기에 이미지 설명을 입력하세요.

이제 네트워크를 다시 시작한 후에도 이러한 값이 여전히 정의되어 있는지 확인하십시오.

$ sudo systemctl restart network
$ cat /etc/resolv.conf

관련 정보