Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

服务端模式注入后日志显示10049,同局域网下玩家能搜索到并加入,公网无法搜索到并加速,wireshark抓不到UDP包(存疑) #3

Open
Blues-star opened this issue Sep 27, 2024 · 4 comments

Comments

@Blues-star
Copy link

[2024-09-28 02:40:38] redirect sendto failed: 255.255.255.255:62987 -> :::62987, through: :::60326, 7972 -> 7980, errorcode: 10049
[2024-09-28 02:40:38] redirect sendto failed: 255.255.255.255:62988 -> :::62988, through: :::60326, 7972 -> 7980, errorcode: 10049
[2024-09-28 02:40:38] redirect sendto failed: 255.255.255.255:62989 -> :::62989, through: :::60326, 7972 -> 7980, errorcode: 10049
[2024-09-28 02:40:38] redirect sendto failed: 255.255.255.255:62990 -> :::62990, through: :::60326, 7972 -> 7980, errorcode: 10049
[2024-09-28 02:40:38] redirect sendto failed: 255.255.255.255:62991 -> :::62991, through: :::60326, 7972 -> 7980, errorcode: 10049
[2024-09-28 02:40:38] redirect sendto failed: 255.255.255.255:62992 -> :::62992, through: :::60326, 7972 -> 7980, errorcode: 10049
[2024-09-28 02:40:39] redirect sendto failed: 255.255.255.255:62993 -> :::62993, through: :::60326, 7972 -> 7980, errorcode: 10049
[2024-09-28 02:40:39] redirect sendto failed: 255.255.255.255:62994 -> :::62994, through: :::60326, 7972 -> 7980, errorcode: 10049
[2024-09-28 02:40:39] redirect sendto failed: 255.255.255.255:62995 -> :::62995, through: :::60326, 7972 -> 7980, errorcode: 10049
[2024-09-28 02:40:39] redirect sendto failed: 255.255.255.255:62996 -> :::62996, through: :::60326, 7972 -> 7980, errorcode: 10049
[2024-09-28 02:40:39] redirect sendto failed: 255.255.255.255:62997 -> :::62997, through: :::60326, 7972 -> 7980, errorcode: 10049
[2024-09-28 02:40:39] redirect sendto failed: 255.255.255.255:62998 -> :::62998, through: :::60326, 7972 -> 7980, errorcode: 10049
[2024-09-28 02:40:39] redirect sendto failed: 255.255.255.255:62999 -> :::62999, through: :::60326, 7972 -> 7980, errorcode: 10049
@Blues-star
Copy link
Author

我重温了一下计网知识……好像这个v4多播是转换不了v6多播的,但这个好像不是什么大问题?因为这是服务端的,理论上服务端只要正确接收客户端的udp和tcp请求并作出响应就可以,然而我这边的公网客户端还是无法连接到我本地的服务器,有点疑惑

@xaxys
Copy link
Owner

xaxys commented Sep 28, 2024

错误代码可以参考MSDN Windows Socket Error Code.

WSAEADDRNOTAVAIL 10049 | Cannot assign requested address.

根据Log推测,这里注入地址为::0,而这不是一个有效的对端地址。

通常在以服务端模式启动的时候才会把注入地址设为::0,但是服务端正常应该不会发送62900-62999的房间发现包,推测可能在以服务端模式启动的时候,进入创建房间界面前,不小心或自动触发了一次做客户端的房间发现。

但无论结果如何,这看上去并不影响正常功能的运行,因为如您所说,服务端并不需要发送房间发现。

至于连接不上的问题究竟是什么,很难在此给与回答,因为本质上这个程序只是对对端IP进行了重定向,成功的连接依赖的是网络通路。

而国内目前公网上,以及个人家庭的网络的环境实在过于复杂,对IPv6的支持更是重灾区,再加上对UDP低优先级,以及对入站包的流量封锁,而更糟糕是这些都是可观测性极差的基础设施,所以没有一些排除网络问题的专业技巧,极难解决这个问题。所以目前在局域网或者同一学校、公司内网,跨NAT通过IPv6联机的受控网络环境会工作的很好,对于公网,只能说不可强求。

如果您对于计网有足够的了解,可以这样排查:

  • 从客户端侧查起,查看点击发现房间后的数据包有无正常发送,在家庭局域网中传播,并通过路由器传递到光猫。通常来说光猫以上都能正常传递。
  • 服务端侧,追踪上述房间发现包,检查光猫防火墙,看光猫是否把UDP IPv6入站拦截了,如果光猫都正常,却始终收不到,那可能在传递过程中被某个运营商的大区?城市?小区?防火墙给拦截并丢弃了,这也是有可能的,多半无法解决了。
  • 如果光猫正常入站,看本地网络路由器是否拦截入站,再看本电脑是否拦截入站,最终如果顺利到达文明6服务器,应该能触发房间发现的回复(1104字节,具体细节查看Readme)
  • 随后重复上述排查,反查服务端到客户端的链路。
  • 发现结束后,游戏通常转到62056端口,重建链路,再次排查。

@Blues-star
Copy link
Author

解决了,应该是光猫默认防火墙ban掉了v6入站请求导致的,改成桥接之后可以多人联机了,但是现在的问题变成了一回合所有玩家(除了主机)就要重新加载一次,不知道为什么,很奇怪

@JupiterFeng
Copy link

解决了,应该是光猫默认防火墙ban掉了v6入站请求导致的,改成桥接之后可以多人联机了,但是现在的问题变成了一回合所有玩家(除了主机)就要重新加载一次,不知道为什么,很奇怪

我们文明6老玩家统一称之为 档坏了 是老bug了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants