DHCP服務配置和DNS域名解析
DHCP 服務介紹
在大型網絡中,系統靜態分配IP地址面臨問題:
- 確保不要同時在多個系統上使用同一個地址。
- 部署新系統通常需要手動分配其IP地址。在云環境中,實例的網絡是自動化配置的。
動態主機配置協議(DHCP-Dynamic Host Configuration Protocol)提供了一種自動配置網絡參數的方法,例如IP地址,默認網關,DNS服務器和域或NTP服務器。在網絡中部署DHCP服務器,您可以集中控制這些參數。
DHCP有兩種協議:
- 用于IPv4網絡的 DHCPv4。
- 用于IPv6網絡的 DHCPv6。
本文只介紹DHCPv4。
部署 DHCP 服務器
要配置DHCPv4服務器,請首先使用ip addr
命令確認您的網絡接口配置是否指定了BROADCAST地址。
[root@server ~ 21:23:01]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:e1:56:ec brd ff:ff:ff:ff:ff:ffinet 10.1.8.10/24 brd 10.1.8.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fee1:56ec/64 scope link valid_lft forever preferred_lft forever
服務器必須具有靜態IP地址。
安裝 DHCP 軟件
# 安裝軟件包
[root@server ~ 21:24:44]# yum install -y dhcp# 配置防火墻,放行dhcp服務
[root@server ~ 21:25:43]# firewall-cmd --add-service=dhcp
[root@server ~ 21:26:01]# firewall-cmd --add-service=dhcp --permanent
配置 DHCP 服務器
dhcpd服務使用/etc/dhcp/dhcpd.conf
配置文件。 dhcp軟件包提供/usr/share/doc/dhcp-*/dhcpd.conf.example 配置文件示例。
[root@server ~ 21:26:13]# /bin/cp /usr/share/doc/dhcp-*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
[root@server ~ 21:27:22]# vim /etc/dhcp/dhcpd.conf
典型的DHCP配置示例:
subnet 10.1.8.0 netmask 255.255.255.0 {range 10.1.8.101 10.1.8.130;option domain-name-servers 223.5.5.5;option domain-name "xiexin.cloud";option routers 10.1.8.2;option broadcast-address 10.1.8.255;default-lease-time 600;max-lease-time 7200;
}
配置說明:
- authoritative,指示服務器對其所管理的子網具有權威性。
- subnet,提供的子網詳。
- range,指定服務器在該范圍內分配IP地址。
- option routers,指定服務器提供默認網關地址。
- option domain-name-servers,指定服務器提供DNS名稱服務器。
- option domain-search,指定服務器提供DNS域搜索列表。
- default-lease-time,提供網絡信息默認租期,如果客戶端不要求任何特定的租期。單位秒。
- max-lease-time,指示服務器可以從客戶端請求接受的最大租期。單位秒。
客戶端系統上的NetworkManager使用domain-name-servers和domain-search更新resolv.conf文件中的nameserver和search參數。
驗證 DHCP 配置
# 驗證配置文件語法
[root@server ~ 21:32:05]# dhcpd -t
Internet Systems Consortium DHCP Server 4.2.5
Copyright 2004-2013 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file
啟用并啟動服務
# 啟用并啟動服務
[root@server ~ 21:35:19]# systemctl enable dhcpd --now# 查看服務狀態
[root@server ~ 21:35:53]# systemctl status dhcpd
● dhcpd.service - DHCPv4 Server DaemonLoaded: loaded (/usr/lib/systemd/system/dhcpd.service; enabled; vendor preset: disabled)Active: active (running) since 三 2025-08-06 21:21:04 CST; 14min agoDocs: man:dhcpd(8)man:dhcpd.conf(5)Main PID: 1023 (dhcpd)Status: "Dispatching packets..."CGroup: /system.slice/dhcpd.service└─1023 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pi...
........
配置 DHCP 客戶端
# 添加一個自動獲取ip連接,假設網卡設備名為ens192
[root@server ~ 21:38:13]# nmcli connection add con-name dynamic type ethernet ifname ens192
[root@server ~ 21:38:29]# nmcli connection up dynamic# 驗證
[root@client ~ 21:38:36]# ip addr show ens192
3: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 00:0c:29:26:13:b5 brd ff:ff:ff:ff:ff:ffaltname enp11s0inet 10.1.8.101/24 brd 10.1.8.255 scope global dynamic noprefixroute ens192valid_lft 597sec preferred_lft 597secinet6 fe80::95db:2216:1a36:615/64 scope link noprefixroute valid_lft forever preferred_lft forever
基于 MAC 地址預留IP地址
在配置文件中,host聲明可以將MAC地址綁定到IP地址。 此配置對于始終為特定系統的網絡接口提供相同的IP地址特別有用,尤其是Web或數據庫系統之類的服務器。
客戶端MAC地址查看
[root@client ~ 21:38:56]# ip link show ens192
3: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000link/ether 00:0c:29:26:13:b5 brd ff:ff:ff:ff:ff:ffaltname enp11s0
在以下示例中,服務器始終為MAC地址是00:0c:29:26:13:b5
的系統分配10.1.8.20地址。
在/etc/dhcp/dhcpd.conf
最后添加如下內容:
host client.linux.fun {hardware ethernet 00:0c:29:26:13:b5;fixed-address 10.1.8.30;
}
重啟服務
[root@server ~ 21:39:11]# systemctl restart dhcpd
客戶端驗證
# 激活連接
[root@client ~ 21:39:23]# nmcli connection up dynamic# 驗證
[root@client ~ 21:39:29]# ip addr show ens192
3: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 00:0c:29:26:13:b5 brd ff:ff:ff:ff:ff:ffaltname enp11s0inet 10.1.8.30/24 brd 10.1.8.255 scope global dynamic noprefixroute ens192valid_lft 245sec preferred_lft 245secinet6 fe80::95db:2216:1a36:615/64 scope link noprefixroute valid_lft forever preferred_lft forever
DNS 服務介紹
DNS 服務介紹
DNS(Domain Name System,域名系統)服務是一種用于將域名轉換為IP地址的分布式數據庫服務。它是互聯網的核心服務之一,使得用戶能夠通過易于記憶的域名來訪問網站和其他網絡服務,而無需記住復雜的IP地址。
DNS 也是一個存儲網絡主機和資源目錄的分層命名系統。 目錄中的信息將網絡名稱映射到不同資源記錄。
- 根域:DNS層次結構最頂層,使用獨立的"."表示。
- 頂級域:DNS層次結構第二層,例如**.com**,.net和**.org**等域。
- 二級域:DNS層次結構第三層,例如**laoma.cloud **和 redhat.com等域。由各個組織使用。
- 以此類推。
學習DNS層次結構前,首先要搞清楚DNS層次結構中一些術語,例如domain,subdomain和zone等。
Domain
domain 是 resource records 的集合,該集合以通?名結尾,表示 DNS 命名空間的整個?樹,如 laoma.cloud。
top-level domain(TLD- 頂級域)由 Internet Assigned Numbers Authority(IANA-互聯網號碼分配機構)管理,并負責委派頂級域。
常見的TLD類型:
- Generic TLDs(gTLD-通用頂級域名),最初是按主題組織的,包括.com,.edu和.net等。
- Country code TLDs(ccTLD-國家代碼頂級域名),根據ISO 3166-1標準在國家范圍上組織的,并包括.us,.uk,.cn和.ru之類的域。
Subdomain
Subdomain 是另一個域的完整子樹的域。 在討論兩個域之間的關系時使用此術語。 例如,lab.laoma.cloud是laoma.cloud的子域,而laoma.cloud是**.com的子域。 我們也可以將laoma.cloud稱為第二級域,并將lab.laoma.cloud**稱為第三級域。
Zone
Zone是特定名稱服務器直接負責的域。 它可能是整個域,也可能只是域的一部分。Zone可以將部分或全部子域都委派給另一個名稱服務器或多個名稱服務器。
例如,root名稱服務器對root zone具有權威性,但它們將.com域的職責委派給其他名稱服務器,這些名稱服務器為.com區域提供權威性應答。 這些服務器還可以繼續將責任委派給其他名稱服務器。
DNS 查詢
DNS 查詢分為以下幾種類型:
DNS 資源記錄
資源記錄(Resource Record)是 DNS 數據庫中的基本數據單位,用于描述域名與各種信息之間的關系。
主機和資源記錄
?個主機,無論是客戶端還是服務器,都具有以下 DNS 資源記錄:
-
?個或多個A或AAAA記錄
-
用于將其IP地址反向映射到名稱的PTR記錄
-
?個或多個CNAME記錄(可選)
DNS zone 還具有以下資源記錄:
-
唯一的 SOA 記錄
-
每個權威名稱服務器的 NS 記錄
-
?個或多個MX記錄(可選)
-
用于在域中查找服務的?個或多個SRV記錄(可選)
配置權威名稱服務器
權威名稱服務器架構
什么是權威名稱服務器?
權威名稱服務器 是 DNS 系統中的核心角色,負責一個或多個域(zone)的最終解析權,它可以:
-
保存域名 → IP 的真實記錄(A、CNAME 等)
-
對該域的查詢給出權威答案
-
不會再向其他服務器轉發請求
權威 DNS 服務器的基本組成
主服務器(Primary / Master)
-
也叫“權威源”。
-
管理員手動編寫 zone 文件,保存所有資源記錄。
-
是域的配置和數據中心。
-
通常使用 type master 配置。
從服務器(Secondary / Slave)
-
通過 zone transfer(區域傳送) 從主服務器同步數據。
-
不直接編輯 zone 文件,只讀并響應查詢。
-
起到容災備份、負載均衡作用。
-
通常使用 type slave 配置。
安裝 BIND
通過安裝bind軟件包來安裝BIND。 名稱服務器本身作為named服務運行。 bind包將HTML和PDF格式的BIND文檔在安裝在/usr/share/doc/bind/目錄。
[root@server ~ 21:54:49]# yum install -y bind bind-utils
軟件包說明:
- bind,服務器軟件包。
- bind-utils,bind工具軟件包。
bind軟件包默認將服務配置為基本的遞歸緩存名稱服務器。 它被配置為localhost、相關域和地址的primary服務器,以減輕根名稱服務器的負擔。 此默認配置還限制了對本地主機上程序的訪問。 它偵聽IPv4和IPv6環回接口的端口53 UDP/TCP(127.0.0.1和:: 1)上的連接。
配置 BIND
named主要配置文件是**/etc/named.conf**。 該文件控制BIND的基本操作,由root用戶(named組)擁有,具有八進制權限0640,并且具有named_conf_t SELinux類型。
配置文件還指定了每個區域的配置文件位置,這些文件通常保存在**/var/named**中。
配置DNS服務器需要執行以下步驟:
- 配置地址匹配列表。
- 配置named偵聽的IP地址。
- 配置客戶端的訪問控制。
- 配置zone。
- 編寫區域文件。
定義地址匹配列表
在/etc/named.conf文件的開頭,可以使用acl指令定義地址匹配列表。 acl指令不是用于控制客戶端對服務器的訪問,而是使用它們來定義IP地址和網絡列表。
它們提供別名,可以與訪問控制指令和其他配置選項一起使用,并使更新配置文件更加容易。
條目可以是完整的IP地址或網絡,用尾點(10.1.8.)或CIDR表示法(192.168.0/24或2001:db8::/32)表示,也可以使用先前定義的地址匹配列表的名稱。
請考慮以下ACL定義:
[root@server ~ 21:54:52]# vim /etc/named.conf
acl trusted-nets { 192.168.10.0/24; 192.168.20.0/24; };
acl classroom { 10.1.8.0/24; };
在其值中使用classroom的任何指令都將與10.1.8.0/24網絡和192.168.1.21中的主機匹配。acl語句定義的地址集可以被多個指令引用。
named中內置了四個預定義的ACL:
ACL | Description |
---|---|
none | Matches no hosts. |
any | Matches all hosts. |
localhost | Matches all IP addresses of the DNS server. |
localnets | Matches all hosts from the DNS server’s local subnets. |
配置 named 偵聽的IP地址
我們可以在/etc/named.conf文件options塊中指定許多全局設置。listen-on和listen-on-v6指令,指定了命名監聽的接口和端口。
- listen-on選項采用以分號分隔的IPv4地址列表。
- listen-on-v6使用IPv6地址。
[root@server ~ 21:56:35]# vim /etc/named.conf
options {listen-on port 53 { 127.0.0.1;10.1.8.10; };listen-on-v6 port 53 { ::1; };directory "/var/named";dump-file "/var/named/data/cache_dump.db";statistics-file "/var/named/data/named_stats.txt";memstatistics-file "/var/named/data/named_mem_stats.txt";recursing-file "/var/named/data/named.recursing";secroots-file "/var/named/data/named.secroots";allow-query { localhost;10.1.8.0/24; };.......
配置 zone
[root@server ~ 22:00:23]# vim /etc/named.conf
......
# 最后添加如下內容
zone "xiexin.cloud" IN {type master;file "xiexin.cloud.zone";
};
zone "8.1.10.in-addr.arpa" IN {type master;file "10.1.8.zone";
};
配置說明:
- type,指定服務器角色。
- file,指定相對路徑名。 相對路徑由 options 塊中的 directory 指令設置。
創建區域文件
輔助區域文件應保存在/var/named/slaves中。輔助服務器啟動時,會將其緩存的區域版本與主服務器上的當前版本進行比較:如果區域文件版本是最新的,則使用該區域文件; 如果區域文件版本不是最新的或文件不存在,則named執行區域傳輸并將結果緩存在該文件中。
BIND 應該能夠讀取這些區域文件,但不能寫入它們。 這些文件應歸root用戶和named組所有,以便守護程序在某種程度上受到損害時不能更改它們。
[root@server ~ 22:02:52]# touch /var/named/xiexin.cloud.zone /var/named/10.1.8.zone
[root@server ~ 22:02:59]# chmod 640 /var/named/*.zone
[root@server ~ 22:03:10]# chown root:named /var/named/*.zone# 如果系統開啟了selinux功能,執行下面命令設置文件標簽
[root@server ~ 22:03:24]# chcon -t named_zone_t /var/named/*.zone
添加記錄
正向記錄,將名稱映射到IP地址和其他記錄。該區域文件必須具有:
- SOA記錄。
- 每個公用名稱服務器的NS記錄。
- 該區域的其他A,AAAA,CNAME,MX,SRV和TXT記錄。
示例:xiexin.cloud域
[root@server ~ 22:03:28]# vim /var/named/xiexin.cloud.zone
$TTL 3600
@ IN SOA dns.xiexin.cloud. root.xiexin.cloud. (42 ; serial3H ; secondary refresh15M ; secondary retry1W ; secondary timeout15M ; minimum cache TTL for negative answers
)IN NS dns.xiexin.cloud.
dns IN A 10.1.8.10
server IN A 10.1.8.10
student IN CNAME client.xiexin.cloud.
client IN A 10.1.8.11
www 30 IN A 10.1.8.200
@ IN MX 10 mail.xiexin.cloud.
mail IN A 10.1.8.253
示例說明:
- @字符代表區域的名稱,避免重復鍵入,并且在某些情況下允許重復使用。
- 區域文件中的SOA記錄與前面的示例中的SOA記錄是等效的。
- 如果記錄的名稱為空,則其值與前面的記錄相同。
因此,在前面的示例中:
- 第一個記錄是laoma.cloud.的SOA記錄
- 接下來的記錄是laoma.cloud.的NS記錄
- 然后有一個dns的A記錄。
- 然后有一個server的A記錄。
- 然后有一個student的CNAME記錄。
- 然后有一個client的A記錄。
- 然后有一個域的MX記錄。
- 然后有一個mail的A記錄。
任何不以點號結尾的名稱均被視為部分主機名,應將區域名稱添加為完全合格的域名。 換句話說,server等效于server.laoma.cloud.
。
反向記錄,將IP地址映射到主機名。該區域文件必須具有:
- SOA記錄
- NS記錄
- PTR記錄。
示例:8.1.10.inaddr.arpa區域
[root@server ~ 22:05:16]# vim /var/named/10.1.8.zone
$TTL 3600
@ IN SOA dns.xiexin.cloud. root.xiexin.cloud. (42 ; serial3H ; secondary refresh15M ; secondary retry1W ; secondary timeout15M ; minimum cache TTL for negative answers
)IN NS dns.xiexin.cloud.
10 IN PTR server.xiexin.cloud.
10 IN PTR dns.xiexin.cloud.
11 IN PTR client.xiexin.cloud.
11 IN PTR student.xiexin.cloud.
200 IN PTR www.xiexin.cloud.
253 IN PTR mail.xiexin.cloud.
IP地址的“名稱”不需要包括其余的域名,1代替1.8.1.10.in-addr.arpa.。
運行 BIND 和 客戶端測試
# 啟動服務[root@server named 15:14:20]# systemctl enable named --now[root@client ~ 15:29:46]# nmcli connection delete ens36-dhcp 成功刪除連接 "ens36-dhcp" (e0d06ed6-eaa6-49fd-93a3-a755c7dd51ce)。# 測試# 方式1:配置客戶端 DNS[root@client ~ 15:30:08]# nmcli connection modify ens33 ipv4.dns 10.1.8.10[root@client ~ 15:30:35]# nmcli connection up ens33 連接已成功激活(D-Bus 活動路徑:/org/freedesktop/NetworkManager/ActiveConnection/7)[root@client ~ 15:30:41]# cat /etc/resolv.conf # Generated by NetworkManagersearch xiexin.cloudnameserver 10.1.8.10[root@client ~ 15:36:56]# ping studentPING client.xiexin.cloud (10.1.8.11) 56(84) bytes of data.64 bytes from client.xiexin.cloud (10.1.8.11): icmp_seq=1 ttl=64 time=0.009 ms64 bytes from client.xiexin.cloud (10.1.8.11): icmp_seq=2 ttl=64 time=0.031 ms# 方式2:dig工具[root@client ~ 16:12:38]# yum install -y bind-utils[root@client ~ 16:15:18]# dig @10.1.8.10 student.xiexin.cloud.; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.16 <<>> @10.1.8.10 student.xiexin.cloud.; (1 server found);; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62303;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2;; OPT PSEUDOSECTION:; EDNS: version: 0, flags:; udp: 4096;; QUESTION SECTION:;student.xiexin.cloud. IN A;; ANSWER SECTION:student.xiexin.cloud. 3600 IN CNAME client.xiexin.cloud.client.xiexin.cloud. 3600 IN A 10.1.8.11;; AUTHORITY SECTION:xiexin.cloud. 3600 IN NS dns.xiexin.cloud.;; ADDITIONAL SECTION:dns.xiexin.cloud. 3600 IN A 10.1.8.10;; Query time: 0 msec;; SERVER: 10.1.8.10#53(10.1.8.10);; WHEN: 三 8月 06 16:16:39 CST 2025;; MSG SIZE rcvd: 118
額外實踐:域名解析與 Apache 網站部署
操作環境及設備
要有一個自己的域名,比如:xiexin.cloud
還要有公網服務器
遠程工具xshell
默認端口
網站根目錄 /www/xiexin.cloud
操作步驟
- 域名解析配置
-
使用 Xshell 連接服務器
-
在服務器中創建網站目錄與首頁文件
cd /www
mkdir xiexin.cloud
echo 'Welcome to xiexin site' > xiexin.cloud/index.html
/www/xiexin.cloud/是你的網站目錄,index.html是首頁文件
- 配置 Apache 虛擬主機
# 首先進入配置目錄
cd /etc/httpd/conf.d/
vim vhost-xiexin.cloud.conf
.....<VirtualHost *:80>DocumentRoot "/www/xiexin.cloud"ServerName www.yuxb.cloud<Directory "/www/xiexin.cloud">AllowOverride None# Allow open access:Require all granted</Directory></VirtualHost>
- 重啟 Apache 服務
systemctl restart httpd
- 瀏覽器訪問測試
訪問地址:www.xiexin.cloud:xxx