ping6:sendmsg:没有可用的缓冲区空间

ping6:sendmsg:没有可用的缓冲区空间

我不确定发生了什么变化,因为zfs receive在必须使用zfs send -R.我不知道这是否相关,但这是我能想到的唯一可以改变某些事情的事情。

请原谅我在下面的输出中的混淆。我试图弄清楚哪些地址是本地地址、可路由地址和默认网关地址。

# ifconfig vtnet0
vtnet0:标志=8843 公制 0 mtu 1500
      选项=6c07bb
        以太 00:16:--:--:--:--
        hwaddr 00:16:--:--:--:--
        inet ---.---.---.--- 网络掩码 0xffffff00 广播 ---.---.---.---
        inet6 fe80::---:----:----:----%vtnet0 prefixlen 64scopeid 0x1
        inet6 2604:----:--:--:----:----:----:---- 前缀长度 64
        nd6 选项=23
        介质:以太网 10Gbase-T
        状态:活跃

# netstat -rf inet6
路由表

互联网6:
目标网关标记 Netif 过期
::/96 本地主机 UGRS lo0
默认 2604:----:--::1 UGS vtnet0
本地主机链接#3 呃 lo0
::ffff:0.0.0.0/96 本地主机 UGRS lo0
2604:----:--::1 00:16:--:--:--:--UHS vtnet0
第2604章 6 链接#1 U vtnet0
2604:----:--:--:123 链接#1 UHS lo0
fe80::/10 本地主机 UGRS lo0
fe80::%vtnet0/64 链接#1 U vtnet0
fe80::---:----:--- 链接#1 UHS lo0
fe80::%vtnet1/64 链接#2 U vtnet1
fe80::---:----:--- 链接#2 UHS lo0

# ping6 -c 1 2604:----:--:--:----:----:----
PING6(56=40+8+8 字节) 2604:----:--:--:----:----:---- --> 2604:----:-- :--:----:----:----
来自 2604:----:--:--:----:----:---- 的 16 个字节,icmp_seq=0 hlim=64 时间=0.097 ms

# ping6 -c 1 2604:----:--::1
PING6(56=40+8+8 字节) 2604:----:--:--:----:----:---- --> 2604:----:-- ::1
ping6:sendmsg:没有可用的缓冲区空间
ping6:写了 2604:----:--::1 16 个字符,ret=-1

#ipfw显示5
00005 200 21096 允许 ip6 从任何到任何

当我尝试ping6任何其他非本地地址时,也会发生同样的情况。

我还尝试将默认路由设置为-iface vtnet0而不是网关,但结果相同。

我在互联网上的其他地方看到了这个问题,但没有找到任何解决方案(我尝试过重新启动,down以及up在界面上等)。有人知道发生了什么吗?

编辑如果有人知道如何使用dtrace来找出哪个函数(大概是从 开始的某个地方ip6_output)正在触发此错误的返回,那将很有帮助。我搞乱了一些,dtrace但最终没有找到解决办法。

答案1

centos 论坛上 yogeshpujari 的建议。

为了解决这个问题,我必须增加 ARP 表空间。

要永久执行此操作:编辑 /etc/sysctl.conf 并添加以下行:

net.ipv4.neigh.default.gc_thresh3 = 4096
net.ipv4.neigh.default.gc_thresh2 = 2048
net.ipv4.neigh.default.gc_thresh1 = 1024

# sysctl -p

对于临时修复:

echo 1024 > /proc/sys/net/ipv4/neigh/default/gc_thresh1
echo 2048 > /proc/sys/net/ipv4/neigh/default/gc_thresh2
echo 4096 > /proc/sys/net/ipv4/neigh/default/gc_thresh3

相关内容