winapi – Win32套接字 – 强制ip数据包在发送到其他本地接口时
简介:我正在尝试创建套接字以在同一台机器上存在的两个物理接口之间传递数据,而Win32套接字始终直接在内核中转发流量,而不是通过物理接口.有没有办法禁用此行为,可能通过设备设置,注册表调整,路由表恶作剧或套接字选项?我们正在使用
Windows XP SP3.
一些背景.我正在尝试构建一些完全自动化的IP测试来运行我们的自定义IPv4设备.我们有一个大型的Windows XP机器实验室,以及我们连接的每个设备的单独物理以太网接口.我们的设备实际上是以太网路由器,每个路由器都有自己的IP. 我们需要通过我们的设备将数据发送到我们的实验室机器,然后再返回到同一台计算机.我们将通过设备发送单播和多播UDP,TCP和广播IP流量. 我们希望(并且可能需要)流量来自它预定的同一台机器. 为了生成我们的数据,我们希望能够使用Win32套接字,因为它是众所周知的,良好的支持,我们的客户正在使用,并且可能是最快速的方法.数据包注入可能适用于UDP和广播IP,但很可能不适用于TCP.我会接受使用数据包注入的想法,但更喜欢标准的Win32套接字. 如摘要中所述,数据包永远不会离开机器.我像疯子一样用Google搜索,但我找不到多少.有任何想法吗? 解决方法
使用Windows的命令行ROUTE实用程序.您可以对其进行配置,以便将发送到特定子网上特定IP地址的任何IP数据包发送到另一个IP /设备.例如:
route ADD <NIC_1_IP> MASK <NIC_1_SUBNET> <DEVICE_IP_CONNECTED_TO_NIC_2> METRIC 1 route ADD <NIC_2_IP> MASK <NIC_2_SUBNET> <DEVICE_IP_CONNECTED_TO_NIC_1> METRIC 1 或者,如果您知道NIC接口的索引号,则可以指定它们: route ADD <NIC_1_IP> MASK <NIC_1_SUBNET> METRIC 1 IF <NIC_2_INTF> route ADD <NIC_2_IP> MASK <NIC_2_SUBNET> METRIC 1 IF <NIC_1_INTF> 这样,无论何时将数据包发送到NIC#1的IP,数据包都会转到连接到NIC#2的设备,然后将其传递给NIC#1.反之亦然,发送到NIC#2的IP的数据包. 例如,如果PC连接到具有路由器的网络,这是一种允许WireShark捕获本地IP流量的有用技术.从一个本地IP /端口到另一个本地IP /端口的数据包可以从路由器弹回到PC,因此它们可以通过WireShark可以监控的物理接口(WireShark将看到每个本地数据包的重复副本 – 一个出站,一个入站 – 但你可以过滤掉重复的内容). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows-server-2003 – 为什么Windows Server 2008磁盘访问
- 预定任务 – Windows Server 2016计划任务计划必须在将来使
- windows-server-2003 – “工作站”和“服务器”服务继续停
- 更改Windows上Mercurial中的文件名大小写[复制]
- windows – 如何在运行批处理文件时防止程序(.exe)失败的错
- 什么是最简单的方法来制作Windows的热键?
- 如何在Windows上自动找到损坏的符号链接?
- 如何设置服务器支持.shtml类型文件
- windows-server-2008 – 如何确定用于身份验证的域控制器
- windows-mobile – 如何在调试CF.NET应用程序时禁用SQL Ser
- windows-server-2008-r2 – Windows服务的上次重
- fopen()在win32上的表现
- windows-7 – 使用GlusterFS和Windows避免SPOFS
- windows-7 – 为LAMP开发设置Windows 7
- 使用fiddler 抓取windows 10 应用程序https流量
- windows-7 – 如何从Windows 7 / Vista格式化为F
- windows – 如何通过Mercurial进行代码部署?
- iis – Microsoft VBScript运行时错误’800a0046
- 使用Ansible在Windows上执行.exe
- Windows 8应用程序(html和Javascript):从图片库