【问题标题】:How to test ICMP in my stack over TAP device?如何通过 TAP 设备在我的堆栈中测试 ICMP?
【发布时间】:2019-08-15 03:36:50
【问题描述】:

我正在编写代码以在 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) 仍然发送数据包到环回。

【问题讨论】:

    标签: c ubuntu tcp ping tun-tap


    【解决方案1】:

    当你想通过你的 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
    

    【讨论】:

    • 感谢您的回答!但我的意思是我想从 tap 接收 ping 数据包来测试我的 ICMP 接收/回复功能,而不是通过 tap 接口发送数据包。您的建议仍然很有帮助,它可以帮助我找到我的 ip 层中的一些错误。
    • APP 点击内核。当您运行 ping 命令时,数据包由内核通过 tap 接口发送出去,您的应用程序将收到它。当您的应用编写 icmp 数据包进行 Tap 时,该数据包由您的应用发出并由内核接收。
    • 哦,我明白了!我在源文件中设置了伪造的远程IP及其路由,并根据您的建议配置了arp,然后我的堆栈可以回复ping。非常感谢!哈哈
    猜你喜欢
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 2022-08-22
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    相关资源
    最近更新 更多