나는 몇 대의 컴퓨터를 Debian Buster로 업그레이드했고 지금까지 모든 것이 원활하게 진행되었습니다. 비록 실행하는 데
apt upgrade
문제가 있지만 이것은 고칠 수 있고 한 단계를 수행할 때 발생하지 않는 프로세스의 딸꾹질일 뿐입니다 . 그러나 한 시스템은 완전히 업그레이드되었음에도 불구하고 여전히 이 동작을 표시합니다. 알겠어요apt full-upgrade
Temporary failure in name resolution
apt dist-upgrade
~# LANG=C ping google.com
ping: google.com: Temporary failure in name resolution
google.com을 추가하면 /etc/hosts
모든 것이 정상입니다. 내 /etc/nsswitch
모습
~# cat /etc/nsswitch.conf
passwd: files systemd
group: files systemd
shadow: files
gshadow: files
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
이제 Google 도메인 이름 서버를 가리키고 있으며 /etc/resolv.conf
서버에 ping이 가능합니다.
~# cat /etc/resolv.conf
nameserver 8.8.8.8
~# ping -c1 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=53 time=22.8 ms
--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 22.800/22.800/22.800/0.000 ms
systemd-resolved
비활성 상태입니다. 콘텐츠를 올바르게 설명하면 문제가 되지 않습니다 /etc/nsswitch
.
또 다른 점을 놓친 걸까요?
답변1
설치 과정에서 nslookup
문제의 원인을 알게 되었습니다. resolv.conf
전혀 구문 분석할 수 없었습니다. 원본 파일의 내용을 새 파일로 복사했는데 모든 것이 잘 작동했습니다. 동일한 콘텐츠, 동일한 권한. 그러나 diff
아무런 차이가 없습니다. 파일보다 1바이트 크기 때문에 파일을 손상시키는 보이지 않는 문자가 있는 것 같습니다.
/etc# diff resolv.conf.odd resolv.conf.dem
1c1
< nameserver 8.8.8.8
---
> nameserver 8.8.8.8
/etc# cat resolv.conf.odd && cat resolv.conf.dem
nameserver 8.8.8.8
nameserver 8.8.8.8
/etc# ls -l resolv.conf.*|cut -d' ' -f5,9
19 resolv.conf.dem
20 resolv.conf.odd
업데이트: CAS가 감사하게도 지적했듯이 이는 \r
혼란을 야기하는 테일게이팅이며 버스터 업데이트 자체와는 아무 관련이 없습니다. 동료가 줄바꿈이 잘못된 파일을 푸시했습니다.
$ hd resolv.conf.odd
00000000 6e 61 6d 65 73 65 72 76 65 72 20 38 2e 38 2e 38 |nameserver 8.8.8|
00000010 2e 38 0d 0a |.8..|
답변2
여기에 해결책이 있습니다이 문제의 버전은 (거의?) 동일한 증상을 갖습니다.
간단히 말해서:
제 경우에는 systemd-networkd를 사용하고 있는데 이름 확인이 작동하지 않습니다. 또한 /etc/resolv.conf의 이름 서버는 DHCP 서버가 반환한 이름 서버와 다릅니다(액세스 가능하긴 하지만).
이것이 내가 한 일입니다:
sudo rm /etc/resolv.conf
sudo ln -s /run/systemd/stub-resolv.conf /etc/resolv.conf
sudo systemctl start systemd-resolved.service
참고: systemctl 명령이 "영구"인지는 모르겠습니다. 부팅 시 서비스를 시작하려면 뭔가 조치를 취해야 할 것 같습니다. 저는 상대적으로 Linux에 대한 경험이 부족하며 위의 내용을 통해 제가 필요한 위치에 도달했습니다.