特定のProxmox LXCコンテナがネットワークにNFS共有をマウントできるようにするにはどうすればよいですか?

特定のProxmox LXCコンテナがネットワークにNFS共有をマウントできるようにするにはどうすればよいですか?

この質問は次のようによく似ています。Proxmox 5システムからエクスポートされたNFS共有をマウントしようとしたときに「mount.nfs:アクセスが拒否されました...」を修正する方法は?

Proxmox LXCコンテナからネットワーク上の他の物理システム上のNFS共有をマウントしようとしました。私は/etc/fstab次の行を持っています:

192.168.0.4:/mnt/Pool1/homes     /home     nfs     auto,rw,hard     0 0

mount /home次の出力で実行が失敗します。

mount.nfs: access denied by server while mounting 192.168.0.4:/mnt/Pool1/homes

出力mount -v /home

mount.nfs: timeout set for Sun Jun 17 15:29:02 2018
mount.nfs: trying text-based options 'hard,vers=4.2,addr=192.168.0.4,clientaddr=192.168.0.166'
mount.nfs: mount(2): Permission denied
mount.nfs: access denied by server while mounting 192.168.0.4:/mnt/Pool1/homes

コマンドを実行するたびに、次のmount行が追加されます/var/log/messages

Jun 17 15:26:47 userserver-01 kernel: [  256.620770] audit: type=1400 audit(1529249207.168:19): apparmor="DENIED" operation="mount" info="failed type match" error=-13 profile="lxc-container-default-cgns" name="/home/" pid=2938 comm="mount.nfs" fstype="nfs" srcname="192.168.0.4:/mnt/Pool1/homes"

明らかに、ProxmoxはAppArmorを使用し、AppArmorはNFSマウント操作を拒否します(apparmor="DENIED")。 AppArmorがプロファイルを使用しているようですlxc-container-default-cgns(ログファイルに表示されますprofile="lxc-container-default-cgns")。で設定ファイルが見つかりました/etc/apparmor.d/lxc/lxc-default-cgns

/etc/apparmor.d/lxc/lxc-default-cgnsNFSを許可するために必要なものを編集して変更できるようです。ただし、これによりNFSが許可されます。みんなコンテナ。 NFSを許可することは可能ですか?特定のコンテナでのみ利用可能

答え1

はい、可能です。に基づいて新しいプロファイルを作成し、lxc-container-default-cgns特定のコンテナに使用できます。それでは最初に実行してみてください

cp -i /etc/apparmor.d/lxc/lxc-default-cgns /etc/apparmor.d/lxc/lxc-default-with-nfs

次に新しいファイルを編集します/etc/apparmor.d/lxc/lxc-default-with-nfs

  • profile lxc-container-default-cgns次へ交換profile lxc-container-default-with-nfs
  • }閉じ括弧()の前にNFS設定(以下を参照)を配置します。

NFSの構成

書くか

  mount fstype=nfs*,
  mount fstype=rpc_pipefs,

または(より明確に)

  mount fstype=nfs,
  mount fstype=nfs4,
  mount fstype=nfsd,
  mount fstype=rpc_pipefs,

最後に実行してくださいsystemctl reload apparmor

新しい設定ファイルの使用

次の行を編集し/etc/pve/lxc/${container_id}.confて追加します。

lxc.apparmor.profile: lxc-container-default-with-nfs

次にコンテナを停止し、次のように再起動します。

pct stop ${container_id} && pct start ${container_id}

これで、NFS共有をマウントできます。

関連情報