在還沒有開始 IPv6 NFS Server 前,先來看看 IPv6 的 IP Address 是怎麼運作的.
IPv6 的位址自動指派 (address auto-configuration) 主要可以區分為下列幾種
Stateless auto-configuration
Stateful auto-configuration using Router Advertisement(RA) Daemon (radvd)
Dynamic Host Configuration Protocol v6 (DHCPv6)
不過沒有 IPv6 的位址自動指派 (address auto-configuration) 環境,一般網卡在啟動時就會指派一組 IPV6 link-local address,而這 link-local address 是唯一的而且是依據網卡的 MAC Address 而有所變動
比如 :
MAC Address – 00:1A:64:22:04:83
link-local address – fe80::21a:64ff:fe22:483
IPV6 長度為 128bits 而 MAC 長度為 48bits 要怎麼轉換呢!!
首先 MAC Address 的第五位元組與第四位元組插入 FF:FE
原 MAC Address 第6位元組的第二個 bit 從原來的 “0”轉成 “1”,所以 00 -> 02
前面再填入 fe80:0000:0000:0000
fe80:0000:0000:0000:021a:64ff:fe22:0483
寫這麼多 0 一定會寫錯,所以有簡寫的規則,規則如下:
每 32Bit 如開頭之4bit表示為0,即可省略,若32Bit全為0,則可簡寫為0
若連續完整之32Bit段落皆為 0000,則可全省略,簡寫為::,但以一次為限
最後簡寫成為 : fe80::21a:64ff:fe22:483
這邊我有點偷懶直接使用 Link-local 當作 IPv6 的位置(不過有網友不推薦這樣的方式),主要實驗環境在 Ubuntu 14.04 Desktop ,預設是沒有安裝 NFS Server 與 showmount 等工具
# sudo apt-get install nfs-kernel-server
# sudo apt-get install nfs-common
NFS Server IPv6 addr: fe80::a00:27ff:fee1:66c1/64
Client IPv6 addr: fe80::a00:27ff:fe64:cc37/64
先確定一下 ping (ping Link Local address 時需要在 ping6 IPv6 後面的參數加上 network_device_name) , iptables , ip route 這幾件事情都沒有問題.
# ping6 fe80::a00:27ff:fee1:66c1%eth0
# ping6 fe80::a00:27ff:fe64:cc37%eth0
# ip6tables -L
# ip -6 route show
NFS Server IPv6: inet6 addr: fe80::a00:27ff:fee1:66c1/64
設定的方式也跟 IPv4 一樣,不過要改成 IPv6 的 IP 位址.
# vi /etc/exports
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#
/var/ftp/ fe80::a00:27ff:fee1:66c1/64(rw,async,no_root_squash,no_subtree_check)
# /etc/init.d/nfs-kernel-server restart
* Stopping NFS kernel daemon [ OK ]
* Unexporting directories for NFS kernel daemon... [ OK ]
* Exporting directories for NFS kernel daemon... [ OK ]
* Starting NFS kernel daemon
fe80::a00:27ff:fee1:66c1/64 Network ID為64bits ,只要是 fe80:0000:0000:0000 開頭的 Clients 都可以使用.
Client IPv6: inet6 addr: fe80::a00:27ff:fe64:cc37/64
要掛載的方式也一樣,不過要改成 IPv6 的 IP 位址
# showmount -e fe80::a00:27ff:fee1:66c1
Export list for fe80::a00:27ff:fee1:66c1:
/var/ftp fe80::a00:27ff:fee1:66c1/64
# mount -t nfs [fe80::a00:27ff:fee1:66c1]:/var/ftp /mnt
mount.nfs: mount system call failed
# mount -t nfs4 [fe80::a00:27ff:fee1:66c1]:/var/ftp /mnt
mount.nfs4: mount system call failed
# mount -t nfs4 '[fe80::a00:27ff:fee1:66c1]':/var/ftp /mnt
mount.nfs4: mount system call failed
無解,不知道為什麼不行.
網友 Ray 說建議不要用 link-local address,如果要用的話後面要帶 interface name ,就可以了.
#mount -t nfs [fe80::a00:27ff:fee1:66c1%eth0]:/var/ftp /mnt
沒有解決問題,試試搜尋本站其他內容