dns解析和ca证书
DNS工作原理:当客户端主机访问 https://www.baidu.com 这个域名时,先查询本地 hosts 文件,是否有对应IP地址,如果有,则直接访问该IP地址,域名解析服务结束;再查询本机缓存,如果本机缓存没有解析记录,则会向其配置的DNS服务器发起解析请求;DNS代理解析服务器会先查询其缓存是否有这条解析记录,如果有,则直接返回,如果没有,则继续向上解析;递归查询: 是指DNS服务器在
1、总结DNS域名三级结构,DNS服务工作原理,涉及递归和迭代查询原理
DNS工作原理:当客户端主机访问 https://www.baidu.com 这个域名时,先查询本地 hosts 文件,是否有对应IP地址,如果有,则直接访问该IP地址,域名解析服务结束;
再查询本机缓存,如果本机缓存没有解析记录,则会向其配置的DNS服务器发起解析请求;
DNS代理解析服务器会先查询其缓存是否有这条解析记录,如果有,则直接返回,如果没有,则继续向上解析;
递归查询: 是指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果DNS服务器本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结果提交给用户。
迭代查询: 是指DNS服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台DNS服务器的地址,用户再向这台DNS服务器提交请求,这样依次反复,直到返回查询结果
2、总结CDN原理
CDN其实就是dns升级版,将DNS服务器的功能加强了,不仅仅包含了域名解析的功能,而且对dns记录缓存功能进行了加强,然后又基于缓存的定位,将其独立出来形成一个特有的功能,然后将更多的技术容纳进来,可以缓存更多的内容。
3、实现私有DNS, 供本地网络主机作DNS递归查询。
1、安装bind
apt update && apt install -y bind9 bind9-utils dnsutils
2、关闭防火墙
# Ubuntu 关闭防火墙(生产环境:ufw allow 53/udp; ufw allow 53/tcp; ufw reload)
ufw disable
# 启动named/bind9服务并开机自启
# Ubuntu(服务名是bind9)
systemctl start bind9 && systemctl enable bind9
# 验证服务状态(无error即正常)
systemctl status bind9 # Ubuntu
| 系统 | 主配置文件 | 核心作用 | 配置检查命令 |
|---|---|---|---|
| ubuntu | /etc/bind/named.conf.options | 全局递归 / 转发 / 访问配置 | named-checkconf |
编辑/etc/bind/named.conf.options
options {
directory "/var/cache/bind"; # Ubuntu默认缓存目录
listen-on port 53 { 127.0.0.1; 10.0.0.129; };
allow-query { 127.0.0.1; 10.0.0.0/24; };
recursion yes;
allow-recursion { 127.0.0.1; 10.0.0.0/24; };
dnssec-enable no;
dnssec-validation no;
max-cache-size 64M;
allow-transfer { none; };
# Ubuntu默认的forwarders为空(纯递归无需配置)
// forwarders { 8.8.8.8; 114.114.114.114; };
};
检查配置与服务重启
# 检查配置语法(无输出即无错误,核心!)
named-checkconf
# 重启服务使配置生效
# Ubuntu
systemctl restart bind9
4、总结DNS服务器类型,解析答案,正反解析域,资源记录定义。
根DNS服务器、顶级域DNS服务器、递归DNS服务器
DNS解析类型是正向和反向
正向:根据域名(主机名 / 域名) 查询对应的IP 地址,是日常上网、访问服务器的基础(如输入baidu.com,解析出 110.242.68.3);
核心资源记录:A(IPv4)、AAAA(IPv6)、CNAME(别名)。
反向:根据IP 地址查询对应的域名,与正向解析完全相反,并非正向解析的逆过程(需单独配置反向解析记录,无正向记录也可配置反向);
核心资源记录:PTR(指针记录,反向解析唯一核心记录)。
DNS 资源记录是存储在权威 DNS 服务器中的最小数据单元,是域名与各类网络信息的官方映射记录,递归 DNS 服务器的缓存数据也来自权威服务器的资源记录;
5、完成DNS主从同步,基于其上完成反解,子域授权,DNS视图。
主 DNS 服务器(10.0.0.128)配置
编辑/etc/named.conf,确保以下参数开启
options {
listen-on port 53 { 127.0.0.1; 10.0.0.128; }; # 监听本机和主IP
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 { any; }; # 允许所有客户端查询(生产环境可限制网段)
allow-transfer { 110.0.0.129; }; # 仅允许从服IP进行区域传输(核心!)
recursion yes; # 递归查询(主服若为权威服,可设no;若为递归服,设yes)
dnssec-enable no; # 测试环境关闭,生产环境按需开启
dnssec-validation no;
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
# 保留以下日志、区域根配置,其余可注释
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones"; # 引入区域配置文件(核心)
include "/etc/named.root.key";
步骤 2:配置正向区域(主服),定义区域数据文件
编辑区域配置文件/etc/named.rfc1912.zones,添加主正向区域(mydomain.com)
# 主DNS - 正向区域(mydomain.com)
zone "mydomain.com" IN {
type master; # 类型为主服务器
file "mydomain.com.zone"; # 区域数据文件(/var/named/下)
allow-update { none; }; # 禁止从服更新(主服独占写权限)
};
步骤 3:创建正向区域数据文件,添加基础 A 记录
在/var/named/下创建数据文件,必须保证文件权限为 named:named
# 复制模板文件(保证权限和格式)
cp -a /var/named/named.localhost /var/named/mydomain.com.zone
# 修改文件权限(关键,否则named服务无法读取)
chown named:named /var/named/mydomain.com.zone
编辑/var/named/mydomain.com.zone,添加核心资源记录(注释已标注格式):
$TTL 1D ; 生存时间1天
@ IN SOA dns.mydomain.com. admin.mydomain.com. (
2024052001 ; 序列号(核心!主从同步依据,修改记录必须+1)
1H ; 刷新时间(从服多久同步一次)
15M ; 重试时间(同步失败后重试间隔)
1W ; 过期时间(从服同步失败后,记录保留多久)
1D ) ; 否定缓存时间
IN NS dns.mydomain.com. ; 本域的权威DNS服务器
IN NS dns-slave.mydomain.com. ; 从服也作为权威NS
; A记录:域名→IP
dns IN A 192.168.1.10
dns-slave IN A 192.168.1.11
www IN A 192.168.1.20 ; 示例:www.mydomain.com对应内网IP
步骤 4:重启主服 named 服务,使配置生效
systemctl restart named
# 检查配置文件语法(关键!语法错误会导致服务启动失败)
named-checkconf
named-checkzone mydomain.com /var/named/mydomain.com.zone
若输出zone mydomain.com/IN: loaded serial 2024052001,说明配置无错
从 DNS 服务器(10.0.0.129)配置
步骤 1:修改主配置文件,与主服保持一致(仅修改监听 IP)
编辑/etc/named.conf,仅修改listen-on和allow-query,其余与主服一致:
options {
listen-on port 53 { 127.0.0.1; 10.0.0.129; }; # 从服IP
allow-query { any; };
recursion yes;
dnssec-enable no;
dnssec-validation no;
# 从服无需配置allow-transfer,主服已限制
};
# 其余日志、根区域配置与主服完全一致
include "/etc/named.rfc1912.zones";
步骤 2:配置正向区域(从服),指向主服 IP
编辑/etc/named.rfc1912.zones`,添加从正向区域,核心是type slave和masters { 主服IP; }:
# 从DNS - 正向区域(mydomain.com)
zone "mydomain.com" IN {
type slave; # 类型为从服务器
file "slaves/mydomain.com.zone"; # 同步的文件保存到slaves目录(自动生成)
masters { 192.168.1.10; }; # 主服IP(核心,指定同步源)
};
步骤 3:重启从服 named 服务,自动同步主服记录
systemctl restart named
# 检查语法
named-checkconf
# 验证同步结果:slaves目录下是否生成数据文件
ls /var/named/slaves/
# 若输出mydomain.com.zone,说明同步成功
cat /var/named/slaves/mydomain.com.zone
6、总结sudo配置文件格式,总结相关示例。
sudo 的核心配置文件为/etc/sudoers(禁止直接 vi 编辑,需用visudo命令,自带语法检查,防止配置错误导致 sudo 失效),同时支持/etc/sudoers.d/目录下的自定义配置文件(后缀无要求,推荐.conf,优先级更高)
环境准备
Ubuntu创建一个新用户 lisi
root@ubuntu24:~# useradd -m lisi
root@ubuntu24:~# passwd lisi
新的密码:
无效的密码: 密码少于 8 个字符
重新输入新的密码:
passwd:已成功更新密码
范例:visudo 实现语法检查
root@ubuntu24:~# visudo
# 正常编辑出现异常错误信息,然后保存的时候,就会出现如下问题。
>>> /etc/sudoers: syntax error near line 37 <<<
What now?
Options are:
(e)dit sudoers file again
e(x)it without saving changes to sudoers file
(Q)uit and save changes to sudoers file (DANGER!)
What now?
检查用户和用户组
Ubuntu系统
root@ubuntu24:~# id opadm
uid=1000(opadm) gid=1000(opadm) 组
=4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),100(users),114(lpadmin),1000(opadm)
root@ubuntu24:~# grep '%sudo' /etc/sudoers
%sudo ALL=(ALL:ALL) ALL
测试普通用户执行超越自身权限的动作
root@ubuntu24:~# su - sswang
opadm@ubuntu24:~$ ls /root/.ssh
ls: 无法访问 '/root/.ssh': 权限不够
opadm@ubuntu24:~$ sudo ls /root
[sudo] sswang 的密码:
十五分钟内再次执行,则不需要输入密码
opadm@ubuntu24:~$ sudo ls /root/.ssh
authorized_keys known_hosts known_hosts.old
7、搭建时间同步服务器,详细总结配置和搭建过程
1、安装chrony服务
apt install chrony -y
#查看服务状态
systemctl status chrony
2、修改配置
root@ubuntu24:~# vim /etc/chrony/chrony.conf
#注释pool行
# pool ntp.ubuntu.com iburst maxsources 4
# pool 0.ubuntu.pool.ntp.org iburst maxsources 1
# pool 1.ubuntu.pool.ntp.org iburst maxsources 1
# pool 2.ubuntu.pool.ntp.org iburst maxsources 2
# 添加下列行
server ntp.aliyun.com iburst
重启服务
root@ubuntu24:~# systemctl restart chronyd.service
3、检查效果
检查效果
root@ubuntu24:~# chronyc
chrony version 4.5
Copyright (C) 1997-2003, 2007, 2009-2023 Richard P. Curnow and others
chrony comes with ABSOLUTELY NO WARRANTY. This is free software, and
you are welcome to redistribute it under certain conditions. See the
GNU General Public License version 2 for details.
chronyc> activity
200 OK
1 sources online
0 sources offline
0 sources doing burst (return to online)
修改时间,并查看同步过程
自定义时间
root@ubuntu24:~# date -s "-100 day"
20xx年 03月 31日 星期日 03:00:03 CST
查看同步过程
root@ubuntu24:~# chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^? 203.107.6.88 2 6 377 42 -4813h[ -4813h] +/- 18ms
结果显示:相差了4813个小时
chrony 是渐进式同步,如果差距过大,想立即同步完成,则可以重启服务
root@ubuntu24:~# systemctl restart chronyd.service
root@ubuntu24:~# date
20xx年 10月 17日 星期四 15:52:07 CST
root@ubuntu24:~# chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 203.107.6.88 2 6 17 5 -300us[-1977us] +/- 17ms
结果显示:
时间同步完毕
8、总结私有CA搭建、证书签发、revoke,并用脚本自动化实现。
流程
1 生成私钥:
使用OpenSSL等工具生成CA的私钥,这是CA用于签名证书的关键。
2 创建自签名证书:
利用生成的私钥,CA可以创建自己的自签名证书。这个证书是CA自己的身份证明,用于签发其他证书。
3 设置数据库和序列号文件:
为CA创建数据库文件(用于存储证书信息)和序列号文件(用于生成唯一的证书序列号)。
4 颁发证书:
当内部实体需要数字证书时,它们会生成自己的私钥和证书签名请求(CSR),然后将CSR提交给CA。CA
验证实体的身份后,使用自己的私钥对CSR进行签名,生成数字证书,并颁发给实体。
5 吊销证书:
如果某个数字证书需要被吊销(例如私钥泄露或证书过期),CA可以将其标记为吊销状态,并更新证书吊
销列表(CRL)。
准备环境
rocky系统:
[root@rocky10 ~]# yum install openssl-libs
Ubuntu系统:
root@ubuntu24:~# apt install openssl libssl-dev
查看配置文件
rocky系统:
[root@rocky10 ~]# cat /etc/pki/tls/openssl.cnf
Ubuntu系统:
root@ubuntu24:~# cat /etc/ssl/openssl.cnf
自建CA操作
创建相关目录
[root@rocky10 ~]# mkdir -pv /etc/pki/CA/{certs,crl,newcerts,private}
[root@rocky10 ~]# tree /etc/pki/CA/
/etc/pki/CA/
├── certs
├── crl
├── newcerts
└── private
4 directories, 0 files
生成CA私钥
[root@rocky10 ~]# cd /etc/pki/CA/
[root@rocky10 CA]# openssl genrsa -out private/cakey.pem 2048
[root@rocky10 CA]# ls private/
cakey.pem
生成CA签名证书
[root@rocky10 CA]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -
days 3650 -out /etc/pki/CA/cacert.pem
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN #国家代码
State or Province Name (full name) [Some-State]:beijing #省/州
Locality Name (eg, city) []:beijing #城市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:magedu #公司/单位
Organizational Unit Name (eg, section) []:sre #部门
Common Name (e.g. server FQDN or YOUR name) []:www.magedu.org #域名
Email Address []: #邮箱
查看证书
[root@ubuntu CA]# cat /etc/pki/CA/cacert.pem
-----BEGIN CERTIFICATE-----
... # 20行内容
-----END CERTIFICATE-----
#查看证书
[root@rocky10 CA]# openssl x509 -in /etc/pki/CA/cacert.pem -noout -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
17:f0:37:93:80:5e:d7:6f:7c:7d:90:cb:03:1d:be:ab:cc:a7:88:18
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = CN, ST = Beijing, L = Beijing, O = magedu, OU = sre, CN =
www.magedu.org
Validity
Not Before: Oct 16 06:20:44 2024 GMT
Not After : Oct 14 06:20:44 2034 GMT
Subject: C = CN, ST = Beijing, L = Beijing, O = magedu, OU = sre, CN =
www.magedu.org
......
#导到WINDOWS中查看
[root@rocky10 CA]# sz /etc/pki/CA/cacert.pem
更多推荐


所有评论(0)