由于家庭的电信公网IP是动态的,每次重新拨号后,IP地址都会发生变化,所以为了能够顺利的打从外网访问家里或VPN连接到家里,我们的选择之一就是 DDNS。
DDNS
DDNS (Dynamic DNS), 也就是动态域名解析。 其实就是通过一些方式动态的去更新你的域名解析。一般 DDNS 软件安装在你内网机器上,可以通过外部获取或直接通过网关获取你的公网IP,然后通过 DNS 服务商的 API 更新域名解析,从而实现动态域名解析。
DDNS 的软件有很多,我用的是 godns, 用 Go 实现的很轻量,支持主流的 DNS 服务商,而且支持 IP 变动后发送邮件通知。
搭建
搭建方式很简单,我直接用 docker-compose
启动, docker-compose.yml
如下:
version: '3'
services:
godns:
image: razeencheng/godns:v2.4.0
container_name: godns
volumes:
- ${PWD}/config.json:/config.json
restart: "always"
logging:
options:
max-size: "500m"
max-file: "2"
其中,配置文件config.json
如下:
{
"provider": "DNSPod",
"login_token": "xxxx,xxxx",
"domains": [
{
"domain_name": "razeen.me",
"sub_domains": ["home"]
}
],
"ip_url": "http://myip.razeen.me",
"ip_type": "IPv4",
"interval": 300,
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36",
"notify": {
"enabled": true,
"smtp_server": "smtp.exmail.qq.com",
"smtp_username": "xxxxx",
"smtp_password": "xxxxx",
"smtp_port": 587,
"send_to": "xxxx"
}
}
在这个配置中:
provider
就是 DNS服务商, 不同的DNS服务商设置可以看官方文档;domains
是我们需要动态解析的域名;ip_url
是通过访问该网址获取真实IP, 这里我自己搭建了一个;notify
是通知的SMTP设置,我用的 qq 企业邮箱。
这样 DDNS 我们搭建完成啦,接下来可以愉快的折腾其他服务了。