У меня установлен локальный сервер 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?
Minecraft не использует HTTP! Он использует собственный протокол на основе TCP.
Лучший вариант, который я использовал в прошлом, — это запуск динамического клиента обновления ip.
myname.ddns.net
)myname.ddns.net
(ваше доменное имя NoIP)myname.com
). Это отсылает клиента к myname.ddns.net
через запись CNAME, которая в свою очередь будет ссылаться на ваш динамический IP (например, xxx.xxx.xxx.xxx
) в качестве записи.После этого вы сможете подключиться к вашему серверу с помощью собственного домена, а динамическое средство обновления автоматически обновит динамический IP-адрес.
Других решений пока нет …