我在 Solaris 11 中遇到了名称解析问题。根据在线 Solaris 指南,第 12 章 设置 DNS 客户端:
客户端设置
在客户端计算机上设置 DNS 涉及两项任务:
创建 /etc/resolv.conf 文件,如“创建 resolv.conf 文件”中所述。
修改 /etc/nsswitch.conf 文件,如“使机器使用 DNS”中所述。
...
但是,当我打开文件进行更改时:
#
# _AUTOGENERATED_FROM_SMF_V1_
#
# WARNING: THIS FILE GENERATED FROM SMF DATA.
# DO NOT EDIT THIS FILE. EDITS WILL BE LOST.
# See resolv.conf(4) for details.
domain home.pvt
因此,手册告诉我创建并修改resolv.conf
,但resolv.conf
告诉我不要修改它。当我尝试使用 修改它时svccfg
,设置未被使用。
如何向 Solaris 11 添加名称服务器?
$ sudo cat /etc/nsswitch.conf
#
# _AUTOGENERATED_FROM_SMF_V1_
#
# WARNING: THIS FILE GENERATED FROM SMF DATA.
# DO NOT EDIT THIS FILE. EDITS WILL BE LOST.
# See nsswitch.conf(4) for details.
hosts: files dns mdns
ipnodes: files dns mdns
networks: files
protocols: files
rpc: files
ethers: files
...
并尝试svcconfig
工具:
$ sudo su -
Oracle Corporation SunOS 5.11 11.3 September 2015
# svccfg -s network/dns/client
svc:/network/dns/client> setprop config/nameserver = net_address: (172.16.1.1)
svc:/network/dns/client> exit
# ping www.google.com
ping: getaddrinfo: temporary name resolution failure
ping: unknown host www.google.com
再次尝试使用 OpenDNS 和 Google:
svc:/network/dns/client> setprop config/nameserver = net_address: (208.67.222.222 208.67.220.220 8.8.8.8)
exit
# ping www.google.com
ping: getaddrinfo: temporary name resolution failure
ping: unknown host www.google.com
# cat /etc/resolv.conf
...
domain home.pvt
答案1
首选方法是与 SMF 接口,但你总是可以作弊……
填充/etc/resolv.conf
&&nsswitch
然后导入到SMF:
nscfg import -fv dns/client
nscfg import -f name-service/switch
并验证DNS客户端服务是否已启用并在线:
svcs -xv dns/client
答案2
您找到的链接适用于 Solaris 10,而不是 Solaris 11。
在 Solaris 11 中,某些配置已更改为基于 SMF 而不是基于文件。DNS 配置也是如此。这意味着更改此类信息的方法是更改某些 SMF 属性然后刷新/重启相应的服务。例如,遗留的配置文件/etc/nsswitch.conf
仍然存在,但您不应该触碰它们。
就您而言,您忘记的是更改 SMF 属性后的刷新/重新启动:
$ svcadm refresh dns/client
$ svcadm restart dns/client
更多信息这里。