prettyprint

2022年8月2日 星期二

Integrate FreeBSD NIS and NFS servers for Ubuntu Desktop and FreeBSD Desktop Clients(using ZFS)

本文文章記錄使用FreeBSD 13.1 當作NIS(Network Information System) 和使用ZFS檔案系統的NFS(Network File System) Server提供給FreeBSD或其他Non-FreeBSD系統用戶端使用。

目標:

  1. 建立NIS server,提供區網內(FreeBSD or Non-FreeBSD)帳號驗證與hostname對應。
  2. 用戶端home directory放在NFS server上,達到使用者漫遊目的。
  3. ZFS server提供共同儲存空間,透過ACL控制存取權限,達到分類控管。 
一、安裝過程
實驗架構如下圖

🌱FreeBSD NIS Server:
    FreeBSD  的 NIS 是內建的,因此只要設定啟用即可:
  1. /etc/rc.conf:
    nisdomainname="nis-nfs.local"
    nis_server_enable="YES"
    nis_yppasswdd_enable="YES"
    nis_yppasswdd_flags="-i -u -a"


    說明: nisdomainname可任意設定,但為了讓其他Non-FreeBSD Client,可設定為Internet Domain Name。
    啟用rpc.yppasswd讓使用著可以更改password
    nis_yppasswdd_flags額外設定讓ubuntu client可順利執行yppasswd

  2. 建立NIS maps(NIS 資料庫):

    FreeBSD NIS Client查詢NIS map為/var/yp/nis-nfs.local/master.passwd.byname,Ubuntu NIS Clinet 查詢的是/var/yp/nis-nfs.local/passwd.byname,因此
    FreeBSD NIS server for Non-FreeBSD NIS Client:
    👉/var/yp/Makefile: uncomment UNSECURE = "True", and then 
    執行指令,建立NIS maps:
       建立空的/var/yp/mster.passwd:
               touch /var/yp/master.passwd
               chmod 600 /var/yp/master.passwd
        ypinit -m nis-domainname

    password.byname, password.byid 才會提供加密密碼
    (為提供加密的passwd.byname or password.byid)
    使用pw指令建立NIS user maps
    pw useradd <username> -u uid -c "user name" -d /nfshome/<username> -M 700 -y /var/yp/master.passwd -Y -m  -w yes
    同時建立NIS user與nfs user directory

  3. /etc/hosts: 
    192.168.1.71  nfs   nfs.nis-nfs.local
    192.168.1.72  nis   nis.nis-nfs.local

    其他Clinet即可透過maps中的hosts.byname即可使用此設定
  4. /var/yp/securenets加入可存取限制
    #此行一定樣加入
    127.0.0.1    255.255.255.255
    #其他
    192.168.1.0    255.255.255.0   

🌱詳細步驟可參閱文末影片連結:

🌱FreeBSD NIS Client:
  • /etc/rc.conf:
    nisdomainname="nis-nfs.local"
    nis_client_enable="YES"
  • /etc/master.passwd: 在最後加入
    +:::::::::
  • /etc/group: 在最後加入
    +:*::
🌱Ubuntu NIS Client:
  • 安裝NIS套件:
    sudo apt install ypbind-mt nis
  • /etc/passwd、/etc/group、/etc/shadow、/etc/gshadow等檔案 最後加入一行
    +
  • /etc/nsswitch.conf: 更改加入紅色框部分

  • /etc/hosts: 加入nis hostname
    192.168.1.72   nis   nis.nis-nfs.local
    指加上一行即可,其他可由NIS server /etc/hosts(/var/yp/nis-nfs.local/hosts.byname取的定義
  • /etc/yp.conf加入
    domain nis-nfs.local  server nis.nis-nfs.local
  • 執行ypdomainname設定domainname:
    ypdomainname nis-nfs.local
  • /etc/defaultdomain:
  • nis-nfs.local
  • 執行
    sudo systemctl enable ypbind
    在系統啟用時即啟用NIS client ypbind

🌱FreeBSD NFS Server設定:
✅啟用FreeBSD NFS Server功能:
  1. /etc/rc.conf:
    rpcbind_enable="YES"
    nfs_server_enable="YES"
    mountd_enable="YES"

    rpc_lockd_enable="YES"  # 有些應用程式需要lock
    rpc_statd_enable="YES"

  2. /etc/exports:
    設定分享的目錄,例如: "/usr/src -ro -network 192.168.1.0/24"
    但是以ZFS dataset為NFS share directory時改用設定 zfs set sharenfs property,不用再/etc/exports設定,會自動在/etc/zfs/exports中加入設定。例如,分享兩個dataset,一個做為users的home directory,讓user可在不同機器間漫遊。另外一個dataset作為共用資料夾,並透過ACL設定存取權限。

    zfs set sharenfs="-alldirs -maproot=root -network 192.168.1.0/24" datastor/nfshome

    zfs set sharenfs="alldirs -network 192.168.1.0/24" datastor/sharedir
✅啟用FreeBSD NFS client功能:
  1. /etc/rc.conf:
    nfs_client_enable="YES"

  2. /etc/fstab: 
    192.168.1.71:/datastor/nfshome   /nsfhome   nfs  rw  0  0


    讓系統啟用及mount nfs home directory

✅啟用Ubuntu NFS client功能:
  1. 安裝套件:
    sudo apt install zfs-common

  2. /etc/fstab:
    192.168.1.71:/datastor/nfshome   /nsfhome   nfs  rw  0  0
🏀安裝過程與實際測試展示請觀看下列影片:



沒有留言:

張貼留言