所以我正在使用 MineOS,这是一个带有预装 node.js webUI 的交钥匙系统,用于部署 Minecraft 服务器。现在我希望服务器可以通过 IPv6 访问,因为这就是我从 ISP 获得的全部内容。但是我的服务器实例只监听 IPv4。如何让 java minecraft 服务器监听 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 通过 Internet 访问 Windows 机器上的服务器!我还可以在交钥匙机器上通过 IPv6 访问 webUI。
我还缺少什么?所有帮助表示赞赏!
解决方案:
minecraft 的 forge 修改将 java.net.preferIPv4Stack=true 设置为 1.12.2-14.23.1.2555 版本,这会破坏每次 IPv6 尝试。出于这个原因,我现在使用 6tunnel,它创建了一个从 IPv6 到 IPv4 的转发端口。我仍然无法从 minecraftserver 的外部访问,但 IPv6 正在工作。
我认为您的属性名称错误。根据
属性名称为:
java.net.preferIPv4Stack
- 注意:IPv4
不是IPv6
java.net.preferIPv6Addresses
- 注意:两个d
字符不是一个。您还需要检查您是否不受此错误的影响:https ://bugs.mojang.com/browse/MC-3776
罪魁祸首是我在我的世界中使用的锻造修改。直到版本 1.12.2-14.23.1.2555 它设置 java.net.preferIPv4Stack=true。6tunnel 是一种解决方法,它执行从 IPv6 到 IPv4 的端口转发。