我ipv6.disable=1
在引导加载程序(systemd 引导)中使用内核命令行参数来禁用 IPv6。但是,使用该选项,我现在在启动后会在日志中收到这些错误。
Jul 09 02:38:48 arch rpcbind[645]: cannot create socket for udp6
Jul 09 02:38:48 arch rpcbind[645]: cannot create socket for tcp6
Jul 09 02:38:48 arch rpc.statd[649]: Failed to create listener xprt (statd, 1, udp6)
Jul 09 02:38:48 arch rpc.mountd[642]: Could not make a socket: (97) Address family not supported by protocol
Run Code Online (Sandbox Code Playgroud)
这是 Arch Linux 4.14.53-1-lts #1 SMP Tue Jul 3 16:27:18 CEST 2018 x86_64 GNU/Linux
这些错误的后果是什么?如何在禁用 IPv6 的同时解决此问题?
更多信息: rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 20048 mountd
100005 1 tcp 20048 mountd
100005 2 udp 20048 mountd
100024 1 udp 48386 status
100005 2 tcp 20048 mountd
100024 1 tcp 47193 status
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100021 1 udp 54818 nlockmgr
100021 3 udp 54818 nlockmgr
100021 4 udp 54818 nlockmgr
100021 1 tcp 42833 nlockmgr
100021 3 tcp 42833 nlockmgr
100021 4 tcp 42833 nlockmgr
Run Code Online (Sandbox Code Playgroud)
这是一个对我有用的解决方案。
此消息使人们感到困惑,认为问题是由 rpcbind 引起的,而实际上问题是其他问题。
为了谷歌用户的利益,要禁用此消息,请编辑文件 /etc/netconfig,并禁用这两行(在开头添加“#”字符),以便它们现在如下所示:
#udp6 tpi_clts v inet6 udp - -
#tcp6 tpi_cots_ord v inet6 tcp - -
Run Code Online (Sandbox Code Playgroud)
保存文件,重新启动计算机,您将不再看到“rpcbind:无法为 udp6 创建套接字”消息。
如上所述,它有效,而且似乎是最正确的解决方案。然而,我并不完全理解这个问题的所有细微差别,所以欢迎评论。