Java 拒绝在 Turnkey 上监听 IPv6

Java 拒绝在 Turnkey 上监听 IPv6

所以我使用 MineOS,这是一个预装了 Node.js WebUI 的交钥匙软件,用于部署 Minecraft 服务器。现在我希望可以通过 IPv6 访问服务器,因为这就是我从 ISP 获得的全部信息。但我的服务器实例只侦听 IPv4。我怎样才能让javaminecraft服务器监听IPv6?

一些 netstat -ntlp 输出,无论我在minecraft中的server.properties如何,它总是相同的:

root@MinecraftServer /etc/default# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      493/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1194/master
tcp        0      0 0.0.0.0:25565           0.0.0.0:*               LISTEN      1446/java
tcp        0      0 127.0.0.1:12319         0.0.0.0:*               LISTEN      590/shellinaboxd
tcp        0      0 0.0.0.0:12320           0.0.0.0:*               LISTEN      598/stunnel4
tcp        0      0 0.0.0.0:12321           0.0.0.0:*               LISTEN      598/stunnel4
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      978/mysqld
tcp6       0      0 :::22                   :::*                    LISTEN      493/sshd
tcp6       0      0 :::8443                 :::*                    LISTEN      1026/node

我还尝试使用 -Djava.net.preferIPv6Adresses=true 和 -Djava.net.preferIPv6Stack=true 。没有一点改变。我将 /proc/sys/net/ipv6/bindv6only 的值更改为 1。

这是我的 ip6tables -L:

root@MinecraftServer /etc/default# ip6tables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp      anywhere             anywhere             tcp dpt:25565
ACCEPT     tcp      anywhere             anywhere             tcp dpt:25566
ACCEPT     tcp      anywhere             anywhere             tcp dpt:8443

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

我能够通过 IPv6 通过互联网访问 Windows 机器上的服务器!我还可以在交钥匙机器上通过 IPv6 访问 WebUI。

我还缺少什么?感谢所有帮助!

解决方案:

《minecraft》的 forge 修改设置了 java.net.preferIPv4Stack=true 到版本 1.12.2-14.23.1.2555,这破坏了每一次 IPv6 尝试。因此,我现在使用 6tunnel,它创建了一个从 IPv6 转发到 IPv4 的端口。我仍然无法从外部访问minecraft服务器,但IPv6正在运行。

答案1

我认为您把属性名称弄错了。根据

属性名称是:

  • java.net.preferIPv4Stack- 注意:IPv4不是IPv6
  • java.net.preferIPv6Addresses- 注意:两个d字符而不是一个。

您还需要检查您是否不受此错误的影响:https://bugs.mojang.com/browse/MC-3776

答案2

罪魁祸首是我在《我的世界》中使用的锻造修改。到版本 1.12.2-14.23.1.2555 为止,它设置 java.net.preferIPv4Stack=true。 6tunnel 是一种解决方法,它将端口从 IPv6 转发到 IPv4。

相关内容