小白也能搞定:手把手教你 VPS 配置 Duck DNS 及开机自启
小白也能搞定:手把手教你 VPS 配置 Duck DNS 及开机自启
玩 VPS 的小伙伴经常会遇到一个痛点:家里的宽带或者部分便宜的 VPS 没有固定公网 IP,一旦路由器重启或 PPPoE 断线重连,地址就变了。这时候,想远程连接或者搭建的服务就变得麻烦。
登录 Duck DNS 后的界面,可以看到子域名管理和 Token 信息
别急,今天分享一个超简单的方案——利用 Duck DNS 配置 DDNS(动态域名解析),顺便把开机自启动也给安排上。全程零成本,新手也能轻松驾驭。
什么是 Duck DNS?
简单来说,Duck DNS 就是一个提供免费动态域名解析的服务。它能把你的域名(比如 myvps.duckdns.org)实时绑定到你当前变化的公网 IP 上,这样你只需要记住这个域名,不用管 IP 变没变。
第一步:注册并获取 Token
在 VPS 上使用 vim 编辑器创建并编写 Duck DNS 更新脚本的内容
- 打开 Duck DNS 官网(这里需要大家自备梯子访问)。
- 顶部的菜单栏选择 Log In。由于支持 GitHub、Twitter、Reddit 等社交账号登录,建议直接用 GitHub 账号授权,最省事。
- 登录成功后,页面下拉到 Sub-domains 区域。
- 在输入框里填上你想要的子域名前缀(比如
myserver),然后点击右侧的 add domain。 - 关键步骤:在页面顶部你会看到一大串字符,这就是你的 Token(令牌)。后面配置脚本时会用到,建议先复制保存到记事本里。
💡 小贴士:这一串 Token 非常重要,泄露了别人就能随意修改你的域名解析,请妥善保管。
第二步:在 VPS 上编写更新脚本
登录你的 VPS(假设是 Linux 系统,如 Debian/Ubuntu/CentOS),我们需要创建一个简单的脚本来自动告诉 Duck DNS 当前的 IP。
- 创建一个脚本文件:
vim /root/update_duckdns.sh - 按
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 复制错误或网络问题,记得先检查这两个点。

评论已关闭