CentOS7 호스트 이름ctl set-hostname이 /etc/resolv.conf와 혼동됩니다.

CentOS7 호스트 이름ctl 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 가상 머신입니다.

운영 체제는 SolusVM 제어판 템플릿을 통해 설치됩니다.

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

  • hostname myserver.mydomain.com;또는
  • SolusVM 제어판의 호스트 이름 탭 사용

나는 이전 호스트 이름을 표시 hostname하고 사용하는 init GIT 커밋이 있었지만 고정 IP와 새 호스트 이름/도메인이 있는 항목이 있었기 때문에 후자만 수행했다고 확신합니다. 차이점은 아래를 참조하세요.resolv.confhosts

어떤 이유로 이 변경 사항이 지속되지 않은 것으로 보이며 SolusVM(또는 KVM Manager)을 통해 VM이 정지되고 재부팅이 발생하면 호스트 이름이 원래 이름으로 되돌아갔습니다 systemd.

그러다가 CentOS 7에서는 호스트 이름을 사용해야 한다는 사실을 알게 되었습니다 hostnamectl set-hostname myserver.mydomain.com. [1]

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

SolusVM CentOS 7 설치 템플릿을 통해 설정된 모든 DNS 구성은 NetworkManager에 의해 제거된 것으로 보이며 이러한 변경의 원인이 누구인지는 확실히 알 수 없지만 GIT에서는 변경이 이루어졌다는 것이 분명 합니다 /etc/hostname. 즉시 명령을 실행합니다 (아래 차이점을 다시 참조하세요)./etc/resolv.conf/etc/machine-infohostnamectl ...

비슷한 상황에 처한 사람을 위해 문제 해결 목적이나 명확한 예를 위해 제가 취한 구체적인 단계는 다음과 같습니다.

목표: 호스트 이름.도메인 이름 업데이트(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. 재시작. 재부팅 후 VM으로 다시 SSH를 통해 연결합니다.
  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를 통해 다시 로그인했는데 모든 것이 정상이었습니다. ping그리고 nslookp그것은 모두 효과가 있었습니다.
  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)

관련 정보