N2N组建虚拟局域网联机遇到搜不到房间的问题一例(绑定IP)
之前写过
N2N组建虚拟局域网联机遇到搜不到房间的问题一例(网卡优先级)
主要是通过 修改虚拟网卡的优先级 和 改变全局广播数据,来解决联机中无法搜到对方房间的问题。
后来又找到一个小工具 ForceBindIP ,通过劫持系统函数,强制将程序的网络请求绑定到指定的IP地址。
原理
ForceBindIP 是一个免费的 Windows 应用程序,它将自己注入另一个应用程序并改变某些 Windows 套接字调用的方式,允许您强制另一个应用程序使用特定的网络接口/IP 地址。如果您处于具有多个接口的环境中并且您的应用程序没有绑定到特定接口的选项,这将非常有用。
ForceBindIP 分两个阶段工作 – 加载程序 ForceBindIP.exe 将加载处于挂起状态的目标应用程序。然后它将注入一个 DLL (BindIP.dll),它将 WS2_32.DLL 加载到内存中并拦截 bind()、connect()、sendto()、WSAConnect() 和 WSASendTo() 函数,将它们重定向到 DLL 中的代码验证它们将绑定到哪个接口,如果不是指定的接口,则(重新)绑定套接字。一旦函数拦截完成,目标应用程序就会恢复。请注意,当存在注入的 DLL 时,某些具有反调试器/注入技术的应用程序可能无法正常工作;对于绝大多数应用程序,尽管这种技术应该可以正常工作。
从 1.2 版开始,WS2_32.DLL 中显式或隐式绑定到接口的所有已知函数都会被拦截。但是请注意,如果某些程序实现了不使用标准 winsock 函数的连接,它们最终可能仍会使用默认接口。ForceBindIP 不会防止通过 VPN 使用应用程序时可能发生的信息泄露。例如,所有主机名查找(DNS 请求)都将通过默认网关解析,因为这些请求来自 Microsoft DNS 客户端,而不是程序。
以上机翻自官网介绍
使用
下载并解压
ForceBindIP-1.32.zip 官方下载 备用下载
EasyN2N 已集成 ForceBindIP,直接调用
用法
比如直接通过命令行启动(所有参与参与联机的朋友均需要运行)
#ForceBindIP64.exe 需要绑定的IP地址 运行的程序及其命令行
#例如:
#运行CS,并将其网络请求绑定到192.168.123.112这个IP上
ForceBindIP64.exe 192.168.123.112 "E:\Cs\cstrike.exe"
其他参数
ForceBindIP还有个 -i 参数,例如:
ForceBindIP64.exe -i 192.168.123.112 "E:\Cs\cstrike.exe"
-i 参数:ForceBindIP在注入DLL之前等待一段时间,等待进程加载。可能会提高与某些应用程序的兼容性,但有可能无法捕获加载DLL之前进行的任何绑定/连接调用。
测试
我们先试试不通过 ForceBindIP,启动EasyN2N组网,直接打开CS并建房
主机
可以看到CS监听的一个临时IP,非我们联机用的虚拟IP
客户端
在B端是搜不到A端的房间的
此时我们分别在主机和客户端,均通过 ForceBindIP 强制将IP绑定到N2N的虚拟IP上,启动CS,再次搜索房间
搞定!
50 条评论
搜不到游戏房间,但是能ping通,大概率是游戏的防火墙没关,我把n2n防火墙关了,文明6没关,一直搜不到游戏,互联网联机当主机别人重连同步不到进度,把防火墙关了,一切都好了。
ForceBindIP64.exe -i 192.168.123.112 “E:\Cs\cstrike.exe”
直接通过命令启动CS创建房间会卡死啊,怎么处理呢
@董哈哈
cs不用ForceBindIP绑定也可以正常搜房加房的,文中只是测试