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 - 현재 방식)
- 다음 행을 추가하십시오
/etc/sysconfig/network-scripts/ifcfg-<inf>
.DNS1=8.8.8.8 DNS2=8.8.4.4 DOMAIN=mydomain.com
- 재시작
"정적" resolv.conf (이전 방법)
PEERDNS=no
존재하다/etc/sysconfig/network-scripts/ifcfg-<inf>
- 올바른 행
/etc/resolv.conf
(예: 검색, 이름 서버)을 수동으로 추가합니다(기본적으로 이는
추가 정보 및 세부정보
네트워크 오류로 인해 질문드립니다.
서버는 KVM 환경에서 실행되는 CentOS 7 가상 머신입니다.
운영 체제는 SolusVM 제어판 템플릿을 통해 설치됩니다.
CentOS 7을 설치한 후 두 가지 방법 중 하나를 사용하여 호스트 이름을 변경했지만 어떤 방법을 사용했는지 기억이 나지 않습니다.
hostname myserver.mydomain.com
;또는- SolusVM 제어판의 호스트 이름 탭 사용
나는 이전 호스트 이름을 표시 hostname
하고 사용하는 init GIT 커밋이 있었지만 고정 IP와 새 호스트 이름/도메인이 있는 항목이 있었기 때문에 후자만 수행했다고 확신합니다. 차이점은 아래를 참조하세요.resolv.conf
hosts
어떤 이유로 이 변경 사항이 지속되지 않은 것으로 보이며 SolusVM(또는 KVM Manager)을 통해 VM이 정지되고 재부팅이 발생하면 호스트 이름이 원래 이름으로 되돌아갔습니다 systemd
.
그러다가 CentOS 7에서는 호스트 이름을 사용해야 한다는 사실을 알게 되었습니다 hostnamectl set-hostname myserver.mydomain.com
. [1]
이 작업을 수행하고 재부팅한 후 DNS 확인이 없어 예 nslookup google.com
를 들어 ping google.com
DNS/확인 없음 오류가 발생한다는 사실을 발견했습니다.
SolusVM CentOS 7 설치 템플릿을 통해 설정된 모든 DNS 구성은 NetworkManager에 의해 제거된 것으로 보이며 이러한 변경의 원인이 누구인지는 확실히 알 수 없지만 GIT에서는 변경이 이루어졌다는 것이 분명 합니다 /etc/hostname
. 즉시 명령을 실행합니다 (아래 차이점을 다시 참조하세요)./etc/resolv.conf
/etc/machine-info
hostnamectl ...
비슷한 상황에 처한 사람을 위해 문제 해결 목적이나 명확한 예를 위해 제가 취한 구체적인 단계는 다음과 같습니다.
목표: 호스트 이름.도메인 이름 업데이트(fqdn)
(명시적: myOLDhostname.myOLDdomain.com -> myNEWhostname.myNEWdomain.com)
초기 상태:
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
즉, 존재하지 않음)
명령 실행
hostnamectl set-hostname myNEWhostname.myNEWdomain
- 재시작. 재부팅 후 VM으로 다시 SSH를 통해 연결합니다.
nslookup google.com
, 을(를) 시도하는 중ping google.com
다음 오류가 발생했습니다.ping: unknown host google.com
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
- 검색 결과 , , 및 에 대한 항목이
/etc/sysconfig/network-scripts/ifcfg-eth0
없으므로 결과 는 입니다 .DNS1
DNS1
DOMAIN
nameserver
/etc/resolv.conf
- 다음을 통해 다음을 추가합니다
sudoedit /etc/sysconfig/network-scripts/ifcfg-eth0
.
DNS1=8.8.8.8
DNS2=8.8.4.4
DOMAIN=myNEWdomain.com
- 다시 명령을 실행합니다
hostnamectl set-hostname myNEWhostname.myNEWdomain
- 하지만 여전히 DNS가 없어
nslookup
여전히ping
실패합니다. - 제안된 대로 NetworkManager를 다시 시작해 보았습니다.
systemctl restart NetworkManager.service
- 아직 DNS가 없으므로 명령을 실행했습니다.
reboot
- 재부팅 후 SSH를 통해 다시 로그인했는데 모든 것이 정상이었습니다.
ping
그리고nslookp
그것은 모두 효과가 있었습니다. - 이제
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
)