Java는 IPv6용 턴키 수신을 거부합니다.

Java는 IPv6용 턴키 수신을 거부합니다.

그래서 저는 Minecraft 서버 배포를 위해 Node.js WebUI가 사전 설치된 턴키 소프트웨어인 MineOS를 사용합니다. 이제 IPv6를 통해 서버에 액세스할 수 있기를 원합니다. 왜냐하면 그것이 ISP로부터 얻는 전부이기 때문입니다. 하지만 내 서버 인스턴스는 IPv4에서만 수신 대기합니다. javaminecraft 서버가 IPv6를 수신하도록 하려면 어떻게 해야 합니까?

내 server.properties가 마인크래프트에 무엇이든 상관없이 일부 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을 사용합니다. 여전히 외부에서 마인크래프트 서버에 접근할 수 없지만 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로 포트를 전달하는 해결 방법입니다.

관련 정보