NIS 在 CentOS 6 上失败

NIS 在 CentOS 6 上失败

已解决:见底部. 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 

希望这能有所帮助:)

相关内容