日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/14 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dhcp服务器显示dns服务器更新挂起,如何动态更新DNS记录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如何動態更新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记录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。