小白也能搞定:手把手教你 VPS 配置 Duck DNS 及开机自启

玩 VPS 的小伙伴经常会遇到一个痛点:家里的宽带或者部分便宜的 VPS 没有固定公网 IP,一旦路由器重启或 PPPoE 断线重连,地址就变了。这时候,想远程连接或者搭建的服务就变得麻烦。

Duck DNS 官网登录及仪表盘界面

登录 Duck DNS 后的界面,可以看到子域名管理和 Token 信息

别急,今天分享一个超简单的方案——利用 Duck DNS 配置 DDNS(动态域名解析),顺便把开机自启动也给安排上。全程零成本,新手也能轻松驾驭。

什么是 Duck DNS?

简单来说,Duck DNS 就是一个提供免费动态域名解析的服务。它能把你的域名(比如 myvps.duckdns.org)实时绑定到你当前变化的公网 IP 上,这样你只需要记住这个域名,不用管 IP 变没变。

第一步:注册并获取 Token

使用 Vim 编辑 Linux 脚本文件的终端界面

在 VPS 上使用 vim 编辑器创建并编写 Duck DNS 更新脚本的内容

  1. 打开 Duck DNS 官网(这里需要大家自备梯子访问)。
  2. 顶部的菜单栏选择 Log In。由于支持 GitHub、Twitter、Reddit 等社交账号登录,建议直接用 GitHub 账号授权,最省事。
  3. 登录成功后,页面下拉到 Sub-domains 区域。
  4. 在输入框里填上你想要的子域名前缀(比如 myserver),然后点击右侧的 add domain
  5. 关键步骤:在页面顶部你会看到一大串字符,这就是你的 Token(令牌)。后面配置脚本时会用到,建议先复制保存到记事本里。

💡 小贴士:这一串 Token 非常重要,泄露了别人就能随意修改你的域名解析,请妥善保管。

第二步:在 VPS 上编写更新脚本

登录你的 VPS(假设是 Linux 系统,如 Debian/Ubuntu/CentOS),我们需要创建一个简单的脚本来自动告诉 Duck DNS 当前的 IP。

  1. 创建一个脚本文件:
    vim /root/update_duckdns.sh
    
  2. i 进入插入模式,粘贴以下内容(记得替换其中的 你的子域名你的Token):
    
    

定义变量

SUBDOMAIN="你的子域名"     # 刚才填写的,比如 myserver
TOKEN="你的Token"            # 顶部获取的长字符串

发送请求更新 DDNS

echo url="https://www.duckdns.org/update?domains=$SUBDOMAIN&token=$TOKEN&ip=" | curl -k -o /root/duckdns.log -K -

3.  保存并退出:按 `Esc`,输入 `:wq` 回车。
4.  给脚本赋予执行权限:
    ```bash
    chmod +x /root/update_duckdns.sh
    ```
5.  手动跑一次测试一下:
    ```bash
    bash /root/update_duckdns.sh
    ```
    成功的话,查看日志文件 `cat /root/duckdns.log`,里面应该显示 `OK`。

## 第三步:设置定时任务(Cron)

虽然 Duck DNS 要求每小时更新一次,但为了保险起见(比如防止 IP 频繁变动),我们可以设置每 5 分钟或者每 10 分钟检查更新一次,反正开销很小。

1.  编辑 crontab:
    ```bash
    crontab -e
    ```
2.  在文件末尾添加一行(每 5 分钟执行一次):
    ```bash
    */5 * * * * /root/update_duckdns.sh
    ```
3.  保存退出。这样系统后台就会自动帮你维护域名解析了。

## 第四步:进阶玩法——设置开机自启动

有些极致的玩家可能会想:万一 Crond 服务卡死或者没启动怎么办?为了万无一失,我们可以把这个脚本加入 Systemd 的开机自启动流程中。

Systemd 的标准做法是创建一个服务文件。

1.  创建服务文件:
    ```bash
    vim /etc/systemd/system/duckdns.service
    ```
2.  写入以下配置:
    ```ini
    [Unit]
    Description=Duck DNS Update Service
    After=network-online.target
    Wants=network-online.target

[Service]
    Type=oneshot
    ExecStart=/root/update_duckdns.sh

[Install]
    WantedBy=multi-user.target
    ```
    **注意点**:
    *   `After=network-online.target` 很重要,它会确保 VPS 连上网络后再执行脚本,避免获取 IP 失败。
    *   `Type=oneshot` 表示这个服务执行一次命令就结束,不会常驻后台占用资源。

3.  重载 Systemd 并启用服务:
    ```bash
    systemctl daemon-reload
    systemctl enable duckdns.service
    ```
4.  这样配置后,VPS 每次重启,网络连通后都会自动执行一次更新脚本,结合刚才的 Crontab,双重保险,稳得一批。

## 总结
整个配置过程其实非常简单,核心就是通过 `curl` 命令访问 Duck DNS 的 API 接口。搞定之后,不管你的 IP 怎么变,域名永远指向你家里的机器或那台低价 VPS,搭建 Nas、自建网盘或者穿墙打洞都方便多了。
如果你在操作过程中遇到报错,大部分情况是 Token 复制错误或网络问题,记得先检查这两个点。

标签: none

AI Skills Smart Station on Nick Launches

评论已关闭