如何动态更新DNS记录.md

零、概述

一般来说,DNS记录都是手动更新的,通过修改配置文件,或者通过网站页面,但是如何才能简化工作,使部分DNS记录更新自动化呢?

这就是本文关注的内容。

一、通过DHCP服务来更新DNS记录(DDNS)

DDNS(Dynamic Domain Name Server)是动态域名服务的缩写。 DDNS是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析。

DDNS在企业中最常见的应用就是服务器的远程控制卡了(iDRAC或者ilo),部署了DDNS的网络中不需要手动设置远程控制卡IP地址,直接使用相关的域名就能访问远程控制卡界面。

DDNS工作原理

ILO网卡在通过DHCP获取地址时,可以把自己的主机名发送给DHCP服务器软件,而DHCP服务器再去更新DNS服务器中的记录。就这么简单,实际使用中会有安全考虑,只有拿着特定KEY的DHCP服务器才能更新。

这里,我们使用DNS服务器软件(bind)和DHCP软件(dhcpd)来实现。

DNS服务器的配置如下

#@以下是DNS配置,文件/etc/named.conf

#@定义一个KEY,用于安全防护

key "ilokey" {

algorithm hmac-md5;

secret "fvA/r7RriulZQWHEVqoG8A==";

};

#@定义一个zone,允许特定的KEY可以更新

zone "ipcpu.com" {

type master;

allow-update { key ilokey; };

file "/etc/named/ipcpu.com.conf";

};

DHCP服务器的配置

#@以下是DHCP配置,文件/etc/dhcpd.conf

ddns-update-style interim;

ignore client-updates;

ddns-updates on;

option domain-name "ipcpu.com";

option domain-name-servers 4.4.4.2;

default-lease-time 600;

max-lease-time 7200;

#@设置KEY和Zone

key "ilokey" {

algorithm hmac-md5;

secret "fvA/r7RriulZQWHEVqoG8A==";

};

zone ipcpu.com. {

primary 127.0.0.1;

key ilokey;

}

subnet 4.4.4.0 netmask 255.255.255.0 {

range 4.4.4.101 4.4.4.150;

option domain-name-servers 4.4.4.2;

option domain-name "ipcpu.com";

option routers 4.4.4.1;

default-lease-time 600;

max-lease-time 7200;

}

DHCP服务器需要注意的地方:

打开DDNS选项

只里面必须配置zone 这个选项;

primary 127.0.0.1; 如果DNS和DHCPD不在一台机器上需要改成外部IP;

结果测试

然后我们在DHCP服务器上看到了分配给客户的IP信息

[root@s0 named]# tail -11 /var/lib/dhcpd/dhcpd.leases

lease 4.4.4.150 {

starts 5 2012/09/14 10:03:27;

ends 5 2012/09/14 10:13:27;

binding state active;

next binding state free;

hardware ethernet 00:0c:29:14:e6:f4;

set ddns-rev-name = "150.4.4.4.in-addr.arpa.";

set ddns-txt = "0016de8f4b9a6439c2d2abe55a7c3d58b1";

set ddns-fwd-name = "rac-H3LG23X.ipcpu.com";

client-hostname "rac-H3LG23X";

}

[root@s0 named]# ping rac-H3LG23X.ipcpu.com

PING rac-H3LG23X.ipcpu.com (4.4.4.150) 56(84) bytes of data.

64 bytes from 4.4.4.150: icmp_seq=1 ttl=64 time=0.289 ms

二、通过nsupdate来更新DNS记录

使用动态更新之前需要在配置文件中的zone中加入allow-update,如下

zone "ipcpu.com" {

type master;

allow-update { any; };

file "data/ipcpu.com.txt";

};

#使用allow-update { keyname; }; 会更加安全

然后即可通过nsupdate命令更新DNS记录了

# nsupdate

> server 192.168.36.54

> update add update.ipcpu.com 6000 IN A 192.168.0.2

> send

> quit

或者使用python的dnspython模块来完成

#!/usr/bin/env python

# -*- coding=utf-8 -*-

import dns.query

import dns.tsigkeyring

import dns.update

import sys

keyring = dns.tsigkeyring.from_text({

'ipcpu-example-dyn-update.' : 'XXXXXXXXXX=='

})

update = dns.update.Update('ipcpu.com', keyring=keyring,

keyname="ipcpu-example-dyn-update.")

update.add('st', 300, 'a', '2.2.2.2')

response = dns.query.tcp(update, '192.168.36.54')

更新完成后,可以使用 dig @192.168.36.54 st.ipcpu.com来测试。

三、journal文件查看和整合

通过查看服务器数据,我们发现动态更新的域名都会存储到ipcpu.com.txt.jnl文件中,这并不是一个文本文件,如何查看其内容呢?

bind为我们提供了一个命令named-journalprint,通过这个命令来查看。

#named-journalprint ipcpu.com.txt.jnl

del ipcpu.com. 604800 IN SOA jackal. root.jackal. 2 604800 86400 2419200 604800

add ipcpu.com. 604800 IN SOA jackal. root.jackal. 3 604800 86400 2419200 604800

add update.ipcpu.com. 6000 IN A 192.168.0.2

del ipcpu.com. 604800 IN SOA jackal. root.jackal. 3 604800 86400 2419200 604800

add ipcpu.com. 604800 IN SOA jackal. root.jackal. 4 604800 86400 2419200 604800

add st.ipcpu.com. 300 IN A 2.2.2.2

把数据放在这个文件里其实挺难管理的,我们还可以把数据合并回主数据文件ipcpu.com.txt,操作命令如下。

#@@freeze zone first to avoid update

rndc freeze ipcpu.com

#@@update zone file

rndc thaw ipcpu.com

四、参考资料

dhcp服务器显示dns服务器更新挂起,如何动态更新DNS记录相关推荐

  1. 华为物理服务器显示000,服务器故障解决办法

    服务器故障解决办法 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. GAUSS- ...

  2. 访问域服务器显示空白,服务器网站打开空白

    服务器网站打开空白 内容精选 换一换 当您想要直接使用域名访问网站.Web应用程序或者云服务器时,可以通过为域名增加A类型记录集实现.更多关于记录集类型的介绍,请参见记录集类型及配置规则.已经完成网站 ...

  3. 服务器显示图标,服务器桌面显示图标怎么设置

    服务器桌面显示图标怎么设置 内容精选 换一换 对于使用第三方VR运行环境(如SteamVR)的用户,GPU云服务器创建完成或重启后,建议用户在连接头显设备前先进行房间设置,即登录GPU云服务器配置环境 ...

  4. 怎么样才能在服务器显示皮肤,服务器怎么使用皮肤

    服务器怎么使用皮肤 内容精选 换一换 用户可以采用加密方式创建私有镜像,确保镜像数据安全性.用户如需使用镜像加密特性需要提前申请KMS Administrator的权限.具体操作,请参见创建用户并授权 ...

  5. 服务器显示监控,服务器显示监控

    服务器显示监控 内容精选 换一换 本节定义了弹性云服务器上报云监控的监控指标的命名空间,监控指标列表,各项监控指标的具体含义与使用说明,用户可以通过云监控检索弹性云服务器服务产生的监控指标和告警信息. ...

  6. ios android 动态更新数据类型,FragmentStatePagerAdapter支持动态更新数据

    在Android开发中,我们应该使用到很高频率的一个控件就是ViewPager.但是在使用ViewPager的过程中,我们会发现有两个问题,一是不能关闭预加载:二是更新ViewPager的Adapte ...

  7. 恐鬼症服务器显示不出来怎么办,Phasmophobia恐鬼症更新修复内容介绍

    不少玩家都对Phasmophobia恐鬼症这款热门游戏在昨天进行了更新感兴趣,那么新版本更新修复了哪些内容呢?下面一起来看Phasmophobia恐鬼症10月29日第三次更新内容详解,一起来看看不要错 ...

  8. 服务器显示一体机,服务器和一体机的区别

    服务器和一体机的区别 内容精选 换一换 本文主要从应用场景,迁移流程,业务连续性来对比主机迁移服务与IMS镜像服务的区别,以便在主机迁移过程中帮助您更好的选择迁移服务.IMS应用场景为线下服务器上云, ...

  9. 配置服务器的dns文件是什么意思,什么是服务器配置,DNS服务器如何配置

    服务器配置,是指根据企业的实际需求针对安装有服务器操作系统的设备进行软件或者硬件的相应设置.操作,从而实现企业的业务活动需求. 第1步,在开始菜单中依次单击"管理工具"→DNS菜单 ...

最新文章

  1. leetcode--搜索插入位置--python
  2. 运用供应链管理实现更快速、更高质量的交付
  3. Linux多线程实践(8) --Posix条件变量解决生产者消费者问题
  4. 《数据结构与算法 C语言版》—— 2.5上机实验
  5. git提交代码报错解决方法 Git-remote Incorrect username or password ( access token )
  6. 定制操作(传递函数或lambda表达式)
  7. Unity 2D Touch Movement
  8. 从闭包到 语法糖 装饰器
  9. android平板电脑浏览器,安卓平板用什么浏览器
  10. 有hcna证没有工作经验好找工作吗?
  11. 阿里编码规范认证考试题库(免费版)
  12. 84.常用的返回QuerySet对象的方法使用详解:select_related, prefetch_related
  13. (深度学习快速入门)人工智能、机器学习和深度学习总体概述
  14. 2018年Sketch UI界面设计套件前十了解下!
  15. 华为应用市场2021年度安全隐私报告发布:护航应用安全是场“持久战”
  16. vue返回上一页并不刷新
  17. 规格中的OR\DR\DS\RR\IR\PB\SF\SR\AR\CR
  18. 网络类型(P2P、MA、BMA、NBMA)
  19. objective-c复制
  20. 电脑网页打开巨慢但是网络正常

热门文章

  1. python 黑白棋_python实现翻转棋游戏(othello)
  2. 【推荐系统论文精读系列】(二)--Factorization Machines
  3. Java程序编写 • 【第9章 程序:用定义类实现,吃货联盟订餐系统,新增商家和评论功能】
  4. neo4j ogm_带有Hibernate OGM的NoSQL –第一部分:持久化您的第一个实体
  5. HTML5捕鱼php,html5捕鱼达人 游戏源码
  6. FJUT ACM 1212 集训队的药药切克闹
  7. 【工具】git 入门
  8. Windows下隐藏文件夹
  9. 传奇人物穿戴物品位置编号
  10. 百度云“资源”被和谐,两行代码帮你解决