JavaはIPv6用のターンキー受信を拒否します。

JavaはIPv6用のターンキー受信を拒否します。

そのため、Minecraftサーバーの展開にNode.js WebUIがプレインストールされたターンキーソフトウェアであるMineOSを使用します。これで、IPv6を介してサーバーにアクセスできるようにしたいです。なぜなら、それがISPから得られるすべてだからです。しかし、私のサーバーインスタンスはIPv4でのみリッスンします。 javaminecraftサーバーにIPv6を受信させるにはどうすればよいですか?

私のserver.propertiesがMinecraftに関係なく、いくつかのnetstat -ntlp出力は常に同じです。

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試行を中止します。したがって、IPv6からIPv4に転送されるポートを生成する6tunnelを使用します。それでも外部からMinecraftサーバーにアクセスできませんが、IPv6は動作しています。

答え1

プロパティ名を間違って入力したようです。 ~によると

属性名は次のとおりです。

  • java.net.preferIPv4Stack- 注:IPv4いいえIPv6
  • java.net.preferIPv6Addresses- 注:d1文字ではなく2文字を入力してください。

また、このエラーの影響を受けないことを確認する必要があります。https://bugs.mojang.com/browse/MC-3776

答え2

犯人は私がMinecraftで使用する鍛冶屋の改造です。バージョン 1.12.2-14.23.1.2555 からは java.net.preferIPv4Stack=true に設定されます。 6tunnel は、IPv6 から IPv4 にポートを転送する回避策です。

関連情報