7月22日学习笔记 文件共享服务nfs,SAMBA文件共享与DNS域名服务

任务背景

由于业务驱动,为了提⾼⽤户的访问效率,现需要将原有web服务器上的静态资源
⽂件分离出来,单独保存到⼀台⽂件服务器上。

任务要求

1. ⼀台应⽤服务器web-server部署apache,静态⽹⻚资源存放在另外⼀台NFS服
务器上
2. 对于NFS服务器上保存的静态资源实⾏实时备份(inotify + rsync)

任务拆解

1. 共享存储服务器搭建NFS服务,为web服务器提供静态资源⽂件内容
创建共享⽬录来保存静态资源⽂件
发布该共享⽬录给web服务使⽤
2. ⼀台服务器搭建web服务,并==使⽤==(挂载)共享存储的静态资源

涉及知识点

==NFS服务的搭建(新知识点)==
mount命令挂载⽹络资源(掌握)
rsync⼯具实现对共享存储上的静态资源备份(旧知识点)

课程⽬标

了解NFS服务的应⽤场景及特点
==能够通过NFS服务实现⽂件共享(重点)==
能够使⽤mount命令==挂载==⽹络共享资源

理论储备

⼀、NFS服务介绍

NFS(Network File System)⽹络⽂件系统
   主要⽤于linux系统上实现⽂件共享的⼀种协议,其客户端主要是Linux
   没有⽤户认证机制,且数据在⽹络上传送的时候是明⽂传送,⼀般只能在局域网 中使⽤
   ⽀持多节点同时挂载及并发写⼊
   企业应⽤:为集群中的web server提供前端端存储
该服务包括的组件:
RPC(Remote Procedure Call Protocol):
     远程过程调⽤协议,它是⼀种通过⽹络从远程计算机程序上请求服务,不需要了解底层⽹络技术的协议。
     rpcbind //负责NFS的数据传输,远程过程调⽤ ==tcp/udp协议 端⼝ 111== nfs-utils //控制共享哪些⽂件,权限管理

⼆、NFS服务相关软件包

nfs-utils-1.2.3-26.el6.x86_64 nfs服务的⼀个脚本控制⼯具(服务端
与客户端)
nfs4-acl-tools-0.3.3-6.el6.x86_64 acl ⼯具包
nfs-utils-lib-1.1.5-4.el6.x86_64 nfs 库⽂件
[root@nfs-server ~]# rpm -q rpcbind
rpcbind-0.2.0-11.el6.x86_64
[root@nfs-server ~]# rpm -aq|grep ^nfs
nfs-utils-1.2.3-39.el6.x86_64
nfs-utils-lib-1.1.5-6.el6.x86_64
nfs4-acl-tools-0.3.3-6.el6.x86_64

三、配置⽂件解读

/etc/exports man 5 exports
共享⽬录 共享选项
/nfs/share *(ro,sync)
共享主机:
* :代表所有主机
192.168.0.0/24:代表共享给某个⽹段
192.168.0.0/24(rw) 192.168.1.0/24(ro) :代表共享给不同⽹段
192.168.0.254:共享给某个IP
*.itcast.com:代表共享给某个域下的所有主机
共享选项:
ro:只读
rw:读写
sync:实时同步,直接写⼊磁盘
async:异步,先缓存在内存再同步磁盘
anonuid:设置访问nfs服务的⽤户的uid,uid需要在/etc/passwd中存在
anongid:设置访问nfs服务的⽤户的gid
root_squash :默认选项 root⽤户创建的⽂件的属主和属组都变成nfsnobody,
其他⼈nfs-server端是它⾃⼰,client端是nobody。
no_root_squash:root⽤户创建的⽂件属主和属组还是root,其他⼈server端是
它⾃⼰uid,client端是nobody。
all_squash: 不管是root还是其他普通⽤户创建的⽂件的属主和属组都
是nfsnobody
说明:
anonuid和anongid参数和all_squash⼀起使⽤。
all_squash表示不管是root还是其他普通⽤户从客户端所创建的⽂件在服务器端的
拥有者和所属组都是nfsnobody;服务端为了对⽂件做相应管理,可以设置anonuid
和anongid进⽽指定⽂件的拥有者和所属组

任务解决方案

环境准备:
Web-server:10.1.1.11
NFS-server:10.1.1.12
详细步骤:
1. 搭建NFS-server1)创建共享⽬录及⽹站的静态资源⽂件mkdir /shareecho "hello 来到我的世界" > /share/index.html2)发布共享⽬录[root@nfs-server ~]# cat /etc/exports/share 10.1.1.0/24(ro)3)启动服务检查端⼝是否监听
[root@nfs-server ~]# service rpcbind start
Starting rpcbind: [
OK ]
[root@nfs-server ~]# service nfs start
Starting NFS services: [
OK ]
Starting NFS mountd: [
OK ]
Starting NFS daemon: [
OK ]
Starting RPC idmapd: [
OK ]
查看端⼝111是否监听:
[root@nfs-server ~]# netstat -nltpu|grep rpcbind2. 搭建web服务1)安装软件
[root@web-server ~]# rpm -q httpd
httpd-2.2.15-29.el6.centos.x86_642)挂载nfs-server端共享⽬录
[root@web-server ~]# mount -t nfs 10.1.1.12:/share
/var/www/html/media 
mount: wrong fs type, bad option, bad superblock on
10.1.1.1:/share,
missing codepage or helper program, or other error
(for several filesystems (e.g. nfs, cifs) you might
need a /sbin/mount.<type> helper program)
In some cases useful info is found in syslog - try
dmesg | tail or so
原因:客户端没有安装nfs相关的⼯具包
解决:
[root@web-server ~]# yum -y install nfs-utils nfs-utils-lib
nfs4-acl-tools
[root@web-server ~]# mount -t nfs 10.1.1.1:/share /var/www/html
或者
[root@web-server ~]# mount.nfs 10.1.1.1:/share /var/www/html/
[root@web-server ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_server-lv_root 18G 2.3G 15G 14% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 485M 33M 427M 8% /boot
/dev/sr0 4.2G 4.2G 0 100% /mnt
10.1.1.1:/share 18G 3.1G 14G 19%
/var/www/html3)在web-server端查看⾸⻚⽂件
[root@web-server ~]# ll /var/www/html/
total 4
-rw-r--r-- 1 root root 25 Dec 30 02:48 index.html4)启动Apache服务
[root@web-server ~]# service httpd start
3. 测试验证
Windows:
http://10.1.1.2
Linux:
# yum -y install elinks
# elinks http://10.1.1.2
客户端访问常⻅的问题:
[root@MissHou ~]# showmount -e 10.1.1.1
clnt_create: RPC: Port mapper failure - Unable to receive:
errno 113 (No route to host)
原因:
1. nfs-server端rpcbind服务没开
2. ⽹络问题
3. 防⽕墙问题
===============================================================
===================
环境:
nfs-server:10.1.1.1
backup:10.1.1.250
4. 实现nfs-server端的数据⽂件实时同步
1)安装inotify⼯具
[root@nfs-server ~]# pwd
/soft
[root@nfs-server ~]# tar xf inotify-tools-3.13.tar.gz
[root@nfs-server ~]# ls
inotify-tools-3.13 inotify-tools-3.13.tar.gz
[root@nfs-server ~]# cd inotify-tools-3.13
[root@nfs-server inotify-tools-3.13]# ls
aclocal.m4 config.guess configure depcomp
libinotifytools Makefile.in NEWS
AUTHORS config.h.in configure.ac INSTALL ltmain.sh
man README
ChangeLog config.sub COPYING install-sh Makefile.am
missing src
[root@nfs-server inotify-tools-3.13]# ./configure
[root@nfs-server inotify-tools-3.13]# make
[root@nfs-server inotify-tools-3.13]# make install
2)编写脚本
[root@nfs-server ~]# vim rsync.sh
#!/bin/bash
/usr/local/bin/inotifywait -mrq -e
modify,delete,create,attrib,move /share |while read events
do
rsync -a --delete /share 10.1.1.250:/backup/
echo "`date +%F\ %T`出现事件$events" >>
/var/log/rsync.log 2>&1
done
加可执⾏权限:
[root@nfs-server ~]# chmod +x rsync.sh
注意:在backup备份机器上创建/backup⽬录!!!
说明:解决不需要交互有两种⽅案,其⼀可以配置免密登录;其⼆可以在backup机搭
建rsync服务
3) 配置nfs-server的root⽤户免密码登录backup机器
[root@nfs-server ~]# ls ~/.ssh/
known_hosts
[root@nfs-server ~]# ssh-keygen
。。。
[root@nfs-server ~]# ls ~/.ssh/
id_rsa id_rsa.pub known_hosts
[root@nfs-server ~]# cd ~/.ssh/
[root@nfs-server .ssh]# ssh-copy-id -i id_rsa.pub
root@10.1.1.250
4)脚本放到后台去运⾏
[root@nfs-server ~]# ./rsync.sh &
5)测试验证
nfs-server端改变⽂件:
[root@nfs-server ~]# cd /share/
[root@nfs-server share]# mkdir aaa
[root@nfs-server share]# touch test{1..3}
查看⽇志:
[root@nfs-server ~]# tail -f /var/log/rsync.log
2018-12-30 07:31:36出现事件/share/ CREATE,ISDIR aaa
2018-12-30 07:32:15出现事件/share/ CREATE test1
2018-12-30 07:32:16出现事件/share/ ATTRIB test1
2018-12-30 07:32:16出现事件/share/ CREATE test2
2018-12-30 07:32:16出现事件/share/ ATTRIB test2
2018-12-30 07:32:16出现事件/share/ CREATE test3
2018-12-30 07:32:16出现事件/share/ ATTRIB test3
backup备份机查看数据同步情况:
[root@backup backup]# ll
total 8
drwxr-xr-x 2 root root 4096 Dec 30 07:31 aaa
-rw-r--r-- 1 root root 25 Dec 30 02:48 index.html
-rw-r--r-- 1 root root 0 Dec 30 07:32 test1
-rw-r--r-- 1 root root 0 Dec 30 07:32 test2
-rw-r--r-- 1 root root 0 Dec 30 07:32 test3
mount -t nfs mount.nfs
mount -t cifs mount.cifs

扩展:samba服务

⼀、samba介绍

   SMB(Server Message Block)协议实现⽂件共享,也称为CIFS(Common Internet File System )
   是Windows和类Unix系统之间共享⽂件的⼀种协议
   客户端==主要是Windows==;⽀持多节点同时挂载以及并发写⼊
   主要⽤于windows和Linux下的⽂件共享、打印共享
   实现==匿名与本地⽤户==⽂件共享
Samba服务的主要进程:
    smbd进程控制发布共享⽬录与权限、==负责⽂件传输== ==TCP 139 445==
    nmbd进程 ⽤于名称解析netbios ==UDP 137 138== ;基于NETBIOS协议 获得计算机名称——>解析为相应IP地址,实现信息通讯
     NetBIOS是Network Basic Input/Output System的简称,⼀般指⽤于局域⽹通信
的⼀套API

⼆、samba服务器搭建

[root@smb-server ~]# rpm -aq|grep ^samba
samba-3.6.9-164.el6.x86_64 服务端软件包
samba-common-3.6.9-164.el6.x86_64
samba-winbind-3.6.9-164.el6.x86_64
samba-client-3.6.9-164.el6.x86_64
samba-winbind-clients-3.6.9-164.el6.x86_64
samba4-libs-4.0.0-58.el6.rc4.x86_64
了解配置⽂件:
/etc/samba/smb.conf
[global] 全局选项workgroup = MYGROUP 定义samba服务器所在的⼯作组server string = Samba Server Version %v smb服务的描述log file = /var/log/samba/log.%m ⽇志⽂件max log size = 50 ⽇志的最⼤⼤⼩KBsecurity = user 认证模式:share匿名|user⽤户密
码|server外部服务器⽤户密码passdb backend = tdbsam 密码格式load printers = yes 加载打印机cups options = raw 打印机选项
[homes] 局部选项(共享名称)comment = Home Directories 描述browseable = no 隐藏共享名称writable = yes 可读可写
[printers] 共享名称comment = All Printers 描述path = /var/spool/samba 本地的共享⽬录browseable = no 隐藏guest ok = no ——> public = no 需要帐号和密码访问writable = no ——> read only =yes 不可写printable = yes 打印选项
[share]path = /dir1guest ok = nowritable = yes
需求:
搭建⼀个SAMBA服务,共享⼀个⽬录/samba/share,客户端使⽤user01/123通过
windows或者Linux可以在该⽬录⾥创建⽂件删除⽂件
smb-server:10.1.1.1
1. 关闭防⽕墙和selinux
2. 配置yum源
3. 软件三步曲
1)安装软件
[root@smb-server ~]# yum -y install samba
2)确认软件是否成功安装
[root@smb-server ~]# rpm -aq|grep ^samba
samba-winbind-3.6.9-164.el6.x86_64
samba-winbind-clients-3.6.9-164.el6.x86_64
samba-3.6.9-164.el6.x86_64
samba-common-3.6.9-164.el6.x86_64
3)查看软件的⽂件列表
/etc/init.d/nmbd
/etc/init.d/smbd
/usr/sbin/nmbd
/usr/sbin/smbd
[root@smb-server ~]# rpm -ql samba-common
/etc/samba/smb.conf 配置⽂件
4. 根据需求通过修改配置⽂件完成服务的搭建
1)创建⼀个共享⽬录
mkdir /samba/share -p
2) 修改配置⽂件
vim /etc/samba/smb.conf
...
[smb_share]
comment = samba service
path = /samba/share
guest ok = no
writable = yes
或者
[samba_share]
path = /samba/share
public = no
writable = yes
3) 创建⼀个本地⽤户并且加⼊到samba数据库⾥
[root@smb-server samba]# useradd user01
[root@smb-server samba]# id user01
uid=508(user01) gid=510(user01) groups=510(user01)
[root@smb-server samba]# which smbpasswd
/usr/bin/smbpasswd
[root@smb-server samba]# rpm -qf /usr/bin/smbpasswd
samba-common-3.6.23-51.el6.x86_64
[root@smb-server samba]# smbpasswd -a user01
New SMB password:
Retype new SMB password:
Added user user01.
[root@smb-server samba]# pdbedit -L
user01:508:
5. 启动服务
[root@smb-server samba]# /etc/init.d/nmb start
Starting NMB services: [
OK ]
[root@smb-server samba]# /etc/init.d/smb start
Starting SMB services: [
OK ]
6. 测试验证
windows:
Linux下:
查看samba服务共享资源:
[root@client ~]# smbclient -L 10.1.1.1 -U user01
Enter user01's password:
session setup failed: SUCCESS - 0
解决:
服务端修改hosts⽂件将IP和主机名⼀ ⼀对应起来
查看smb服务端共享的模块或者标签:
[root@client ~]# smbclient -L 10.1.1.1 -U user01
Enter user01's password:
-L: 列出
-U:指定⽤户查看
直接访问smb服务:
[root@client ~]# smbclient //10.1.1.1/smb_share -U user01
Enter user01's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-51.el6]
smb: \> ls
. D 0 Sat Sep 1
10:10:00 2018
.. D 0 Sat Sep 1
10:10:00 201835418 blocks of size 524288. 29675 blocks available
问题可以查看共享的⽂件,但是不能够创建⽂件
分析:
服务开放了写权限,但是⽬录本身没有对user01⽤户开发写权限
解决:
[root@smb-server samba]# setfacl -m u:user01:rwx /samba/share/
-m:修改权限
u:表示⽤户
g:表示组
[root@smb-server samba]# setfacl -m g:admin:rx /samba/share
挂载使⽤:
[root@client ~]# mount.cifs -o user=user01,pass=123
//10.1.1.1/samba/share /u01
没有mount.cifs命令,请安装cifs-utils-4.8.1-19.el6.x86_64
windows下如果⽆法访问,请查看是否开启了smb客户端程序
访问控制:
控制读写权限writable = yes/noreadonly = yes/no
如果资源可写,但只允许某些⽤户可写,其他都是只读
write list = admin, root, @staff(⽤户组)
read list = mary, @students
控制访问对象valid users = tom,mary,@itcastinvalid users = tom
注意:以上两个选项只能存在其中⼀个
⽹络访问控制:
hosts deny = 192.168.0. 拒绝某个⽹段
hosts allow = 192.168.0.254 允许某个IP
hosts deny = all 拒绝所有
hosts allow = 192.168.0. EXCEPT 192.168.0.254 允许某个⽹段,但拒
绝某个单个IP
注意:deny和allow同时存在,allow优先

三、总结

1. ftp 局域⽹和外⽹都可以
2. nfs 局域⽹ 挂载⽅式访问 mount.nfs
3. samba 局域⽹ 直接访问(smbclinet) 挂载的⽅式mount.cifs

我们做了什么

1.创建了2个虚拟主机
2.nfsserver 配置静态⽂件共享
1.停⽤防⽕墙和selinux
2.安装2个应⽤
    (1)rpcbind
    (2)nfs-utils
3.配置/etc/exports
hosts allow = 192.168.0. EXCEPT 192.168.0.254 允许某个⽹段,但拒
绝某个单个IP
注意:deny和allow同时存在,allow优先
/share
*(rw,sync|async)
4.启动服务
systemctl start rpmbind
systemctl start nfs
5.查看端⼝占⽤
netstat -lnput|grep 111
6.确定nfs服务区正常启动
3.webserver 发布web项⽬
1.停⽤防⽕墙和selinux
2.安装nginx
3.修改nginx默认的index.html,添加图⽚和视频
4.在nginx下的html⽬录中创建⼀个挂载⽬录 static
mkdir /usr/share/nginx/html/static/
5.挂载nfs服务
mount -t nfs 192.168.71.144:/share/
/usr/share/nginx/html/static/6.查看挂载⽬录,在webserver中看到nfs服务共享的数据,这个数据是连接,
不是真实的⽂件。和rsync的数据不同
7.⽂件的测试,读⽂件

备份静态⽂件

1.克隆⼀个备份主机 bakuphost
2.停⽤selinx和firewalld
3.⽀持rsync备份同步 安装rsync,bakuphost nfsserver两台主机上都应该安装
4.在nfs主机上安装inotify-tools监听/share⽬录
5.先同步⼀份⼀份到bakuphost主机的tmp⽬录下
6.需要输⼊密码才会同步过去,为了⾃动化,设置免密
      (1)ssh-keygen
      (2)ssh-copy-id root@192.168.71.146
      (3)测试7.bakhost主机上创建/bakup
8.nfsserver上创建⼀个脚本rn.sh
9.脚本代码
#!/bin/bash
inotifywait /share -mrq -e
modify,create,delete,attrs,move|while read events
dorsync -av --delete /share/ root@192.168.71.145:/bakup/# 也可以输出⽇志
done
10.给添加x权限,执⾏脚本

SAMBA文件共享与DNS域名服务

⼀、SAMBA⽂件共享

1、什么是SAMBA
SMB(Server Message Block)协议实现⽂件共享,也称为CIFS(Common
Internet File System )
是Windows和类Unix系统之间共享⽂件的⼀种协议
客户端==主要是Windows==;⽀持多节点同时挂载以及并发写⼊
主要⽤于windows和Linux下的⽂件共享、打印共享
实现==匿名与本地⽤户==⽂件共享
2、SAMBA主要进程
smbd进程
控制发布共享⽬录与权限、==负责⽂件传输== ==TCP 139
445==
nmbd进程 ⽤于名称解析netbios ==UDP 137 138== ; 基于NETBIOS协议获得
计算机名称——>解析为相应IP地址,实现信息通讯 NetBIOS是Network Basic Input/Output System的简称,⼀般指⽤于局域⽹通信的
⼀套API
3、SAMBA环境准备
第⼀步:从模板机中克隆⼀台Linux服务器,叫做SAMBA
第⼆步:更改主机名称与IP地址
# hostnamectl set-hostname samba.itcast.cn
# su
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=none
IPADDR=10.1.1.10
NETMASK=255.255.255.0
GATEWAY=10.1.1.2
DNS1=8.8.8.8
DNS2=114.114.114.114
# systemctl restart network
扩展:如果是多张⽹卡,建议使⽤ifdown ens33以及ifup ens33实现重启⽹络操作
第三步:关闭防⽕墙与SELinux
# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0
# vim /etc/selinux/config
SELINUX=disabled
第四步:配置yum源
# yum clean all
# yum makecache
4、SAMBA软件安装(服务器搭建)
# yum install samba -y
# rpm -qa |grep ^samba
SAMBA也是⼀个C/S架构的软件,Client主要是Windows
5、了解smb的配置⽂件
# vim /etc/samba/smb.conf
[global] 全局选项workgroup = MYGROUP 定义samba服务器所在的⼯作组server string = Samba Server Version %v smb服务的描述log file = /var/log/samba/log.%m ⽇志⽂件max log size = 50 ⽇志的最⼤⼤⼩KBsecurity = user 认证模式:share匿名|user⽤户密
码|server外部服务器⽤户密码passdb backend = tdbsam 密码格式load printers = yes 加载打印机cups options = raw 打印机选项
[homes] 局部选项(共享名称)comment = Home Directories 描述browseable = no 隐藏共享名称writable = yes 可读可写
[printers] 共享名称comment = All Printers 描述path = /var/spool/samba 本地的共享⽬录browseable = no 隐藏guest ok = no ——> public = no 需要帐号和密码访问writable = no ——> read only =yes 不可写printable = yes 打印选项
[share]path = /dir1guest ok = nowritable = yes
6、SAMBA综合案例
搭建⼀个SAMBA服务,共享⼀个⽬录/samba/share,客户端使⽤user01/123通过
windows或者Linux可以在该⽬录⾥创建⽂件删除⽂件
第⼀步:SAMBA服务器环境准备
更改主机名称、IP地址、关闭防⽕墙、SELinux、配置YUM源
第⼆步:安装SAMBA软件
# yum install samba -y
# rpm -aq|grep ^samba
第三步:查询SAMBA⽣成⽂件列表(rpm -ql)
# rpm -ql samba
/usr/sbin/smbd
/usr/sbin/nmbd
/usr/lib/systemd/system/smb.service
/usr/lib/systemd/system/nmb.service
第四步:在服务器端创建⼀个共享⽬录
# mkdir /samba/share -p
第五步:编辑/etc/smb.conf配置⽂件,实现SAMBA共享
# vim /etc/samba/smb.conf
...
[smb_share]
comment = samba service
path = /samba/share
guest ok = no
writable = yes
或者
[samba_share]
path = /samba/share
public = no
writable = yes
备注:guest ok === public
第六步:创建⼀个user01⽤户,然后添加到samba认证中,设置密码为123
# useradd user01
# smbpasswd -a user01
New SMB password:123
Retype new SMB password:123
Added user user01.
以上操作完成后,则SAMBA系统中增加了⼀个user01的账号以及123的密码
第七步:启动nmb与smb服务
# systemctl start nmb
# systemctl start smb
第⼋步:基于Windows或Linux实现⽂件共享
Windows:
① ⾸先安装SAMBA⽀持Windows + X,选择控制⾯板
②找到Windows功能选项
③安装SAMBA功能(客户端)
④进⼊计算机(我的电脑),找到映射⽹络驱动器
设置SAMBA服务器的地址信息:
10.1.1.10 => Linux服务器的IP地址
smb_share => SAMBA标签
                 挂载完成后,⽬录不可写?答:主要原因在于/samba/share⽬录没有写⼊权限
# setfacl -m u:user01:rwx /samba/share
第九步:基于Linux或Linux实现⽂件共享
yum-yinstallsamba-client
smbclient-L10.1.1.10-Uuser01
使⽤smbclient查看⽬录信息
# smbclient //10.1.1.10/smb_share -U user01
把SAMBA挂载到Linux系统(类似NFS)
yum -y install cifs-utils
# mkdir /u01
# mount.cifs -o user=user01,pass=123 //10.1.1.10/smb_share /u01
访问控制说明:
7、总结
1. ftp 局域⽹和外⽹都可以
2. nfs 局域⽹挂载⽅式访问 mount.nfs 侧重于Linux与Linux之间
3. samba 局域⽹直接访问(smbclinet)挂载的⽅式mount.cifs 侧重于Windows与Linux之间

⼆、DNS域名管理系统

1、任务背景
解析内⽹域名,能够访问内⽹web应⽤。把www.zhangmin.cluster解析到内⽹服
务器IP
2、DNS概述
DNS(domain name system )域名管理系统
域名:
由特定的格式组成,⽤来表示互联⽹中==某⼀台计算机或者计算机组的名称==,能
够使⼈更⽅便的访问互联⽹,⽽不⽤记住能够被机器直接读取的IP地址。
计算机 => IP地址,互联⽹中的计算机都是通过IP地址进⾏互相访问的。(IP地址过
于复杂)
域名:代替IP实现计算机的访问(⾼级 => 上层应⽤,底层还是IP地址)
每个域名 => DNS服务器 => 对应的IP地址
☆ DNS的正向解析
域名的==正向解析==
将主机域名转换为对应的IP 地址,以便⽹络程序能够通过主机域名访问到对应的服
务器主机
域名——>IP
A记录
☆ DNS的反向解析
域名的==反向解析==
将主机的IP地址转换为对应的域名,以便⽹络(服务)程序能够通过IP地址查询到
主机的域名
IP——>域名
PTR记录
3、DNS的结构
域名:www.itheima.com
DNS结构:www.itheima.com. => 从右向左解析
☆ 根域(.)
在整个 DNS 系统的最上⽅⼀定是 . (⼩数点) 这个 DNS 服务器 (称为 root),也
叫”根域“。
根域 (13台 全世界只有13台。1个为主根服务器,放置在美国。其余12个均为
辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于
⽇本。)
☆ ⼀级域名<顶级域|国家域>
com net edu gov org cc io| cn uk us ru ja ko
.com : 商业公司
.net :互联⽹公司
.edu :教育(中⼩学、⾼中、⼤学...)
.gov :政府.io :存储设备,redis
.cn :中国域名(国家域)
☆ ⼆级域名(⾃⼰购买管理)
qq.com. baidu.com. google.com.
☆ 域名机构
收费(新⽹|万⽹)
⽼牌免费域名:TK顶级域名、TK域名DNS、TK域名商
4、DNS⼯作原理
如果询问⼀次得到结果 递归查询 C-S
如果询问多次得到结果 迭代查询 S-S
⼀次递归 多次迭代
5、dig⼯具使⽤编号
主机名称
IP地址
备注信息
1
client
x.x.x.x
client客户端,⽤于测试
2
dns
x.x.x.x
dns服务器,⽤于实现域名解析
3
web
x.x.x.x
web服务器,⽤于搭建内部web服务
5、dig⼯具使⽤
# dig +trace www.itcast.cn 追踪DNS的解析过程
# dig www.itcast.cn 正向解析
# dig -x IP地址 反向解析

三、DNS服务器的搭建

1、DNS服务器端软件
DNS 的==域名解析==都是 ==udp/53== . 主从之间的==数据传输==默认使
==tcp/53==
DNS服务器端软件:
==Bind==是⼀款开放源码的DNS服务器软件,Bind由美国加州⼤学Berkeley(伯克
利)分校开发和维护的,全名为Berkeley Internet Name Domain它是⽬前世界上使
⽤最为⼴泛的DNS服务器软件,⽀持各种unix平台和windows平台。BIND现在由互
联⽹系统协会(Internet Systems Consortium)负责开发与维护。
2、DNS服务器搭建
☆ 第⼀步:环境准备
① 更改主机名称与IP地址
# hostnamectl set-hostname client
# hostnamectl set-hostname dns
# hostnamectl set-hostname web
# su
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=none
IPADDR=10.1.1.11/10.1.1.12/10.1.1.13
更改UUID编号的后3位,必须是唯⼀的
② 使⽤MX进⾏连接
③ 关闭防⽕墙与SELinux
# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0
# vim /etc/selinux/config
SELINUX=disabled
④配置YUM源(有⽹配置公⽹YUM源、⽆⽹就配置光盘或⾃建YUM源)
# yum clean all
# yum makecache
☆ 第⼆步:安装DNS软件
DNS服务器:
# yum install bind -y
安装完毕后,可以使⽤rpm -q查询是否安装成功:
# rpm -q bind
# rpm -ql bind
# ⽇志轮转⽂件
/etc/logrotate.d/named
# 配置⽂件⽬录
/etc/named
# 主配置⽂件
/etc/named.conf
# zone⽂件,定义域
/etc/named.rfc1912.zones
# 服务管理脚本
/usr/lib/systemd/system/named.service
# ⼆进制程序⽂件
/usr/sbin/named
# 检测配置⽂件
/usr/sbin/named-checkconf
# 检测域⽂件
/usr/sbin/named-checkzone
# 根域服务器
/var/named/named.ca
# 正向解析区域⽂件模板
/var/named/named.localhost
# 反向解析区域⽂件模板
/var/named/named.loopback
# dns服务器下载⽂件的默认路径
/var/named/slaves
# 进程pid
/var/rum/named
find主要⽤来搜索计算机中的⽂件,rpm主要⽤来检查计算机中是否安装过
某个软件
☆ 第三步:DNS正向解析配置(域名=>IP)
/etc/named.conf主要配置访问权限控制(哪些IP或哪些主机可以访问DNS服务器)
/etc/named.rfc1912.zones主要定义域名如何解析(正向解析),解析到具体哪个IP
地址
① 对named.conf以及named.rfc1912.zones进⾏备份
cp /etc/named.conf /etc/named.conf.bak
cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bak
② named.conf主配置⽂件详解(访问权限控制)
# vim /etc/named.conf
添加任何主机都可以访问的权限:
③ zones⼦配置⽂件详解(域名应该指向哪个IP地址)
# vim /etc/named.rfc1912.zones
...
zone "zhangmin" IN {
type master;
file "zhangmin.zone";
allow-update { none; };
};

         扩展 => vim => :19,23 co 42,把19-23⾏,copy到42⾏的后⾯

④ 在/var/named⽬录创建itcast.cluster.zone⽂件定义正向解析
# cd /var/named
# cp -p named.localhost itcast.cluster.zone
扩展:-p代表复制⽂件时保留⽂件的原有属性
⑤ 编辑itcast.cluster.zone⽂件,定义域名的指向
# vim itcast.cluster.zone

扩展:zone⽂件的格式说明
zone⽂件详解
# $TTL 缓存的⽣存周期
# @ = zonename = itcast.com 当前域
# IN 互联⽹
# SOA 开始授权
# NS dns服务端 nameserver
# A ipv4 正向
# AAAA IPV6
# CNAME 别名
# MX 邮件交互记录 5 数字代表优先级 数字越⼩优先级越⾼
# 0 ; serial 更新序列号
# 1D ; refresh 更新间隔(从服务器下载数据)
# 1H ; retry 失败重试
# 1W ; expire 区域⽂件的过期时间
# 3H ) ; minimum 缓存的最⼩⽣存周期
# D Day、H Hour、W Week
☆ 第四步:检查named.conf与zones⽂件
# named-checkconf /etc/named.conf
# named-checkconf /etc/named.rfc1912.zones
检查itcast.cluster.zone⽂件
# cd /var/named
# named-checkzone itcast.cluster.zone itcast.cluster.zone
☆ 第五步:启动DNS服务(named)
# systemctl restart named
# netstat -tnlp |grep named
3、Web服务搭建
# yum install httpd -y
# systemctl start httpd
# echo 'DNS Test ...' > /var/www/html/index.html
4、测试DNS服务器的正向解析
Client:客户端服务器操作
☆ 添加DNS服务器
# 临时
echo 'nameserver 10.1.1.12' > /etc/resolv.conf
注:电脑重启,⽹络刷新restart network,VMware挂起,临时DNS都会失效
# 永久添加
vim /etc/sysconfig/network-scripts/ifcfg-ens33
DNS=10.1.1.12
☆ 使⽤nslookup检测正向解析是否⽣效
# nslookup www.itcast.cluster
☆ 使⽤elinks命令⾏浏览器或curl来实现访问
# yum install elinks -y
# elinks
输⼊www.itcast.cluster
# curl http://www.itcast.cluster

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/384709.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3相比于Vue2进行了哪些更新

1、响应式原理 vue2 vue2中采用 defineProperty 来劫持整个对象&#xff0c;然后进行深度遍历所有属性&#xff0c;给每个属性添加getter和setter&#xff0c;结合发布订阅模式实现响应式。 存在的问题&#xff1a; 检测不到对象属性的添加和删除数组API方法无法监听到需要对…

监控Windows文件夹下面的文件(C#和C++实现)

最近在做虚拟打印机时&#xff0c;需要实时监控打印文件的到达&#xff0c;并移动文件到另外的位置。一开始我使用了线程&#xff0c;在线程里去检测新文件的到达。实际上Windows提供了一个文件监控接口函数ReadDIrectoryChangesW。这个函数可以对所有文件操作进行监控。 ReadD…

JS+H5在线文心AI聊天(第三方接口)

源码在最后面 调用的不是文心官方接口 可以正常聊天 有打字动画 效果图 源代码 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-s…

目标检测自顶向下入门

最近在学习Yolo和OpenCV这些计算机视觉的相关领域&#xff0c;把深度学习啃了个大概&#xff0c;准备着手学习一下Yolov5&#xff0c;趁着这个机会入门一下目标检测这个领域&#xff0c;也算是自顶向下地学习一遍吧。 目标检测 什么是目标检测 物体识别&#xff08;Object de…

【Emacs有什么优点,用Emacs写程序真的比IDE更方便吗?】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

X-AnyLabeling标注软件使用方法

第一步 下载 官方X-AnyLabeling下载地址 github&#xff1a;X-AnyLabeling 第二步 配置环境 使用conda创建新的虚拟环境 conda create -n xanylabel python3.8进入环境 conda activate xanylabel进入X-AnyLabeling文件夹内&#xff0c;运行下面内容 依赖文件系统环境运行环…

多多OJ评测系统 在前端脚手架Vue-Cli中设置页面路由

目录 设置页面路由 我们把菜单上的路由改成读取路由文件 设置成export 导出路由 在刚刚的原始路由 index.ts中导入就行了 在这边引入我们的路由文件 我们之后点击菜单 我们的路由文件是这样的 但是没有跳转 写一下事件 接下来要同步路由到菜单项 自己定义监听函数 …

Hadoop3.3.5的安装与单机/伪分布式配置

文章目录 一、安装须知二、安装jdk三、安装shh四、安装配置hadoop五、运行hadoop 一、安装须知 本次安装的Hadoop版本为hadoop3.3.5。 在这之前完成了VMware虚拟软件的安装&#xff0c;并安装了Ubuntu22.04&#xff0c;在这基础上进行相关配置。 二、安装jdk 在Ubuntu中使用…

MICA:面向复杂嵌入式系统的混合关键性部署框架

背景 在嵌入式场景中&#xff0c;虽然 Linux 已经得到了广泛应用&#xff0c;但并不能覆盖所有需求&#xff0c;例如高实时、高可靠、高安全的场合。这些场合往往是实时操作系统的用武之地。有些应用场景既需要 Linux 的管理能力、丰富的生态&#xff0c;又需要实时操作系统的高…

计科录取75人!常州大学计算机考研考情分析!

常州大学&#xff08;Changzhou University&#xff09;&#xff0c;简称“常大”&#xff0c;位于江苏省常州市&#xff0c;是江苏省人民政府与中国石油天然气集团有限公司、中国石油化工集团有限公司及中国海洋石油集团有限公司共建的省属全日制本科院校&#xff0c;为全国深…

SQL 语句中的字符串有单引号导致报错的解决

1.问题 SQL 语句执行对象中&#xff0c;本内容的字符串内含有单引号导致查询或插入数据库报错&#xff0c; 例如 str 关键字 AND 附近有语法错误 2.解决 字符串中的 ’ → 替换 ”&#xff0c;则查询语句成功&#xff0c;故程式中要备注替换 单引号。

【科研绘图】记录一次论文结果复现

复现原论文中的图片是科研的基本功之一&#xff0c;它不仅验证了研究结果的可靠性&#xff0c;确保了科学工作的准确性和可重复性&#xff0c;还深刻地评估了方法的有效性&#xff0c;体现了对原始研究的尊重和对科学过程的严谨态度。这个过程不仅提高了研究的透明度&#xff0…

Mac 中安装内网穿透工具ngrok

ngrok 是什么&#xff1f; Ngrok 是一个网络工具&#xff0c;主要用于在网络中创建从公共互联网到私有或本地网络中运行的web服务的安全隧道。它充当了一个反向代理&#xff0c;允许外部用户通过公共可访问的URL访问位于防火墙或私有网络中的web应用程序或服务。Ngrok 特别适用…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十九章 等待队列

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

Java数据结构与算法--链表(Linked List)

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;Java SE关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 深入了解链表&#xff1a; 链表是一种常见的数据结构&#xff0c;它由一系列节点…

【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !

目录 C语言指针精讲1. 什么是指针&#xff1f;1.1 指针的内存模型1.1.1 指针演示输出 1.2 指针运算1.2.1 指针算术运算输出1.2.2 指针与数组的关系输出 1.3 指针类型1.3.1 不同类型的指针示例输出1.3.2 void 指针输出 1.4 指针与内存管理动态内存分配输出 1.5 指针与内存泄漏1.…

Android进阶之NDK开发,保姆级教程

目录 前言NDK下载CMake文件创建指定ABI架构编写CMake文件编写JNI方法Java调用CC调用Java 生成JNI头文件实现对应C方法编译so文件编写demo验证运行效果总结 前言 作为Android应用开发从业者来说&#xff0c;掌握NDK开发是必备技能之一&#xff0c;本文将从NDK环境下载&#xff…

均匀圆形阵列原理及MATLAB仿真

均匀圆形阵列原理及MATLAB仿真 目录 前言 一、均匀圆阵原理 二、圆心不存在阵元方向图仿真 三、圆心存在阵元方向图仿真 四、MATLAB仿真代码 总结 前言 本文详细推导了均匀圆形阵列的方向图函数&#xff0c;对圆心不放置阵元和圆心放置阵元的均匀圆形阵列方向图都进行了仿…

PySide(PyQt)的QPropertyAnimation(属性动画)

学不完&#xff0c;根本学不完:(&#xff0c;感觉逐渐陷入了学习深渊。。。 QPropertyAnimation 是 PySide(PyQt) 中一个用于在时间轴上平滑地改变对象属性的类。它常用于制作动画效果&#xff0c;比如移动、缩放或改变透明度等。 基本概念 QPropertyAnimation 是 Qt …

03。正式拿捏ArkTS语言第一天

1, 打印日志命令 &#xff1a; console.log() 2, 三种基本数据类型&#xff1a; number 数字类型 &#xff08;数字&#xff09; string 字符串类型&#xff08;例如&#xff1a;“我是字符串”&#xff09; boolean 布尔类型 (true 或者 false) ***…