环境

操作系统:Debian[jessie]
DNS服务器:powerdns
DDNS外挂:pboehm/ddns[https://github.com/pboehm/ddns.git]

配置go环境

1.下载go最新版本并解压至/opt
2.配置环境变量

vi /etc/profile
新增
export GOROOT=/opt/go
export GOPATH=/opt/go/root
export PATH=$PATH:$GOROOT/bin

3.安装ddns

$ go get github.com/pboehm/ddns
$ ls $GOPATH/bin/ddns     # the displayed path will be used later
/opt/go/root/bin/ddns

安装DNS服务器powerdns

#apt-get install redis-server pdns-server pdns-backend-pipe

配置DNS

#vim /etc/powerdns/pdns.d/pipe.conf

配置如下

launch=pipe
pipebackend-abi-version=1
pipe-command=/opt/go/root/bin/ddns --soa_fqdn=dns.example.com --domain=sub.example.com backend

soa_fqdn:自建DNS服务器地址
domain :ddns的子域名

配置ddns前端

# apt-get install nginx supervisor

新增配置

$ sudo vim /etc/supervisor/conf.d/ddns.conf
$ cat /etc/supervisor/conf.d/ddns.conf
[program:ddns]
command = /opt/go/root/bin/ddns --domain=sub.example.com --listen=127.0.0.1:10080  web
stdout_logfile=/var/log/supervisor/ddns.log
stderr_logfile=/var/log/supervisor/ddns.log
autostart = True
autorestart = True
redirect_stderr = True
startsecs=10

配置nginx

$ sudo vim /etc/nginx/sites-enabled/ddns
$ cat /etc/nginx/sites-enabled/ddns
server {
    listen   公网ip:10080;
    server_name  ddns.example.com;

    location / {
        proxy_pass http://127.0.0.1:10080;
        proxy_set_header    Host            $host;
        proxy_set_header    X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-for $proxy_add_x_forwarded_for;
        proxy_connect_timeout 300;
    }
}

启动服务

#service pdns start
#service supervisor start
#service nginx start

配置域名解析[以万网为例]

1.自定义DNS服务器
Unnamed1.jpg
2.选择自定义DNS服务器,并进行如下配置[此处一经定义不可修改]
Unnamed3.jpg
3.新增 DNS服务器对应的A记录 例如 dns.example.com
4.新增 NS记录,指定子域名由dns.example.com 解析,如下图
Unnamed2.jpg
其中 dns.example.com 对应IP为自己服务器ip