redirect — перенаправление IP на сервер Minecraft с переполнением стека

У меня установлен локальный сервер Minecraft. Я решил получить свой собственный домен, потому что ips не очень красивые. Проблема в том, что, поскольку IP-адрес моего маршрутизатора меняется каждую ночь, я не могу просто сделать A-запись на свой IP-адрес. Вместо этого мне нужен динамический DNS-провайдер, который позволяет мне использовать мой собственный домен. Казалось, я не могу найти один, поэтому я сам кодировал его с помощью php (у меня есть бесплатный веб-сервер со статическим IP-адресом). Вот код .php-файла:

<?
$usernameTest = $_GET["username"];
$passTest = $_GET["pass"];
$ipaddr = $_GET["ipaddr"];

$username = "USERNAME";
$pass = "*****";
$port = ":25565";
$serverIPtxt = "serverIP.txt";

if(file_exists($serverIPtxt)) {
if($usernameTest == $username) {
if($passTest == $pass) {
$a = fopen("$serverIPtxt", "w");
fwrite($a, $ipaddr);
fclose($a);
echo $ipaddr;
}
} else {
$a = fopen("$serverIPtxt", "r+");
$dynIP = fread($a, filesize($serverIPtxt));
fclose($a);

$url="http://".$dynIP."".$port;
header("Location: $url", true);
die();
}
}
?>

Мой маршрутизатор автоматически применяет правильный IP-адрес, поэтому теоретически я должен иметь возможность подключиться к серверу Minecraft с моим новым доменом, но я не могу. Вместо этого Minecraft дает мне эту ошибку:

[13:52:38] [Client thread/INFO]: Connecting to DOMAIN, 25565
[13:52:39] [Server Connector #5/ERROR]: Couldn't connect to server
java.net.ConnectException: Connection refused: no further information: DOMAIN/IPADDRESS:25565
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[?:1.8.0_25]
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:716) ~[?:1.8.0_25]
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:208) ~[NioSocketChannel.class:4.0.23.Final]
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:287) ~[AbstractNioChannel$AbstractNioUnsafe.class:4.0.23.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:528) ~[NioEventLoop.class:4.0.23.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) ~[NioEventLoop.class:4.0.23.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) ~[NioEventLoop.class:4.0.23.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) ~[NioEventLoop.class:4.0.23.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) ~[SingleThreadEventExecutor$2.class:4.0.23.Final]
at java.lang.Thread.run(Thread.java:745) ~[?:1.8.0_25]

Что я делаю неправильно? Или Minecraft просто не поддерживает перенаправления php?

0

Решение

Minecraft не использует HTTP! Он использует собственный протокол на основе TCP.

Лучший вариант, который я использовал в прошлом, — это запуск динамического клиента обновления ip.

  1. Получить себе Доменное имя без IP (например. myname.ddns.net)
  2. Скачать клиент динамического обновления (доступно для Windows, Mac или Linux)
  3. Установите свое собственное доменное имя как CNAME, чтобы указать myname.ddns.net (ваше доменное имя NoIP)
  4. Дайте игрокам ваше собственное доменное имя (например, myname.com). Это отсылает клиента к myname.ddns.net через запись CNAME, которая в свою очередь будет ссылаться на ваш динамический IP (например, xxx.xxx.xxx.xxx) в качестве записи.

После этого вы сможете подключиться к вашему серверу с помощью собственного домена, а динамическое средство обновления автоматически обновит динамический IP-адрес.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]