我有一个小型的、简单的 UDP 服务器,已经在多个托管地点运行多年。
我刚刚在 Google Cloud 上创建了一个新的虚拟机,即 Compute Engine,它运行的是 Linux。
小型机器(f1-micro (1 vCPU, 0.6 GB 内存) CPU 平台 Intel Sandy Bridge)的默认设置,仅进行以下更改:
- 静态公共 IP
- 入站防火墙规则允许服务器端口 (22000) 上的 UDP 流量
一切都运行良好,可以从世界任何地方连接,除了从机器本身(有一个统计模块,它向服务器询问信息 - 这也适用于远程,但不适用于机器本身)。这在我尝试过服务器的所有其他 Linux 机器上都有效。
我被指出改变服务器绑定的地址是一个可能的解决方案,而且由于我可以访问源代码,我尝试了所有我能想到的方法但都没有效果(绑定到 127.0.0.1、0.0.0.0、“localhost”、特定 IP...)。
我也尝试添加特定的入站和出站防火墙规则。
关于如何修复无法从外部连接的情况,有很多信息 - 我的问题正好相反,而且我有很多想法。
Ping 等工作正常。
提前致谢
答案1
解决了!
显然在这些机器/内核中 UDP 套接字需要有一个名称(绑定)前发送-在我安装服务器的其他机器上从来不需要。
这不是服务器管理的问题——只是看上去像是这样。