使用PHP将IP重定向到Minecraft服务器

时间:2016-06-18 12:17:00

标签: php redirect dns ip minecraft

我有一个本地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重定向?

1 个答案:

答案 0 :(得分:1)

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

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

  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记录。
  5. 在此之后,您将能够使用自定义域连接到服务器,动态更新程序将自动使动态IP保持最新状态。