无法使用 ipv6 地址对 Tap 设备执行 ping 操作

无法使用 ipv6 地址对 Tap 设备执行 ping 操作

我运行的是 CentOS 7。

首先我创建了一个点击设备:

ip tuntap add dev tap2 mode tap

然后我给它分配了ipv6地址:

ip -6 addr add dev tap2 fd00:4::1/64
ip link set tap2 up

其状态生成自ip addr显示:

tap2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 500
link/ether fe:ea:2b:e0:c3:08 brd ff:ff:ff:ff:ff:ff

然而,ping6 fd00:4::1什么也没收到。tcpdump -i tap2也什么也不输出。

Tap 设备是否准备好在 ipv6 中运行?我应该在某处添加配置吗?

答案1

如果您的版本ip支持它,您可以使用 confflagnodad告诉设备跳过重复地址检测 (DAD)分配地址时:

# ip -6 addr add dev tap2 fd00:4::1/64 nodad

由于分接设备未连接到任何介质,因此 DAD 可能无法完成。分配地址时没有confflagip addr显示了地址(Ubuntu,内核 3.13,iproute2 版本 3.12.0)暂定的状态,即正在等待 DAD 完成:

3: tap2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 500
    link/ether 6a:fe:48:a1:b2:1d brd ff:ff:ff:ff:ff:ff
    inet6 fd00:4::1/64 scope global tentative
       valid_lft forever preferred_lft forever

分配confflagnodad显示不同的结果:

3: tap2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 500
    link/ether 6a:fe:48:a1:b2:1d brd ff:ff:ff:ff:ff:ff
    inet6 fd00:4::1/64 scope global nodad 
       valid_lft forever preferred_lft forever

然后 Ping 工作:

# ping6 fd00:4::1
PING fd00:4::1(fd00:4::1) 56 data bytes
64 bytes from fd00:4::1: icmp_seq=1 ttl=64 time=0.050 ms
64 bytes from fd00:4::1: icmp_seq=2 ttl=64 time=0.056 ms
...

相关内容