服务应用的测试:ftp, 客户端lftp使用 | dns | dhcp | msyql,mariadb,redis,nosql等数据库安装 | lamp搭建 | pxe搭建


ftp:环境,centos7.4

#1.安装服务及启动ftp

yum install -y vsftpd

systemctl enable vsftpd.service

systemctl start vsftpd.service

systemctl stop vsftpd.service

systemctl status vsftpd.service

安装包及安装生成文件;


开启服务,开机启动;关闭防护墙,开机不启动;


#2.配置ftp

#打开配置文件
vim /etc/vsftpd/vsftpd.conf

#显示行号
:set number

#修改配置 12 行
anonymous_enable=NO

#修改配置 33 行
anon_mkdir_write_enable=YES

#修改配置48行
chown_uploads=YES

#修改配置72行
async_abor_enable=YES

#修改配置83行
ascii_upload_enable=YES

#修改配置84行
ascii_download_enable=YES

#修改配置87行
ftpd_banner=Welcome to blah FTP service.

#修改配置101行chroot_local_user=YES

#添加下列内容到vsftpd.conf末尾
use_localtime=YES
listen_port=21
idle_session_timeout=300
guest_enable=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd/vconf
data_connection_timeout=1
virtual_use_local_privs=YES
pasv_min_port=40000
pasv_max_port=40010
accept_timeout=5
connect_timeout=1allow_writeable_chroot=YES

#3.建立用户文件

#创建编辑用户文件
vim /etc/vsftpd/virtusers
#第一行为用户名,第二行为密码。不能使用root作为用户名
lftp
sbt123456

#4.生成用户数据文件

db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

#设定PAM验证文件,并指定对虚拟用户数据库文件进行读取

chmod 600 /etc/vsftpd/virtusers.db

#5.修改 /etc/pam.d/vsftpd 文件

# 修改前先备份 
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak

vi /etc/pam.d/vsftpd
#先将配置文件中原有的 auth 及 account 的所有配置行均注释掉
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers 
# 如果系统为32位,上面改为lib


#6.新建系统用户vsftpd,用户目录为/home/vsftpd

#用户登录终端设为/bin/false(即:使之不能登录系统)
useradd vsftpd -d /home/vsftpd -s /bin/false
chown -R vsftpd:vsftpd /home/vsftpd

#7.建立虚拟用户个人配置文件

mkdir /etc/vsftpd/vconf
cd /etc/vsftpd/vconf

#这里建立虚拟用户lftp配置文件
touch lftp
#编辑leo用户配置文件,内容如下,其他用户类似
vim lftp

local_root=/home/vsftpd/lftp/
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
#建立lftp用户根目录
mkdir -p /home/vsftpd/lftp/

#8.防火墙设置

IPtables 的设置方式:vim /etc/sysconfig/iptables
#编辑iptables文件,添加如下内容,开启21端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 40000:40010 -j ACCEPT
firewall未关闭状态 的设置方式:
firewall-cmd --zone=public --add-service=ftp --permanentfirewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --zone=public --add-port=40000-40010/tcp --permanent

#9.重启vsftpd服务器

systemctl restart vsftpd.service

#10.连接测试:ftp://192.168.108.101/

但这个时候,使用ftp的工具连接时,我们发现是可以连接的。传输文件的时候,会发现文件上传和下载都会出现

500、503 、200等问题。这个时候,可以进行以下操作:

1.SELINUX不对vsftp不做任何限制

setsebool -P ftpd_connect_all_unreserved 1

2.再次确认用户的ftp目录权限,设置一下操作权限

chown -R vsftpd:vsftpd /home/vsftpd
systemctl restart vsftpd.service


#参考博客链接



客户端lftp使用:环境,centos7.6

lftp 是一个功能强大的下载工具,它支持访问文件的协议: ftp, ftps, http, https, hftp, fish.(其中ftps和https需要在编译的时候包含openssl库)。lftp的界面非常像一个shell: 有命令补全,历史记录,允许多个后台任务执行等功能,使用起来非常方便。它还有书签、排队、镜像、断点续传、多进程下载等功能。


lftp [-d] [-e cmd] [-p port] [-u user[,pass]] [site]



dns:环境,主dns:centos7.6;从dns:centos7.4




#1.dns基础

DNS:Domain Name Service 域名解析服务,工作在应用层,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS监听在TCP和UDP端口53。

FQDN:全称域名,如 www.baidu.com

www是主机名
baidu.com是域名

实现名称到IP解析的有三种方式:

分散式解决方案:/etc/hosts,不易管理
集中式解决方案:NIC,如果主机太多,对单一服务的压力太大
分布式解决方案:DNS,解决了上俩个方式的不足

权威的DNS服务器:

记录主机名到IP的DNS服务器叫做权威的DNS服务器

主从DNS服务器:主服务器记录发生变化,会同步到从服务器,(主从复制),实现容错机制

序列号:解析库版本号,主服务器解析库变化时,其序列递增
刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
过期时长:从服务器联系不到主服务器时,多久后停止服务

DNS的查询类型:

递归查询:服务器从根开始去找一级一级的找到目标主机,直到找到,负责到底
迭代查询:根服务器给了主机所在的域的IP,并没有直接给出结果

DNS的解析类型:

正向解析:FQDN --> IP

反向解析:IP ---> FQDN 如邮件服务器需要用到反向解析技术

DNS服务器的类型:

主服务器:管理和维护所负责解析的域内解析库的服务器
从服务器:从主服务器或从服务器“复制”(区域传输)解析库副本
缓存服务器

DNS的工作原理:

1.客户端向离它最近的DNS服务器发起了查询请求,一般是由运营商提供
2.如果代理DNS服务器有记录则直接可以返回给客户端;如果没有记录则去根DNS服务器请求,根DNS并不会存储所以的主机名对应IP的记录,它只会记录它的子域的IP,例如.com等后缀的域,代理DNS服务器会拿到.com域的DNS服务器IP
3.然后再将请求发往.com.域的DNS服务器,如果还是没有找到主机,则再往它的下一级找,直到找到具体的主机,把IP返回给客户端,同时代理DNS服务器也会缓存一份到本地

一次完整的查询请求经过的流程:Client -->hosts文件 -->DNS Service Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS…

DNS域名:

根域:目前有13个根集群服务器,美国10台,日本1台,荷兰1台,瑞典1台
一级域名:Top Level Domain: tld com, edu, mil, gov, net, org, int,arpa 组织域、国家域(.cn, .ca, .hk, .tw)、反向域 等
二级域名
三级域名
最多127级域名

ICANN(The Internet Corporation for Assigned Names and Numbers)互联网名称与数字地址分配机构,负责在全球范围内对互联网通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管理、以及根服务器系统的管理

DNS服务管理工具:

dig:只用于测试dns系统,不会查询hosts文件进行解析

  -x IP :测试反向解析
  -t axfr ZONE_NAME @SERVER :模拟区域传送
  -t NS . @a.root-servers.net :查询所有的根DNS服务器

host

  -t:指定查询记录类型
  host www.dongfei.tech 192.168.0.7 :向192.168.0.7查询www.dongfei.tech这个域名

rndc

  reload: 重载主配置文件和区域解析库文件
  reload zonename: 重载区域解析库文件
  retransfer zonename: 手动启动区域传送,而不管序列号是否增加
  notify zonename: 重新对区域传送发通知
  reconfig: 重载主配置文件
  querylog: 开启或关闭查询日志文件/var/log/message
  trace: 递增debug一个级别
  trace LEVEL: 指定使用的级别
  notrace:将调试级别设置为 0
  flush:清空DNS服务器的所有缓存记录

named-checkconf:检查配置文件的语法

named-checkzone "dongfei.com" /var/named/dongfei.com.zone :查询区域数据库文件的语法

#2.安装DNS




几个主要配置文件


软件包名:bind

服务名:named

提供的服务:DNS域名解析

主配置文件:/etc/named.conf


#3.named.conf配置简要说明

named.conf是named默认加载的配置文件,该配置文件中使用"#"或"/**/"或"//"作为注释符号,每个非注释语句都必须使用分号";"结束。
该配置文件中只能有一个options,在这里面用于配置全局项。

options {
  directory "/var/named";
};


除了option,还必需有区域的配置。zone关键字后面接的是域和类,域是自定义的域名,IN是internet的简称,是bind 9中的默认类,所以可以省略。
type定义该域的类型是"master | slave | stub | hint | forward"中的哪种,file定义该域的区域数据文件(区域数据文件的说明见下文),
因为这里是  相对路径db.longshuai.com,它的相对路径是相对于/var/named的,也可以指定绝对路径/var/named/db.longshuai.com。

zone "longshuai.com" IN{
  type master;
  file "db.longshuai.com"
};




除此外,在每个named.conf中还应该配置几个必须的区域。

(1).根域名"."的区域配置。

zone "." IN {
  type hint;
  file named.ca;
}

type hint表示该区域"."类型为hint。回顾dns解析流程,在客户端让dns服务器迭代查询时,迭代查询的第一步就是让dns服务器去找根域名服务器。
但是dns服务器如何知道根域名服务器在哪里?这就是hint类型的作用,它提示dns服务器根据其区域数据文件named.ca中的内容去获取根域名地址,
并将这些数据缓存起来,下次需要根域名地址时直接查找缓存即可。

由于根域名地址也是会改变的,有了根区域的提示,就可以永远能获取到最新的根区域地址。其实也可以手动下载这些数据,
地址为:https://www.internic.net/domain/named.root
因此,只有根区域"."才会设置为hint类型。




(2)."localhost"域名(用于解析localhost为127.0.0.1)和127.0.0.1的方向查找区域。这两个没有定义在named.conf中,
而是定义在/etc/named.rfc1912.zones中,然后在named.conf中使用include指令将其包含进来。

include "/etc/named.rfc1912.zones";

其中named.rfc1912.zones中部分内容:


zone "localhost" IN {
    type master;
    file "named.localhost";
    allow-update { none; };
};

zone "1.0.0.127.in-addr.arpa" IN {
    type master;
    file "named.loopback";
    allow-update { none; };
};

当然,反向查找区域可以定义为域而不是直接定义成主机。例如:

zone "0.0.127.in-addr.arpa" IN {
    type master;
    file "named.loopback";
    allow-update { none; };
};

但这样的话,就需要相对应地修改/var/named/named.loopback文件。
其实根域名"."和"localhost"以及"1.0.0.127.in-addr.arpa"完全没必要去改变,照搬就是了。

所以,/etc/named.conf的内容如下:

options {
  directory "/var/named";
};

zone "longshuai.com" {
  type master;
  file "db.longshuai.com";
};

zone "." IN {
  type hint;
  file "named.ca";
};

include "/etc/named.rfc1912.zones";


到此并没有结束,因为/etc/named*的属组都是named,且权限要为640。如下:

chown root:named /etc/named.conf
chmod 640 /etc/named.conf

然后使用/usr/sbin/named-checkconf命令来检查下/etc/named.conf文件的配置是否正确,如果不返回任何信息,则表示配置正确。


配置好主配置文件后,接下来要书写域相关数据库——区域数据文件。


#4.区域数据文件配置说明

区域数据文件即named.conf中zone关键字定义的域的数据文件,由zone中的file指令指定文件名,例如上面定义的"db.longshuai.com",
说明longshuai.com这个zone的区域数据文件为/var/named/db.longshuai.com。

区域数据文件中很多地方都可以使用缩写,如果不使用缩写的书写方式,那么每一条记录中的域名或主机名都要写全,即要写到根域"."。

假设longshuai.com域内有3台主机ftp、www和mydb,它们的ip分别为192.168.108.{101,102,103},还有一台DNS服务器主机名为dnsserver,其ip为192.168.108.90。

测试环境      系统版本    IP
dns主节点    CentOS 7.6  192.168.108.90
ftp    CentOS 7.4  192.168.108.101
www    CentOS 7.4  192.168.108.102
mariadb	CentOS 7.4  192.168.108.103

于是,longshuai.com这个区域的数据文件可以如下书写:区域数据文件中使用分号";"来注释。

vim /var/named/db.longshuai.com

$TTL 6h
longshuai.com.              IN  SOA dnsserver.longshuai.com.   xyz.longshuai.com. (
                       1     ; serial num
                       3h    ; refresh time 
                       1h    ; retry time 
                       1w    ; expire time
                       1h )  ; negative time

longshuai.com.              IN  NS  dnsserver.longshuai.com.

dnsserver.longshuai.com.    IN  A   192.168.108.90
ftp.longshuai.com.          IN  A   192.168.108.101
www.longshuai.com.          IN  A   192.168.108.102
mydb.longshuai.com.         IN  A   192.168.108.103

www1.longshuai.com.         IN  CNAME  www.longshuai.com.


其中第一行的"$TTL 6h"表示缓存周期,即查询该域中记录时肯定答案的缓存时间长度。例如本地查询www.baidu.com时,
本地将缓存baidu.com域的相关查询结果,缓存时间长度由baidu.com这个域的区域数据文件中定义的$TTL的值决定。

在区域数据文件中,"$TTL"的定义表示其后的记录都以此TTL为准,直到遇到下一个"$TTL"。也就是说,两个$TTL之间的所有记录都以前面的$TTL为准。  
不过大多数时候,一个区域数据文件中只会在第一行定义一个$TTL值,表示该文件中所有记录都使用该缓存周期值。

第二行定义的是SOA记录,每个区域文件中的第一个资源记录定义行都要是SOA记录。在该行中除了指定了master dns服务器,
还指定了一些附加属性,包括序列号为1,还有各种时长等信息。

第二个资源记录行定义的是NS记录,NS记录行表示该行定义的主机"dnsserver.longshuai.com."是这个域"longshuai.com."内的dns服务器。

接下来的几个资源记录行定义的都是A记录,分别定义了"{dnsserver,www,ftp,mydb}.longshuai.com."这几个主机对应的ip地址为
192.168.108.{101,102,103}。A记录中存储的是主机名和IP地址之间的映射关系,在为外界主机提供主机名查询服务时,就是从A记录中获取对应的ip地址。

最后一个资源记录行定义的是CNAME记录,它存储的是canonical name所对应的别名。例如此处定义的是"www.longshuai.com."的别名为"www1.longshuai.com."。


然后修改/var/named/db.longshuai.com文件的属组和权限。
chown root:named /var/named/db.longshuai.com
chmod 640 /var/named/db.longshuai.com


然后使用named-checkzone命令检查区域数据文件是否书写正确。例如,要检查"longshuai.com"区域,其区域数据文件为/var/named/named.conf。
named-checkzone longshuai.com /var/named/db.longshuai.com

实际上,应该对所有的区域都进行检查,使用named-checkzone一个一个进行手动检查,显得非常繁琐。
在CentOS 6上,支持使用"service named configtest"来检查,CentOS 7上没有对应的功能。
但无论是CentOS 6还是CentOS 7上,在启动named服务的时候,都会自动检查配置文件的正确性。


回到区域数据文件的配置说明上。在上面的配置过程中,完全没有使用缩写,但其实很多地方都能使用缩写的书写方式。
以下是区域数据文件中的一些书写规则,包括缩写规则:

(1)."$"符号:定义宏。最常见的是"$TTL"、"$ORIGIN"。origin的的意思是起点,可以自行定义$ORIGIN的值。

例如:"$ORIGIN ."表示定义的$ORIGIN的起点值为根域符号,"$ORIGIN longshuai.com."表示$ORIGIN的值为"longshuai.com.",
未定义$ORIGIN时,值为zone "domain"的domain部分。

(2).fqdn自动补齐:在区域数据文件中,没有使用点号"."结尾的,在实际使用的时候都会自动补上域名,使其变为fqdn。

例如区域"longshuai.com.",以下是完全格式的资源记录:
dnsserver.longshuai.com.    IN  A   192.168.108.90

可以缩写为:
dnsserver    IN    A   192.168.108.90

因为dnsserver后没有点,所以会补齐整个域名"longshuai.com."。实际上,自动补齐的部分是$ORIGIN的值,只不过默认没定义$ORIGIN时,
$ORIGIN的值为zone定义的域名,所以默认是自动补齐域名。



(3)."@"符号:可以使用@符号来缩写$ORIGIN的值。

由于自定义的区域数据文件中,一般不会主动定义$ORIGIN的值,而第一个资源记录一般都是SOA记录,
所以此时SOA记录中的第一列就可以使用@符号,其它地方只要值为$ORIGIN,都可以使用@符号缩写。例如:

@     IN  SOA  dnsserver  xyz. ( 1 3h 1h 1w 1h )
@     IN  NS   dnsserver



(4).重复最近一个名称:区域数据文件中的第一列可以使用空格或制表符使该列继承上一行的第一列的值。

例如第一行定义的是SOA记录,第一列是"longshuai.com.",那么第二行定义的NS记录中,其第一列就可以留空来继承第一行第一列
的"longshuai.com."。不止第一行和第二行,第三行也可以继承第二行的第一列,第n+1行也可以继承第n行的第一列,只要它们的值一样即可。

所以,/var/named/db.longshuai.com这个文件完全缩写后的结果如下:

vim /var/named/db.longshuai.com

$TTL 6h
@            IN  SOA    dnsserver   xyz ( 1 3h 1h 1w 1h )
@            IN  NS     dnsserver

dnsserver    IN  A      192.168.108.90
ftp          IN  A      192.168.108.101
www          IN  A      192.168.108.102
mydb         IN  A      192.168.108.103

www1         IN  CNAME  www


是否缩写正确,可以使用named-checkzone来检查下,还可以使用named-compilezone命令对区域数据文件进行编译,并输出编译后的结果。
named-compilezone  -o  -  longshuai.com  /var/named/db.longshuai.com
"-o"选项表示将编译后的结果输出到指定文件中,"-"表示输出到标准输出。




在/etc/named.conf中,还定义了3个区域,分别是"."、"localhost"和"1.0.0.127.in-addr.arpa",
它们的区域数据文件分别是/var/named/{named.ca,named.localhost,loopback}。

/var/named/named.ca 文件中记录了获取根区域的方法:dig +bufsize=1200 +norec @a.root-servers.net。



至此,配置文件和区域数据文件都已经配置结束了,可以启动named服务。
systemctl start named.service
netstat -tnlup | grep named