【发布时间】:2012-09-20 13:22:22
【问题描述】:
我已经在我的 Windows 7 机器上安装了 TAP-WIN32 Adapter V9。我想用 TUN 从接口读取 IP 数据包。我遵循了来自的 C# 示例 http://www.varsanofiev.com/inside/using_tuntap_under_windows.htm
我修改了如下代码
IntPtr ptun = Marshal.AllocHGlobal(8);
Marshal.WriteInt32(ptun, 0, 0x0a030001);
Marshal.WriteInt32(ptun, 4, unchecked((int)0x00ffffFF));
bool val = DeviceIoControl (ptr, TAP_CONTROL_CODE (5, METHOD_BUFFERED) /*POINT TO POINT */, ptun, 8,ptun, 8, out len, IntPtr.Zero);
但是,我似乎仍然没有收到 IP 数据包。我在另一端运行 tcpdump 并 它抱怨“错误的链接层封装”。
这是尝试从 TUN 接口获取 IP 数据包的正确方法吗?
【问题讨论】:
-
对我来说,我可以从 TUN 接口读取 IP 数据包,但我的问题是,当我转发这些数据包并写入我的 ubuntu 服务器上的 tun0 时,我收到带有 @987654324 的数据包@ 作为回应。为了让你能够读取IP数据包,像你一样设置p2p之后,你需要做一些路由:
route add <server_ip> mask 255.255.255.255 <router/modem gateway ip>route add 128.0.0.0 mask 128.0.0.0 <tun/tap ip>route add 0.0.0.0 mask 128.0.0.0 <tun/tap ip> -
你应该看看 openvpn 源代码。我在 openvpn 源代码中看到了属于 tun 模式的常量。例如,我的意思是 TAP_WIN_IOCTL_CONFIG_TUN。
-
TAP_WIN_IOCTL_CONFIG_TUN定义在github.com/OpenVPN/tap-windows6/blob/…
标签: tun