如何通过 TAP 设备在我的堆栈中测试 ICMP?

How to test ICMP in my stack over TAP device?

我正在编写代码以在 TAP 设备上实现一个简单的 TCP/IP 堆栈。但是当我想测试 ICMP 代码时,我发现 ping $(TAP IP) 不会向 TAP 设备发送数据包。它总是将它们发送到环回。那么如何测试我的 ICMP 代码?

我的系统是Ubuntu-18.04
当我测试 ARP 时,我使用 arping -I $(TAP NAME) $(TAP IP),它工作正常。 但是 ping -I $(TAP NAME) $(TAP IP) 仍然发送数据包到环回。

当你想通过你的tap接口发送数据包时,你应该将dst ip设置为远程地址而不是你的本地地址。假设你的 tap ip 是 192.168.1.10/24 ,你应该 ping 192.168.1.20 例如。在你ping之前,你应该先设置静态arp。

arp -s 192.168.1.20 12:34:56:78:90:ab