저는 Raspberry Pi에서 Arch Linux를 실행하고 있습니다.
갑자기:
- 웹사이트에 ping을 보낼 수 없습니다.
- 브라우저에서 웹사이트에 접속할 수 없습니다.
또한 핑하고 사용할 수 있는 두 대의 컴퓨터(둘 다 Arch Linux 실행)가 인터넷에 연결되어 있습니다. 또한 /etc/resolv.conf
다른 컴퓨터에서도 마찬가지입니다.
nameserver 10.230.252.252
nameserver 203.147.88.2
nameserver 8.8.8.8
search domain.name
VNC를 사용할 수 있습니다. 8.8.8.8로 ping할 수도 있습니다. Chromium에서 DuckDuckGo에 액세스하려고 하면 다음과 같은 메시지가 표시됩니다.
This site can’t be reached
duckduckgo.com’s server IP address could not be found.
DNS_PROBE_FINISHED_NXDOMAIN
인터넷에 연결되어 있습니다. 뭐가 문제 야?
답변1
Arch Linux를 실행하는 다른 x86_64 PC에서는 문제가 발생한 적이 없지만 현재까지 Arch Linux ARM에서 NetworkManager를 실행할 때 이런 문제가 자주 발생했습니다.
문제는 Wi-Fi에 연결되어 있지만 핑이나 인터넷을 사용할 수 없지만 원격 데스크톱 공유 소프트웨어를 사용해도 로컬 네트워크의 모든 컴퓨터에 액세스할 수 있다는 것입니다.
핑이나 브라우저가 호스트를 확인하려고 할 때 문제가 발생할 가능성이 높습니다. 3가지 해결책을 생각해 볼 수 있습니다.
솔루션 1
저는 이것이 Archlinux ARM을 실행하고 NetworkManger를 사용하는 수천 개의 Raspberry Pi 시스템에서 발생하는 문제라고 생각합니다.
내 경우에는 /etc/resolv.conf가 깨진 심볼릭 링크였습니다 ../run/systemd/resolve/stub-resolv.conf
.
NetworkManager가 심볼릭 링크를 채울 수 없으며 /etc/resolv.conf가 비어 있습니다. 우리는 다음을 수행해야 합니다:
- 끊어진 기호 링크를 제거합니다.
# rm /etc/resolv.conf
/etc/NetworkManager/conf.d/dns.conf
다음 내용으로 파일을 만듭니다 .
[main]
dns=none
main.systemd-resolved=false
- 네트워크 관리자를 다시 시작합니다.
sudo systemctl restart NetworkManager
해결 방법 2를 따르지 않은 경우 문제가 해결됩니다.
솔루션 2
위의 방법으로 문제가 해결되지 않으면 다음 방법으로 /etc/resolv.conf를 임시로 채울 수 있습니다.
sudo systemctl restart systemd-resolved && sudo systemctl stop systemd-resolved
그 이유는 파일을 엉망으로 만드는 것이 있을 수 있기 때문입니다 /etc/resolv.conf
. 위의 명령은 내용을 덮어쓰지만 다시 문제의 원인을 확인해야 합니다.
해결 방법 3
복구할 수 없는 경우 /etc/resolv.conf
새 링크를 만들고 /etc/resolv.conf
(또는 비어 있는 기존 링크나 심볼릭 링크가 있는 경우 삭제) 코드를 붙여넣으세요.
search domain.name
nameserver 8.8.8.8
nameserver 1.1.1.1
nameserver 1.0.0.1
첫 번째 줄에서는 라우터의 IP 주소를 사용할 수도 있습니다. 이 주소를 사용하면( nameserver 192.168.43.1
제 경우에는) 동일한 네트워크의 다른 시스템에서 ping이 가능해집니다. 이와 같은 구문 분석을 생성하는 것은 좋은 생각이 아니지만 NetworkManager의 자동 생성 구문 분석에 문제가 있습니다. Systemd-resolvd는 내 컴퓨터에서도 오류를 생성합니다.
좀 이상합니다. 여기서는 Google의 기본 DNS와 Cloudflare의 기본 DNS를 사용합니다. 8.8.8.8을 8.8.4.4와 함께 사용하거나 1.1.1.1을 1.0.0.1과 함께 사용할 수 있습니다.
이 단계가 작동하더라도 NetworkManager가 다시 시작할 때 파일을 덮어쓰지 않도록 할 수 있습니다.
이 항목을 다음에 추가하세요./etc/NetworkManager/NetworkManager.conf
[main]
dns=none
systemd-resolved=false
그들은 Raspberry Pi 3 모델 B에 설치하는 데 일했습니다. 이것이 당신에게도 효과가 있기를 바랍니다.
답변2
방금 같은 효과로 문제가 발생했습니다. 시간 설정이 올바른지 확인하세요. DNSSEC는 기본적으로 활성화되어 있는 것으로 보이며 "만료된" 인증서로 인해 요청을 차단합니다.
이와 관련된 다른 문제는 다음을 통해 진단할 수 있습니다 journalctl -u systemd-resolved -b -0
.
답변3
Arch Linux를 실행하는 Raspberry Pi 4에서 이 문제가 발생했습니다.
증상은 DNS가 없어 ping
오류 메시지가 나타나는 것입니다.
date
이틀 전쯤에 전화해서 시간이 심각하게 틀렸다는 걸 알게 됐어요 .
나는 확신한다시간 동기화작업 중이지만 systemctl status systemd-timesyncd
출력에서 timedatectl timesync-status
서비스에 NTP 서버의 IP 주소가 없는 것으로 나타났습니다(라고 표시됨 Server: Null
).
사용jaku255의 팁확인 결과 journalctl -u systemd-resolved -b -0
DNS 오류로 인해 시간 동기화가 작동하지 않는 것으로 나타났습니다.
ntp.org IN DS 문제로 인해 DNSSEC 확인이 실패했습니다: 서명이 만료되었습니다.
약간의 교착 상태입니다. 시간이 잘못되어 DNS가 작동하지 않고, DNS가 작동하지 않아서 시간이 잘못되었습니다.
시간을 수동으로 설정하려고 시도하면서 발행했습니다.
timedatectl set-time "2020-02-29 10:51:55"
그러나 이로 인해 오류가 발생했습니다.
시간 설정 실패: 자동 시간 동기화가 활성화되었습니다.
이 문제를 해결하기 위해 일시적으로(ㅎㅎㅎ^^) 시간동기화를 꺼두었어요
timedatectl set-ntp 0
그런 다음 다시 호출하면 timedatectl set-time
이번에는 성공합니다.
그 후, 시간 동기화를 다시 활성화 하고 이제 제대로 작동하는지 timedatectl set-ntp 1
확인했습니다 .timedatectl timesync-status
서버: 212.69.166.153 (0.arch.pool.ntp.org)
또한 이제 DNS가 성공적으로 작동하고 있습니다 ping
.curl
답변4
이 문제는 Arch Linux Arm 및 Raspberry Pi 4에서 계속 발생합니다. NetworkManager 대신 systemd-networkd를 사용하므로 위의 해결 방법 중 하나가 적용되지 않습니다. 내 NTP 시스템 시간도 올바르게 동기화됩니다. DNSSEC는 기본적으로 비활성화되어 있습니다.
제 경우에는 WAN 호스트 이름이 확인되었지만 LAN 호스트 이름은 확인되지 않았고 동일한 Name or service not known
오류가 발생했습니다.
내 솔루션은 다음을 편집하여 LLMNR 대신 클래식 DNS를 사용하는 것이었습니다 /etc/systemd/resolved.conf
.
[Resolve]
...
LLMNR=no
...
ResolveUnicastSingleLabel=yes
변경 사항을 적용하려면 서비스를 다시 시작하세요.
sudo systemctl restart systemd-networkd
sudo systemctl restart systemd-resolved