0

我用 WireGuard 和 c++ 的 wintun 创建了一个适配器。一般来说是这样的(我删除了一些不相关的代码)

// ...

int main() {
    HMODULE Wintun = InitializeWintun();
    GUID ExampleGuid;
    WINTUN_ADAPTER_HANDLE Adapter;
    WINTUN_SESSION_HANDLE Session;
    DWORD Version;
    QuitEvent = CreateEventW(NULL, TRUE, FALSE, NULL);

    ExampleGuid = { 0xdeadbabe, 0xcafe, 0xbeef, { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef } };
    Adapter = WintunCreateAdapter(L"Example", L"Demo", &ExampleGuid, NULL);

    MIB_UNICASTIPADDRESS_ROW AddressRow;
    InitializeUnicastIpAddressEntry(&AddressRow);
    WintunGetAdapterLUID(Adapter, &AddressRow.InterfaceLuid);
    AddressRow.Address.Ipv4.sin_family = AF_INET;
    AddressRow.Address.Ipv4.sin_addr.S_un.S_addr = htonl((192 << 24) | (168 << 16) | (21 << 8) | (1 << 0));
    AddressRow.OnLinkPrefixLength = 24;

    Session = WintunStartSession(Adapter, 0x400000);
    Log(WINTUN_LOG_INFO, L"Success to setup tun device, start mangling packets...");
    
    // ... read and print information of received packet by wintun
}

我没有自己更改路由表,但是系统添加了一些规则。路由表如下所示: 路由打印命令的结果

然后我使用 python 脚本通过发送 udp 数据包对其进行测试:

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sendto("HELLO".encode('utf-8'), ('192.168.21.2', 1080))
s.close()

但是,我的 wintun 适配器刚刚收到一些奇怪的 IP 数据包,其目标 IP 地址为 192.168.21.255,并且从未收到预期的 IP 数据包。其中一个看起来像这样:

45 0 0 4e
6a 15 0 0
80 11 24 39
c0 a8 15 1
c0 a8 15 ff
0 89 0 89
0 3a 2e 9b
a2 f6 1 10
0 1 0 0
0 0 0 0
20 46 43 46
41 45 4b 45
44 45 4a 46
48 45 48 46
43 45 4e 45
4c 46 44 46
42 46 48 43
41 43 41 41
41 0 0 20
0

此外,我的wintun适配器也收到了一些目的IP地址为224.0.0.252或157.216.24.127的数据包,它们都与上面类似。只要我运行我的python脚本发送一个udp数据包,我的wintun适配器就收到了这样一个数据包。
我已经尝试了很多,但仍然不知道出了什么问题,所以请给我一些帮助。非常感谢。

4

0 回答 0