本篇将注重介绍Ubuntu 16.04服务器作为客户端接入CentOS6的nis和nfs server的过程。主机名:ubuntu,IP:192.168.42.15,本次操作全部使用root操作,如果你不是root用户,大部分命令前需要加sudo。
安装NFS(作为客户端)
root@ubuntu:~# apt -y install nfs-common
安装AutoFS
root@ubuntu:~# apt -y install autofs
配置autofs:
root@ubuntu:~# echo -e "/home\t/etc/auto.home" >> /etc/auto.master
root@ubuntu:~# echo -e "*\t192.168.42.101:/home/&" >> /etc/auto.home
重启下autofs服务:
root@ubuntu:~# systemctl restart autofs.service
安装NIS
root@ubuntu:~# apt -y install nis
根据提示,输入我们的nis域名yyshell.com
输入完毕后,回车确定即可。
配置下:
root@ubuntu:~# echo "ypserver 192.168.42.101" >> /etc/yp.conf
root@ubuntu:~# vim /etc/nsswitch.conf
passwd: compat nis
group: compat nis
shadow: compat nis
hosts: files dns nis
在上述几行,红色的nis是需要添加的。
重启NIS:
root@ubuntu:~# systemctl restart nis.service
查看是否连接nis成功:
我们之前服务端添加了一个nis用户alice,可以通过查看是否存在这个uid为500的用户,看看是否连接nis成功:
root@ubuntu:~# getent passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
…省略若干行
alice:x:500:500::/home/alice:/bin/bash
可以看到成功了。
登录
下面我们测试下用alice用户登录
alice@ubuntu:~$ whoami alice alice@ubuntu:~$ pwd /home/alice
用mount命令查看下,发现home目录是挂载的:
192.168.42.101:/home/alice on /home/alice type nfs4 (rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.42.15,local_lock=none,addr=192.168.42.101)
安全设置
与CentOS不同,Ubuntu默认的防火墙是不启用的,默认也不安装selinux等软件,这也许就是它更为“易用”的原因之一。我们本次将使用防火墙和tcp_wrapper来做安全加固工作。
修改ypbind的端口:
ypbind也是通过rpcbind来动态分配端口的,我们手动指定下它的端口,好通过防火墙来限制访问
root@ubuntu:~# vim /etc/default/nis
把28行YPBINDARGS=-no-dbus修改成YPBINDARGS=”-no-dbus -p 666″
重启nis服务:
root@ubuntu:~# systemctl restart nis.service
下面添加防火墙规则:
root@ubuntu:~# ufw allow ssh root@ubuntu:~# ufw allow from 192.168.42.101 to any port 111 root@ubuntu:~# ufw allow from 192.168.42.101 to any port 666
第一条尤为重要,没有这条规则,待会启用防火墙后你就没法连接了。
启用防火墙:
root@ubuntu:~# ufw enable
还可以使用tcp_wrapper来限制rpc端口的访问:
root@ubuntu:~# echo "rpcbind: 127. 192.168.42.101" >> /etc/hosts.allow root@ubuntu:~# echo "rpcbind: ALL" >> /etc/hosts.deny
经过检查,各项功能正常,安全加固没有导致各项服务异常。
一点坑爹的地方
ubuntu 16.04开机启动的时候,通过systemd会先启动nis,后启动rpcbind,导致nis服务没有正确启动,无法获取nis账号信息(redhat系好像没这个毛病),这是一个bug,解决的办法如下:
root@ubuntu:~# systemctl add-wants multi-user.target rpcbind.service
一点总结:
本次教程中,服务端到客户端,所有的nfs和nis都没有使用使用域名FQDN来配置连接。一般都是直接用IP地址连接的。个人认为这样并不是很好,我推荐在/etc/hosts文件中添加FQDN信息,例如:
192.168.42.101 server.yyshell.com server
192.168.42.102 client.yyshell.com client
192.168.42.15 ubuntu.yyshell.com ubuntu