使用ddns动态域名解析开启家庭服务器
背景
虽然家庭服务器对比云服务器在性价比上有很明显的优势,但是却缺少了云服务的一项重要内容: 固定公网 IP 。 平时我们使用公网 IP 是为了可以随时随地访问服务器,而这个需求通过 DDNS 也可以实现,只是访问需要用域名而不是裸 IP 。
通常 DDNS 由路由器来完成,并通过端口映射的方式把内网的服务暴露在外。 国内要求所有 IP 只有在域名备案之后才可以开放 80 和 443 端口对外提供 Web 服务,云服务器可以照常备案,而普通家庭宽带用户被分配的公网 IP (某些运营商/地区甚至不会分配公网 IP)是每隔一段时间就会发生变化的,因此没有办法走常规备案的流程。 因此在国内只能通过其它端口来访问家里的 Web 应用,
准备工作
要做DDNS的前提,你需要有一个公网IP,而不是内网,如何查看自己是不是公网IP呢?如果你对IP段了解不多的话,其实还有一个办法,你用百度搜索IP,百度会显示你当前的IP地址,你把这个IP地址和你路由器的IP地址作比较,如果一致,说明你是公网IP,如果不一致,说明你是运营商用一个IP然后经过多层NAT之后分配给你的内网IP。比如我这就是一个公网IP,如果你不是公网IP,那么请等待内网穿透的教程,或者去申请公网IP。
- 公网ip没有可以使用ipv6
- 域名
- 域名的api key
如何DDNS
在确保有公网IP之后,剩下要做的就比较简单了。现在基本所有的路由器都支持DDNS,NameSilo DDNS是一个用于NameSilo的动态域名解析服务,适用于家庭宽带,它能自动检测家庭宽带的IP变动,并自动更新域名的解析。
GitHub项目地址:详细用法见github仓库
https://github.com/Charles94jp/NameSilo-DDNSv
项目语言是python3
项目特性:
-
安装、启动简单,且有丰富的可配置项
-
日志记录和滚动
-
具有邮件提醒功能,可及时报告各种信息
-
支持docker运行,docker pull即可完成安装
-
支持同时更新多个域名
-
支持IPv6
网络拓扑
如果使用IPv6(推荐)
IPv6就简单了,运营商目前都给宽带配备了IPv6地址,只需在路由器上开启IPv6功能,电脑上确保有IPv6地址和DNS服务器地址即可使用IPv6联网。如果开了全局代理记得测试时关掉。
只要路由器的防火墙策略未限制外网流量访问内网,则无需NET映射,就能通过IPv6地址访问内网机器!