在某家云服务厂商那里买了一台仅有IPV6的服务器。

不过IP地址是DHCP获取的,并且租期只有24小时左右,每次IP变化之后就得去VNC里查看IP地址,然后重新修改SSH配置,非常的不方便。

使用DDNS-GO

使用1panel一键安装

我自己建好了之后,隔天,也就是现在,临睡前翻了一下应用商店,突然撇到了这个东西。。。。。。

直接应用商店搜索DDNS-go 然后访问安装时设置的IP:端口,进行配置即可。

这下真的是说了跟没说一样了,只是提醒一下看到这里的各位,1panel有一键安装的方式,不用苦苦手动配置了。

使用docker搭建

非常方便的脚本,一键安装,web界面配置

这里为docker教程,因为最简单,其他方式可以去github查看

DDNS-GO github原地址

下载安装

docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go

之后访问http://你的IP:9876 即可进入web界面

首次访问创建用户密码后来到配置页面

由于配置简单明了,这里就不赘述了

配置

在DNS服务商处配置好ID与key

在Domains处填写需要解析到你IP地址的域名(不需要手动添加记录,这个脚本会自动添加记录)

保存后他会自动生效。

向另一台主机发送

这是最开始的方案,最开始不知道DDNS的存在,一直靠着这个玩意,所以在知道有DDNS这东西之后,才会特意水一篇文章发出来。

简单写了一个小脚本,定时向外界告知自己的IP地址。

脚本很简陋,功能很鸡肋,仅作为当前暂时的替代方案

优点:这个方案想出来最不费我的脑子

缺点:需要两台主机

发送方

将以下文件保存为.sh文件

#!/bin/bash

# 目标服务器的地址和端口
TARGET_SERVER="http://目标IP或域名:端口"

# 使用curl获取6.ipw.cn的返回结果
response=$(curl -s 6.ipw.cn)

# 检查curl命令是否成功执行
if [ $? -eq 0 ]; then
    # 发送数据到目标服务器
    echo "$response" | curl -X POST -H "Content-Type: application/json" -d @- "$TARGET_SERVER"
else
    echo "Failed to fetch data from 6.ipw.cn"
fi

设置为定时任务

crontab -e

添加(每小时执行一次)

0 * * * * /脚本绝对路径/脚本名.sh

接收方

将以下内容保存为.js文件

const http = require('http');
const fs = require('fs');

const server = http.createServer((req, res) => {
    if (req.method === 'POST') {
        let data = '';
        req.on('data', chunk => {
            data += chunk;
        });
        req.on('end', () => {
            // 将接收到的数据存储到文件中
            fs.writeFile('received_data.txt', data, err => {
                if (err) {
                    console.error('Error writing file:', err);
                    res.writeHead(500);
                    res.end('Error writing file');
                } else {
                    res.writeHead(200, { 'Content-Type': 'text/plain' });
                    res.end('Data received and stored');
                }
            });
        });
    } else {
        res.writeHead(405);
        res.end('Method Not Allowed');
    }
});

const PORT = 3000; // 可以根据需要修改端口号
server.listen(PORT, () => {
    console.log(`Server running on port ${PORT}`);
});

安装Node.js

sudo apt update
sudo apt install nodejs
sudo apt install npm

使用forever保证Node.js进程持续运行

npm install -g forever
forever start your_server_script.js

当接收到文件后,当前IP地址就会被保存在received_data.txt中,当IP发生变化,来到接收方查看一下文本内容一键复制就可以了。

比起进入厂商的VNC,用不可复制的bash好多了。