之前自己准备 RHCE 的其中一个笔记,分享一下。
NIS 遇到防火墙,出现如下错误:
[root@client ~]# su - nis1
do_ypcall: clnt_call: RPC: Unable to receive; errno = No route to host
su: user nis1 does not exist
[root@client ~]# showmount -e server.example.com
do_ypcall: clnt_call: RPC: Unable to receive; errno = No route to host
showmount: can't get address for server.example.com
[root@client ~]# showmount -e 192.168.65.10
mount clntudp_create: RPC: Port mapper failure - RPC: Unable to receive
[root@client ~]# showmount -e 192.168.65.10
Export list for 192.168.65.10:
/home 192.168.65.0/24
/media 192.168.65.0/24
/home1/nis1 192.168.65.0/24
[root@client ~]# showmount -e 192.168.65.10
rpc mount export: RPC: Unable to receive; errno = No route to host
导致出错 No route to host 的原因是防火墙把端口给封了,由于 NIS 服务的端口是动态的,每次服务启动都不一样,如果不固定就无法在防火墙开启的时候保证服务了。在网上看到的做法都(如NFS的一些服务端口) 是在 /etc/sysconfig/network 下添加,所以添加:
YPSERV_ARGS="-p 834" YPXFRD_ARGS="-p 835"
然后再在防火墙上开放端口:
iptables -A INPUT -p ALL -s! 192.168.65.0/24 --dport 834 -j DROP
iptables -A INPUT -p ALL -s! 192.168.65.0/24 --dport 835 -j DROP
这样 NIS 每次都用 834 和 835,是没有问题的。
无意中看到一个老外写的文章里另外一种做法:通过rpcinfo 命令获取当前NIS(或者是NFS)的一些端口信息,将这些端口过滤出来后,放到 iptables 里开启,放在 rc.local 中:
for tcpp in `rpcinfo -p | grep "ypserv" | cut -d " " -f16`; do iptables -I INPUT -p tcp --dport $tcpp -j ACCEPT; done
for udpp in `rpcinfo -p | grep "ypserv" | cut -d " " -f16`; do iptables -I INPUT -p udp --dport $udpp -j ACCEPT; done
这里不谈论哪种方法好,只是希望通过遇到的问题,分享一下解决问题的思路和方法,希望TX 们在遇到问题时候,也能灵活处理。
没有评论:
发表评论