Scapy 不发送具有全局范围目标地址的 IPv6 数据包

Scapy 不发送具有全局范围目标地址的 IPv6 数据包

我正在尝试使用 scapy 发送 IPv6 数据包。我并不关心使用什么高级协议,因此我只需发送:

send(IPv6(dst="2001:db9:1::4"))

我有一条通往目的地的路线,ip -6 route show我看到了:

2001:db9:1::4 dev vt0  metric 1024

如果我从命令行发送 ping 请求,我可以在目标设备的 tcpdump 中看到它。但如果我使用 scapy 发送 IPv6 数据包,我会收到这些消息,但在 tcpdump 中看不到任何内容:

WARNING: No route found for IPv6 destination 2001:db9:1::4 (no default route?)
WARNING: No route found for IPv6 destination 2001:db9:1::4 (no default route?)
WARNING: more No route found for IPv6 destination 2001:db9:1::4 (no default route?)
.
Sent 1 packets.

但如果我使用目标设备的链路本地地址,它就可以工作。我只收到一条警告消息(类似于上面消息中的第一行),并且我在 tcpdump 中看到了数据包。

知道为什么会发生这种情况吗?我该如何解决?

答案1

发送接口需要有一个全局 IPv6 地址。

具有全局目标地址的数据包也必须具有全局源地址,否则数据包将不会被转发。

相关内容