由于家庭的电信公网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 我们搭建完成啦,接下来可以愉快的折腾其他服务了。