Nfs

如何在掛載 nfs 時指定要使用的 ipv6 地址

  • August 28, 2021

我的筆記型電腦有幾個 IPv6 地址。我的 NAS 只接受其中一種特定的方式來使用 NFS 安裝 NAS 文件夾。

我掛載 NAS 共享

sudo mount [fd80:foo::bar]:/Media /mnt/NASshare

但這樣一來,我的筆記型電腦使用其 IPv6 地址之一的可能性很高,這是 NAS 不允許的。

我的問題是:如何在掛載我的 NAS 共享時指定 IPv6 地址?

從 NFS(5) nfs - nfs 文件系統的 fstab 格式和選項:

  clientaddr=n.n.n.n

  clientaddr=n:n:...:n
                 Specifies a single IPv4 address (in  dotted-quad  form),
                 or  a  non-link-local  IPv6 address, that the NFS client
                 advertises to allow servers to  perform  NFS  version  4
                 callback  requests against files on this mount point. If
                 the  server is unable to establish callback  connections
                 to  clients,  performance  may  degrade,  or accesses to
                 files may temporarily hang.

                 If this option is not specified,  the  mount(8)  command
                 attempts  to  discover  an  appropriate callback address
                 automatically.  The automatic discovery process  is  not
                 perfect,  however.   In  the presence of multiple client
                 network interfaces, special routing policies, or  atypi-
                 cal  network  topologies,  the  exact address to use for
                 callbacks may be nontrivial to determine.

這建議將其添加到/etc/fstab(使用fd80:c0f::fee所需的 IP 地址):

fd80:foo::bar:/Media    /mnt/NASshare    nfs    rw,clientaddr=fd80:c0f::fee 0 0

但如前所述,這種自動發現過程並不完美。

您可能需要添加特定route於您的 NAS。

或者,如果可以使用ip netns命名空間,那麼您可以:

  1. 創建命名空間:ip netns add NASNamespace.
  2. 將其連結到界面:ip link set eth0 netns NASNamespace
  3. 為其配置IP:ip netns exec NASNamespace ifconfig eth0 fd80:c0f::fee/64 up
  4. 強制掛載在命名空間內執行:ip netns exec NASNamespace mount

引用自:https://serverfault.com/questions/841976