第二讲:公网IP与DDNS——打通远程访问的第一道门
各位同学,咱们今天聊点实在的。
Home Assistant 装好了,本地玩得挺溜。但你想过没有——出门在外,怎么连回家里的智能家居?
说白了,这就是远程访问要解决的核心问题。而远程访问的第一步,就是搞定公网IP和DDNS。
一、公网IP:远程访问的“门牌号”
先问个问题:你家路由器在互联网上,到底有没有一个唯一的地址?
我刚开始折腾Home Assistant时,也以为只要路由器能上网,就肯定有公网IP。结果一查,发现运营商给的是个内网地址——10.x.x.x或者100.x.x.x开头的。这种地址,说白了就是运营商内部用的,外面根本访问不到。
什么是公网IP?
公网IP就是互联网上唯一的、可路由的IP地址。有了它,外网设备才能直接找到你家路由器。
那怎么判断自己有没有公网IP?很简单:
- 登录路由器管理页面,查看WAN口IP地址
- 去
ip.sb或whatismyip.com查一下 - 对比两个地址是否一致
如果一致,恭喜你,你有公网IP。如果不一致,嗯...你大概率被运营商“内网化”了。
二、向运营商申请公网IP
没有公网IP怎么办?别急,这事有办法解决。
我个人习惯是直接打运营商客服电话。电信、联通、移动都行,就说:“你好,我需要一个公网IP,家里装了监控和NAS,内网用不了。”
这里有个小技巧——我建议你态度好一点,语气客气点。客服每天接几百个电话,你态度好,他办事也痛快。我遇到过几次,客服直接说“好的,我帮你开通,重启一下路由器就行”。
避坑指南:
我曾经遇到过一家运营商,客服说“公网IP要加钱”。别慌,换个客服再打一次,或者直接说“我要投诉到工信部”。大部分情况下,家庭宽带是可以免费申请公网IPv4的。
申请成功后,重启路由器,再查一下WAN口IP。这时候应该能看到一个公网地址了。
三、动态DNS(DDNS)原理
有了公网IP,是不是就万事大吉了?
不是。问题在于——运营商给你的公网IP是动态的。什么意思?就是它会变。可能每隔几天、几周,IP就换了。
你想想看,你出门在外,想连家里的Home Assistant。结果IP变了,你连不上。这多尴尬。
DDNS就是解决这个问题的。
DDNS工作原理:
DDNS(动态域名解析)把你的域名(比如 myhome.abc.com)和家里的动态公网IP绑定在一起。当IP变化时,DDNS客户端会自动更新DNS记录,让域名始终指向最新的IP。
说白了,你只需要记住一个域名,不用管IP怎么变。DDNS帮你搞定一切。
四、在路由器上配置DDNS(以阿里云DNS为例)
好,理论讲完了,咱们来实操。
我推荐用阿里云DNS做DDNS。为什么?因为稳定、免费、配置简单。我自己用了三年,没出过问题。
第一步:准备工作
- 注册阿里云账号,开通DNS服务
- 添加一个域名(比如
myhome.abc.com) - 获取AccessKey ID和AccessKey Secret
注意:
AccessKey相当于你的账号密码,千万别泄露。我见过有人把AccessKey传到GitHub上,结果被人拿去刷流量,一个月欠费几千块。
第二步:在路由器上配置DDNS
不同路由器界面不一样,但逻辑差不多。以我常用的华硕路由器为例:
1. 登录路由器管理页面
2. 进入“高级设置” -> “DDNS”
3. 选择“自定义DDNS”
4. 填写以下信息:
- 服务器:www.aliyun.com
- 主机名:myhome.abc.com
- 用户名:你的AccessKey ID
- 密码:你的AccessKey Secret
5. 点击“应用”
如果是OpenWrt或梅林固件,可以用脚本实现。我贴一个我常用的脚本:
#!/bin/sh
# 阿里云DDNS更新脚本
# 放在 /etc/ddns/ 目录下
ALI_DOMAIN="myhome.abc.com"
ALI_ACCESS_KEY="你的AccessKey ID"
ALI_ACCESS_SECRET="你的AccessKey Secret"
# 获取当前公网IP
CURRENT_IP=$(curl -s http://ip.sb)
# 更新DNS记录
curl -s "https://alidns.aliyuncs.com/?Action=UpdateDomainRecord&DomainName=$ALI_DOMAIN&RecordId=你的RecordId&RR=@&Type=A&Value=$CURRENT_IP&AccessKeyId=$ALI_ACCESS_KEY&Timestamp=$(date -u +%Y-%m-%dT%H:%M:%SZ)"
第三步:验证配置是否成功
配置完成后,等个一两分钟。然后:
- 在电脑上打开命令行,输入
ping myhome.abc.com - 看返回的IP是不是你家的公网IP
如果一致,恭喜你,DDNS配置成功了。
我的经验:
配置完成后,我建议你手动重启一次路由器。有时候DDNS服务不会立即生效,重启一下能加速更新。另外,记得在路由器上设置定时任务,每隔半小时检查一次IP是否变化。我习惯用crontab,每30分钟执行一次脚本。
五、常见问题与避坑
最后,我总结几个我踩过的坑:
| 问题 | 原因 | 解决方法 |
|---|---|---|
| DDNS更新失败 | AccessKey权限不足 | 在阿里云控制台给AccessKey添加DNS管理权限 |
| 域名解析不生效 | DNS缓存未刷新 | 等待5-10分钟,或手动清除本地DNS缓存 |
| 公网IP频繁变化 | 运营商策略 | 设置更短的DDNS更新间隔(比如5分钟) |
嗯,这一讲的内容就到这里。公网IP和DDNS是远程访问的基础,搞定了这一步,后面配置端口转发、HTTPS证书就顺理成章了。
下一讲,咱们聊聊端口转发——怎么把Home Assistant的服务暴露到公网上,同时保证安全。