rpcbind – 是否真的没有办法使tcp端口绑定到特定的接口/ nfs可以运行没有rpcbind?

我们想从sshfs转移到nfs

最后一件事情是让我们回来的事实是,rpcbind(我认为是必需的nfs工作)不允许你指定的tcp(不udp)ip绑定到。

有-h标志,但是这只是它打开的udp端口。 这不影响TCP端口,他们仍然打开0.0.0.0:… … –

有没有人知道我们如何通过不暴露给我们的公共接口来保护rpcbind?

甚至更好,有没有办法使用nfs没有rpcbind?

谢谢!

rpcbind需要将RPC服务映射到networking(读取TCP或UDP)地址和端口。 NFS版本2和3需要安装额外的服务以允许客户端获得初始文件句柄。 虽然nfs有一个很好的端口号2049,mountd不是。 IOW,如果你想使用NFSv3,你也需要运行rpcbind(也许有一些挂载选项可以告诉你在什么地方运行)。 与v3相反,NFSv4只需要单个端口2049,根本不需要mountd。 这使rpcbind免费的NFS设置成为可能。 请注意,即使是v4,一些(老)客户也可能试图与rpcbind交谈。

现在,关于rpcbind。 你为什么要保护它? 如果客户端不可用,那么他们不能挂载? 保护的唯一原因是限制可以更新的客户端的数量。 但是这已经到位,因为rpcbind使用unix域套接字,并且不允许任何远程客户端执行更新。 即使在本地主机上,您也需要成为root用户。 如果你只想保护一些客户端,那么iptables是你的朋友(或者你的操作系统有什么防火墙):

# iptables -A INPUT -s 10.1.2.0/24 -p tcp --dport 111 -j ACCEPT # iptables -A INPUT -s 10.1.3.0/24 -p udp --dport 111 -j ACCEPT # iptables -A INPUT -p tcp --dport 111 -j DROP # iptables -A INPUT -p udp --dport 111 -j DROP 

服务端口的查找被烧录到RPC协议中,所以在运行NFS时,你必须做一些非常奇特的事情来避免rpcbind。

你可以使用iptables阻止来自特定地址或接口的连接; 用tcpwrappers(/etc/hosts.allow,/etc/hosts.deny); 或 – 为了冒险 – 与SELinux。

如果“ldd / sbin / rpcbind”显示libwrap的链接,tcpwrappers就可以在本地使用,否则你需要禁止通常的启动,而是通过tcpd将其从inetd / xinetd运行。 我自己没有尝试过。