在 Ubunutu 14.04 中,我想列出机器正在使用的名称服务器。通常我会用来nm-tool
列出它们,但当没有用户通过 GUI 登录时,NetworkManager 似乎不会运行,我想在 SSH 会话中执行此操作。
我不能猫/etc/resolv.conf
,因为它提供的只是nameserver: 127.0.1.1
。我错过了什么吗?我应该使用另一个命令吗?
[编辑]
比较正在运行的进程列表给出了这个:(有和没有 gui 运行)
$ ps -eo args --sort=command | grep dbus > gui.txt #or nogui.txt
$ diff gui.txt nogui.txt
4c4
< dbus-daemon --fork --session --address=unix:abstract=/tmp/dbus-8cBzgUufwJ
---
> //bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session
9,10d8
< upstart-dbus-bridge --daemon --system --user --bus-name system
< upstart-dbus-bridge --daemon --session --user --bus-name session
所以也许问题是他们无法通过 dbus 进行通信......?
答案1
如果机器通过 DHCP 获取 DNS,您可以
grep domain-name-servers /var/lib/dhcp/<interface>.leases
答案2
显然,现在唯一的通信方式dnsmasq
是通过 D-Bus,并且/var/run/NetworkManager/dnsmasq.conf
是空的(恕我直言,设计不好),因此要么检查var/log/syslog
最后一个条目,dnsmasq
要么使用 D-Bus 接口。
更多信息:http://cweiske.de/tagebuch/networkmanager-dnsmasq.htm;http://www.thekelleys.org.uk/dnsmasq/docs/DBus-interface
答案3
听起来您的系统设置有问题。我有 Ubuntu 14.04,刚刚重新启动了我的系统并确保没有人通过桌面登录。然后我通过 ssh 进入系统并且可以nmcli
正常使用。
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS"
这是通过 NetworkManager 的 cli 工具获得的列表nmcli
:
$ nmcli dev list | grep DNS
IP4.DNS[1]: 192.168.1.101
IP4.DNS[2]: 8.8.8.8
IP4.DNS[3]: 8.8.4.4
IP4.DNS[4]: 208.67.222.222
IP4.DNS[5]: 208.67.220.220
这些是我配置 DHCP 服务器以在系统从中租用 IP 地址时深入研究的所有 DNS 服务器。