prettyprint

顯示具有 NFS 標籤的文章。 顯示所有文章
顯示具有 NFS 標籤的文章。 顯示所有文章

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
🏀安裝過程與實際測試展示請觀看下列影片: