【问题标题】:Redirection of IP to Minecraft server with PHP使用 PHP 将 IP 重定向到 Minecraft 服务器
【发布时间】:2016-10-20 04:37:11
【问题描述】:

我设置了本地 Minecraft 服务器。我决定让自己拥有自己的域名,因为 ips 不是很漂亮。问题是,因为我的路由器的IP地址每晚都在变化,我不能只对我的IP地址做一个A记录。相反,我需要一个允许我使用自己的域的动态 dns 提供程序。我似乎找不到,所以我自己用 php 编写了代码(我有一个带有静态 IP 地址的免费 Web 服务器)。这是 .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 重定向?

【问题讨论】:

  • 您想使用动态 ip updater 客户端。

标签: php redirect dns ip minecraft


【解决方案1】:

Minecraft 不使用 HTTP!它使用自己的基于 TCP 的协议。

我过去使用过的最佳选择是运行动态 ip updater 客户端。

  1. 给自己一个No-IP domain name(例如myname.ddns.net
  2. 下载dynamic updater client(适用于 Windows、Mac 或 Linux)
  3. 将您的自定义域名设置为 CNAME 以指向 myname.ddns.net(您的 NoIP 域名)
  4. 为玩家提供您的自定义域名(例如myname.com)。这将通过 CNAME 记录将客户端引用到 myname.ddns.net,而 CNAME 记录又将您的动态 IP(例如 xxx.xxx.xxx.xxx)引用为 A 记录。

在此之后,您将能够使用您的自定义域连接到您的服务器,并且动态更新程序将自动使动态 IP 保持最新。

【讨论】:

  • 我之前有这个解决方案,但我不想要 .ddns.net 之类的东西,而是想要我自己的域名,开头是 .play
  • @derkaländer 你读过第 3 步吗? No-IP 域名不会显示给您的玩家 - 您只需给他们自定义域名即可。
  • 只是想告诉你,我找到了另一个解决方案。我的路由器允许我使用特殊的 url 从世界各地更改其设置。因为这个 url 指向我的 ip,所以我只是将我的域设置为该 url 的 CNAME。当然,你的想法也行得通。
猜你喜欢
  • 2012-05-27
  • 1970-01-01
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
  • 2015-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多