최근에 EPSON L3150 프린터용 드라이버를 설치했는데 거의 동시에 일부 응용 프로그램(ssh, nextcloud-client)에서 이상한(임의) DNS 이름 확인 오류가 발생하기 시작했습니다. 이 오류는 서비스를 다시 시작해야만 해결할 수 있었습니다 NetworkManager
.
systemctl restart NetworkManager
예를 들어:
$ ssh example.mydomain
ssh: Could not resolve hostname example.mydomain: Name or service not known
또 다른 예는 아무것도 반환하지 않고 코드 2로 종료되는 getent입니다.
$ getent hosts example.mydomain
$ echo $?
2
하지만 nslookup은 잘 작동합니다.
$ nslookup example.mydomain
...
Name: example.mydomain
Address: 192.168.0.10
나는 그것을 내 파일로 좁혔고 nsswitch.conf
그것을 변경한 것에 대해 내 프린터 설치 프로그램을 비난했습니다. 나는 nsswitch.conf.bak
거짓말 을 발견했습니다 nsswitch.conf
. 그것은 프린터 드라이버를 설치하는 것과 동시에 만들어졌습니다 dnf install epson/*.rpm
.
파일의 호스트 줄에 다음과 같은 변경 사항이 있습니다.
-hosts: files dns myhostname
+hosts: files myhostname mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns
그렇다면 질문은 "새" 구성이 무작위로 실패하는 이유는 무엇입니까? 어떻게 예방할 수 있나요? 새 파일이 자동으로 생성되는 것처럼 보이기 때문에 원본 파일을 복원하는 것만으로는 해결책이 될 수 없다고 생각합니다. 상단에 다음과 같이 표시되어 있습니다.
2022년 2월 12일 토요일 18:53:06에 authselect에 의해 생성됨
드라이버를 제거하는 것도 해결책이 아닙니다.
편집하다:
범인은 systemd-resolved
. 내 네트워크 구성은 NetworkManager에서 관리되며 두 개의 DNS가 설정되어 있습니다.
$ nmcli con show my-lan
...
ipv4.dns 192.168.0.1 8.8.8.8
컴퓨터가 절전 모드에서 깨어날 때마다 NetworkManager가 두 번째 DNS로 돌아가는 것 같습니다.
$ systemd-resolve --status
...
Link 2 (enp39s0)
Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 8.8.8.8
DNS Servers: 192.168.0.1 8.8.8.8
DNS Domain: mydomain
따라서 systemd-resolve example.mydomain
실패합니다(8.8.8.8이 내 도메인을 확인할 수 없기 때문에).
쿼리: 구문 분석 호출 실패: 'example.mydomain'을 찾을 수 없습니다.
이것이 NetworkManager의 버그인 것 같은데요?
답변1
mdns4_minimal [NOTFOUND=return]
Epson 프린터에는 멀티캐스트 DNS가 필요합니다.
resolve [!UNAVAIL=return]
이름 확인을 활성화하여 systemd-resolved
(참조https://www.freedesktop.org/software/systemd/man/nss-resolve.html).
명령이 systemctl status systemd-resolved
반환 되면 해당 명령을 줄 에서 Unit systemd-resolved.service could not be found.
안전하게 제거할 수 있습니다 . 그 후에는 구문 분석이 정상으로 돌아옵니다.resolve [!UNAVAIL=return]
hosts