如何在现有以太网适配器上启动Wintun会话?报错1168求助
问题解答
核心结论
Wintun无法直接与非Wintun适配器(包括物理以太网网卡)配合使用——它是一套独立的虚拟隧道适配器框架,仅能操作由自身创建的Wintun虚拟适配器。
错误码1168的原因
你调用的WintunOpenAdapter(L"Realtek USB GbE Family Controller")是错误用法:
- 该函数的作用是打开已存在的Wintun虚拟适配器,而非物理网卡。
- 传入物理网卡名称后,系统找不到对应的Wintun适配器实例,因此返回错误码1168(对应
ERROR_NOT_FOUND,找不到指定对象)。
正确的Wintun隧道实现流程
要在两台同子网电脑间基于Wintun创建隧道,需按以下步骤操作:
- 创建Wintun虚拟适配器
使用WintunCreateAdapter函数创建专属的Wintun虚拟适配器,示例代码:GUID myTunnelGuid = {0x12345678, 0x1234, 0x1234, {0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef}}; // 自定义GUID WINTUN_ADAPTER_HANDLE adapter = WintunCreateAdapter(L"My Tunnel Adapter", L"Wintun", &myTunnelGuid); - 打开并启动会话
用WintunOpenAdapter打开刚创建的Wintun适配器,再启动会话:WINTUN_ADAPTER_HANDLE adapter = WintunOpenAdapter(L"My Tunnel Adapter"); if (!adapter) { /* 处理错误 */ } WINTUN_SESSION_HANDLE session = WintunStartSession(adapter, WINTUN_MAX_RING_CAPACITY); if (!session) { /* 处理错误 */ } - 实现跨物理网卡的流量转发
Wintun仅提供虚拟隧道端点,你需要自行编写逻辑:- 从Wintun会话读取数据包,通过物理以太网网卡的套接字发送到目标电脑
- 接收目标电脑发来的数据包,写入本地Wintun会话
- 两台电脑需完成对称的转发逻辑,才能建立完整隧道
补充说明
Wintun的高效性体现在虚拟隧道的数据包处理层面,而非直接绑定物理网卡。你需要将物理网卡作为Wintun隧道的"传输载体",而非直接操作物理网卡本身。
内容的提问来源于stack exchange,提问作者Noam Abargel
相关产品推荐
相关产品推荐

