CentOS7 hostnamectl set-hostname이 /etc/resolv.conf와 혼동됩니다.

CentOS7 hostnamectl set-hostname이 /etc/resolv.conf와 혼동됩니다.

CentOS7. 네트워크는 모두 정상입니다.

# cat /etc/resolv.conf 
nameserver 192.168.1.1

그런 다음 호스트 이름을 변경하기로 결정했습니다.

# hostnamectl set-hostname host.domain
# reboot
# cat /etc/resolv.conf 
# Generated by NetworkManager
search domain


# 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

hostnamectl set-hostname내 를 엉망으로 만드 나요 /etc/resolv.conf?

답변1

공식적인 답변으로 MikeA가 질문의 의견에서 말한 내용을 반복합니다.

반드시 dhcpclient일 필요는 없지만 NetworkManager일 수도 있습니다. 동일한 파일에 DNS1, DNS2 및 DOMAIN을 지정하면 올바른 /etc/resolv/conf가 생성됩니다.

이 파일에 DNS1, DNS2 및 DOMAIN이 없으면 /etc/resolv.conf(예: 검색 및 이름 서버)에 올바른 행을 수동으로 추가해야 합니다. - MikeA

나는 그의 의견을 따랐고 성공했습니다(자세한 내용은 아래를 참조하세요).

NetworkManager(CentOS 7 - 현재 방식)

  1. 다음 행을 추가하십시오 /etc/sysconfig/network-scripts/ifcfg-<inf>. DNS1=8.8.8.8 DNS2=8.8.4.4 DOMAIN=mydomain.com
  2. 재부팅


"정적" resolv.conf (기존 방식)

  1. PEERDNS=no~에/etc/sysconfig/network-scripts/ifcfg-<inf>
  2. (예: 검색, 네임서버) 에 올바른 행을 수동으로 추가합니다. /etc/resolv.conf(이것은 기본적으로



추가 정보 및 세부 정보


네트워크 오류로 인해 이 질문을 받게 되었습니다.

서버는 KVM 환경에서 실행되는 CentOS 7 가상 머신입니다.

OS는 SolusVM 제어판 템플릿을 통해 설치되었습니다.

CentOS 7을 설치한 후 호스트 이름을 변경하는 두 가지 방법 중 하나를 수행했지만 어떤 방법인지 기억이 나지 않습니다.

  • hostname myserver.mydomain.com; 또는
  • SolusVM Control Panel의 호스트 이름 탭 사용

이전 호스트 이름을 표시 hostname하고 사용하는 init GIT 커밋이 있지만 고정 IP와 새 호스트 이름/도메인이 포함된 단일 항목이 있으므로 후자만 수행했다고 확신합니다. 차이점은 아래를 참조하세요.resolv.confhosts

이러한 변경 사항은 어떤 이유로든 지속되지 않는 것 같습니다. VM이 SolusVM(또는 KVM 관리자)을 통해 일시 중단되어 재부팅이 발생했을 때 호스트 이름이 systemd.

그런 다음 CentOS 7에서는 호스트 이름이 hostnamectl set-hostname myserver.mydomain.com. [1]

이 작업을 수행하고 재부팅한 후 DNS 확인이 없다는 사실을 발견했습니다. 예를 들어 nslookup google.comDNS ping google.com/ 확인 안 함 오류가 발생했습니다.

SolusVM CentOS 7 설치 템플릿을 통해 설정되었을 수 있는 DNS 구성이 NetworkManager에 의해 지워진 것 같습니다. 변경 사항을 일으킨 사람/원인은 확실하지 않지만 GIT에서는 변경 사항이 발생한 것이 분명합니다. 로 /etc/hostname, /etc/resolv.conf그리고 명령을 /etc/machine-info실행한 직후에 hostnamectl ...(다시, 차이점은 아래 참조).

비슷한 상황에 처한 사람을 위해 문제 해결을 위해 또는 명시적인 예를 들어 수행한 정확한 단계는 다음과 같습니다.

목표: 호스트 이름.도메인 이름(fqdn) 업데이트

(명시적으로: myOLDhostname.myOLDdomain.com -> myNEWhostname.myNEWdomain.com)

  1. 초기 상태:

    • hostname:myOLDhostname.myOLDdomain.com
    • resolv.conf:
      # Generated by NetworkManager search myOLDdomain.com nameserver 8.8.8.8 nameserver 8.8.4.4
    • machine-info: /dev/null(즉, 존재하지 않음)
  2. 실행 명령hostnamectl set-hostname myNEWhostname.myNEWdomain

  3. 재부팅합니다. 다시 시작한 후 다시 SSH를 통해 VM으로 돌아갑니다.
  4. nslookup google.com, 을 시도하면 ping google.com다음과 같은 오류가 발생합니다.ping: unknown host google.com
  5. cat /etc/resolv.conf이제 다음을 보여줍니다:
    # Generated by NetworkManager
    search myNEWdomain.com


    # 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
  6. 검색 후 , 및 항목이 /etc/sysconfig/network-scripts/ifcfg-eth0없는 것으로 나타났습니다. 이로 인해 에서 항목이 누락되었습니다 .DNS1DNS1DOMAINnameserver/etc/resolv.conf
  7. 다음을 통해 다음을 추가합니다 sudoedit /etc/sysconfig/network-scripts/ifcfg-eth0.
    DNS1=8.8.8.8
    DNS2=8.8.4.4
    DOMAIN=myNEWdomain.com
  8. 다시 명령을 실행합니다hostnamectl set-hostname myNEWhostname.myNEWdomain
  9. 그러나 여전히 DNS가 없어 nslookup여전히 ping실패합니다.
  10. 권장되는 대로 NetworkManager를 다시 시작하려고 합니다.systemctl restart NetworkManager.service
  11. 아직 DNS가 없으므로 명령을 실행합니다.reboot
  12. 재부팅 후 SSH를 통해 다시 로그인하면 작동합니다. pingnslookp다 성공했습니다.
  13. 이제 cat /etc/resolv.conf포함된 nameserver항목을 확인하고 봅니다.
    # Generated by NetworkManager
    search myNEWdomain.com
    nameserver 8.8.4.4
    nameserver 8.8.8.8

GIT의 경우 etckeeper(기본적으로 에서 GIT 저장소를 관리함 ) 초기 구성을 보여주며 명령을 실행하기 전까지 /etc는 네트워크 관련 파일에 다른 변경 사항이 없었음을 명시적으로 보여줍니다 ./etc/{hostname,resolv.conf,hosts}hostnamectl

답변2

다음의 기본 섹션에 스니펫을 resolv.conf추가하여 Networkmanager에 변경하지 않도록 지시할 수 있습니다 .nodns/etc/NetworkManager/conf.d/nodns.conf

[main]
dns=none

(잊지 마세요 systemctl restart NetworkManager)

관련 정보