Linux常用服务

Linux 常用知识

1.SSH

# 查看、连接和重启
systemctl list-unit-files|grep sshd
systemctl enabled sshd
systemctl restart sshd
ssh user@192.168.0.63 -p22
ssh -l user 192.168.0.63

# 修改配置文件
vim sshd_config

#需要注意的内容
Port 22 # 都会改成其它端口
ListenAddress 0.0.0.0
LoginGraceTime 2m #等待登录时间
PermitRootLogin yes #都会改成no
AuthorizedKeysFile | .ssh/authorized_keys
PasswordAuthentication yes #密码验证,都会改成no
PermitEmptyPasswords no
PrintMotd yes #打印一个登录信息
PrintLastLog yes #打印最后一次登录日记,如果IP地址是其它地方的地址,可以知道服务器被黑了
UseDNS yes #可改可不改,什么情况下改呢?如果验证密码登录时,可改成no,提高登录速度

#修改文件添加内容,添加一句内容显示在登录信息中,起警醒作用
vim /etc/motd

#生成私钥和公钥,涉及到密钥的目录都设置成点开头
ssh-keygen

#把生成的公钥 id_rsa.pub 传递到服务器上/root/.ssh/authorized_keys,文件权限要600或者700
#设置后登录不用密码,以后需要这样设置ssh
ssh-copy-id -i user@192.168.0.63
#如果不是22端口
ssh-copy-id -i ~/.ssh/id_rsa.pub '-p 端口号 user@192.168.0.63'

2.防止 sshd 暴力破解

2.1.方法1:安装 fail2ban 软件

tar xf fail2ba-0.8.14.tar.gz -C /user/local/
cd fail2ba-0.8.14

#查看
python -V
yum list all|grep python

#安装
python setup.py install

#进入目录,查找启动文件
grep chkconfig ./* -R --color

#进入目录,找到启动文件
cd files/
cp redhat-initd /etc/rc.d/init.d/fail2ban
chkconfig --add fail2ban

#设置条件:ssh 远程登录5分钟内3次密码验证失败,禁止用户 ip 访问主机 1 个小时,1 个小时该限制自动解除,用户可重新登录
vim jail.conf

#修改内容,94行
[ssh-iptables]
enabled = true
logpath = /var/log/secure
maxretry = 3
findtime = 300
bantime = 3600
action = 将 dest 改成自己的邮箱地址,可发送邮件给自己(前提是系统安装了sendmail)

#查看sshd日志 
tailf -n100 /var/log/secure

#修改后启动
systemctl start fail2ban
systemctl status fail2ban

#看 iptables 加了防火墙链
iptables -nvL

#查看是否拦截
fail2ban-client status
fail2ban-client status ssh-iptables

#如果把自己拦截了,前提是你可以用其他账号登录,不然你只能等,登录了后清空日志
#fail2ban默认拦截22端口,如果服务器的 sshd 不是 22 端口,就要该 fail2ban 的配置文件vim jail.conf 和 action.d/iptables.conf
vim jail.conf

#修改内容
action = 将 port 改成服务器对应端口

#修改 iptables.conf
vim iptables.conf

#修改内容
port = 将 port 改成服务器对应端口

2.2.方法2:编写脚本,加入到定时任务,每隔几分钟运行一次(推荐 

#!/bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /root/satools/black.txt
DEFINE="10"
for i in `cat /root/satools/black.txt`
do
	IP=`echo $i|awk -F='{print $1}'`
	NUM=`echo $i|awk -F='{print $2}'`
	if [ $NUM -gt $DEFINE ];then
		grep $IP /etc/hosts.deny >/dev/null
		if [ $? -gt 0 ];then
			echo "sshd:$IP" >> /etc/hosts.deny
		fi
	fi
done

2.3.方法3:denyhosts (推荐

# 步骤1:下载
# DenyHosts官网:http://denyhosts.sourceforge.net/

# 步骤2:解压并安装
# 官网下载包安装
tar zxvf DenyHosts-2.6.tar.gz
cd DenyHosts-2.6
yum install python -y
python setup.py install
cd /usr/share/denyhosts/   
cp denyhosts.cfg-dist denyhosts.cfg      //配置文件
cp daemon-control-dist daemon-control    //启动文件
chown root daemon-control
chmod 700 daemon-control

# yum安装
[root@www ~]#  yum install -y denyhosts

# 步骤3:配置文件内容说明
vi denyhosts.cfg

# 内容如下
SECURE_LOG = /var/log/secure   #ssh日志文件
# format is: i[dhwmy]
# Where i is an integer (eg. 7)
# m = minutes
# h = hours
# d = days
# w = weeks
# y = years
#
# never purge:
PURGE_DENY = 50m               #过多久后清除已阻止IP
HOSTS_DENY = /etc/hosts.deny   #将阻止IP写入到hosts.deny
BLOCK_SERVICE = sshd           #阻止服务名
PURGE_THRESHOLD =              #定义了某一IP最多被解封多少次。某IP暴力破解SSH密码被阻止/解封达到了PURGE_THRESHOLD次,则会被永久禁止;
DENY_THRESHOLD_INVALID = 1     #允许无效用户登录失败的次数
DENY_THRESHOLD_VALID = 10      #允许普通用户登录失败的次数
DENY_THRESHOLD_ROOT = 5        #允许root登录失败的次数
WORK_DIR = /usr/local/share/denyhosts/data #将deny的host或ip纪录到Work_dir中
DENY_THRESHOLD_RESTRICTED = 1 #设定 deny host 写入到该资料夹
LOCK_FILE = /var/lock/subsys/denyhosts #将DenyHOts启动的pid纪录到LOCK_FILE中,已确保服务正确启动,防止同时启动多个服务。
HOSTNAME_LOOKUP=NO            #是否做域名反解
ADMIN_EMAIL =                 #设置管理员邮件地址
DAEMON_LOG = /var/log/denyhosts #DenyHosts日志位置

# 步骤4:启动自启动服务
# ./daemon-control start #启动DenyHosts
# ln -s /usr/share/denyhosts/daemon-control /etc/init.d   //对daemon-control进行软连接,方便管理
# /etc/init.d/daemon-control start           //启动denyhosts
# chkconfig daemon-control on                //将denghosts设成开机启动
或者
# vi /etc/rc.local --------->加入下面这条命令:
/usr/share/denyhosts/daemon-control start

#步骤5:以后可以直接查看hosts.deny文件就能找到攻击ip的记录
vi /etc/hosts.deny 

2.4.方法4:通过 pam 模块来防止暴力破解 ssh,防护并不是太安全

cd /etc/pam.d/
vim sshd
#内容修改,第二行添加
auth required pam-tally2.so deny=3 unlock_time=600 even_deny_root root_unlock_time=1200 
#命令如下
#查看某一用户错误登陆次数:
pam_tally –-user
#例如,查看work用户的错误登陆次数:
pam_tally –-user work
#清空某一用户错误登陆次数:
pam_tally –-user –-reset
#例如,清空 work 用户的错误登陆次数,
pam_tally –-user work –-reset 

3.RSYNC

###################################################
# RSYNC
# Remote Sync 远程同步 高效,一定要结合 shell
# https://rsync.samba.org/
#
# 查看版本
rsync --version
#
# 与 scp 的比较:scp 无法备份大量数据,类似 windows 的复制
# rsync 可以边复制,边统计,边比较
# scp 用法
scp file.rar user@192.168.0.64:/tmp
scp -r ./dir user@192.168.0.64:/tmp
#
# rsync 优点
# 1.可以镜像保存整个目录树和文件系统
# 2.可以很容易做到保持原来文件的权限、时间、软硬链接等等
# 3.无须特殊权限即可安装
# 4.快速:第一次同步时会复制全部内容,但在下一次只传输修改过的文件
# 5.压缩传输
# 6.安全
# 7.选择性保持
#
# 常见备份分类
# 完整备份、差异备份、增量备份
#
# 端口:873
#
# 名词解释
# 1.发起端
# 2.备份源
# 3.服务端
# 4.客户端
#
# 推 push: 一台主机负责把数据传送给其他主机,服务器开销很大,比较适合后端服务器少的情况
# 拉 pull: 所有主机定时去找一主机拉数据,可能就会导致数据缓慢 
# 推: 目的主机配置为 rsync 服务器,源主机周期性的使用 rsync 命令吧要同步的目录推过去(需要备份的机器是客户端, 存储备份的机器是服务端)
# 拉: 源主机配置为 rsync 服务器,目的主机周期性的使用 rsync 命令把要同步的目录拉下来(需要备份的机器是服务端,存储备份的机器是客户端)
#
# Xinetd 管理 Rsync 工作原理
# 使用 rsync 来同步是先通过 xinetd 监听 873 号端口,如果 rsync 进来的是 873 端口,那么 xinetd 就会通知它所管辖的 rsync 服务来做回应,接下来就是 rsync 两服务于之间的通讯
# 
# 使用推模式,63 和 64 两台主机,需要在目标机器上安装 rsync 服务端
#
#
# 配置 64 主机 备份
#
# 安装
yum -y install xinetd rsync
# 启动
rsync --daemon
# 检查
netstat -antup|grep 873
# rsync 命令
# -a 权限保存模式 相当于 -rlptgo
# -z 压缩模式
# -v 复杂的输出信息
# --delete 删除那些目标位置有的文件而备份源没有的文件
# --password-file=FILE 从 FILE 中得到密码
# 常用的 -avz
#
# 添加用户
useradd rget1;echo rget1:123456|chpasswd
# 创建目录
mkdir /web-back
ll -d /web-back/
# 赋予权限
chown rget1:rget1 -R /web-back/
# 63 主机传完后查看
ll /web-back/html/
#
#
# 配置 63 主机 推文件
#
# 添加用户
useradd rget1;echo rget1:123456|chpasswd
# 创建目录
mkdir -p /var/www/html
ll -d /var/www/html/
# 在不改变当前目录用户权限的基础上,给目录授予单独用户的权限,setfacl
setfacl -R -m user:rget1:rwx /var/www/html 
setfacl -R -m default:rget1:rwx /var/www/html
getfacl /var/ww/html/
# 复制一些数据
cp -r /boot/* /var/www/html/
cd /var/www/html
ll
# 进行文件备份,不建议添加 --delete,尤其在生产环境中不要加
rsync -avz --delete /var/www/html rget1@192.168.0.64:/web-back
# 只传 html 目录下文件目录,不传目录 html
rsync -avz --delete /var/www/html/ rget1@192.168.0.64:/web-back
#
#
# 使用非系统用户备份文件
# 使用系统配置文件 /etc/rsyncd.conf 来备份数据,创建备份账户,最后把 rsync 以 deamon 方式运行
# 配置文件分为两部分:全局参数和模块参数
# 全局参数:对 rsync 服务器生效,如果模块参数和全局参数冲突,冲突的地方模块参数生效
# 模块参数:定义需要通过 rsync 输出的目录定义的参数
# 常见的全局参数:
# port、uid、gid、max connections、lock file、motd file、log file、hosts allow、
# Comment、Path(备份的目录树结构)、read only、exclude、include from、auth users(认证用户)、
# secrets file、hosts allow、hosts deny、list、timeout、address 
# 
#
# 配置 64 主机 备份
#
# 修改配置文件(Centos 7.0 才有这个文件)
vim /etc/rsync.conf 
# 内容如下
uid = root
gid = root
address = 192.168.0.64
port = 873
hosts allow = 192.168.0.0/24
use chroot = yes
max connections = 5
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
motd file = /etc/rsyncd.motd

[wwwroot]
path = /web-back/
comment = xuegod rsyncd server
read only = false
list = yes
auth users = rsyncuser
secrets file = /etc/rsync.passwd
# 创建文件 rsync.motd
echo "Welcome to Backup Server" > /etc/rsyncd.motd
# 创建密码文件
vim /etc/rsync.passwd
# 内容如下
rsyncuser:password123
# 设置权限
chmod 600 /etc/rsync.passwd
# 重启服务
systemctl start xinetd.service
systemctl enable xinetd.service
# 检查
ps aux|grep rsync
# 启动 
rsync --daemon --config=/etc/rsyncd.conf
# 检查
ps aux|grep rsync
netstat -tlunp|grep 873
# 清空目录,再次测试
cd /web-back/
ls
rm -rf html/
#
#
# 63 主机 推文件
#
# 进行文件备份,不建议添加 --delete,尤其在生产环境中不要加
rsync -avz --delete /var/www/html rsyncuser@192.168.0.64::wwwroot
#
#
# 63 主机如何配置密码文件,不用写密码也可以备份
#
# 添加文件
vim /etc/rsync.passwd
# 内容如下
password123
# 文件设置权限
chmod 600 /etc/rsync.passwd
# 不用清空文件,添加几个文件,测试增量传输
# 进行文件备份,推送
rsync -avz --delete /var/www/html rsyncuser@192.168.64::wwwroot --password-file=/etc/rsync.passwd
#
# 63 主机如何配置定时备份脚本
# 
# 创建文件
vim autobackup.sh
# 文件内容如下
#!/bin/bash
rsync -avz --delete /var/www/html
rsyncuser@192.168.0.64::wwwroot --password-file=/opt/passfile
# 文件设置权限
chmod +x autobackup.sh
# 清空
rm -rf /web-back/*
# 运行
sh autobackup.sh
# 设置定时任务,每晚3点1分钟备份
echo '01 3 * * * sh /root/autoback.sh &' >>/var/spool/cron/root
##################################################
# rsync + sersync 来实现同步数据配置
# 注意只用来实时同步,不能用做备份
#
# 一台装 sersync 一台装 rsync 服务
# Sersync 服务器(数据源) 63
# Rsync 服务器(备份端) 64
###########################
# 为什么要用 rsync + sersync 架构?
# 1.sersync 是基于 inotify 开发的,类似于 inotify-tools 的工具
# 2.sersync 可以记录下被监听目录中发生变化的(包括增加、删除、修改) 
# 具体某一个文件或者某一个目录的名字,然后使用 rsync 同步的时候,
# 只同步发生变化的文件或目录
########################### 
# rsync + inotify-tools 与 rsync + sersync 架构的区别?
# 1.rsync + inotity-tools 
#  a.inotify 只能记录下被监听的目录发生了变化并没有吧具体是
#   哪个文件或者目录发生了变化记录下来
#  b.rsync 在同步的时候,并不知道具体是哪个文件或目录发生了
#   变化,每次都是对整个目录进行同步,当数据量很大时,整个
#   目录同步非常耗时(rsync 要对整个目录遍历查找对比文件),
#   因此效率很低
# 2.rsync+sersync
#  a.sersync可以记录被监听目录中发生变化的(增,删,改)
#   具体某个文件或目录的名字;
#  b.rsync在同步时,只同步发生变化的文件或目录(每次发生变化的
#   数据相对整个同步目录数据来说很小,rsync在遍历查找对比文件时,
#   速度很快),因此效率很高。
###########################
# 同步过程 
#  1.在同步服务器上开启 sersync 服务,sersync 负责监控配置路径
#    中的文件系统事件变化;
#  2.调用rsync命令把更新的文件同步到目标服务器;
#  3.需要在主服务器配置 sersync,在同步目标服务器配置 rsync server
#	(注意:是rsync服务)
########################### 
# 同步过程和原理
#  1.用户实时的往sersync服务器上写入更新文件数据;
#  2.此时需要在同步主服务器上配置 sersync 服务;
#  3.在另一台服务器开启 rsync 守护进程服务,以同步拉取来自
#    sersync 服务器上的数据;
########################### 
# 63 服务器中安装
# 下载 
wget https://sersync.googlecode.com/files/sersync2.5.4_64bit_binary_stable_final.tar.gz
# 上传到服务器 /opt 目录下
# 解压
tar xvf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local/
cd /user/local/
# 改名
mv GNU-Linux-x86 sersync
cd sersync
# 备份配置文件
cp confxml.xml confxml.xml.bak
# 修改配置文件
vi confxml
# 修改内容 24--28行
<localpath watch="/var/www/html">
    <remote ip="192.168.0.64" name="wwwroot" />
# 修改内容 31--34行,认证部分【rsync密码认证】
<rsync>
    <commonParams params="-artuz"/>
    <auth start="true" users="rsyncuser" passwordfile="/etc/rsync.passwd"/>
# 启动
./sersync2 -d -r -o ./confxml.xml
# 64 服务器中查看是否有备份
cd /we-back/
# 在 63 服务器的 html 目录中添加或者删除数据,看 64 服务器备份目录是否有变化
watch ls -l
########################### 
# 多实例情况
# 1.配置多个 confxml.xml文件(比如:www、bbs、blog....等等)
# 2.根据不同的需求同步对应的实例文件
/usr/local/sersync/sersync2  -d -o /usr/local/sersync/www_confxml.xml
/usr/local/sersync/sersync2  -d -o /usr/local/sersync/bbs_confxml.xml
##########################
# 脚本监控 sersync 是否正常运行
#
vi /opt/check_sersync.sh 
# 内容如下
#!/bin/bash
sersync="/opt/sersync/sersync2"
confxml="/opt/sersync/confxml.xml"
status=$(pa aux|grep 'sersync2'|grep -v 'grep'|wc -l)
if [ status -eq 0 ];then
    $sersync -d -r -o $confxml &
else
    exit 0;
fi
# 文件加上运行权限
chmod +x /opt/check_sersync
# 把脚本加到计划任务,定期执行检测

4.DHCP

###################################################
# DHCP
# 
# 实验环境:
# 服务端:xuegod63.cn   IP:192.168.0.63
# 客户端:xuegod64.cn   IP:192.168.0.64
####################################################
# DHCP服务概述
# 名称:DHCP  - Dynamic Host Configuration Protocol  动态主机配置协议
# 功能:DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议
# 使用UDP协议工作,主要有两个用途:
# 1.给内部网络或网络服务供应商自动分配IP地址,主机名,DNS服务器,域名
# 2.配合其它服务,实现集成化管理功能。如:无人执守安装服务器
####################################################
# 特点: C/S 模式
# 自动分配IP地址,方便管理
# DHCP不会同时租借相同的IP地址给两台主机;
# DHCP管理员可以约束特定的计算机使用特定的IP地址;
# 可以为每个DHCP作用域设置很多选项;
# 客户机在不同子网间移动时不需要重新设置IP地址。每次都自动获取IP地址就可以了。
####################################################
# DHCP的缺点: 
# 当网络上存在多服务器时,一个DHCP服务器不能查出已被其它服务器租出去的IP地址;
# DHCP服务器不能跨路由器与客户机通信,除非路由器允许BOOTP协议转发。
####################################################
# 端口:
# DHCP服务使用:端口67(bootps) 68(bootpc)
#
# 查看
vim /etc/services
#################################################### 
# DHCP协议由 bootp协议发展而来,是BOOTP的增强版本,bootps代表服务端端口, bootpc代表客户端端口
# bootp协议:引导程序协议(BOOTP)。它可以让无盘工作站从一个中心服务器上获得IP地址,
# 为局域网中的无盘工作站分配动态IP地址,并不需要每个用户去设置静态IP地址。
#
# BOOTP有一个缺点
# 您在设定前须事先获得客户端的硬件地址,而且,MCA地址与IP的对应是静态的。
# 换而言之,BOOTP非常缺乏“动态性 ”,若在有限的IP资源环境中,BOOTP的一对一对应会造成非常可观的浪费。
#
# DHCP可以说是BOOTP的增强版本,它分为两个部分:一个是服务器端,而另一个是客户端。
# 所有的IP网络设定数据都由DHCP服务器集中管理,并负责处理客户端的DHCP要求;
# 而客户端则会使用从服务器分配下来的IP环境数据。比较BOOTP, DHCP透过“租约”的概念,
# 有效且动态的分配客户端的TCP/IP设定,而且,作为兼容考虑,DHCP也完全照顾了BOOTP Client的需求。
####################################################
# DHCP服务运行原理
# 
# 1.DHCP Client发现阶段
#
# 即DHCP客户端寻找DHCP服务端的过程,对应于客户端发送DHCP Discovery,因为DHCP Server对应于DHCP客户端是未知的,
# 所以DHCP 客户端发出的DHCP Discovery报文是广播包,源地址为0.0.0.0目的地址为255.255.255.255。
# 网络上的所有支持TCP/IP的主机都会收到该DHCP Discovery报文,但是只有DHCP Server会响应该报文。
#
# 注意:客户端执行DHCP DISCOVER 后,如果没有DHCP 服务器响应客户端的请求,
# 客户端会随机使用169.254.0.0/16 网段中的一个IP 地址配置本机地址。 
#
# 169.254.0.0/16是windows的自动专有IP寻址范围,也就是在无法通过DHCP获取IP地址时,由系统自动分配的IP地址段。
#
# 早先的Linux上并不会产生这条路由,现在有这条路由大概是为了和windows兼容。
#
# 查路由
route -n
#
# 2.DHCP Server 提供阶段
#
# DHCP Server提供阶段,即为DHCP Server响应DHCP Discovery所发的DHCP Offer阶段,即DHCP服务器提供IP地址的阶段。
# 在网络中接收到DHCPdiscover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,
# 向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCPoffer提供信息
#
# 3.DHCP Client 确认阶段
#
# 即DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户机发来的DHCPoffer提供信息,
# 则DHCP客户机只接受第一个收到的DHCPoffer提供信息,然后它就以广播方式回答一个DHCPrequest请求信息,
# 该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,
# 他将选择某台DHCP服务器所提供的IP地址
#
# 4.DHCP Server确认阶段
#
# 即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCPrequest请求信息之后,
# 它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCPack确认信息,告诉DHCP客户机可以使用它所提供的IP地址。
# 然后DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址
#
# 5.DHCP Client重新登录网络
#
# 当DHCP Client重新登录后,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。
# 当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。
# 如果此IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分配给其它DHCP客户机使用),
# 则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,
# 它就必须重新发送DHCP discover发现信息来请求新的IP地址。
# 
# 6.DHCP Client更新租约
#
# DHCP获取到的IP地址都有一个租约,租约过期后,DHCP Server将回收该IP地址,所以如果DHCP Client如果想继续使用该IP地址,
# 则必须更新租约。更新的方式就是,当当前租约期限过了一半后,DHCP Client都会发送DHCP Renew报文来续约租期。
#################################################### 
# 安装DHCP
# 
# 下载安装
# dhcp-common-4.1.1-25.P1.el6.x86_64.rpm   #包括DHCP客户端和服务端共同需要的一些文件
# dhclient-4.1.1-25.P1.el6.x86_64.rpm       #dhcpclient
# dhcp-4.1.1-25.P1.el6.x86_64.rpm      # dhcp 服务端包 
# 或者
yum -y install dhcp
############################
# 配置文件位置
#
# 1.主配置文件
# /etc/dhcp/dhcpd.conf
# 打开这个配置文件,发现提示寻找模板配置文件
# 
# 2.DHCP主程序包安装好后会自动生成主配置文件的范本文件
# /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample
# 补充:开源服务软件里, 以.sample 结尾的文件是软件的模板样例文件,需要关注下
# 现在我们将范本配置文件复制到/etc 目录下替换掉空白dhcpd.conf 主配置文件
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
#
# 设置开机自启动
systemctl enable dhcpd
#
# 此时不要启动,启动会失败
# 启动失败的原因是 dhcp服务器配置的IP地址和默认配置文件里定义的地址段不相同
# 在启动DHCP服务之前,需要给DHCPServer配置一个静态的IP地址
############################
# DHCP配置文件参数说明
#
# 1.主配置文件介绍 
# dhcp 范本配置文件内容包含了部分参数、声明以及选项的用法,其中注释部分可以放在任何位置,
# 并以“#”号开头,当一行内容结束时,以“;”号结束,大括号所在行除外
#
# 可以看出整个配置文件分成全局和局部两个部分。但是并不容易看出哪些属于参数,哪些属于声明和选项。
#
# 概念与协议
# 作用域:可以分配IP的范围 subnet
# 地址池:可以分配给客户端的IP,range包括的IP
# 保留地址:指定某个客户端使用一个特定IP,通过host配置的
# 租约(时间):客户端可以使用这个IP地址的时间
#################################################### 
# 配置开始
#
# 上课的时候,为了适应Xshell 远程连接上演示,需要给DHCP主机添加一块网卡,放在VMNET4,让添加的网卡分配地址服务,
# xuegod63:ifconfig eth1 192.168.1.22/24
# xuegod64: 把网卡改到VMNET4
#
# 应用案例
# 公司有60 台计算机,IP 地址段为192.168.1.1-192.168.1.254,
# 子网掩码是255.255.255.0,网关为192.168.1.1,192.168.1.2-192.168.1.30 
# 网段地址给服务器配置,客户端可以使用的地址段为192.168.1.100-200,其余剩下的IP 地址为保留地址。
###########################
# 63 服务器
# 
# 备份配置文件
cd /etc/dhcp
cp dhcpd.conf hdcpd.conf.bak
# 清空
>dhcpd.conf
# 修改
vi dhcod.conf
# 内容如下
subnet 192.168.1.0 netmask 255.255.255.0 {
	range 192.168.1.100 192.168.1.200;
	option domain-name-servers 192.168.1.1;
	option domain-name "xuegod.cn";
	option routers 192.168.1.1;
	option broadcast-address 192.168.1.255;
	default-lease-time 600;
	max-lease-time 7200;
}
# 启动dhcp服务
systemctl start dhcpd
# 查看进程
ps aux|grep dhcp
# 查看端口
netstat -tlunp|grep dhcp
###########################
# 64 服务器改为自动获取IP地址
# 
# 添加了一张网卡,没有配置文件
# 进入目录
cd /etc/sysconfig/network-scripts/
# 复制一个配置文件
cp ifcfg-ens32  ifcfg-ens35
# 修改文件
vim ifcfg-ens35
# 内容如下
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"    ##改成dhcp模式
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
NAME="ens35"
UUID="5e02ab66-a084-404a-bb4c-50bf47bd1bd5"
DEVICE="ens35"
ONBOOT="yes"
# 重启网卡
ifdown ens35 && ifup ens35
# 查看
ifconfig ens35
# 查看默认网关
route -n
# 查看DNS
cat /etc/resolv.conf
###########################
# 查看 64 服务器
#
# 查看租约数据库文件 
cat /var/lib/dhcpd/dhcpd.leases
###################################################
# IP和网卡绑定
#
# 在DHCP 中的IP 地址绑定用于给客户端分配固定IP 地址。比如服务器需要使用固定IP 地址就可以使用IP 地址绑定,
# 通过MAC 地址与IP 地址的对应关系为指定的物理地址计算机分配固定IP地址。整个配置过程需要用到 host 声明
# 和hardware、fixed-address 参数。
############################
# 63 服务器
#
# 修改配置文件
vim /etc/dhcp/dhcpd.conf
# 这一段内容,要写在subnet字段中,和subnet配合使用。
host xuegod63 {    
	hardware ethernet 00:0C:29:12:ec:1e;
    fixed-address 192.168.1.110;
}
# 修改保存文件,重启服务
systemctl restart dhcpd
# 重启网卡
ifdown ens35 && ifup ens35
ip a
#
# 注意:
# 在生成环境中使用DHCP服务,往往需要结合实际是网络环境来搭建,很多公司采用路由器的DHCP服务来提供IP地址
###################################################
# ntpdata 同步时间用法
#
# 不同机器之间的时间同步
#
# 为了避免主机时间因为长期运作下所导致的时间偏差,进行时间同步(synchronize)的工作是非常必要的。Linux系统下,
# 一般使用ntp服务器来同步不同机器的时间。一台机器,可以同时是ntp服务器和ntp客户机。
# 在网络中,推荐使用像DNS服务器一样分层的时间服务器来同步时间。 
# 同步时间,可以使用ntpdate命令,也可以使用ntpd服务。
#
# 查看
yum list all|grep ntpdate
# 格式
# ntpdate [-nv] [NTP IP/hostname] 
# ntpdate 192.168.0.2
# ntpdate ntp1.aliyun.com
# ntpdate time.windows.com
#
# 但这样的同步,只是强制性的将系统时间设置为ntp服务器时间。只是治标不治本。所以,一般配合cron命令,来进行定期同步设置。
# 
# 安装
yum -y install ntpdate
# 同步阿里云服务器
ntpdate ntp1.aliyun.com
# 但这样的同步,只是强制性的将系统时间设置为ntp服务器时间。只是治标不治本。
# 所以,一般配合cron命令,来进行定期同步设置。比如,在crontab中添加
# 0 12 *  * * /usr/sbin/ntpdate 192.168.0.1
echo "0 12 *  * * /usr/sbin/ntpdate 192.168.0.1 >/dev/null 2>&1" >>/var/spool/cron/root
crontab -l
#########################
# 让NTP服务同步硬件时间
#
# 最后提及一点,ntp服务,默认只会同步系统时间。如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpdate 文件。 
# 在/etc/sysconfig/ntpdate 文件中,把 SYNC_HWCLOCK=no 改成 SYNC_HWCLOCK=yes 就可以让硬件时间与系统时间一起同步。
#
# 读出BIOS的时间参数
hwclock -r
# 将当前系统时间写入BIOS中
hwcolor -w 

5.FTP

###################################################
# FTP
# 
# FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务
# FTP(File Transfer Protocol: 文件传输协议)作用: Internet 上用来传送文件的协议
# 
# 常见FTP服务器
#
# windows:Serv-U FTP Server(不要用),filezilla_server
# Linux:ProFTPD:(Professional FTP daemon)一个Unix平台上或是类Unix平台上(如Linux, FreeBSD等)的FTP服务器程序。
#
#
# 今天的主角: vsftp
# 
# VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全。
# 它是一个安全、高速、稳定的FTP服务器
#
# 模式:C/S 模式
#
# 查看端口
# 20 (传数据)   21 (传指令)
vim /etc/services 
#
# 工作流程,分主动模式和被动模式
# 这里的主动和被动,是相对于的FTP server 端来判断的
# 如果server去连接client 开放的端口,说明是主动的,相反,如果client去连接server开放的端口,则是被动的。
#
# 63 安装服务端 vsftpd
yum -y install vsftpd lftp
# 64 安装客户端
yum -y install lftp
# 查看服务端主目录
ll /etc/vsftpd
###########################
# vsftpd 相关文档
#
# /etc/vsftpd/vsftpd.conf:vsftpd 的核心配置文件
# /etc/vsftpd/ftpusers:用于指定哪些用户不能访问FTP服务器。  黑名单
# /etc/vsftpd/user_list:指定允许使用vsftpd 的用户列表文件。 白名单
vim /etc/vsftpd/user_list
# 如果userlist_deny= YES(默认),绝不允许在这个文件中的用户登录ftp,甚至不提示输入密码
# prompt 提示
# /etc/vsftpd/vsftpd_conf_migrate.sh:是vsftpd 操作的一些变量和设置脚本
# /var/ftp/:默认情况下匿名用户的根目录
###########################
# 63 启动服务和自启动
systemctl start vsftpd
systemctl enable vsftpd
# 查看端口
# 看不到20,因为没有数据传输 
netstat -tlunp|gerp vsftp
###################################################
# 实例:公司技术部准备搭建一台功能简单的FTP 服务器,允许所有员工上传和下载文件,并允许创建用户自己的目录
#
# 分析
# 允许所有员工上传和下载文件需要设置成允许匿名用户登录并且需要将允许匿名用户上传功能
# 开启 anon_mkdir_write_enable 字段可以控制是否允许匿名用户创建目录
# 
# 备份配置文件 
cp vsftpd.conf vsftpd.conf.back
# 打开修改
vim /etc/vsftpd/vsftpd.conf
# 修改内容
# 允许匿名用户访问
anonymous_enable=YES
# 允许匿名用户上传文件并可以创建目录
anon_upload_enable=YES
anon_mkdir_write_enable=YES
# 保存后重启服务
systemctl restart vsftp
# 测试后发现有问题
# 检查目录权限
# 注意,默认匿名用户家目录的权限是755,这个权限是不能改变的。切记!
ll /var/ftp/pub/ -d
# 赋予权限
chown ftp.ftp /var/ftp/pub/
# 上传成功,但是文件名无法删除
# 查看当前以那个用户运行
ps -aux|grep vsftp
# 修改配置文件
vim vsftpd.conf
# 修改内容
# 默认没有,需要手动添加下这行
anon_other_write_enable=YES  
# 保存后重启服务
systemctl restart vsftp
# 测试成功删除文件
###################################################
# 下面我们来一步一步的实现,先修改目录权限,创建一个公司上传用的目录,叫xuegoddata,设置拥有者为ftp 用户所有,目录权限是755
#
# 新建目录
mkdir /var/ftp/xuegoddata
# 赋予权限
chown ftp.ftp /var/ftp/xuegoddata/
# 查看
ll -d !$
# 重启服务
service vsftpd restart
#################################################### 
# 实例:公司内部现在有一台FTP 和WEB 服务器,FTP 的功能主要用于维护公司的网站内容,包括上传文件、创建目录、更新网页等等。
# 公司现有两个部门负责维护任务,他们分别适用team1 和team2 帐号进行管理。先要求仅允许team1 和team2 帐号登录FTP 服务器,
# 但不能登录本地系统,并将这两个帐号的根目录限制为/var/www/html,不能进入该目录以外的任何目录
#
# ftp 和www web服务器相结合。
# www web服务器根目录:  /var/www/html
# 只允许:team1和team2两用户 可以上传。 vsftp禁止匿名。
#
# 分析
# 将FTP 和WEB 服务器做在一起是企业经常采用的方法,这样方便实现对网站的维护,为了增强安全性,
# 首先需要使用仅允许本地用户访问,并禁止匿名用户登录。其次使用chroot 功能将team1和team2 锁定在/var/www/html 目录下。
# 如果需要删除文件则还需要注意本地权限
# 
# 解决方案
# (1)建立维护网站内容的ftp 帐号team1 和team2 并禁止本地登录,然后设置其密码
#
# 创建用户
useradd -s /sbin/nologin team1
useradd -s /sbin/nologin team2
echo "123456" | passwd --stdin team1
echo "123456" | passwd --stdin team2
##########################
# (2)配置vsftpd.conf 主配置文件并作相应修改
#
# 备份文件
cp vsftpd.conf.back vsftpd.conf
# 修改配置文件
vim /etc/vsftpd/vsftpd.conf
# 修改内容
# 禁止匿名用户登录
anonymous_enable=NO
# 允许本地用户登录
local_enable=YES
# 设置本地用户的根目录为/var/www/html
local_root=/var/www/html
# 激chroot 功能
chroot_list_enable=YES
# 设置锁定用户在根目录中的列表文件。此文件存放要锁定的用户名
chroot_list_file=/etc/vsftpd/chroot_list
# 允许锁定的用户有写的权限
allow_writeable_chroot=YES 
##########################
# (3)建立/etc/vsftpd/chroot_list 文件,添加team1 和team2 帐号
# 添加文件
touch /etc/vsftpd/chroot_list
ll !$
# 修改文件
vim /etc/vsftpd/chroot_list
# 内容如下
team1
team2
# (4)修改本地权限
ll -d /var/www/html/
chmod -R o+w /var/www/html/
ll -d /var/www/html/
# (5)重启vsftpd 服务使配置生效
service vsftpd restart
# (6)测试
#############################
# 客户端用lftp登陆查看
lftp 192.168.0.63 -u team1,123456
##########################
# 补充: 配置vsftpd,使用SSL证书加密数据传输
# FTP与HTTP一样缺省状态都是基于明文传输,希望FTP服务器端与客户端传输保证安全,可以为FTP配置SSL
#
# 1.使用OpenSSL生成自签证书
openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem -days 3560
# OpenSSL 简单参数解释:
# req - 是 X.509 Certificate Signing Request (CSR,证书签名请求)管理的一个命令。
# x509 - X.509 证书数据管理。
# days - 定义证书的有效日期。
# newkey - 指定证书密钥处理器。
# keyout - 设置密钥存储文件。
# out - 设置证书存储文件,注意证书和密钥都保存在一个相同的文件
#
# 2.创建证书文件存放目录
mkdir .sslkey
cp vsftpd.pem .sslkey/
chmod 400 .sslkey/vsftpd.pem
# 3.修改配置文件,支持SSL
vim vsftpd.conf
# 添加如下配置
# 启用SSL支持
ssl_enable=YES     
allow_anon_ssl=NO 
force_local_data_ssl=YES   
force_local_logins_ssl=YES
force_anon_logins_ssl=YES
force_anon_data_ssl=YES
# 上面四行force 表示强制匿名用户使用加密登陆和数据传输
# 指定vsftpd支持TLS v1
ssl_tlsv1=YES   
# 指定vsftpd支持SSL v2
ssl_sslv2=YES   
# 指定vsftpd支持SSL v3
ssl_sslv3=YES   
# 不重用SSL会话,安全配置项
require_ssl_reuse=NO
# 允许用于加密 SSL 连接的 SSL 算法。这可以极大地限制那些尝试发现使用存在缺陷的特定算法的攻击者    
ssl_ciphers=HIGH    
rsa_cert_file=/etc/vsftpd/.sslkey/vsftpd.pem 
rsa_private_key_file=/etc/vsftpd/.sslkey/vsftpd.pem
# 定义 SSL 证书和密钥文件的位置
# 注意:上面的配置项不要添加到vsftpd.conf 文件最后,否则启动报错
#
# 4,配置FileZilla客户端验证
# 注意: 在工作中,内网FTP传输,可以不用证书加密传输
# 如果FTP服务器在公网,为了数据的安全性,就一定要配置证书加密传输

6.NFS

###################################################
# NFS
#
# NFS,是Network File System的简写,即网络文件系统。网络文件系统是FreeBSD支持的文件系统中的一种,
# 也被称为NFS. NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本
# 地文件一样访问远端系统上的文件。
#
# 模式: C/S 模式
# 端口: 
# RHEL7是以NFSv4作为默认版本,NFSv4使用TCP协议(端口号是2049)和NFS服务器建立连接
# nfs默认使用nfsnobody用户
#
##########################
# 63 服务器安装测试
yum -y install showmount
yum -y install rpcbind nfs-utils
# 创建一个目录
mkdir /data
# 复制一些文件到目录,做测试
cp /etc/vsftpd/* /data/
cd /data/
ls
# 编辑配置文件
vim /etc/exports
# 添加内容,例如
/data 192.168.0.64(rw)
# 保存文件
# 重启服务,第一个是平滑重启
exportfs -rv
systemctl start rpcbind
systemctl start nfs-server.service
# 查看2049端口服务器是否已经启动
netstat -tlunp|grep 2049
# 配置开机自动启动
chkconfig nfs-server on 
###########################
# 64 服务器
# 查看共享目录和地址
showmount -e 192.168.0.63
# 创建目录
mkdir /xuegoddata
# 挂载
mount -t nfs 192.168.0.63:/data /xuegoddata
# 查看
df -h
df -Th
cd /xuegoddata/
ls
# 创建文件失败
touch 111
##########################
# 64 服务器
#
# 查看目录权限,没有写的权限
ll /data/ -d
# 赋予权限
chown o+w /data/
##########################
# 63 服务器
#
# 创建文件,创建成功
touch 111
# 开机自启动挂载
vim /etc/fstab
# 在文件最后添加自动挂载的信息
192.168.0.63:/data		/xuegoddata		nfs			defaults 		0	0
#################################################### 
# NFS共享的服务端常用参数
#
# ro				只读访问(常用) 
# rw				读写访问(常用) 
# sync				资料同步写入到内存与硬盘当中(常用) 
# async 			资料会先暂存于内存当中,而非直接写入硬盘(调优常用)  
# secure			NFS通过1024以下的安全TCP/IP端口发送 
# insecure			NFS通过1024以上的端口发送 
# wdelay			如果多个用户要写入NFS目录,则归组写入(默认) 
# no_wdelay 		如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。 
# Hide				在NFS共享目录中不共享其子目录 
# no_hide			共享NFS目录的子目录 
# subtree_check   	如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认) 
# no_subtree_check  和上面相对,不检查父目录权限 
# all_squash        共享文件的UID和GID映射匿名用户anonymous,适合公用目录.(常用)  
# no_all_squash     保留共享文件的UID和GID(默认) 
# root_squash       root用户的所有请求映射成如anonymous用户一样的权限(默认) 
# no_root_squash    root用户具有根目录的完全管理访问权限(常用) 
################################
# 实例
#
# 注意:在发布共享目录的格式中除了共享目录是必跟参数外,其他参数都是可选的。并且共享目录
# 与客户端之间及客户端与客户端之间需要使用空格符号,但是客户端与参数之间是不能有空格的
cat /etc/exports
# 文件内容
/tmp/a/no_root_squash	*(rw,no_root_squash)
/tmp/a/sync	192.168.0.0/24(rw,sync)
/tmp/a/ro	192.168.1.64(ro)
/tmp/a/all_squash	192.168.0.0/24(rw,all_squash,anonuid=500,anongid=500)
/tmp/a/async	192.168.3.0/255.255.255.0(async)
/tmp/a/rw	192.168.3.0/255.255.255.0(rw)	192.168.4.0/255.255.255.0(rw)
/tmp/a/root_squash	*(rw,root_squash)
################################
# 64
# NFS客户端挂载参数的优化
#
# async异步同步,此参数会提高I/O性能,但会降低数据安全(除非对性能要求很高,对数据可靠性不要求的场合.一般生产环境,不推荐使用)
# noatime 取消更新文件系统上的inode访问时间,提升I/O性能,优化I/O目的,推荐使用。
# nodiratime 取消更新文件系统上的directory inode访问时间,高并发环境,推荐显式应用该选项,提高系统性能
# intr:可以中断不成功的挂载
# rsize/wsize 读取(rsize)/写入(wsize)的区块大小(block size),这个设置值可以影响客户端与服务端传输数据的缓冲存储量。
# 一般来说,如果在局域网内,并且客户端与服务端都具有足够的内存,这个值可以设置大一点,比如说32768(bytes),
# 提升缓冲区块将可提升NFS文件系统的传输能力。但设置的值也不要太大,最好是实现网络能够传输的最大值为限。
################################
# 64 
#
# 内核优化
#
# 内核默认读缓存
net.core.wmem_default = 8388608     
# 内核默认写缓存
net.core.rmem_default = 8388608      
# 内核最大读缓存
net.core.rmem_max = 16777216        
# 内核最大写缓存
net.core.wmem_max = 16777216
################################
# 63 NFS客户端挂载参数用法
mount -t nfs -o noatime,nodiratime,rsize=131072,wsize=131072,intr 192.168.0.63:/backup/NFS  /mnt
# 或者写在启动文件
vim /etc/fstab
# 在文件最后添加自动挂载的信息
192.168.0.63:/backup/NFS		/mnt		nfs			noatime,nodiratime,rsize=131072,wsize=131072,intr 		0	0 

7.DNS

###################################################
# DNS
#
# DNS服务端:xuegod63.cn   IP:192.168.0.63
# DNS客户端:xuegod64.cn   IP:192.168.0.64
# 
# DNS服务概述:
# DNS(Domain Name System)域名系统,在TCP/IP 网络中有非常重要的地位,能够提供域名与IP地址的解析服务。
#
# DNS 是一个分布式数据库,命名系统采用层次的逻辑结构,如同一棵倒置的树,这个逻辑的树形结构称为域名空间,
# 由于DNS 划分了域名空间,所以各机构可以使用自己的域名空间创建DNS信息。
# 注:DNS 域名空间中,树的最大深度不得超过127 层,树中每个节点最长可以存储63 个字符。
#
# 模式:C/S 模式
###########################
# 1.域和域名
#
# DNS 树的每个节点代表一个域,通过这些节点,对整个域名空间进行划分,成为一个层次结构。
# 域名空间的每个域的名字,通过域名进行表示。
#
# 域名:通常由一个完全合格域名(FQDN)标识。FQDN能准确表示出其相对于DNS 域树根的位置,也就是节点到DNS树根的完整表述方式,
# 从节点到树根采用反向书写,并将每个节点用“.”分隔,对于DNS 域google 来说,其完全正式域名(FQDN)为google.com。
#
# 例如,google为com域的子域,其表示方法为google.com,而www为google域中的子域,可以使用www.google.com表示。
#
# 注意:通常,FQDN 有严格的命名限制,长度不能超过256 字节,只允许使用字符a-z,0-9,A-Z
# 和减号(-)。点号(.)只允许在域名标志之间(例如“google.com”)或者FQDN 的结尾使用。
# 域名不区分大小。
# 由最顶层到下层,可以分成:根域、顶级域、二级域、子域。
#
# Internet 域名空间的最顶层是根域(root),其记录着Internet 的重要DNS 信息,由Internet域名注册授权机构管理,
# 该机构把域名空间各部分的管理责任分配给连接到Internet 的各个组织。
#
# "."全球有13个根(root)服务器(9个在美国,1个在日本,1个在瑞典,1个在法国,1个在英国)
#
# DNS 根域下面是顶级域,也由Internet 域名注册授权机构管理。共有3 种类型的顶级域。
# 组织域:采用3 个字符的代号,表示DNS 域中所包含的组织的主要功能或活动。
# 比如com 为商业机构组织,edu 为教育机构组织,gov 为政府机构组织,mil 为军事机构组织,
# net 为网络机构组织,org 为非营利机构组织,int 为国际机构组织。
#
# 地址域:采用两个字符的国家或地区代号。如cn 为中国,kr 为韩国,us 为美国。
# 反向域:这是个特殊域,名字为in-addr.arpa,用于将IP 地址映射到名字(反向查询)。
# 对于顶级域的下级域,Internet 域名注册授权机构授权给Internet 的各种组织。
# 当一个组织获得了对域名空间某一部分的授权后,该组织就负责命名所分配的域及其子域,
# 包括域中的计算机和其他设备,并管理分配的域中主机名与IP 地址的映射信息。
###########################
# 2.区(Zone)
#
# 区是DNS 名称空间的一部分,其包含了一组存储在DNS 服务器上的资源记录。
# 使用区的概念,DNS 服务器回答关于自己区中主机的查询,每个区都有自己的授权服务器。
########################### 
# 3.主域名服务器与辅助域名服务器
# 当区的辅助服务器启动时,它与该区的主控服务器进行连接并启动一次区传输,区辅助服务器定期与区主控服务器通信,
# 查看区数据是否改变。如果改变了,它就启动一次数据更新传输。
# 每个区必须有主服务器,另外每个区至少要有一台辅助服务器,否则如果该区的主服务器崩溃了,就无法解析该区的名称。
#
# 辅助服务器的优点:
# 	1)容错能力
#		配置辅助服务器后,在该区主服务器崩溃的情况下,客户机仍能解析该区的名称。一般把区的主
#		服务器和区的辅助服务器安装在不同子网上,这样如果到一个子网的连接中断,DNS 客户机还能
#		直接查询另一个子网上的名称服务器。
#	2)减少广域链路的通信量
#		如果某个区在远程有大量客户机,用户就可以在远程添加该区的辅助服务器,并把远程的客户机
#		配置成先查询这些服务器,这样就能防止远程客户机通过慢速链路通信来进行DNS 查询。
#	3)减轻主服务器的负载
#		辅助服务器能回答该区的查询,从而减少该区主服务器必须回答的查询数。
###########################
# 4.DNS相关概念
############## 
# 4.1.DNS 服务器
# 	运行DNS 服务器程序的计算机,储存DNS 数据库信息。DNS 服务器会尝试解析客户机的查询请求。
# 	在解答查询时,如果DNS 服务器能提供所请求的信息,就直接回应解析结果,如果该DNS 服务器
#	没有相应的域名信息,则为客户机提供另一个能帮助解析查询的服务器地址,如果以上两种方法
#	均失败,则回应客户机没有所请求的信息或请求的信息不存在。
##############
# 4.2.DNS 缓存
# 	DNS 服务器在解析客户机请求时,如果本地没有该DNS 信息,则可以会询问其他DNS 服务器,当
#	其他域名服务器返回查询结果时,该DNS 服务器会将结果记录在本地的缓存中,成为DNS 缓存。
#	当下一次客户机提交相同请求时,DNS 服务器能够直接使用缓存中的DNS 信息进行解析。
##############
# 5.DNS查询方式:递归查询和迭代查询
###############
# 看一个DNS查询过程:
# 通过8个步骤的解析过程就使得客户端可以顺利访问www.163.com 这个域名,但实际应用中,通常这个过程是非常迅速的
# 	<1> 客户机提交域名解析请求,并将该请求发送给本地的域名服务器。
#	<2> 当本地的域名服务器收到请求后,就先查询本地的缓存。如果有查询的DNS 信息记录,则直接返回查询的结果。
#		如果没有该记录,本地域名服务器就把请求发给根域名服务器。
#	<3> 根域名服务器再返回给本地域名服务器一个所查询域的顶级域名服务器的地址。
#	<4> 本地服务器再向返回的域名服务器发送请求。
#	<5> 接收到该查询请求的域名服务器查询其缓存和记录,如果有相关信息则返回客户机查询结果,
#		否则通知客户机下级的域名服务器的地址。
#	<6> 本地域名服务器将查询请求发送给返回的DNS 服务器。
#	<7> 域名服务器返回本地服务器查询结果(如果该域名服务器不包含查询的DNS 信息,查询过程将重复<6>、<7>步骤,
#	直到返回解析信息或解析失败的回应)。
#	<8> 本地域名服务器将返回的结果保存到缓存,并且将结果返回给客户机。
###########################
# 5.1.递归查询
#
# 递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一
# 个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询
# 问其他服务器,并将返回的查询结果提交给客户机。
##############
# 5.2.迭代查询
#
# DNS 服务器另外一种查询方式为迭代查询,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,
# 而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果为止。
###########################
# 6.正向解析与反向解析
############### 
# 6.1.正向解析
# 正向解析是指域名到IP 地址的解析过程
###############
# 6.2.反向解析
# 反向解析是从IP 地址到域名的解析过程。反向解析的作用为服务器的身份验证。
###########################
# 7.DNS资源记录
###############
# 7.1.SOA资源记录
#	
# 每个区在区的开始处都包含了一个起始授权记录(Start of Authority Record),简称SOA 记录。
# SOA 定义了域的全局参数,进行整个域的管理设置。一个区域文件只允许存在唯一的SOA 记录。
###############
# 7.2.NS资源记录
#
# NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。每个区在区根处至少包含一个NS 记录。
###############
# 7.3.A资源记录
#
# 地址(A)资源记录把FQDN 映射到IP 地址。 因为有此记录,所以DNS服务器能解析FQDN域名对应的IP 地址。
###############
# 7.4.PTR 资源记录
#
# 相对于A 资源记录,指针(PTR)记录把IP地址映射到FQDN。 用于反向查询,通过IP地址,找到域名。
###############
# 7.5.CNAME 资源记录
#
# 别名记录(CNAME)资源记录创建特定FQDN 的别名。用户可以使用CNAME 记录来隐藏用户网络的实现细节,使连接的客户机无法知道真正的域名。
# 例:ping百度时,解析到了百度的别名服务器。百度有个cname=www.a.shifen.com.的别名
###############
# 7.6.MX 资源记录
#
# 邮件交换(MX)资源记录,为DNS 域名指定邮件交换服务器。
# 邮件交换服务器是为DNS 域名处理或转发邮件的主机。处理邮件指把邮件投递到目的地或转交另一不同类型的邮件传送者。
# 转发邮件指把邮件发送到最终目的服务器,用简单邮件传输协议SMTP 把邮件发送给离最终目的地最近的邮件交换服务器,
# 或使邮件经过一定时间的排队。以上是相关概念。
###########################
# 8.端口
# tcp/53   udp/53   #用于客户端查询
# tcp/953 udp/953   #用于DNS主从同步
vim /etc/services
###########################
# 9.安装DNS
#
# BIND 简介
# BIND 全称为Berkeley Internet Name Domain(伯克利因特网名称域系统)。BIND 主要有三个版本:BIND4、BIND8、BIND9。
# BIND8 融合了许多提高效率、稳定性和安全性的技术,而BIND9增加了一些超前的理念:IPv6支持、密钥加密、多处理器支持、
# 线程安全操作、增量区传送等等。
#
# 9.1.安装
#
# 该包为DNS 服务的主程序包
# bind-9.7.3-8.P3.el6.x86_64.rpm 
#
# 提高安全性
# bind-chroot-9.7.3-8.P3.el6.x86_64.rpm   
#
# bind-chroot
# 是bind的一个功能,使bind可以在一个chroot 的模式下运行.也就是说,bind运行时的/(根)目录,并不是系统真正的/(根)目录,
# 只是系统中的一个子目录而已.这样做的目的是为了提高安全性.因为在chroot的模式下,bind可以访问的范围仅限于这个子目录的范围里,
# 无法进一步提升,进入到系统的其他目录中.
#
# 该包为客户端工具,默认安装,用于搜索域名指令
# bind-utils-9.7.3-8.P3.el6.x86_64.rpm  
yum -y install bind bind-chroot bind-utils
###############
# 9.2.查看配置文件
# named.conf 是BIND 的核心配置文件,它包含了BIND 的基本配置,但其并不包括区域数据。
# /var/named/ 目录为DNS数据库文件存放目录
ll /etc/named.conf
ll /var/named/chroot/
###############
# 9.3.启动服务
systemctl start named
systemctl enable named
###############
# 9.4.查看端口
netstat -antup|grep 53
###############
# 9.5.查看chroot功能
mount
###############
# 9.6.在客户端配置好DNS服务器地址
# 网卡优先级高
cat /etc/resolv.conf
# 内容
# Generated by NetworkManager
nameserver 202.106.46.151
# 修改
vim /etc/sysconfig/network-scripts/ifcfg-eth0
# 内容
DNS1=202.106.46.151	
###############
# 9.7.修改配置文件
#
# 实例:配置DNS服务器解析:xuegod.cn
#
# 备份
cp /etc/named.conf /etc/named.conf.bak
# 修改
vim /etc/named.conf
# 参数列表
# 整体分3段
#	options:对全局生效
#	zone:针对某个区域生效
#	type参数,6种类型
#		Master:主DNS 服务器:拥有区域数据文件,并对此区域提供管理数据
#		Slave:辅助DNS 服务器:拥有主DNS 服务器的区域数据文件的副本,辅助DNS 服务器会从主DNS服务器同步所有区域数据。
#		Stub:stub 区域和slave 类似,但其只复制主DNS 服务器上的NS 记录而不像辅助DNS 服务器会复制所有区域数据。
#		Forward:一个forward zone 是每个域的配置转发的主要部分。一个zone 语句中的type forward可以包括一个forward 和/或forwarders 子句,
#		它会在区域名称给定的域中查询。如果没有forwarders 语句或者forwarders 是空表,那么这个域就不会有转发,消除了options 语句中有关转发的配置。
#		Hint:根域名服务器的初始化组指定使用线索区域hint zone,当服务器启动时,它使用根线索来查找根域名服务器,并找到最近的根域名服务器列表。
options {
	listen-on port 53 { any; };
	listen-on-v6 port 53 { any; };
	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";
	allow-query     { any; };
	recursion yes;   //默认支持递归查询

	dnssec-enable yes;
	dnssec-validation yes;
	dnssec-lookaside auto;  ##添加这一行

	/* Path to ISC DLV key */
	bindkeys-file "/etc/named.iscdlv.key";
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
zone "." IN {
	type hint;
	file "named.ca";
};
zone "xuegod.cn" IN {
        type master;
        file "xuegod.cn.zone";
};
include "/etc/named.rfc1912.zones";	
###############
# 创建zone文件
#
# 备份
# 要加 -a 注意权限。
cd /var/named
cp -a named.localhost xuegod.cn.zone 
# 修改文件
vim /var/named/
# 内容如下
xuegod.cn.	IN SOA	dns.xuegod.cn.  root.xuegod.cn. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
xuegod.cn.      NS      dns.xuegod.cn.
dns.xuegod.cn.  A       192.168.0.63
www.xuegod.cn.   A       192.168.0.63
www1.xeugod.cn.  CNAME   www.xuegod.cn.
# 配置文件参数说明:
#	$TTL 1D ;设置有效地址解析记录的默认缓存时间,默认为1天也就是1D。
#	xuegod.cn.	IN SOA	dns. xuegod.cn. root. xuegod.cn.
#	原来的@表示当前的域xuegod.cn.,为方便大家记忆,我们这里,直接写成xuegod.cn. 
#	设置SOA记录为:dns.xuegod.cn.  
#	在此配置文件中写域名时,都把根. 也要写上。
#	域管理邮箱root.xuegod.cn.0由于@有其他含义,所以用“.”代替@。
#	0 ;更新序列号,用于标示数据库的变换,可以在10位以内,如果存在辅助DNS区域,建议每次更新完数据库,手动加1.
#	1D ;刷新时间,从域名服务器更新该地址数据库文件的间隔时间,默认为1天
#	1H ;重试延时,从域名服务器更新地址数据库失败以后,等待多长时间,默认为为1小时
#	1W ; 到期,失效时间,超过该时间仍无法更新地址数据库,则不再尝试,默认为一周
#	3H ;设置无效地址解析记录(该数据库中不存在的地址)默认缓存时间。设置无效记录,最少缓存时间为3小时
#	NS @ ;域名服务器记录,用于设置当前域的DNS服务器的域名地址,
#	A 127.0.0.1 ; 设置域名服务器的A记录,地址为ipv4的地址127.0.0.1,可以设置成192.168.100.102
#	AAAA ::1 ; 设置域名服务器的A记录,地址为ipv6的地址。
###############
# 修改 64 服务器的DNS配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens32
vim /etc/resolv.conf
# 重启服务
systemctl restart network
# ping一下
ping www.xuegod.cn
###############

  

  

 

posted on 2020-03-15 18:03  herisson_pan  阅读(41)  评论(0)    收藏  举报

导航