已解决:见底部. tl;dr:启用网络管理器。
我正在尝试设置 CentOS6 系统以使用 NIS 登录。我已经在 nsswitch.conf 中设置了 NISDOMAIN 并将 passwd 等文件放在 NIS 服务器上,但它无法绑定到 NIS 服务器(它可以 ping 它并通过 SSH 进入它,因此不是可见性问题),当启动或重新启动 ypbind 时,它会在 Binding NIS service: ..... 上等待很长时间,然后返回 [ OK ],但据我所知实际上并没有绑定。
当我尝试 ypwhich 时,我得到以下信息:
ypwhich: Can't communicate with ypbind
环顾四周表明,当人们遇到此问题时它可能无法运行,但对我来说似乎是这样,至少就服务和 chkconfig 显示而言。
rpcinfo -u localhost ypbind
返回以下内容:
rpcinfo: RPC: Program not registered
program 100007 is not available
编辑:拼写错误并稍作澄清。
编辑 2:NIS 服务器确实指定了,但它表现得好像没有指定一样。当我执行
service ypbind restart
这是 /var/log/messages 中的输出:
Mar 7 13:29:27 foobar dbus: avc: received policyload notice (seqno=6)
Mar 7 13:29:27 foobar dbus: avc: received policyload notice (seqno=6)
Mar 7 13:29:27 foobar dbus: avc: received policyload notice (seqno=6)
Mar 7 13:29:27 foobar dbus: [system] Reloaded configuration
Mar 7 13:29:37 foobar ypbind: NIS domain: FOO, NIS server:
服务器肯定在 yp.conf 中指定:
domain FOO server 192.168.1.xxx
但消息没有显示该地址。
编辑3:解决方案:
事实证明,ypbind 仅在 CentOS6 上由网络管理器控制接口时才有效。有点儿不方便,但确实有效 - 只需在接口上启用网络管理器即可。完成后,只需重新启动 ypbind 即可。
答案1
您可能还想检查是否启用了防火墙,这可能会阻止 NIS 客户端和 NIS 服务器之间的通信。
chkconfig --list | grep iptables
请尝试以下操作:
service iptables stop
然后重新尝试您的客户端绑定。
如果这解决了连接问题,那么您可以关闭iptables
(防火墙)或适当地修改规则。
答案2
我今天遇到了同样的问题,对我来说这就是NetworkManager
问题所在
IE
service NetworkManager stop
chkconfig NetworkManager off
然后还要确保每个接口不受 NetworkManager 控制,并添加NM_CONTROLLED=no
,即我运行了以下命令
sed -i -e 's/\(^NM_CONTROLLED=\).*/\1no/g' /etc/sysconfig/network-scripts/ifcfg-*
答案3
我在 rhel 7.9 上遇到了这个问题:
在我的从属服务器上:
[root@rhel79nisslaver ~]# /usr/lib64/yp/ypinit -s 192.x.x.x
Can't enumerate maps from 192.x.x.x. Please check that it is running.
[root@rhel79nisslaver ~]# /usr/bin/ypwhich
ypwhich: Can't communicate with ypbind
我的解决方案:停止主服务器上的防火墙服务:
# systemctl stop firewalld.service
另一个解决方案是将其添加到防火墙的受信任区域;来自该 IP 地址的所有流量都将被允许。请参阅以下 NIS 主服务器上的示例:
[root@rhel79nis ~]# firewall-cmd --zone=trusted --add-source=192.x.x.x --permanent
[root@rhel79nis ~]# firewall-cmd --reload
希望这能有所帮助:)