我正在尝试使用 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 地址。
具有全局目标地址的数据包也必须具有全局源地址,否则数据包将不会被转发。