众所周知,WireGuard速度快,轻量化,易搭建,但不支持广播。但是多数局域网游戏都是通过广播数据包来实现房间发现,因此可以通过修改所发数据包目的ip的方式实现房间搜索。
(略)
配置Python环境,安装scapy以及json5库。
配置文件(config.json5)中,
- debug:为true程序将产生输出,false将禁用输出
- iface:仅数据包发送端(指进行广播数据包的主机)需要配置,填入从WireShark中,对应虚拟网卡所发送数据包中,Interface ID的值。
- server_ip:服务端IP地址
- server_port:服务端接收端口
- broadcast_list:期望被广播的主机,若为局域网游戏则为全部玩家的虚拟局域网IP地址
保证所有用户config.json5配置相同,将Subscriber.py配置在服务端,Publisher.py配置在数据包发送端。
运行两个文件,需要注意的是,若在Linux中需要以管理员权限运行。
关闭防火墙
- 检查广播数据包是否从虚拟网卡中发出,在路由表中通过添加路由表项实现数据包从你的虚拟网卡中发出。例如假设你的虚拟网卡IP是192.168.6.1,参考命令如下
route add 255.255.255.255 MASK 255.255.255.255 192.168.6.1 METRIC 1
-
避免从Epic、Steam直接运行游戏,找到游戏文件夹中的游戏运行文件直接启动。
-
可能游戏广播的数据包不是UDP数据包,自行抓包设置嗅探规则。