DDNS 动态域名解析:家里宽带也能建站

## 为什么需要 DDNS

家庭宽带大多是动态 IP,每隔几天运营商就会换一次 IP。如果你用家里的 NAS 或树莓派跑服务,IP 一换就访问不了。

DDNS(动态域名解析)就是解决这个问题的:在路由器或设备上跑一个脚本,定期检测公网 IP,IP 变化时自动更新域名解析记录。

## 方案一:Cloudflare DDNS

创建 API Token,然后运行脚本:

```bash
#!/bin/bash
ZONE_ID="your_zone_id"
RECORD_ID="your_record_id"
API_TOKEN="your_api_token"
DOMAIN="home.yourdomain.com"

CURRENT_IP=$(curl -s https://api.ipify.org)
DNS_IP=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \
-H "Authorization: Bearer $API_TOKEN" | grep -o '"content":"[^"]*"' | cut -d'"' -f4)

if [ "$CURRENT_IP" != "$DNS_IP" ]; then
curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \
-H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
--data "{\"type\":\"A\",\"name\":\"$DOMAIN\",\"content\":\"$CURRENT_IP\",\"ttl\":120,\"proxied\":false}"
fi
```

设置定时任务:`*/5 * * * * /scripts/cf-ddns.sh`

## 方案二:ddns-go(推荐)

```bash
docker run -d --name ddns-go --restart always -p 9876:9876 -v /opt/ddns-go:/root jeessy/ddns-go
```

访问 `http://IP:9876`,填入 DNS 服务商的 API 密钥,选域名,点保存就行。

## IPv6 DDNS

ddns-go 支持 IPv6,选择"通过网卡获取 IPv6"即可。手机 4G/5G 都支持 IPv6。

## 端口转发

DDNS 只解决了 IP 变化的问题。还需要在路由器上做端口转发才能从外网访问内网服务。

配置完 DDNS + 端口转发,你的家庭服务器就和云服务器一样,随时随地用域名访问。

💬 1 条评论

  1. 🦊
    2026-07-31 09:33

    赞赞赞赞赞赞赞赞赞赞赞赞