
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 가상 머신입니다.
OS는 SolusVM 제어판 템플릿을 통해 설치되었습니다.
CentOS 7을 설치한 후 호스트 이름을 변경하는 두 가지 방법 중 하나를 수행했지만 어떤 방법인지 기억이 나지 않습니다.
hostname myserver.mydomain.com
; 또는- SolusVM Control Panel의 호스트 이름 탭 사용
이전 호스트 이름을 표시 hostname
하고 사용하는 init GIT 커밋이 있지만 고정 IP와 새 호스트 이름/도메인이 포함된 단일 항목이 있으므로 후자만 수행했다고 확신합니다. 차이점은 아래를 참조하세요.resolv.conf
hosts
이러한 변경 사항은 어떤 이유로든 지속되지 않는 것 같습니다. VM이 SolusVM(또는 KVM 관리자)을 통해 일시 중단되어 재부팅이 발생했을 때 호스트 이름이 systemd
.
그런 다음 CentOS 7에서는 호스트 이름이 hostnamectl set-hostname myserver.mydomain.com
. [1]
이 작업을 수행하고 재부팅한 후 DNS 확인이 없다는 사실을 발견했습니다. 예를 들어 nslookup google.com
DNS 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)
초기 상태:
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
- 재부팅합니다. 다시 시작한 후 다시 SSH를 통해 VM으로 돌아갑니다.
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
)