我不确定发生了什么变化,因为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