ディレクトリサーバのFreeIPA、ログインノード、計算ノード、ストレージノードな構成を考える.
ログインノード、計算ノードにnfsでストレージを供給するストレージサーバ、構成はxfs, zfs, btrfs, cephfs, BeeGFSなどいろいろあるが、FreeIPAでのnfsサーバを作ってみる.

2022y04m29d_014741674.png

やっていることはsamba/NFSと同じくサービス記述子nfsをもつサービスプリンシパルを持たせてkerberosによるnfsかな.
もちろんこの操作をしなくてもsysな従来からのuidベースのnfsとしてFreeIPA関係なく構築もできるけどね

参照先 https://blog.delouw.ch/2015/03/14/using-ipa-to-provide-automount-maps-for-nfsv4-home-directories/様 thanks

nfsサーバをFreeIPAドメイン参加させる

nfsサーバには AlmaLinux8.5 を使ってます

[root@freeipa-nfs ~]# cat /etc/redhat-release
AlmaLinux release 8.5 (Arctic Sphynx)
[root@freeipa-nfs ~]#

まずはnfsサーバをFreeIPAに参加させます.
参加方法はFreeIPA/clientにもありますが、再度掲示
ホスト名をきちんとして

[root@freeipa-nfs ~]# hostnamectl set-hostname `hostname -f`
[root@freeipa-nfs ~]# echo `hostname -I` `hostname -A` `hostname -s` >> /etc/hosts
 
[root@freeipa-nfs ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.149 freeipa-nfs.sybyl.local freeipa-nfs
 
[root@freeipa-nfs ~]# hostname
freeipa-nfs.sybyl.local
 
[root@freeipa-nfs ~]#

それからFreeIPAのclientパッケージを入れます
DNSにFreeIPA向けのSRVがあれば--serverとかは不要かも

[root@freeipa-nfs ~]# dnf module install idm -y
 
[root@freeipa-nfs ~]# ipa-client-install --server=freeipa.sybyl.local --domain=sybyl.local
This program will set up IPA client.
Version 4.9.6
 
Autodiscovery of servers for failover cannot work with this configuration.
If you proceed with the installation, services will be configured to always access the discovered server for (略
Proceed with fixed values and no DNS discovery? [no]: yes                <-- dnsmasqがあるので[yes]
Do you want to configure chrony with NTP server or pool address? [no]:   <-- FreeIPA-nfsで既にchronyが動いているので[no]
Client hostname: freeipa-nfs.sybyl.local
Realm: SYBYL.LOCAL
DNS Domain: sybyl.local
IPA Server: freeipa.sybyl.local
BaseDN: dc=sybyl,dc=local
 
Continue to configure the system with these values? [no]: yes    <-- この内容で参加手続きを進めるので[yes]
Synchronizing time
No SRV records of NTP servers found and no NTP server or pool address was provided.
Using default chrony configuration.
Attempting to sync time with chronyc.
Time synchronization was successful.
User authorized to enroll computers: admin             <--- FreeIPAサーバの登録管理者admin
Password for admin@SYBYL.LOCAL:                        <--- 登録管理者adminのパスワードを入力
Successfully retrieved CA cert
    Subject:     CN=Certificate Authority,O=SYBYL.LOCAL
    Issuer:      CN=Certificate Authority,O=SYBYL.LOCAL
    Valid From:  2022-04-28 13:19:18
    Valid Until: 2042-04-28 13:19:18
 
Enrolled in IPA realm SYBYL.LOCAL
Created /etc/ipa/default.conf
Configured sudoers in /etc/authselect/user-nsswitch.conf
Configured /etc/sssd/sssd.conf
Configured /etc/krb5.conf for IPA realm SYBYL.LOCAL
Systemwide CA database updated.
Adding SSH public key from /etc/ssh/ssh_host_ed25519_key.pub
Adding SSH public key from /etc/ssh/ssh_host_ecdsa_key.pub
Adding SSH public key from /etc/ssh/ssh_host_rsa_key.pub
Could not update DNS SSHFP records.
SSSD enabled
Configured /etc/openldap/ldap.conf
Configured /etc/ssh/ssh_config
Configured /etc/ssh/sshd_config
Configuring sybyl.local as NIS domain.
Client configuration complete.
The ipa-client-install command was successful
 
[root@freeipa-nfs ~]#

FreeIPAサーバにてnfsサーバのnfs-clientのサービスプリンシパルを作る

留意 nfs-clientにもnfsサービスプリンシパルが必要です

FreeIPAサーバにて、まず管理者チケットを貰います

[root@freeipa ~]# kinit admin
Password for admin@SYBYL.LOCAL:
 
[root@freeipa ~]#

まずはnfsサーバへのサービス記述子がnfsのサービスプリンシパルを作る

[root@freeipa ~]# ipa service-add nfs/freeipa-nfs.sybyl.local
-------------------------------------------------------
Added service "nfs/freeipa-nfs.sybyl.local@SYBYL.LOCAL"
-------------------------------------------------------
  Principal name: nfs/freeipa-nfs.sybyl.local@SYBYL.LOCAL
  Principal alias: nfs/freeipa-nfs.sybyl.local@SYBYL.LOCAL
  Managed by: freeipa-nfs.sybyl.local
 
[root@freeipa ~]#
 
(確認)
[root@freeipa ~]# ipa service-find freeipa-nfs.sybyl.local
-----------------
1 service matched
-----------------
  Principal name: nfs/freeipa-nfs.sybyl.local@SYBYL.LOCAL
  Principal alias: nfs/freeipa-nfs.sybyl.local@SYBYL.LOCAL
  Keytab: False
----------------------------
Number of entries returned 1
----------------------------
[root@freeipa ~]#

そしてnfs-clientにも同様にnfsなサービスプリンシパルを用意します
*なのでこの時点でnfsクライアントとなるマシンを参加させておく必要があるFreeIPA/client

[root@freeipa ~]# ipa service-add nfs/freeipa-client.sybyl.local
----------------------------------------------------------
Added service "nfs/freeipa-client.sybyl.local@SYBYL.LOCAL"
----------------------------------------------------------
  Principal name: nfs/freeipa-client.sybyl.local@SYBYL.LOCAL
  Principal alias: nfs/freeipa-client.sybyl.local@SYBYL.LOCAL
  Managed by: freeipa-client.sybyl.local
[root@freeipa ~]#

automount mapを作る

FreeIPAドメインを作った時に既に用意されているlocationがあり、名前は「default」です

[root@freeipa ~]# ipa automountlocation-find
(略
  Location: default
(略
[root@freeipa ~]#

このlocation「default」で持っているmapは下記のように「auto.master」と「auto.direct」です.

[root@freeipa ~]# ipa automountmap-find default
(略
  Map: auto.direct
 
  Map: auto.master
(略
[root@freeipa ~]#

っで既定で用意されていたこの「auto.master」と「auto.direct」の中身は「ipa automountkey-find」で読めて

[root@freeipa ~]# ipa automountkey-find default auto.master
-----------------------
1 automount key matched
-----------------------
  Key: /-
  Mount information: auto.direct
----------------------------
Number of entries returned 1
----------------------------
 
[root@freeipa ~]# ipa automountkey-find default auto.direct
------------------------
0 automount keys matched
------------------------
----------------------------
Number of entries returned 0
----------------------------
[root@freeipa ~]#

っと、「auto.master」の中身は /etc/auto.master で例えれば

/- auto.direct

な感じ. っでauto.directの中身は今はない状態. っでauto.directマップにデータを載せます.

/home       -rw freeipa-nfs:/home
/apps       -rw freeipa-nfs:/apps

として載せるなら

[root@freeipa ~]# ipa automountkey-add default auto.direct --key="/home" --info="-rw freeipa-nfs:/home"
[root@freeipa ~]# ipa automountkey-add default auto.direct --key="/apps" --info="-rw freeipa-nfs:/apps"
 
(確認)
[root@freeipa ~]# ipa automountkey-find default auto.direct
------------------------
2 automount keys matched
------------------------
  Key: /apps
  Mount information: -rw freeipa-nfs:/apps
 
  Key: /home
  Mount information: -rw freeipa-nfs:/home
----------------------------
Number of entries returned 2
----------------------------
[root@freeipa ~]#

修正の場合は下記のようにします. 下記は「/home -rw,nfs4,sec=krb5 freeipa-nfs:/home」にします. 「/apps」はそのままです

[root@freeipa ~]# ipa automountkey-mod default auto.direct --key="/home" --info="-rw freeipa-nfs:/home" --newinfo="-rw,nfs4,sec=krb5 freeipa-nfs:/home"

ユーザのホームディレクトリを作成

クライアント参加時の「ipa-client-install」にオプションとして「--mkhomedir」を加えれば勝手にホームディレクトリを
作ってくれるけど、それがnfs先、しかもautofsでもできるの?確かめていない。
っで、nfsサーバで作る

[root@freeipa-nfs ~]# mkhomedir_helper arcueid 0022 /etc/skel
[root@freeipa-nfs ~]# mkhomedir_helper illya   0022 /etc/skel
 
[root@freeipa-nfs ~]# ls -l /home
total 0
drwxr-xr-x. 2 arcueid em 62 Apr 29 22:22 arcueid
drwxr-xr-x. 2 illya   em 62 Apr 29 22:22 illya
[root@freeipa-nfs ~]#

nfsサービスを開始

まずはFreeIPAサーバからnfsサービスプリンシパルを受け取ります
ちなみに今持っているkeytabは、FreeIPA参加時に得たもののみ.

[root@freeipa-nfs ~]# klist -ke /etc/krb5.keytab
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   1 host/freeipa-nfs.sybyl.local@SYBYL.LOCAL (aes256-cts-hmac-sha1-96)
   1 host/freeipa-nfs.sybyl.local@SYBYL.LOCAL (aes128-cts-hmac-sha1-96)
 
[root@freeipa-nfs ~]# klist                          <-- 今時点チケットを持ってないので、取得します
klist: Credentials cache 'KCM:0' not found
 
[root@freeipa-nfs ~]# kinit admin
Password for admin@SYBYL.LOCAL:
 
[root@freeipa-nfs ~]# klist                          <-- チケットを取得しました.
Ticket cache: KCM:0
Default principal: admin@SYBYL.LOCAL
 
Valid starting       Expires              Service principal
04/29/2022 16:22:19  04/30/2022 15:59:37  krbtgt/SYBYL.LOCAL@SYBYL.LOCAL
 
[root@freeipa-nfs ~]# ipa-getkeytab -s freeipa.sybyl.local -p nfs/freeipa-nfs.sybyl.local -k /etc/krb5.keytab
Keytab successfully retrieved and stored in: /etc/krb5.keytab
 
(確認)
[root@freeipa-nfs ~]# klist -ke /etc/krb5.keytab
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   1 host/freeipa-nfs.sybyl.local@SYBYL.LOCAL (aes256-cts-hmac-sha1-96)
   1 host/freeipa-nfs.sybyl.local@SYBYL.LOCAL (aes128-cts-hmac-sha1-96)
   1 nfs/freeipa-nfs.sybyl.local@SYBYL.LOCAL (aes256-cts-hmac-sha1-96)
   1 nfs/freeipa-nfs.sybyl.local@SYBYL.LOCAL (aes128-cts-hmac-sha1-96)
 
[root@freeipa-nfs ~]#

次にnfsとして供出する場所を準備します. ここでは/etc/sdbを/homeにしてこの/homeをexortします.

[root@freeipa-nfs ~]# parted /dev/sdb
(parted) mklabelgpt
(parted) mkpart primary 0% 100%
(parted) quit
[root@freeipa-nfs ~]# mkfs.xfs -L home /dev/sdb1
[root@freeipa-nfs ~]# echo "LABEL=home /home xfs defaults 0 0" >> /etc/fstab
[root@freeipa-nfs ~]# mount -a
[root@freeipa-nfs ~]# df -lTh /home
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/sdb1      xfs    50G  390M   50G   1% /home
[root@freeipa-nfs ~]#
 
[root@freeipa-nfs ~]# echo "/home  192.168.0.0/255.255.255.0(rw,sec=sys:krb5:krb5i:krb5p,no_root_squash)" >> /etc/exports
[root@freeipa-nfs ~]# systemctl enable nfs-server
[root@freeipa-nfs ~]# systemctl start nfs-server

あとfirewallに穴をあける

[root@freeipa-nfs ~]# firewall-cmd --add-service=nfs --permanent --zone=public
[root@freeipa-nfs ~]# firewall-cmd --reload

nfs-client

っでクライアント側では既にFreeIPAに参加しているので /etc/krb5.keytab は既に持っていて、これにnfsサービスプリンシパルを追加します

[root@freeipa-client ~]# klist -ke /etc/krb5.keytab
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   1 host/freeipa-client.sybyl.local@SYBYL.LOCAL (aes256-cts-hmac-sha1-96)
   1 host/freeipa-client.sybyl.local@SYBYL.LOCAL (aes128-cts-hmac-sha1-96)
 
[root@freeipa-client ~]# kinit admin
[root@freeipa-client ~]# ipa-getkeytab -s freeipa.sybyl.local -p nfs/freeipa-client.sybyl.local -k /etc/krb5.keytab
Keytab successfully retrieved and stored in: /etc/krb5.keytab
 
[root@freeipa-client ~]# klist -ke /etc/krb5.keytab
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   1 host/freeipa-client.sybyl.local@SYBYL.LOCAL (aes256-cts-hmac-sha1-96)
   1 host/freeipa-client.sybyl.local@SYBYL.LOCAL (aes128-cts-hmac-sha1-96)
   1 nfs/freeipa-client.sybyl.local@SYBYL.LOCAL (aes256-cts-hmac-sha1-96)
   1 nfs/freeipa-client.sybyl.local@SYBYL.LOCAL (aes128-cts-hmac-sha1-96)
[root@freeipa-client ~]#

次に「ipa-client-automount」を実行する

[root@freeipa-client ~]# ipa-client-automount --server=freeipa.sybyl.local --location=default
IPA server: freeipa.sybyl.local
Location: default
Continue to configure the system with these values? [no]: yes      <--- IPAサーバの値とlocationの値が正しいなら[yes]
Configured /etc/idmapd.conf
Restarting sssd, waiting for it to become available.
Started autofs
 
[root@freeipa-client ~]#
[root@freeipa-client ~]# setsebool -P use_nfs_home_dirs 1     <-- SELinux対応

ここでmountを試してみる

[root@freeipa-client ~]# cd /home
[root@freeipa-client home]#
 
[root@freeipa-client home]# mount | grep /home
auto.direct on /home type autofs (rw,relatime,fd=5,pgrp=1284,timeout=300,minproto=5,maxproto=5,direct,pipe_ino=28056)
freeipa-nfs:/home on /home type nfs4 (rw,relatime,vers=4.2,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5,(略
[root@freeipa-client home]#

「sec=krb5」が入っているのでkerberosでnfsが行っているみたい.
「sec=krb5i」で繋ぎたければ「ipa automountkey-mod default auto.direct」で修正します
sec欄がkrb5iならチェックサム付き、krb5pならnfsトラフィックの暗号化が行えます

メモ

「kinit」をしないで「ipa-getkeytab」を行うと「Do you have a valid Credential Cache?」と言われる


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2022-04-29 (金) 22:23:39 (148d)