간단히 말해서, 프로세스가 처음으로 연결을 사용하려고 시도할 때 사용 가능한 연결이 없어 실패하면 해당 단일 프로세스는 네트워크를 사용할 수 있는 능력을 다시 얻지 못합니다. 죽이고 다시 시작해야 합니다.
'google.com'을 세 번 해결하려고 시도하는 Ruby 스크립트가 있습니다. NetworkManager를 통해 네트워킹을 비활성화하거나 물리적 WLAN 스위치를 끄고 스크립트를 시작하고 한 번 실패하도록 둔 다음 네트워킹을 다시 활성화하면 나머지 시스템에 네트워킹이 있더라도 다른 두 가지 해결도 실패합니다.
유사한 Python 스크립트는 브라우저 lynx와 동일한 결과를 나타냅니다. 하지만 Firefox는 아닙니다! 이러한 동작은 모두 최신 Manjaro x64 XFCE를 실행하는 VM과 물리적 시스템 모두에서 테스트되었습니다. 최신 Ubuntu x64에서는 동일한 테스트가 제대로 작동합니다.
왜 이런 일이 발생합니까? 이것은 버그인가, 기능인가, 이상한 것인가?
편집하다:
Manjaro에서는 resolvconf에 의해 내용이 /etc/resolv.conf
재생성됩니다.
- 네트워크 활성화됨:
search lan; nameserver 192.168.1.1
- 네트워크 비활성화됨: 빈 파일
Ruby/Python/Lynx는 한 번만 읽어야 합니다 resolv.conf
. 따라서 첫 번째 요청에서 빈 파일을 찾고 다시는 이름을 확인할 수 없습니다.
그리고 우분투에서는 다음과 /etc/resolv.conf
같습니다.
- 네트워크 활성화됨:
nameserver 127.0.1.1; search lan
- 네트워크 비활성화됨:
nameserver 127.0.1.1
따라서 Ruby/Python/Lynx가 비활성화된 네트워크에서 이를 읽을 때 연결이 다시 시작될 때 접속할 네임서버를 계속 갖게 됩니다. Manjaro 설정의 문제점은 연결이 없으면 네임서버가 없다는 것입니다. Ubuntu는 127.0.1.1에 대해 dnsmasq를 실행하지만 Manjaro는 그렇지 않습니다.
답변1
제가 볼 때 해결책은 두 가지입니다.
- resolvconf.conf를 편집
name_servers=192.168.1.1
하거나 가장 일반적인 이름 서버를 편집하십시오. 문제: 모든 네임서버가192.168.1.1
나와 같은 것은 아닙니다. 다른 네트워크에 연결하면 해당 네트워크에 네임서버가192.168.1.1
없을 수 있으므로 프로세스가 중단된 상태로 유지됩니다. - NetworkManager를 설정하고 dnsmasq를 사용하세요.몇 줄을 추가해서
NetworkManager.conf
둘 다 시도했는데 둘 중 하나를 사용하면 증상이 사라졌습니다. 두 번째는 더 깨끗해 보이고 설정하기가 더 쉽지만 가볍지는 않습니다.