我的服务器中有 4 个网卡:eth0
, eth1
, eth2
, eth3
。它是一个具有多个磁盘的存储服务器。我有三个卷组:vg_share1
、vg_share2
、vg_share3
。我想与不同的 NIC 共享这些卷组,如下所示:
vg_share1 --(NFS Share)--> Shared via eth1
vg_share2 --(NFS Share)--> Shared via eth2
vg_share3 --(NFS Share)--> Shared via eth3
我怎样才能做到这一点?
答案1
您无法限制传入的 IP 地址,但您能限制哪些源 IP 可以访问特定文件系统,如下所示:
/path/to/export 192.168.0.0/255.255.255.0(rw)
/path/to/otherexport 192.168.1.0/255.255.255.0(ro)
我假设您的个人网卡也位于个人网络上;你可以这样限制事情。
答案2
NFS 服务器依赖 RPC 在 nfs 服务器和客户端之间路由连接。根据rpc.nfsd(8)
手册页:
-H or --host hostname
specify a particular hostname (or address) that NFS requests will be accepted on. By default, rpc.nfsd will accept NFS requests on all known network addresses.
Note that lockd (which performs file locking services for NFS) may still accept request on all known network addresses. This may change in future releases of
the Linux Kernel. This option can be used multiple time to listen to more than one interface.
因此,您可以通过将分配给IP/NIC的主机名添加到配置文件中来在NFS服务器端配置一定程度的限制/etc/nfs.conf
。
例如:
cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6
# Public network interface
123.312.222.111 myhostname.on.linedotcom
# Local network interface
192.168.1.1 myhostname.mydomain.lan
然后,将“本地网络接口”的主机名添加到nfsd
NFS 配置文件的部分/etc/nfs.conf
[nfsd] hostname=myhostname.mydomain.lan
这样,rpcbind
守护程序仅侦听该接口,而忽略公共网络接口。
此外,在配置文件中设置正确的参数/etc/exports
,指示仅允许安装网络文件共享的本地网络/子域。
cat /etc/exports /srv/exampleshare 192.168.1.0/24(nfsoptionshereplzreplace)
相应地配置您的防火墙
例如,将网络接口卡 (NIC) 分成不同的区域。或者,如果使用iptables
,请仅在特定网络或子域上打开相应的端口。
答案3
只需照常共享文件系统即可,NFS 服务器默认侦听所有接口。
在客户端上,您可以指示每个 IP 地址(或 DNS 名称,如果配置)要安装的共享。
NFS Server - 0.0.0.0:2049 - ip address 1 <- client a mount vg_share1
- ip address 2 <- client b mount vg_share2
- ip address 3 <- client c mount vg_share3
您还可以查看绑定接口。使用绑定接口,您还可以实现某种容错方式,并在一个链路出现故障时保持连接。通过绑定接口,您甚至可以配置多个 IP 地址、VLAN 等。
NFS server - 0.0.0.0:2049 - bond0 <- client a, b, c mount their corresponding mounts
绑定接口(带 VLAN)概述:
eth1 \ / vlan x - address a
eth2 -> bond0 <- vlan y - address b
eth3 / \ vlan z - address c
当然你也可以只配置IP地址,不配置VLAN。
答案4
编辑/etc/nfs.conf
假设eth2
是192.168.1.0
- 使用类似的东西:
[nfsd]
host=192.168.1.0