Linux基础服务(6.8-6.12)学习内容

  • SSH 安全的远程访问服务;替代telnet(早期远程服务)

  • NTP 网络时间协议;

  • FTP 文件传输协议;

  • NFS 网络文件系统,Linux中目录共享的的服务;

  • Samba 跨系统文件共享,Windows与Linux之间文件共享;

  • Rsync 网络文件同步;

  • DNS 域名解析服务;

  • DHCP 动态主机地址服务;

  • HTTP 超文本传输协议;

SSH:介绍

安全的远程访问链接服务;

  • 使用混合加密技术,对数据进行加密;

    • 对称加密:加密解密使用相同的密钥;

    • 非对称加密:使用公钥和私钥;公钥只负责加密,私钥负责解密;

    • 混合加密:使用非对称加密方式,加密对称加密的密码;

  • 防止中间人攻击;

SSH用于对Linux/Unix服务器的远程管理;

软件安装

 # Server上安装ssh-server(被连接的机器)
 yum install -y openssh-server
 # Client上安装ssh(发起连接的机器)
 yum install -y openssh-clients

模拟创建双端操作

用户端

IP地址

服务端

192.168.8.18

客户端

192.168.8.19

SSH服务端配置文件设置

 修改之前为了安全先备份一次文件
 cp /etc/ssh/sshd_config{,.bak}
 ​
 编辑 SSH服务器配置文件
 vim /etc/ssh/sshd_config
 ​
 #修改端口
 Port 端口号                    # sshd默认端口22,用于修改端口(注意防火墙是否放行)
 ​
 #是否允许root登录
 PermitRootLogin yes           
 ​
 #公钥认证,客户端公钥存放位置(默认文件位置)
 AuthorizedKeysFile      .ssh/authorized_keys 
 ​
 #是否允许空密码登录,默认不允许
 PermitEmptyPasswords no
 ​
 #是否允许密码登录,默认允许
 PasswordAuthentication yes
 ​
 #是否使用DNS验证,默认不允许
 UseDNS No                          # 如果开启,会导致登录认证变慢
 ​
 #黑名单
 DenyUsers 用户名
 DenyUsers 用户名@192.168.8.17       
 DenyUsers 用户名@192.168.8.0/24      # 必须指定用户名或用户名加IP,不能只有IP
 ​
 #白名单(优先级高于黑名单)
 AllowUsers 用户名
 AllowUsers 192.168.8.17
 AllowUsers 用户名@192.168.8.17       # 可以选择用户名或者IP,或双重认证
 AllowUsers 用户名@192.168.8.0/24     # 允许某个网段登录
 ​
 #重启服务端
 systemctl restart sshd
 ​
 #客户端登陆服务端
 ssh -p 端口 root@192.168.8.18        # -p 是默认端口被修改需要输入修改后的端口登录

SSH服务端公钥及私钥设置

 #创建公钥及私钥
 ssh-keygen
 ​
 #发送公钥给服务端指令
 ssh-copy-id 用户名@IP地址            
 ​
 #密钥路径位置
 cd ~/.shh
 ​
 #密钥文件名
 id_rsa              # 私钥
 id_rsa.pub          # 公钥

免密码登录

  • 在客户端生成一对密钥(公钥+私钥);

    • 将公钥发给服务端;

    • 客户端登录服务器时,服务端使用公钥(客户端发给服务端的),加密一串随机数;

    • 客户端通过私钥解密随机数,将随机数返回给服务端。服务端验证成功后建立连接;

  • 注意事项

    • 第一次发送公钥的时候需要经过密码验证,之后登录就不需要密码;

    • 在服务器场景中公钥只能加密,不能解密,私钥用来解密,不能加密;

    • 一对密钥可以对(无数台)服务器使用,私钥不能丢失;

命令

 scp         # 使用ssh协议进行文件内容远程传输
 -r          # 上传、下载目录时使用
 -p          # 设置端口号
 scp 本地文件路径 用户名@IP:远程服务器文件路径             # upload上传
 scp 用户名@IP:远程服务器文件路径 本地文件路径             # download下载

NTP:网络时间协议

专门用于网络中各种设备进行时间同步;

  • NTP是应用层协议,底层基于UDP协议,使用123端口;

准备工作

 #关闭客户端与服务端防火墙
 1.关闭防火墙
 systemctl stop firewalld                # 关闭
 systemctl disable firewalld             # 开机不启动
 ​
 2.关闭SELinux(沙盒)
 setenforce 0                            # 临时关闭      
 ​
 永久关闭配置文件
 vim /etc/selinux/config                 # 配置文件路径
 修改为:SELINUX=disabled                 # 修改配置内容,永久关闭
 ​
 虚拟机重启
 init 6                                 # 永久关闭需要重启服务器

安装NTP

 #安装时间同步工具【客户端】
 yum install -y chrony
 ​
 #修改配置文件(时间中继服务器)
 1.配置上级时间同步服务器,用于同步网络时间;
 2.设置局域网子网,允许主机同步时间;
 ​
 #为了防止出现问题优先备份一下
 cp /etc/chrony.conf{,.bak}                              # 备份
 cp /etc/chrony.conf{,.`date +"%Y%m%d%H%M%S"`.bak}        # 备份一个带具体时间的
 ​
 #修改配置文件
 vim /etc/chrony.conf                    # 配置文件
 server ntp.aliyun.com iburst            # 访问外网服务器时间地址
 server ntp.ntsc.ac.cn iburst            # 访问外网服务器时间地址
 allow 192.168.8.0/24                    # 允许这个网段的可以跟我同步时间
 ​
 #删除其中的空白行
 grep -Ev "^$|^#" chrony.conf            # 查看几行有用的内容打印到屏幕
 ​
 #重启
 systemctl restart chrony                # 重新启动
 systemctl enable chrony                 # 开机启动
 ​
 #验证时间同步
 chronyc sources -v                      # 查看时间源服务器
 chronyc tracking                        # 查看时间同步详情
 ​
 #单次强制同步时间工具
 ntpdate
 ​
 #显示当前日期和时间
 date
 ​
 #以指定格式显示日期和时间
 date +"%Y-%m-%d %H:%M:%S"
 ​
 #设置系统时间为指定时间
 date -s “指定日期和时间”

FTP/SFTP/FTPS:文件传输协议

FTP基于TCP协议的文件传输协议,使用21端口传输控制命令,使用20端口传输数据

SFTP使用SSH协议传输文件,使用22端口

FTPS使用SSL加密层

FTP命令行客户端(Linux/Windows/MacOS)

图形化客户端(FileZilla/Xftp/Winscp)

三种认证模式

  • 本地用户模式:基于 Linux 本地账号密码进行认证,配置简单,但是一旦被破解,服务器信息就很危险

  • 匿名用户模式:任何人无需密码直接登录

  • 虚拟用户模式:单独为 FTP 创建用户数据库,基于口令验证账户信息,只适用于 FTP 服务,不会影响其他用户信息,最为安全。

准备工作

 #关闭客户端与服务端防火墙
 1.关闭防火墙
 systemctl stop firewalld                # 关闭
 systemctl disable firewalld             # 开机不启动
 ​
 2.关闭SELinux(沙盒)
 setenforce 0                            # 临时关闭      
 ​
 永久关闭配置文件
 vim /etc/selinux/config                 # 配置文件路径
 修改为:SELINUX=disabled                 # 修改配置内容,永久关闭
 ​
 虚拟机重启
 init 6                                 # 永久关闭需要重启服务器

安装及配置文件

 # 0.安装ftp客户端(Linux)
 yum install -y ftp
 # 1.安装ftp服务端(linux)
 yum install -y vsftpd
 # 2.备份文件保证安全
 cp /etc/vsftpd/vsftpd.conf{,.bak}
 # 3.修改配置
 vim /etc/vsftpd/vsftpd.conf
 # 4.重新启动服务,开机启动
 systemctl start vsftpd
 systemctl enable vsftpd
 ​
 #配置文件注释翻译
 #过滤出非注释行, 非空行
 [root@ftp-server ~] grep -vE '^#|^$' /etc/vsftpd/vsftpd.conf
 anonymous_enable=YES    # 是否开启匿名用户允许访问(安全考虑建议修改NO)
 local_enable=YES        # 是否允许本地用户登录FTP
 write_enable=YES        # 全局设置, 是否容许写入, 开启允许上传的权限
 local_umask=022         # 本地用户上传文件的 umask
 dirmessage_enable=YES   # 允许为目录配置显示信息, 显示每个目录下面的 message_file 文件的内容
 xferlog_enable=YES                # 开启日志功能, 以及存放路径
 xferlog_file=/var/log/vsftpd.log  # 日志路径
 connect_from_port_20=YES          # 使用 20 端口进行连接
 xferlog_std_format=YES            # 标准日志格式
 listen=YES                        # 绑定到监听端口
 listen_ipv6=YES                   # 开启 ipv6(这里NO,否则跟监听端口冲突)
 pam_service_name=vsftpd           # 设置 PAM 的名称
 userlist_enable=YES               # 设置用户已列表, 允许或是禁止
 tcp_wrappers=YES                  # 控制主机访问, 检查 /etc/hosts.allow  hosts.deny 的配置达到防火墙作用
 ​
 分解:
 grep -Ev "^#|^$" vsftpd.conf.bak > vsftpd.conf
 grep文本搜索 -E正则表达式 -v排除所有 ^#开头#和^$所有空行 >重定向将结果覆盖目标文件
 作用:把不必要的注释和空行去除,只保留精简的配置文件

远程连接及指令操作

 # 客户端远程连接服务端使用ftp指令
 ftp IP                  # 连接之后需要输入用户名(普通用户、root禁止访问)及密码
 ​
 # 登录成功会提示
 230 Login successful.
 ​
 # 服务器文件下载到本地(默认下载位置为服务器用户家的目录)
 get 文件名               # 下载后文件存放位置在windows的家目录里
 ​
 # 本地上传文件到服务器(默认上传位置为windows的家目录)
 put 文件名               # 上传后文件存放位置在服务器用户家目录里(登录的用户家目录)
 ​
 注:ftp登录模式下可以使用一些基础命令来查看文件
 ​
 例:ls                  # 查看文件有哪些
    delete 文件名         # 删除文件
    quit                 # 退出ftp模式

用户登录模式

匿名登陆

 #修改配置文件:定义匿名用户的权限,如下
 修改配置如下:
 [root@ftp-server ~] vim /etc/vsftpd/vsftpd.conf
 anonymous_enable=YES                     # 允许匿名访问
 anon_upload_enable=YES                   # 允许匿名用户上传
 anon_mkdir_write_enable=YES              # 允许匿名用户创建目录          
 anon_other_write_enable=YES              # 允许匿名用户修改目录
 ​
 匿名用户目录:
 /var/ftp (FTP 匿名用户的默认根目录)
 ​
 重启服务,且加载开机自启
 systemctl restart vsftpd       # 重启服务
 systemctl enable --now vsftpd  # 开启自启

本地用户模式

 使用 Linux 本地用户模式(基于系统层面的用户),比匿名用户模式更安全
 修改配置文件:关闭匿名模式,开启本地用户模式
 ​
 [root@ftp-server pub] vim /etc/vsftpd/vsftpd.conf
 anonymous_enable=NO         # 关闭匿名用户模式
 local_enable=YES            # 开启本地用户模式
 write_enable=YES            # 设置可写权限
 local_umask=022             # 文件 umask 值
 userlist_enable=YES         # 启用用户列表功能
 userlist_deny=YES           # 将列表中的用户设为禁止登录
 ​
 配置文件介绍
 vim /etc/vsftpd/ftpusers        # 这个文件里面写入的名字, 都是禁止登录的
 vim /etc/vsftpd/user_list       # 行为可以配置,可作为黑名单,也能作为白名单
 特别注意:
 /etc/vsftpd/ftpusers 是一个优先级更高的“硬”黑名单。如果一个用户出现在 ftpusers 文件中,无论 user_list 如何设置,他都绝对无法登录
 ​
 配置项         设置值          user_list 的角色效果说明
 userlist_enable=YES
 userlist_deny=YES            黑名单    禁止文件中列出的用户登录(这是常见默认配置)  
 ​
 userlist_enable=YES
 userlist_deny=NO             白名单    只允许文件中列出的用户登录,其他所有用户均被拒绝 
 ​
 userlist_enable=NO  (无效)    vsftpd 会忽略 user_list 文件,不做额外检查  
 ​
 重启服务,且加载开机自启
 systemctl restart vsftpd       # 重启服务
 systemctl enable --now vsftpd  # 开启自启

虚拟用户模式

 #首先安装工具
 yum install -y libdb libdb-utils
 ​
 #创建用于进行 FTP 认证的用户数据库,奇数行:账户名 偶数行:密码
 [root@ftp-server vsftpd] vim /etc/vsftpd/ftp_user.txt
 wangj               # 奇数 用户名
 123456              # 偶数 密码
 ​
 由于这样的明文信息很不安全,且 vsftpd 也无法加载该格式的数据
 因此我们还需要用 db_load 命令对 ftp_user.txt 文件数据加密,并设置权限使得普通用户无权限查阅。
 ​
 # 创建加密文件 -T 和 -t 参数必须加上
 # 用于转化普通文本为 vsftpd 识别的数据库文件
 db_load -T -t hash -f /etc/vsftpd/ftp_user.txt /etc/vsftpd/ftp_user.db
 ​
 拆解:db_load 命令本身;-T 允许非标准格式:-t hash 指定数据存储算法;
 -f /etc/vsftpd/ftp_user.txt 指定输入文件;/etc/vsftpd/ftp_user.db 指定输出文件
 ​
 # 检查文件属性
 [root@ftp-server vsftpd] file ftp_user.db
 ftp_user.db: Berkeley DB (Hash, version 9, native byte-order)
 ​
 # 查看文件权限
 [root@ftp-server vsftpd] ll ftp_user.db
 -rw-r--r-- 1 root root 12288 Apr  8 19:10 ftp_user.db
 ​
 # 修改文件权限规避安全风险
 [root@ftp-server vsftpd] chmod 600 ftp_user.*
 [root@ftp-server vsftpd] ll ftp_user.*
 -rw------- 1 root root 12288 Apr  8 19:10 ftp_user.db
 -rw------- 1 root root    28 Apr  8 19:10 ftp_user.txt
 ​
 # 新建一个用户, 指定用户家目录, 且禁止登录
 [root@ftp-server vsftpd] useradd -d /var/ftpdir -s /sbin/nologin vuser
 拆解:useradd 创建新用户的命令;-d /var/ftpdir 指定用户的家目录;
 -s /sbin/nologin 指定用户的登录 Shell为 /sbin/nologin(禁止登录);
 vuser 要创建的用户名
 ​
 注:创建用户是为了默认访问的文件夹路径且和 Linux 中的一个本地用户做一个映射关系,防止匿名用户登录后访问到该文件夹,但是系统没有此用户,报错目录权限问题;
 ​
 # 授权此 ftpdir 的属性
 [root@ftp-server vsftpd] setfacl -m u:vuser:rwx /var/ftpdir
 拆解:setfacl 设置文件ACL权限;-m 修改 ACL 规则;
 u:vuser:rwx 为用户 vuser 设置权限:读(r)+写(w)+执行(x)
 /var/ftpdir 目标目录
 ​
 # 添加 vuser 用户至 ftpusers 禁止用户登录文件
 # 增大系统安全, 但是不会影响虚拟用户的登录
 [root@ftp-server vsftpd] echo 'vuser' >> ftpusers
 拆解:重定向 vuser 追加到 ftpusers 禁止用户登录文件
 ​
 # 此时需要创建支持虚拟用户的PAM文件,PAM是一组安全机制的模块,编辑认证文件 /etc/pam.d/vsftpd
 ## 备份原有的 PAM 配置文件
 [root@ftp-server pam.d] mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd_bak
 ​
 # 编写新的 PAM 配置文件
 # 注意 db 参数指定的是 db_load 生成的文件路径,无需添加后缀
 [root@ftp-server pam.d] vim /etc/pam.d/vsftpd
 auth    required    pam_userdb.so   db=/etc/vsftpd/ftp_user
 account required    pam_userdb.so   db=/etc/vsftpd/ftp_user
 ​
 # 最后修改 vsftpd 配置文件
 vim /etc/vsftpd/vsftpd.conf         # vim编辑修改
 ​
 anonymous_enable=NO                 # 禁止匿名模式
 local_enable=YES                    # 允许本地用户
 write_enable=YES
 local_umask=022
 anon_upload_enable=YES
 anon_mkdir_write_enable=YES
 anon_other_write_enable=YES
 dirmessage_enable=YES
 xferlog_enable=YES
 connect_from_port_20=YES
 xferlog_std_format=YES
 listen=NO
 listen_ipv6=YES
 pam_service_name=vsftpd         # 指定 PAM 认证文件
 userlist_enable=YES
 userlist_deny=YES
 tcp_wrappers=YES
 guest_enable=YES                # 开启虚拟用户
 guest_username=vuser            # 指定虚拟用户账号
 allow_writeable_chroot=YES      # 如果用户被限制只能在其家目录,允许用户可以对家目录写入数据
 ​
 # 重启 FTP 服务
 [root@ftp-server pub] systemctl restart vsftpd
 ​

NFS

Network File System 网络文件系统;

C/S架构 客户端和服务端架构 Client/Server,网络分布式文件系统;

服务端将磁盘上的目录进行共享,客户端可以像挂载本地磁盘一样使用服务端的共享目录;

共享目录中的文件数据还是存放在服务端,通过RPC(远程调用)协议实现数据共享;

安装及修改配置挂载文件

 # 1.安装服务端与客户端
 ## 服务端
 yum install -y nfs-utils rpcbind
 ## 客户端
 yum install -y nfs-utils
 ​
 ## 服务端创建共享文件
 mkdir -p /data/文件名{1..3}            # 创建的文件名自定义
 ​
 # 2.修改服务端的配置
 vim /etc/exports         [默认是空的文件]
 ​
 #客户端挂载前验证挂载权限
 showmount -e 服务端ip
 ​
 #配置文件内容  目录路径 主机网段(权限)
 例:/data/文件1  *(rw,async,no_root_squash)               # 所有IP地址,无网段限制
    /data/文件2  192.168.7.10(rw,sync,root_squash)        # 服务器单个IP地址
    /data/文件3  192.168.7.0/24(ro,async,root_squash)     # 服务器网段IP地址
    
 #nfs常用权限设置介绍
 #二选一
 rw         # 可读可写
 ro         # 只读(只能查看,不能修改)
 #二选一
 sync       # 同步模式(安全性高,I/O性能低)
 async      # 异步模式(安全性低,处理速度快,磁盘空闲时写入)
 #二选一
 no_root_squash      # 允许客户端以root身份编辑服务端文件
 root_squash         # 不允许客户端使用root身份编辑
 ​
 # 3.重启服务
 systemctl restart rpcbind nfs-server            # 重启服务(修改配置后执行)
 systemctl enable --now rpcbind nfs-server       # 开机自启 --now立刻执行 服务
 ​
 # 4.测试结果是否正常
 exportfs -avr
 ​
 #客户端操作
 ##创建挂载位置及文件
 mkdir -p /mnt/文件名{1..3}
 ​
 #客户端挂载网络文件系统NFS
 ## 临时挂载
 mount -t nfs IP地址:/文件路径 /挂载路径           # -t 指定文件系统类型
 ​
 ## 永久挂载
 vim /etc/fstab                                # 编辑配置文件,在最下面添加
 服务端IP:/服务端路径    /客户端路径  nfs     defaults    0   0
 ​
 ## 永久挂载后检查是否成功
 mount -a            # 检查配置文件挂载其中所有未被挂载的设备

Autofs工具

 # 挂载本地磁盘、U盘、光盘、NFS,使用时才去动态挂载。节约资源。空闲时(5分钟),自动卸载。
 ​
 # 在客户端安装Autofs
 yum install -y autofs
 ​
 # 配置文件介绍
 主配置文件/etc/auto.master               # 设置挂载点及空闲时间自动卸载
 子配置文件/etc/auto.nfs                  # 设置nfs服务链接信息
 ​
 # 修改autofs主配置文件,添加挂载点设置及时间设置
 vim /etc/auto.master
 /挂载点 /etc/auto.nfs   --timeout=60        # 挂载点是客户端
 ​
 # 子配置文件,具体的nfs服务链接信息
 vim /etc/auto.nfs 
 文件名  -fstype=nfs  服务器IP地址:/文件位置    # 文件名是客户端 文件位置是服务端
 ​
 # 修改好配置重启服务
 systemctl restart autofs

SAMBA

SMB协议,Windows专属私有的目录共享、共享打印机、网络邻居协议;

一个局域网Windows与Linux系统之间跨系统共享文件;

 # NAS 网络文件共享服务器
 # 安装服务端
 # 安装客户端(windows自带)
 yum install -y samba samba-client
 ​
 # 新建一个用户,用于文件共享
 useradd -s /sbin/nologin  用户名           # -s 用户无法登录系统,只能用于SMB共享访问
 ​
 # 创建smb共享密码
 smbpasswd -a  用户名                       # -a 添加一个新的SMB用户(同时设置密码)
 ​
 # 修改配置文件
 # 为了安全优先备份
 cp /etc/samba/smb.conf{,.bak}
 vim /etc/samba/smb.conf
 ​
 # 配置文件类似如下
 [用户文件名]                  # 共享名
 comment = "samba test"       # 描述信息
 path = /home/文件名           # 共享目录
 browseable = yes             # 所有人可见
 public = yes                 # 是否公开
 writable = yes               # 是否允许修改
 create mask =0644            # 文件权限
 directory mask =0755         # 目录权限
 ​
 # 重启服务
 systemctl restart smb nmb
 ​
 # 连接本地Windows方法
 打开我的电脑,右键[添加一个网络位置],指定网络位置[\\IP地址\共享名],输入用户及密码。

rsync:数据同步

  • cp+scp(全量复制)

  • 全量复制:将目录中所有文件全部复制同步一遍,存在的文件会被覆盖;不智能,重复复制,浪费资源和时间;

  • 增量复制(差异复制):仅拷贝新文件或修改过的文件,相同文件不会重复复制;

  • rsync可以增量复制;

    • rsync两种模式:命令模式与服务模式(backup备份服务器;用于定时或实时备份重要数据)

    • 服务模式与命令模式的区别:

      1. 服务模式需要运行rsyncd后台守护进程

      2. 服务模式可以自定义用户(虚拟用户),安全性更高;

      3. 服务模式可以定义权限更加灵活;

 # 命令模式使用方法和scp类似
 ​
 #下载安装rsync
 yum install -y rsync
 ​
 # 上传模式,将本地文件上传到远程服务器
 rsync [选项] /本地文件路径 用户名@IP:/路径/    # 上传包括文件夹及里面的内容
 rsync [选项] /本地文件路径/ 用户名@IP:/路径/   # 上传文件夹里的内容不包括文件夹
 例:rsync -avzP /etc  root@192.168.7.21:/opt/
 ​
 # 下载模式 
 rsync [选项] 用户名@IP:/路径 /本地文件路径/    # 下载包括文件夹及里面的内容
 rsync [选项] 用户名@IP:/路径/ /本地文件路径/   # 下载文件夹里的内容不包括文件夹
 例:rsync -avzP root@192.168.7.10:/etc  /tmp/
 ​
 # 本地模式类似cp命令
 rsync [选项] /文件或目录 /本地路径
 ​
 # 选项
 -a              归档模式(递归+保留属性,等价于 -rlptgoD)
 -v              显示详细过程(-vv 更详细)
 -z              传输时压缩数据(节省带宽)
 --delete        删除目标中源不存在的文件(镜像同步)
 --exclude       排除文件/目录(如 --exclude="*.log")
 -e ssh          通过 SSH 加密传输(可指定端口 -e "ssh -p 2222")
 -P              显示进度+断点续传(等价于 --partial --progress)

定时同步:使用 crontab 计划任务

 # 准备好免密登录创建密钥,避免无法连接
 ​
 # 创建定时任务
 crontab -e
 ​
 # 每天凌晨2:00进行数据备份
 0 2 * * * /usr/bin/rsync -azP --delete /文件路径 用户名@IP地址:/文件路径
 ​
 # 加时间戳
 $(date +\%Y\%m\%d)              # 20260611
 $(date +\%Y-\%m-\%d)            # 2026-06-11
 $(date +\%Y\%m\%d_\%H\%M\%S)    # 20260611_020000
 $(date +\%s)                    # 1749600000 (Unix时间戳)
 $(date +\%u)                    # 星期几(1-7)

实时备份:安装inotify工具

监控目录变更,目录中文件发生:create、update、delete等操作时,自动执行rsync命令实现实时数据同步

 # 准备好免密登录创建密钥,避免无法连接
 ​
 # 安装扩展源
 yum install -y epel-release
 ​
 # 安装文件监控工具
 yum install -y inotify-tools
 ​
 #下载安装rsync
 yum install -y rsync
 ​
 # 如果镜像里面没有可以挂载阿里云镜像
 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
 ​
 # 编写实时同步脚本
 vim sync.sh
 ​
 # 脚本内容
 #!/bin/bash
 ​
 while inotifywait -r -e modify,create,delete,move /data/;do
   rsync -avz --delete /data/ root@192.168.7.10:/opt/data/
 done
 ​
 # 在后台运行脚本
 bash sync.sh &>/dev/null &
 ​
 # 验证同步效果
 可以在文件里添加或者删除来试试

DNS

DNS:介绍

域名系统,是互联网的“电话簿”,所有网络的应用基础,同时承载服务发现,安全验证等关键功能;

是一个分布式层次化的数据库系统,其核⼼作⽤是:

  • 正向解析:将域名(如 www.baidu.com )转换为IP地址(如 110.242.68.3 )

  • 反向解析:将IP地址转换为对应的域名(⽤于邮件服务器⾝份验证、⽇志溯源等)

  • 服务定位:通过SRV记录指定特定服务的服务器地址和端⼝

  • 安全验证:通过TXT、CAA等记录实现邮件反垃圾、SSL证书验证等功能

  • 默认端⼝:UDP 53(⽤于常规查询,速度快)、TCP 53(⽤于区域传输和⼤于512字节的查询,如DNSSEC)

  1. 分布式架构:没有任何⼀台服务器存储全球所有域名信息,数据分散在全球各级服务器中

  1. 缓存机制:各级节点都会缓存查询结果,⼤幅提升解析速度并减轻根服务器压⼒

  • 层次化命名空间:

    DNS采⽤树状层次结构,从根到叶依次为:根域 → 顶级域→ ⼆级域 → ⼦域 → 主机名。

DNS层次化命名

 . (根域)
 ├── com. (通用顶级域)
 │ ├── baidu.com. (二级域)
 │ │ ├── www.baidu.com. (主机名/三级域)
 │ │ └── mail.baidu.com.
 │ └── zuolaoshi.cn.
 ├── cn. (国家顶级域)
 │ ├── edu.cn. (二级域)
 │ │ └── tsinghua.edu.cn.
 │ └── gov.cn.
 └── org. (通用顶级域)

各层级详解

  1. 根域(Root Domain)

  • . 表⽰,是整个DNS体系的最顶层

  • 全球共有13组根服务器(编号A-M),由不同机构运营,实际有数百台镜像分布在全球

  • 根服务器只存储顶级域服务器的地址信息

  1. 顶级域(TLD, Top-Level Domain)

  • 根域的直接⼦域,分为三类:

    • 通⽤顶级域(gTLD).com(商业)、 .org(⾮盈利)、 .net (⽹络)、.gov (政府)、.edu (教育)等

    • 国家/地区顶级域(ccTLD).cn (中国)、.us (美国)、.jp (⽇本)、.uk (英国)等

    • 新通⽤顶级域(New gTLD).app.dev.xyz.shop

  1. ⼆级域(Second-Level Domain)

  • 由个⼈或组织申请注册的域名,如 baidu.comzuolaoshi.cn 是域名管理的基本单元,注册者拥有该域下所有⼦域的管理权

  1. ⼦域(Subdomain)

  • ⼆级域下创建的域名,⽤于划分不同的业务或部⻔

  • www.baidu.com 中的 wwwmail.qq.com 中的mail

  1. 完全限定域名(FQDN, Fully Qualified DomainName)

13台根DNS服务器

名称

管理单位

地理位置

IP地址

A

INTERNIC.NET

美国-弗吉尼亚州

198.41.0.4

B

美国信息科学研究所

美国-加利弗尼亚州

128.9.0.107

C

PSINet公司

美国-弗吉尼亚州

192.33.4.12

D

马里兰大学

美国-马里兰州

128.8.10.90

E

美国航空航天管理局

美国加利弗尼亚州

192.203.230.10

F

因特网软件联盟

美国加利弗尼亚州

192.5.5.241

G

美国国防部网络信息中心

美国弗吉尼亚州

192.112.36.4

H

美国陆军研究所

美国-马里兰州

128.63.2.53

I

Autonomica公司

瑞典-斯德哥尔摩

192.36.148.17

J

VeriSign公司

美国-弗吉尼亚州

192.58.128.30

K

RIPE NCC

英国-伦敦

193.0.14.129

L

IANA

美国-弗吉尼亚州

199.7.83.42

M

WIDE Project

日本-东京

202.12.27.33

DNS服务时最常用的分类方式:

  1. 主服务器:储存区域数据的原始副本,所有修改都在此进行;

    1. 数据权威,可读写,一个区域只能有一个主服务器;

  2. 从服务器:从主服务器同步区域数据,提供冗余和负载均衡;

    1. 数据只读,自动同步,一个区域可以有多个从服务器 ;

  3. 缓存服务器:仅缓存查询结果,不储存任何权威区域数据;

    1. 不负责解析,只加速访问,常用于企业内网;

  4. 转发器:将无法解析的请求转发给上游DNS服务器;

    1. 简化内网DNS配置,统一出口;

从全球DNS体系的角度看,服务器分为:

  1. 根域名服务器:管理顶级域服务器地址;

  2. 顶级域服务器:管理对应顶级域下的二级域服务器地址;

  3. 权威域名服务器:管理特定域名的所有记录,是该域名的最终权威来源

  4. 递归解析器:替客户端完成整个递归查询过程,返回最终结果(我们常用的8.8.8.8、114.114.114.114都是递归解析器);

DNS查询类型

  1. 递归查询(Recursive Query)【一般使用】

    • 特点:客⼾端只发送⼀次请求,服务器替客⼾端完成所有查询⼯作,最终返回完整的结果或失败信息

    • 应⽤场景:客⼾端 → 本地DNS服务器(递归解析器)

    • 类⽐:你问同学"北京在哪⾥?",同学帮你查地图,然后直接告诉你答案

  2. 迭代查询(Iterative Query)

    • 特点:服务器返回下⼀个应该查询的服务器地址,客⼾端需要⾃⼰向这个新服务器发送请求,直到得到结果

    • 应⽤场景:本地DNS服务器 → 根服务器 → 顶级域服务器 → 权威服务器

    • 类⽐:你问同学"北京在哪⾥?",同学说"我不知道,但地理⽼师知道",你再去问地理⽼师,地理⽼师说"我不知道,但地图册上有",你再去查地图册

查询流程案例

⽤⼾在浏览器输⼊ www.zuolaoshi.cn ,完整解析过程:

  1. 浏览器检查⾃⾝缓存,有则直接使⽤

  2. 浏览器查询操作系统缓存(如Windows的hosts⽂件{具体在:C:\Windows\System32\drivers\etc}、Linux的 /etc/hosts

  3. 操作系统向本地DNS服务器发送递归查询请求

  4. 本地DNS服务器检查⾃⾝缓存,有则直接返回

  5. 本地DNS服务器向根服务器发送迭代查询请求

  6. 根服务器返回 .com 顶级域服务器的地址

  7. 本地DNS服务器向 .com 顶级域服务器发送迭代查询请求

  8. .com 服务器返回 zuolaoshi.cn 权威服务器的地址

  9. 本地DNS服务器向 zuolaoshi.cn 权威服务器发送迭代查询请求

  10. 权威服务器返回 www.zuolaoshi.cn 的IP地址

  11. 本地DNS服务器将结果返回给操作系统,同时缓存结果

  12. 操作系统将结果返回给浏览器

  13. 浏览器使⽤该IP地址访问服务器

DNS:域名解析

 # 前期准备工作
 ## 关防火墙及关SELinux
 systemctl stop firewalld
 systemctl disable firewalld
 setenforce 0
 ​
 # CentOS7需要安装bind-utils(域名信息探查器)
 yum install bind-utils
 ​
 # dig 命令查看 dns设置
 dig或dig @IP地址 域名        
 ​
 # 安装软件包
 yum -y install bind*
 ​
 # 启动服务
 systemctl restart named
 systemctl enable named
 ​
 # 配置文件位于/etc/bind/目录下
 主要包括named.conf.options和named.conf.local两个文件
 ​
 # 查看named的主配置文件
 ## 修改文件前优先备份保证安全
 cp /etc/named.conf{,.bak}
 ## 编辑配置文件
 vim /etc/named.conf
 ​
 修改内容:
 listen-on port 53 { any; };  # 绑定的地址需要修改(any是所有)
 allow-query     { any; };    # 允许查询的服务地址(any是所有)
 ​
 # 修改辅助域配置文件
 # 确定“域”名 --> test.com(可以自己起)
 /etc/named.conf 或 /etc/named.rfc1912.zones      # 一般用rfc1912修改
 vim /etc/named.rfc1912.zones  # 编辑辅助域配置文件
 ​
 添加内容:
 # 定义正向解析域
 zone "test.com" IN {          # test.com (自己起的域名)
     type master;
     file "test.com.zone";     # test.com.zone (解析文件名)文件位于 /var/named/ 下
     # 正向解析是设定好域名,通过域名从正向解析文件中找响应的IP地址。
     allow-update { none; };  # 默认不允许slave从服务器同步
 };
 # 定义反向解析域
 zone "7.168.192.in-addr.arpa" IN {
         type master;
         file "7.168.192.zone";  # 7.168.192.zone(解析文件名)文件位于 /var/named/ 下
         allow-update { none; }; # 默认不允许slave从服务器同步
 };
 ​
 # 到/var/named 下创建并修改zone文件
 cd /var/named/
 ​
 # 创建两个配置文件
 touch test.com.zone  7.168.192.zone
 ​
 ## 编辑配置文件test.com.zone
 vim test.com.zone
 ​
 编辑内容:
 $TTL 1D
 @       IN SOA  test.com. root.test.com. (      # test.com 自己写的 如需修改两个一起
             2026061201  ; serial  版本号
             1D          ; refresh 更新时间
             1H          ; retry   重试时间
             1W          ; expire  终止时间
             3H )        ; minimum 默认DNS缓存时间
 ​
          IN  NS  dns.test.com.
 www      IN  A   192.168.7.21                   # 正向解析IP为域名
 dns      IN  A   192.168.7.21                   # 正向解析IP为域名
 ​
 ## 编辑配置文件7.168.192.zone
 vim 7.168.192.zone
 ​
 编辑内容:
 $TTL 1D
 @       IN SOA  test.com. root.test.com. (      # test.com 自己写的 如需修改两个一起
            2026061201 ; serial
            1D         ; refresh
            1H         ; retry
            1W         ; expire
            3H )       ; minimum
         NS      dns.test.com.
 21      PTR     www.test.com.                   # 反向解析域名为IP
 21      PTR     dns.test.com.                   # 反向解析域名为IP
 ​
 # 重启服务,检查dns是否生效
 systemctl restart named
 ​
 # 客户端DNS修改
 ## 修改网卡的dns设置为dns服务器:192.168.7.21或半图形化nmtui修改
 vim /etc/sysconfig/network-scripts/ifcfg-ens33
 ​
 DNS1=192.168.7.21
 ​
 # 重启网卡
 systemctl restart network
 ​
 # 查看成功与否(客户端)
 nslookup 域名

DNS:从服务器设置

 yum -y install bind*
 ​
 systemctl restart named
 systemctl enable named 
 ​
 # 查看named的主配置文件
 vim /etc/named.conf
 ###############################################
 listen-on port 53 { any; };  # 绑定的地址需要修改
 allow-query     { any; };  # 允许查询的服务地址
 ##############################################
 vim /etc/named.rfc1912.zones
 ##################################################################
 zone  "test.com" IN {
         type slave;                      #服务类型为从服务器
         masterfile-format text;          #主服务器同步过来的数据配置文件的格式为文本,不然会乱码
         masters { 192.168.8.133; };      #主服务器的IP地址是192.168.8.133
         file "slaves/test.com.zone";     #同步过来的数据配置文件放在/var/named/slaves文件夹下,并调用
 };        # 别忘记加 ;
 ​
 ​
 # 定义反向解析域
 zone "8.168.192.in-addr.arpa" IN {
         type slave;
         masterfile-format text;           #主服务器同步过来的数据配置文件的格式为文本,不然会乱码
         masters { 192.168.8.133; };       #主服务器的IP地址是192.168.8.133
         file "slaves/8.168.192.zone";     #同步过来的数据配置文件放在/var/named/slaves文件夹下,并调用
 };
 ##################################################################
 ​
 # 主服务器需要更改的地方
 vim /etc/named.rfc1912.zones
 ​
 # 定义正向解析域
 zone "test.com" IN {
     type master;
     file "test.com.zone";
     allow-update { 192.168.8.140; };    # 允许的同步的从服务IP
     also-notify { 192.168.8.140; };     # 动态通知从DNS更新
     notify yes;                         # 有更新会告知从服务器
 };
 ​
 # 定义反向解析域
 zone "8.168.192.in-addr.arpa" IN {
         type master;
         file "8.168.192.zone";             # 设定好ip的网络段,通过ip找域名
         allow-update { 192.168.8.140; };   # 允许的同步的从服务IP
         also-notify { 192.168.8.140; };    # 动态通知从DNS更新
         notify yes;                        # 有更新会告知从服务器
 };
 ​
 # 分别重启主从的DNS服务器
 systemctl restart named
 ​
 # 同步成功时从服务器的/var/named/slaves/目录下会同步生成zone文件。
 cd /var/named/slaves/
 ls
 ​
 # 修改网卡的dns设置为dns服务器:192.168.8.140
 vim /etc/sysconfig/network-scripts/ifcfg-ens33
 ​
 DNS1=192.168.8.140
 ​
 # 重启网卡
 systemctl restart network
 ​
 # 从服务器测试,然后停掉主服务器再测试。
 nslookup 域名
 ​
 > www.test.com
 Server:        192.168.8.140
 Address:    192.168.8.140#53
 ​
 Name:    www.test.com
 Address: 192.168.8.22

DHCP:动态主机配置协议

服务端给客户端自动分配IP地址、子网掩码、网关、DNS等内容;

 # 搭建DHCP(服务端)
 yum -y install dhcp         # 安装dhcp服务
 ​
 # 设置dhcp配置文件(设置的dhcp网段需要和自己网卡在一个网段)
 默认配置文件为空需要cp一份模板操作
 cp  /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example  /etc/dhcp/dhcpd.conf
 ​
 # 编辑配置文件
 vim /etc/dhcp/dhcpd.conf
 ​
 # 内容修改
  #第47行
     #设置dhcp网段和子网掩码,注意必须和本机IP的网段保持一致
     subnet 192.168.7.0 netmask 255.255.255.0 {
     #设置dhcp地址池范围
     range 192.168.7.100 192.168.7.200;
     #dns服务器IP地址
     option domain-name-servers 114.114.114.114;
     #设置网关
     option routers 192.168.7.2;
     #广播地址
     option broadcast-address 192.168.8.255;
     #设置默认租约时间:4小时
     default-lease-time 14400;
     #设置最大租约时间:8小时
     max-lease-time 28800;
 }
 ​
 # 固定IP方法
 ## 获取mac
 host prtsvr {           # prtsvr 起的主机名
 hardware ethernet       # 客户机的mac地址;
 fixed-address           # 固定IP地址;
 }
 ​
 # 启动dhcp服务
 systemctl start dhcpd
 ​
 # 查看启动进程
 netstat -anptu|grep dhcpd

HTTP/HTTPS

介绍

HTTP:超文本传输协议;

HTTPS:安全的超文本超传输协议,在http基础上增加了SSL/TLS加密层;使用CA证书,进行网站安全验证与数据加密;

HTTP特点:

  • 无状态 每次发送http请求都是独立的,没有关联,服务器不保留每次请求的状态;但是Session和Cookie基础可以实现保持用户的登录状态;

    • Session是服务器端的记录,Session_id,会话编号,会返回给客户端;

    • Cookie客户端将Session_id缓存在本地的Cookie中,再一次向服务端发送请求时会携带Session_id;

  • 文本协议:请求和响应使用文本形式;

    灵活性:支持不同的请求方式;

  • 请求方式:

    • GET:仅查询服务端的内容,不对服务端数据做任何修改;

    • POST:修改服务端内容时使用,例如注册、发表内容、上传文件等;

    • PUT:主要用于对已有数据的更新操作;

    • DELETE:删除服务端的数据;

    • OPTIONS:查询服务器支持的HTTP方法;

    • HEAD:仅查询HTTP响应头信息;

响应的状态码

  • 1xx(信息性状态码):

    • 100:继续(Continue)

    • 101:切换协议(Switching Protocols)

    • 102:处理中(Processing)

  • 2xx(成功状态码):

    • 200:成功(OK)

    • 201:已创建(Created)

    • 202:已接受(Accepted)

    • 204:无内容(No Content)

    • 206:部分内容(Partial Content)

  • 3xx(重定向状态码):

    • 301:永久重定向(Moved Permanently)

    • 302:临时重定向(Found)

    • 303:参见其他(See Other)

    • 304:未修改(Not Modified)

    • 307:临时重定向(保持方法不变)(Temporary Redirect)

    • 308:永久重定向(保持方法不变)(Permanent Redirect)

  • 4xx(客户端错误状态码):

    • 400:错误请求(Bad Request)

    • 401:未授权(Unauthorized)

    • 403:禁止访问(Forbidden)

    • 404:未找到(Not Found)

    • 405:方法不允许(Method Not Allowed)

    • 408:请求超时(Request Timeout)

    • 409:冲突(Conflict)

    • 410:已消失(Gone)

    • 413:请求体过大(Payload Too Large)

    • 414:URI 过长(URI Too Long)

    • 415:不支持的媒体类型(Unsupported Media Type)

    • 429:请求过多(Too Many Requests)

  • 5xx(服务器错误状态码):

    • 500:内部服务器错误(Internal Server Error)

    • 502:错误网关(Bad Gateway)

    • 503:服务不可用(Service Unavailable)

    • 504:网关超时(Gateway Timeout)

    • 505:HTTP 版本不支持(HTTP Version Not Supported)

记忆口诀(可选参考)

  • 1xx:收到了,继续

  • 2xx:成功了

  • 3xx:去别处找

  • 4xx:你错了

  • 5xx:我错了

静态网站与动态网站

  • 静态网站:由html、css、js、图片、视频构成的网站,修改网页内容时,需要修改源代码;

    • 优点:性能高,占用的资源少,访问速度快;

    • 缺点:不灵活,不适合变更频繁的网站;

  • 动态网站:服务端返回的响应信息是由后端程序动态生成的;浏览器上显示的内容是由前端程序+后端返回的数据组合生成;

    • 优点:灵活,快速更新,内容可以通过后台频繁更新;

    • 缺点:数据库容易成为性能瓶颈,架构更复杂,维护复杂;

简单静态网站

  • Apache (httpd):最经典的Web服务器,开源免费,兼容性好;

  • Nginx:高性能的Web服务器、反向代理、七层负载均衡服务器;

  • IIS(微软):Windows Server上自带的Web服务器;

  • Tomcat (java war包):主要用于Java Web项目的动态解析;

搭建局域网yum源

 # CentOS7
 yum install -y httpd
 ​
 # Ubuntu
 sudo apt install -y apache2
 ​
 # web源码默认路径
 /var/www/html               # html放进去可以在网页显示
 ​
 # 重启服务
 systemctl restart httpd
 ​
 # http配置文件的路径 
 /etc/httpd/conf/
 ​
 # http主配置文件
 /etc/httpd/conf/httpd.conf
 ​
 ## 修改文件为了安全备份一下
 cp /etc/httpd/conf/httpd.conf{,.bak}
 ​
 # 把注释和空行清除,只保留配置内容,追加到配置文件
 grep -Ev "^$|.*#" httpd.conf.bak > httpd.conf
 ​
 # 配置文件
 ServerRoot "/etc/httpd"             # 服务器根目录(存放配置、日志、模块等文件的基准路径)
 ​
 Listen 80                           # 监听 80 端口(HTTP 默认端口)
                                         
 ServerAdmin root@localhost          # 管理员邮箱地址(出现在错误页面等地方)
 ​
 DocumentRoot "/var/www/html"        # 网站文档根目录(默认访问的网页文件存放位置)
 ​
 <Directory "/var/www">              # 针对 /var/www 目录的访问控制配置
     AllowOverride None              # 禁止使用 .htaccess 覆盖配置
     Require all granted             # 允许所有客户端访问该目录
 </Directory>                        # 结束 /var/www 目录配置
 ​
 <Directory "/var/www/html">         # 针对 /var/www/html 目录(实际网站根目录)的访问控制配置
     Options Indexes FollowSymLinks  # Indexes:当目录下没有 index.html 时显示文件列表
                                     # FollowSymLinks:允许使用符号链接
     AllowOverride None              # 禁止使用 .htaccess 覆盖配置
     Require all granted             # 允许所有客户端访问
 </Directory>                        # 结束 /var/www/html 目录配置  
 ​
 注:常用修改:
 1.端口修改
 2.默认访问的网页文件存放位置
 3.目录的访问控制配置
 4.目录(实际网站根目录)的访问控制配置
 ​
 例:局域网挂载yum光盘
     1. Listen 80                            # 修改端口
     2. DocumentRoot "/media/cdrom"          # 修改访问的网页文件存放位置
     3. <Directory "/media">                 # 修改目录的访问控制配置
     4. <Directory "/media/cdrom">           # 实际网站根目录的访问控制配置
     
     注:文件存放位置、目录访问控制、实际目录访问控制,统一修改路径
     
 # 重启服务
 systemctl restart httpd
 ​
 # 网页不生效操作
 ## 进入目录
 cd /etc/httpd/conf.d/
 ​
 ## welcome.conf这个文件改名,停止生效
 mv welcome.conf{,.bak}
 ​
 ​
 # 去客户端配置yum
 cd /etc/yum.repos.d/
 ​
 # 把原有的配置文件改名,停止生效
 mv CentOS-Media.repo{,.bak}             # 本地配置文件
 mv CentOS-xxxx.repo{,.bak}              # xxxx其他yum
 ​
 # 新建yum配置文件
 ## 自定义一个yum配置文件名
 vim jywyum.repo                         # jywyum.repo (自己起的)
 ​
 ## 配置文件内容
 [local]
 name = "local"                          # 仓库介绍
 baseurl = http://192.168.7.21           # 服务端IP地址
 enabled = 1                            # 开启
 ​
 # 建立/更新缓存
 yum makecache   
 ​
 # 测试的时候请卸掉已挂载YUM源
 umount /dev/sr0 

Linux基础服务回顾

SSH:安全远程登陆,混合加密(对称、非对称加密),SFTP;

  • 默认端口:22

  • 安全设置:白名单、黑名单、密钥登陆;

  • scp:安全远程复制(全量复制)少量文件,同步频率较低使用;

FTP:文件传输协议,文件批量的上传、下载、删除、移动、改名;

  • 默认端口:21(传输命令) 20(传输数据)

  • 服务模式:主动(服务器连接客户端);

  • 被动模式:默认模式,客户端连接服务端;

  • 登录模式:

    • 匿名模式(共享模式,不安全不推荐);

    • 本地模式(使用Linux内部用户和密码登录,运维人员内部使用)SFTP(22);

    • 虚拟用户模式(自定义FTP使用的用户名、密码,只能上传、下载文件不能登录系统);

NTP:网络时间协议,互联网的基石;

  • NTP公共服务器、NTP中继服务器、NTP硬件服务器;

  • 建议使用计划任务(crontab)周期性同步时间;

  • 设置好上游时间服务器、局域网权限;

  • 端口 123/udp

NFS:网络文件系统(Linux之间共享目录);

  • C/S架构,一个服务端可以共享目录给多个客户端;

  • 目录、主机地址范围(*、子网、IP)、权限

    • ro、rw

    • sync、async

    • root_squash(客户端不允许使用root操作)、no_root_squash(允许root)

  • 端口:

    • rpcbind端口:111/tcp、111/udp

    • nfs端口:2049/tcp、2049/udp

SAMBA:使用SMB协议,实现Linux与Windows之间共享目录,NAS

  • 设置用户与权限

  • 性能不如NFS

  • 端口:139/tpc、445/tcp

Raync:命令模式、服务模式

  • 特点:增量备份,适合大量文件,频繁同步,速度快、自动压缩节省带宽;

  • 常用选项:-a(目录、保留权限、软连接等)、-v(显示详细信息)、-z(压缩传输)、-e(使用ssh端口加密传输)—delete(镜像同步、同步删除);

  • 手动同步:偶尔同步

  • 定时同步:规律同步,不是特别重要,但是每天更新的数据;

  • 实时同步:数据变更立即同步,对于重要数据使用;

DNS:域名解析服务,分布式的域名存储数据库;

  • 端口:53/udp

  • 软件包:bind-9,服务名:named

  • 正向解析(域名 -> IP)、反向解析(IP -> 域名)

  • 递归查询(客户端 -> 服务端)服务端如果没有数据回去其他服务端查询,最终返回结果;

  • 迭代查询(服务端 -> 服务端)服务端返回其他服务器的地址,不返回结果;

  • 域名解析记录类型:

    • A 域名 -> IPv4

    • AAAA 域名 -> IPv6

    • CNAME 域名 -> 域名

    • NS 返回DNS服务的域名

    • PTR 反向解析

    • TXT 返回文本内容