简而言之:进程第一次尝试使用连接时,如果由于没有可用连接而失败,那么单个进程将永远无法重新获得使用网络的能力。我必须杀死并重启它。
我有一个ruby脚本试图解决'google.com'三次。如果我禁用网络(通过NetworkManager)或关闭我的物理WLAN关闭,启动脚本,让它失败一次,然后重新启用网络,其他两个解决方案也将失败,即使系统的其余部分有网络。
类似的Python脚本展示了相同的结果,以及浏览器lynx。不是火狐!这些行为都在VM和运行最新Manjaro x64 XFCE的物理机器上进行了测试。在最新的Ubuntu x64上,相同的测试工作正常。
为什么会这样?这是一个错误,功能,怪癖?
编辑:
关于Manjaro,内容 /etc/resolv.conf
由resolvconf重新生成。
- 网络启用:
search lan; nameserver 192.168.1.1
- 禁用网络:空文件
Ruby / Python / Lynx必须只读 resolv.conf
一旦。因此,在第一次请求时,它会找到空文件,并且永远无法再解析任何名称。
在Ubuntu上, /etc/resolv.conf
:
- 网络启用:
nameserver 127.0.1.1; search lan
- 禁用网络:
nameserver 127.0.1.1
因此,当Ruby / Python / Lynx在禁用的网络上读取它时,当连接恢复时,它们仍然会有一个名称服务器来联系。 Manjaro设置的问题在于没有连接,没有名称服务器。 Ubuntu运行dnsmasq为127.0.1.1而Manjaro不运行。
我建议设置
—
David Schwartz
resolv.conf
你想要它的方式并使它不可变。
resolv.conf
曾经,然后再也没有,所以他们没有意识到变化。谷歌为“linux解析器”解释名称解析是如何工作的。