[内容] /etc/resolv.conf 配置文件的 search 选项

内容一:测试 search 选项的配置

# cat /etc/resolv.conf
search eternalcenter.com local new
nameserver 8.8.8.8

内容二:测试 search 选项

2.1 查询 zhumingyu

# host -a zhumingyu
Trying "zhumingyu.eternalcenter.com"
Trying "zhumingyu.local"
Trying "zhumingyu.new"
Trying "zhumingyu"
Host zhumingyu not found: 3(NXDOMAIN)
Received 102 bytes from 8.8.8.8#53 in 62 ms

(补充:当查询 zhumingyu 时,也就是中间没有点 “.”,则默认会被视为查询主机名,会先依次把 eternalcenter.com、local 和 new 作为后缀添加到 zhumingyu 后进行查询,最后才查询 zhumingyu)

2.2 zhumingyu.com

# host -a zhumingyu.com
Trying "zhumingyu.com"
Received 31 bytes from 1.1.1.1#53 in 217 ms
Trying "zhumingyu.com.eternalcenter.com"
Trying "zhumingyu.com.local"
Trying "zhumingyu.com.new"
Host zhumingyu.com.new not found: 4(NOTIMP)
Received 35 bytes from 1.1.1.1#53 in 218 ms

(补充:当查询 zhumingyu.com 时,也就是中间有 1 个点 “.”,则默认会被视为查询域名,会先查询 mingyuzhu.com,如果查询失败,则会先依次把 eternalcenter.com、local 和 new 作为后缀添加到 zhumingyu 后进行查询)

2.3 查询 zhumingyu.com.

# host -a zhumingyu.com.
Trying "zhumingyu.com"
Host zhumingyu.com not found: 4(NOTIMP)
Received 31 bytes from 1.1.1.1#53 in 204 ms
Received 31 bytes from 1.1.1.1#53 in 204 ms

(补充:当查询 zhumingyu.com. 时,也就是末尾有 1 个点 “.”,默认会被视为查询域名,且只会查询这个域名。不会查询 search 里的每 1 项)

[命令] Linux 命令 dig (从 DNS 服务器获取主机信息)

内容一:dig 命令简介

dig 即 domain information groper,主要功能是从 DNS 服务器获取主机信息

内容二:dig 命令的使用案例

2.1 案例一:显示互联网上所有 DNS 根服务器的信息

# dig

2.2 案例二:直接通过域名获取主机信息

# dig eternalcenter.com

(补充:这里以通过 eternalcenter.com 域名获取主机信息为例)

2.3 案例三:直接通过域名获取主机信息,但只显示最基础的内容

# dig eternalcenter.com +short

(补充:这里以通过 eternalcenter.com 域名获取主机信息为例)

2.4 案例四:直接通过域名获取主机信息,并指定显示的内容

# dig eternalcenter.com +noall +answer

(补充:这里以通过 eternalcenter.com 域名获取主机信息,并显示 noall 和 answer 部分的内容为例)

2.5 案例五:从指定的 DNS 服务器和端口号通过域名获取主机信息

# dig @8.8.8.8 -p 53 eternalcenter.com

(补充:这里以通过 eternalcenter.com 域名从 IP 地址是 8.8.8.8 端口是 53 的 DNS 服务器获取主机信息为例)

2.6 案例六:通过 IP 地址获取主机信息

# dig -x 8.8.8.8

(补充:这里以通过 IP 地址 8.8.8.8 获取主机信息为例)

2.7 案例七:通过 IP 地址获得主机信息,但只显示最基础的内容

# dig -x 8.8.8.8  +short

(补充:这里以通过 IP 地址 8.8.8.8 获取主机信息为例)

2.8 案例八:直接通过域名获取主机信息,同时显示获取的过程

# dig eternalcenter.com +trace

(补充:这里以通过 eternalcenter.com 域名获取主机信息为例)

[内容] 全球公共免费 DNS

AdGuard

94.140.14.14
94.140.14.15
94.140.15.15
94.140.15.16

Cloudflare

1.0.0.1
1.0.0.2
1.0.0.3
1.1.1.1
1.1.1.2
1.1.1.3

COMODO

8.20.247.20
8.26.56.26

DNS Watch

84.200.69.80
84.200.70.40

Dyn

216.146.35.35
216.146.36.36

Level 3

209.244.0.3
209.244.0.4

Neustar

156.154.70.1
156.154.71.1

FreeDNS

37.235.1.174
37.235.1.177

Google

8.8.4.4
8.8.8.8

OpenDNS

208.67.220.220
208.67.222.222

SAFEDNS

195.46.39.39
195.46.39.40

Symantec

199.85.126.10
199.85.137.10

[内容] DNS 客户端的设置 (Linux 版)

内容一:设置 DNS 客户端

1.1 直接在本地指定域名

1.1.1 直接在本地指定域名的方法
# vim /etc/hosts

添加以下内容:

......
<IP address> <domain name>

(注意:/etc/hosts 里记录的 DNS 优先级要比 /etc/resolv.conf 里的高)

1.1.2 直接在本地指定域名的案例
# vim /etc/hosts

添加以下内容:

......
192.154.240.64 eternalcenter.com

(补充:这里以将 192.154.240.64 解析为 eternalcenter.com 为例)

(注意:/etc/hosts 里记录的 DNS 优先级要比 /etc/resolv.conf 里的高)

1.2 使用远程的 DNS 服务器解析域名

1.2.1 使用远程的 DNS 服务器解析域名
1.2.1.1 使用远程的 DNS 服务器解析域名的方法
1.2.1.1.1 直接修改 /etc/resolv.conf 文件
# vim /etc/resolv.conf

添加以下内容:

......
nameserver <IP address of DNS server>

(注意:/etc/hosts 里记录的 DNS 优先级要比 /etc/resolv.conf 里的高)

1.2.1.1.2 使用 nmcli 命令
1.2.1.1.2.1 使用 nmcli 命令配置一个 DNS 服务器的 IP 地址
# nmcli connection modify <network card name> ipv4.dns <IP address of DNS server>

(补充:不将 /etc/NetworkManager/NetworkManager.conf 里的 [main] dns=none 参数修改为 none 的话,此参数会覆盖 /etc/resolv.conf 里的设置)


注意:
1) 此方法只对 CentOS8&RHEL8 适用
2) /etc/hosts 里记录的 DNS 优先级要比使用 nmcli 命令的高

1.2.1.1.2.2 使用 nmcli 命令配置多个 DNS 服务器的 IP 地址
# nmcli connection modify <network card name> ipv4.dns "<first IP address of DNS server>,<second IP address of DNS server>,<third IP address of DNS server>......"

(补充:不将 /etc/NetworkManager/NetworkManager.conf 里的 [main] dns=none 参数修改为 none 的话,此参数会覆盖 /etc/resolv.conf 里的设置)


注意:
1) 此方法只对 CentOS8&RHEL8 适用
2) /etc/hosts 里记录的 DNS 优先级要比使用 nmcli 命令的高

1.2.1.2 使用远程的 DNS 服务器解析域名的案例
1.2.1.2.1 直接修改 /etc/resolv.conf 文件
# vim /etc/resolv.conf

添加以下内容:

......
nameserver 8.8.8.8

(补充:这里以使用 8.8.8.8 DNS 服务器为例)

(注意:/etc/hosts 里记录的 DNS 优先级要比 /etc/resolv.conf 里的高)

1.2.1.2.2 使用 nmcli 命令
# nmcli connection modify eth0 ipv4.dns 8.8.8.8


补充:
1) 这里以给 eth0 网卡添加 8.8.8.8 DNS 服务器为例
2) 不将 /etc/NetworkManager/NetworkManager.conf 里的 [main] dns=none 参数修改为 none 的话,此参数会覆盖 /etc/resolv.conf 里的设置

(注意:/etc/hosts 里记录的 DNS 优先级要比使用 nmcli 命令的高)

1.2.2 显示正在使用远程的 DNS 服务器解析的域名
# nmcli connection show | grep -i ipv4.dns

内容二:检查 DNS 域名解析

2.1 使用 ping 命令解析域名

2.1.1 使用 ping 命令解析域名的格式
# ping <domain name>
2.1.2 使用 ping 命令解析域名的案例
# ping eternalcenter.com
PING eternalcenter.com (192.154.240.64) 56(84) bytes of data.
64 bytes from v144-48-142.ap-east.sugarhosts.net (192.154.240.64): icmp_seq=1 ttl=50 time=144 ms
64 bytes from v144-48-142.ap-east.sugarhosts.net (192.154.240.64): icmp_seq=3 ttl=50 time=70.8 ms
64 bytes from v144-48-142.ap-east.sugarhosts.net (192.154.240.64): icmp_seq=4 ttl=50 time=81.3 ms
64 bytes from v144-48-142.ap-east.sugarhosts.net (192.154.240.64): icmp_seq=5 ttl=50 time=103 ms
......

2.2 使用 host 命令解析域名

2.2.1 使用 host 命令解析域名的格式
# host <domain name>
2.2.2 使用 host 命令解析域名的案例
# host eternalcenter.com
eternalcenter.com has address 192.154.240.64

(补充:这里以解析 etenalcenter.com 域名为例)

2.3 使用 nslookup 命令解析域名

2.3.1 使用 nslookup 命令解析域名的格式
# nslookup <domain name>
2.3.2 使用 nslookup 命令解析域名的案例
# nslookup eternalcenter.com
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
Name:	eternalcenter.com
Address: 192.154.240.64

(补充:这里以解析 etenalcenter.com 域名为例)

[工具] Shell 批量检测域名的 DNS 解析是否正确

介绍

基本信息

作者:朱明宇
名称:批量检测域名的 DNS 解析是否正确
作用:批量检测域名的 DNS 解析是否正确

使用方法

1. 在此脚本的分割线内写入相应的内容
2. 给此脚本添加执行权限
3. 执行此脚本

脚本分割线里的变量

1. main_domain=eternalcenter.com #此处填写网站的“主域名”,网站一般会有几个域名,其中“主域名”直接指向 ip 地址,其他的域名都指向主域名
2. ip=192.154.240.64 #域名指向的 ip 地址
3. nginx=1.16.0 #web 程序的对应版本的版本
4. content1=”eteranlcenter” # 随即填写一个具有代表性的网站首页的内容
5. content2=”Mingyu” # 随即填写一个具有代表性的网站首页的内容,但是要和前面的 content1 在同一行
6. domain=”eternalcenter.com eternalcentre.com zhumingyu.com mingyuzhu.com eternalcenter.org eternalcentre.org” #需要检测的域名

脚本

#!/bin/bash

####################### Separator ########################

main_domain=eternalcenter.com
ip=144.48.142.148
nginx=1.16.0
content1="eternalcenter"
content2="Mingyu"
domain="eternalcenter.com eternalcentre.com zhumingyu.com mingyuzhu.com eternalcenter.org eternalcentre.org"

####################### Separator ########################

check_domain_name(){
if [ $1 == $main_domain ];then
	
	ping -c4 -i0.4 $1 | grep $ip &> /dev/null
	if [ $? -ne 0 ];then
		echo -e "\033[31m $1 is error !!!!! ip is error !!!!! \033[0m"
	else
		curl $1 | grep $nginx &> /dev/null
		if [ $? -ne 0 ];then
			echo -e "\033[31m $1 is error !!!!! software is error !!!!! \033[0m"
		else	
			elinks $1 | grep "$content1" | grep "$content2" &> /dev/null
			if [ $? -ne 0 ];then
				echo -e "\033[31m $1 is error !!!!! web is error !!!!! \033[0m"
			else
				echo -e "\033[32m $1 is ok \033[0m"
			fi
		fi
		
	fi
else
	elinks $1 | grep "$content1" | grep "$content2" &> /dev/null
	if [ $? -ne 0 ];then
		echo -e "\033[31m $1 is error !!!!! web is error !!!!! \033[0m"
	else
		echo -e "\033[32m $1 is ok \033[0m"
	fi


fi
}

for i in $domain
do
	check_domain_name $i
done