每次开启mc服务器都会报错 经过排查我填入的端口没有被占用,防火墙已经将相关端口开放,在阿里云的防火墙设置也添加了相关规则 hosts文件内没有内容 jdk用的是jdk12 如果将server-ip改为内网ip或者127.0.0.1就可以正常开启,但是公网ip不可以 我在服务器上部署的tomcat和mysql都可以正常访问
**** FAILED TO BIND TO PORT!
The exception was: java.net.BindException: Cannot assign requested address: bind
Perhaps a server is already running on that port?
遇到了同样的问题,在CSDN看到了,希望阿里云团队能够给出正确、标准的答案~请查看
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
遇到您描述的问题,通常意味着 Minecraft 服务器尝试绑定到的公网 IP 端口上存在一些限制或配置问题,导致无法成功启动。既然您已经检查了端口占用、防火墙规则、hosts 文件以及 JDK 版本,并且其他服务(如 Tomcat 和 MySQL)可以正常通过公网访问,这里提供几个可能的解决方案和排查方向:
SELinux 或 AppArmor 设置:某些系统(如 CentOS/RHEL)默认启用了 SELinux 安全策略,或者 Ubuntu 上可能有 AppArmor,这些安全框架可能会阻止程序绑定到特定端口。您可以检查并临时禁用它们以测试是否是这个问题所在,但请注意,这仅作为诊断步骤,不建议长期关闭这些安全功能。
IPtables 配置:除了阿里云的安全组设置,服务器自身的 IPtables(Linux 内核的防火墙)也可能影响端口访问。请检查是否有阻止相关端口的规则。
Java 启动参数:确认 Minecraft 服务器使用的 Java 命令行参数中没有错误地指定了网络相关的参数,比如 -Djava.net.preferIPv4Stack=true
或类似的配置,确保它们与您的预期网络环境相匹配。
ECS实例网络配置:在阿里云ECS管理控制台,检查实例的网络类型(经典网络/专有网络VPC),并确认您的网络配置与之相符。如果使用的是VPC,确保实例所在的子网NAT网关、路由表等配置正确允许出入口流量。
端口转发:如果您使用的是VPC内的ECS实例,需要确保NAT网关或ECS实例上的端口转发设置正确。有时候,即使安全组开放了端口,如果没有正确的端口转发,外部也无法访问到该端口。
使用Socket API侦听端口:为了进一步定位问题,可以尝试编写一个简单的Java程序,使用Socket API尝试绑定到相同的公网IP和端口,看是否能成功,这有助于判断是应用层面还是系统层面的问题。
查看系统日志:检查 /var/log/messages
或者 journalctl -xe
查看是否有与网络绑定失败相关的错误信息。
如果以上步骤都无法解决问题,建议联系阿里云技术支持获取更专业的帮助,他们可以根据您的具体实例情况,进行更深入的排查和指导。