我在运行 xfce 的基于 ubuntu 的 Linux 发行版 (linaro) 上。我的网络管理器连接到无线接入点,但无法执行以下两项操作:
- 动态获取名称服务器,并编写动态
/etc/resolv.conf
。事实上,如果我可以让它在某些特定网络上执行此操作,并/etc/resolv.conf
在其他网络上使用标准,那就太好了。 - 我的浏览器无法重定向到登录页面。显然,这与名称服务器问题有关。
我检查了一下/etc/dhcp/dhclient.conf
,发现有一行,
request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, domain-search, host-name, netbios-name-servers, netbios-scope, interface-mtu, rfc3442-classless-static-routes, ntp-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.name-servers, dhcp6.sntp-servers;
所以如果我运行
sudo dhclient <network inteface>
它,它会毫无问题地重写/etc/resolv.conf
文件。因此,如果我使用 wpa-supplicant 和 dhclient“手动连接”,这就可以完美地工作。所以我猜这是网络管理器的问题。网络管理器不使用 dhclient 吗?我该如何解决这个问题?
答案1
在我的系统(ubuntu 14.04)上,/etc/resolv.conf 由包“resolvconf”创建(它安装了吗?)并且只是文件 ../run/resolvconf/resolv.conf 的符号链接。
/etc/resolv.conf 中的 IP 地址是虚拟内部 IP。要获取名称服务器的真实地址,您可以使用“nm-tool”或“nmcli device list iface eth0”。
您在网络管理器中的 IPv4 下选择了哪种方法,“自动 (DHCP)”或“仅自动 (DHCP) 地址”。我认为您必须使用第一种方法。
你的 linaro 系统是什么版本,它基于哪个版本的 ubuntu?
答案2
事实证明,较新版本的 NetworkManager 使用名为 dnsmasq 的程序作为 DNS 解析器。因此,即使您
/etc/resolv.conf
从系统中删除该文件,NetworkManager 仍将正常工作。事实上,dnsmasq 有一个明确的选项,即不读取resolv.conf
。这是我的 NetworkManager 通常使用的文件运行它:
dnsmasq --no-resolv
它还有一个
/var/run/nm-dns-dnsmasq.conf
文件。这是使用中的文件配置的
/etc/NetworkManager/dnsmasq.d/
。查看 dnsmasq 文档以了解有关其配置的更多信息。它似乎是一个相当强大的工具。
dns=dnsmasq
可以通过删除文件中的 行来禁用 dnsmasq
/etc/NetworkManager/NetworkManager.conf
。然后——尽管我还没有测试过——根据我在 NetworkManager 文档中读到的内容,它应该默认为 dhclient。
另一个可能的问题是 /etc/NetworkManager/NetworkManager.conf 中有一行说
[ifupdown] managed=false
我将其更改为 true,然后 NetworkManager 又开始正常工作了。较新的 NetworkManager 版本(在 precise 及更高版本上)在
waiting for network configuration
启动过程中也往往会在开始时暂停 60 秒或更长时间并显示一条消息。这通常是由文件中的语法错误引起的/etc/network/interfaces
。我通过在文件中只添加以下几行来解决这个问题
auto lo iface lo inet loopback