如何将源IP地址设置为0.0.0.0

How can I set the source IP address to 0.0.0.0?

本文关键字:设置 地址 IP      更新时间:2023-10-16

我想写一个简单的DHCP客户端(它将在WLAN上工作),我在正确发送初始消息DHCP DISCOVER时遇到了问题——它已经发送了(我在捕获WLAN接口时在Wireshark中看到它),但源地址是我的适配器地址。如何将IP设置为"0.0.0.0"?

这是我代码的一部分:

    sockaddr_in src_addr;
    memset(&src_addr, 0, sizeof(struct sockaddr_in));
    src_addr.sin_family = AF_INET;
    src_addr.sin_port = htons(m_sport);
    src_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    status = bind(m_sockfd, reinterpret_cast<sockaddr *>(&src_addr), sizeof(sockaddr_in));

当我尝试src_addr.sin_addr.s_addr = inet_addr("0.0.0.0");时,源地址仍然从eth0(10.132…)设置。

内核通过在出口接口上用IP"免费"填充源地址来为您提供服务。

如果你不想这样做,你可能不得不使用原始套接字,并用IP_HDRINCL提供你自己的IP头。查找SOCK_RAW


一个简单的欺骗方法是stracetruss您的DHCP客户端,看看它做了什么。