2
我在Windows 7机器上安装了TAP-WIN32适配器V9。我想用 TUN从接口读取IP数据包。我跟着从 http://www.varsanofiev.com/inside/using_tuntap_under_windows.htm在Windows中使用TUN驱动程序
的C#示例我修改了代码像下面
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时,我得到的数据包是'ETHERNET FRAME CHECK SEQUENCE NOT CORRECT '作为回应。 为了你能够读取IP数据包,设置P2P像你这样后,你需要做一些路由: '路由添加掩码255.255.255.255 <路由器/调制解调器网关IP>'' 添加路由128.0.0.0 mask 128.0.0.0 ' 'route add 0.0.0.0 mask 128.0.0.0 ' –
user2759156