Linux-网络相关笔记

网络相关指令及服务

• ping - 发送 ICMP ECHO_REQUEST 数据包到网络主机

• traceroute - 打印到一台网络主机的路由数据包

• netstat - 打印网络连接,路由表,接口统计数据,伪装连接,和多路广播成员

• ftp - 因特网文件传输程序

• wget - 非交互式网络下载器

• ssh - OpenSSH SSH 客户端(远程登录程序)

traceroute

本地到指定主机要经过的所有"跳数"的网络流量列表

主机名,IP地址和性能数据

traceroute slashdot.org

netstat

netstat 程序被用来检查各种各样的网络设置和统计数据。通过此命令的许多选项,我们可以看看网络设置中的各种特性。使用“-ie”选项,我们能够查看系统中的网络接口:

第一个,叫做 eth0,是以太网接口,和第二个,叫做 lo,是内部回环网络接口,它是一个虚拟接口,系统用它来“自言自语”。

当执行日常网络诊断时,要查看的重要信息是每个网络接口第四行开头出现的单词“UP”,

说明这个网络接口已经生效,还要查看第二行中 inet addr 字段出现的有效 IP 地址。对于使用DHCP(动态主机配置协议)的系统,在这个字段中的一个有效 IP 地址则证明了 DHCP 工作正常

IP与ping

ip  address  show
ip a s#命令缩写

添加临时ip地址
ip address add  192.168.8.1/24  dev eth0 
ipconfig查找不到 因为是临时 但是ip a s可以

ping测试网络通信  -c:指定ping包的个数
ping  -c  2  192.168.4.7
ping  -c  4  192.168.4.7

ssh

原理:

当你通过 SSH 协议与远端主机建立连接的时候,其中发生的事就是在本地与远端系统之间创建了一条加密通道

通常,这条通道被用来把在本地系统中输入的命

令安全地传输到远端系统,同样地,再把执行结果安全地发送回来。除了这个基本功能之外,SSH 协议允许大多数网络流量类型通过这条加密通道来被传送,在本地与远端系统之间创建一种 VPN(虚拟专用网络)。

scp(安全复制)

sftp:ftp安全替代品,不用明码传递数据,用加密的的SSH通道.不需要远端系统中运行FTP服务器

ssh 用户名@ip

输入密码

exit登出

ssh-keygen生成公私钥

默认存放在/root/.ssh

id_rsa为公钥 id_rsa.pub为私钥

A通过ssh首次连接到B,B会将公钥1(host key)传递给A,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。。

[root@svr7 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:R2k3F4i1b/WDX8AORoxgVBrKAPIDbl3+wUrMI+8usuA root@svr7.tedu.cn
The key's randomart image is:
+---[RSA 2048]----+
|o .... .=o.=o..  |
|.+. =o.o ooooo . |
| ooo *oo. + * + .|
|.  .+ + .o o *.o.|
|     o .S .  .+.o|
|    .    .   .. o|
|.    .         . |
|o. ..            |
| Eo ..           |
+----[SHA256]-----+
[root@svr7 ~]# ls /root/.ssh
id_rsa  id_rsa.pub  known_hosts

ssh-copy-id 用户名@主机号 传递公钥到主机B
#输入主机的密码
#查看B的.ssh目录
[root@pc207 ~]# ls /root/.ssh
authorized_keys
存放了加密的文件
然后A再ssh B的主机无需密码

使用scp远程复制工具

安全复制工具 scp
如果带目录 一定要-r

-scp [-r] 用户名@服务器:路径 本地路径

-scp [-r] 本地路径 用户名@服务器:路径

网络配置

服务器通常有多块网卡,有板载集成的,同时也有插在PCIe插槽的。
Linux系统的命名原来是eth0,eth1这样的形式,但是这个编号往往不一定准确对应网卡接口的物理顺序。
为解决这类问题,dell开发了biosdevname方案

ens33 pci网卡

内核参数组合使用的时候,其结果如下:
默认内核参数(biosdevname=0,net.ifnames=1): 网卡名 "enp5s2"
biosdevname=1,net.ifnames=0:网卡名 "em1"
biosdevname=0,net.ifnames=0:网卡名 “eth0” (最传统的方式,eth0 eth1 傻傻分不清)

ifconfig  |  head  -2
#原来命名为ens33 

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

 ether 00:0c:29:a1:a5:d3 txqueuelen 1000 (Ethernet)


vim    /etc/default/grub   #引导内核启动的文件**

…….此处省略一万字

GRUB_CMDLINE_LINUX=" …….此处省略一万字

**quiet  net.ifnames=0  biosdevname=0"**

…….此处省略一万字

]# grub2-mkconfig  -o  /boot/grub2/grub.cfg   #重新生成引导文件

]# reboot    #重启验证         

]# ifconfig  |  head  -2      

**eth0:** flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

为了自动化考虑 nmcli “取外号”一样的名字

[root@svr7 ~]# nmcli connection show
NAME        UUID                                  TYPE      DEVICE 
有线连接 1  907d645d-59e8-33d2-bb0b-7f77b36c67b5  ethernet  eth0   
virbr0      7bf73d8d-b4a8-4ad9-bfae-44c0229cd433  bridge    virbr0 
ens33       852e4614-216a-4a0f-94fd-83085eb36b6a  ethernet  --     

[root@svr7 ~]# nmcli connection delete ens33 
成功删除连接 "ens33" (852e4614-216a-4a0f-94fd-83085eb36b6a)。     
[root@svr7 ~]# nmcli connection delete 有线连接\ 1 
成功删除连接 "有线连接 1" (907d645d-59e8-33d2-bb0b-7f77b36c67b5)。

[root@svr7 ~]# nmcli connection show
NAME    UUID                                  TYPE    DEVICE 
virbr0  7bf73d8d-b4a8-4ad9-bfae-44c0229cd433  bridge  virbr0 

nmcli connection 添加 类型 以太网设备 网卡设备名为eth0 nmcli命令的命名为eth0
[root@svr7 ~]# nmcli connection add type ethernet ifname eth0 con-name eth0
连接 "eth0" (c4788d65-af60-44da-ab65-56ef583ab72d) 已成功添加。


[root@svr7 ~]# nmcli connection  modify eth0 
ipv4.method manual 
ipv4.addresses 192.168.4.7/24
ipv4.gateway 192.168.4.254 
connection.autoconnect yes
###注意这些在一行里配置完 getway 网关
[root@svr7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
TYPE=Ethernetf
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=c4788d65-af60-44da-ab65-56ef583ab72d
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.4.7
PREFIX=24
GATEWAY=192.168.4.254


[root@svr7 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.4.254   0.0.0.0         UG    100    0        0 eth0
192.168.4.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

模版机器

要将/etc/fstab中的UUID进行修改 修改为/dev/sda1 对应的挂载目录

因为克隆后如果UUID复制 对应的出错。

UUID可以通过blkid来查看对应的

image-20201112144020707

配置虚拟网卡

image-20201112142852945

image-20201112142734948

image-20201112144055794

克隆后需要修改主机名和IP名称

链路聚合

作用:备份网卡设备,提高可靠性

虚拟网卡:team0

1.关闭虚拟机添加两块网卡

img

img

[root@A ~]# ifconfig | less

2.建立虚拟网卡设备

参考 man teamd.conf 进行全文查找 /example

[root@A ~]# nmcli connection add type team ifname team0 con-name team0  autoconnect  yes  config '{"runner": {"name": "activebackup"}}'


[root@A ~]# nmcli 连接 添加 类型 组队 网卡名 team0命名为team0

每次开机自启动 工作方式 活跃备份

[root@A ~]# ifconfig

3.添加成员

[root@A ~]# nmcli connection add type team-slave autoconnect yes ifname eth1 con-name team0-1 master team0

[root@A ~]# nmcli connection add type team-slave autoconnect yes ifname eth2 con-name team0-2 master team0

[root@A ~]# nmcli 连接 添加 类型 组队-成员 每次开机自动启用 网卡名 eth2 命名为 team0-2 主设备为 team0

4.激活,以配置文件的名进行激活

[root@A ~]# nmcli connection up team0

[root@A ~]# nmcli connection up team0-1

[root@A ~]# nmcli connection up team0-2

5.为team0配置IP地址

[root@A ~]# nmcli connection modify team0 ipv4.method manual ipv4.addresses 192.168.1.1/24 connection.autoconnect yes

[root@A ~]# nmcli connection  up  team0

[root@A ~]# teamdctl team0 state #专门查看team0状态的命令

[root@A ~]# ifconfig  eth1  down

[root@A ~]# teamdctl team0 state 

NFS

• Network File System,网络文件系统

– 用途:为客户机提供共享使用的文件夹

– 协议:NFS(TCP/UDP 2049)、RPC(TCP/UDP 111)

• 所需软件包:nfs-utils

• 系统服务:nfs-server

虚拟机A 
1.检测是否安装nfs-utils
[root@svr7 ~]# rpm  -q  nfs-utils
nfs-utils-1.3.0-0.54.el7.x86_64
2.创建共享的目录
[root@svr7 ~]# mkdir  /public
[root@svr7 ~]# echo 123  > /public/a.txt
[root@svr7 ~]# ls  /public
a.txt
3.修改配置文件
[root@svr7 ~]# vim  /etc/exports
–	文件夹路径    客户机地址(权限)  客户机地址(权限) .. ..
/public     *(ro)        #允许所有客户端,以只读方式进行访问
4.重启服务
[root@svr7 ~]# systemctl   restart   nfs-server

虚拟机B:客户端
1.检测是否安装nfs-utils
[root@pc207 ~]# rpm  -q  nfs-utils
nfs-utils-1.3.0-0.54.el7.x86_64
2.挂载进行访问
[root@pc207 ~]# mkdir /mnt/nsd
[root@pc207 ~]# mount   192.168.4.7:/public     /mnt/nsd
[root@pc207 ~]# ls  /mnt/nsd
[root@pc207 ~]# df  -h    #查看正在挂载的信息
3.开机自动挂载
_netdev:声明网络设备,本机在识别网络参数后,在进行挂载本设备
[root@pc207 ~]# vim   /etc/fstab 
192.168.4.7:/public   /mnt/nsd    nfs   defaults,_netdev   0  0
[root@pc207 ~]# umount /mnt/nsd
[root@pc207 ~]# df  -h

[root@pc207 ~]# mount  -a
[root@pc207 ~]# df   -h

autofs自动挂载

• 主配置文件 /etc/auto.master

– 监控点目录 挂载配置文件的路径

• 挂载配置文件,比如 /etc/auto.misc

– 触发点子目录 -挂载参数 :设备名

1.安装
yum -y install autofs
 [root@localhost ~]# vim /etc/auto.master
  1 #
  2 # Sample auto.master file
  3 # This is an automounter map and it has the following format
  4 # key [ -mount-options-separated-by-comma ] location
  5 # For details of the format look at autofs(5).
  6 #
  7 /misc   /etc/auto.misc
  8 /media /etc/cdrom.misc
--------省略部分输出------------
配置对应的
[root@localhost ~]# vim /etc/cdrom.misc
cdrom   -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
[root@localhost ~]# systemctl restart autofs
[root@localhost ~]# systemctl enable autofs
ln -s '/usr/lib/systemd/system/autofs.service' '/etc/systemd/system/multi-user.target.wants/autofs.service'

DNS

• BIND服务器端程序

– 主要执行程序:/usr/sbin/named

– 系统服务:named

– DNS协议默认端口:TCP/UDP 53

– 运行时的虚拟根环境:/var/named/chroot/

• 主配置文件:/etc/named.conf #设置负责解析的域名

• 地址库文件:/var/named/ #完at全合格的主机名与IP地址对应关系

配置流程

1.安装软件包
虚拟机A:构建DNS服务器
[root@svr7 ~]# yum -y install  bind    bind-chroot
bind(主程序)
bind-chroot(提供牢笼政策)
2.修改主配置文件
[root@svr7 ~]# cp  /etc/named.conf    /root    #备份数据
[root@svr7 ~]# vim /etc/named.conf
options {
        directory       "/var/named";      #定义地址库文件存放路径
};
zone "tedu.cn" IN {             #指定本机负责解析的域名
        type master;            #指定本机为权威主服务器
        file  "tedu.cn.zone";     #地址库文件名称
};
3.建立地址库文件

保证named对地址库文件有读取权限
所有的域名都要以点作为结尾
如果没有以点作为结尾,那么默认补全本地库文件负责的域名

!!!注意cp -p 需要named组权限!!!

DNS的区域解析库中定义了资源记录(Resource Record, RR), 资源记录类型如下:

  • SOA(Start Of Authority): 起始授权记录, 一个区域解析库仅能有一个SOA记录, 而且必须为解析库的第一条记录
  • A(Internet Address): 用于实现将FQDN解析为IP地址
  • AAAA: 用于IPv6, 将FQDN解析为IPv6地址
  • PTR(PonTeR): 将IP解析为FQDN
  • NS(Name Server): 专用于标明当前区域的DNS服务器
  • CNAME(Canonical Name): 别名记录
  • MX(Mail eXchanger): 邮件交换器
]# cd  /var/named/
]# cp  -p  named.localhost     tedu.cn.zone    #保持权限不变
]# ls   -l   tedu.cn.zone
]# vim     tedu.cn.zone
……此处省略一万字
tedu.cn.       NS       svr7              #声明DNS服务器为svr7
svr7           A        192.168.4.7       #svr7解析结果为192.168.4.7
www            A        1.1.1.1
ftp            A        2.2.2.2
[root@svr7 named]# systemctl restart named

虚拟机B:测试DNS服务器
]# echo nameserver   192.168.4.7  > /etc/resolv.conf
]# cat /etc/resolv.conf
]# nslookup  www.tedu.cn  
]# nslookup   ftp.tedu.cn 

SOA记录

# name: 当前区域的名字, 例如: leistudy.com
# value: 有多部分组成
    # 当前主区域的DNS服务器的FQDN, 也可以使用当前区域的名字
    # 当前区域管理员的邮箱地址, 但地址中不能使用@符号, 一般用“.”代替, 例如linuxedu.magedu.com
    # 主从服务协调属性的定义以及否定的答案的统一的TTL

# 示例:
leistudy.com.   86400   IN  SOA     ns.leistudy.com.    nsadmin.leistudy.com.   (
            2018022801  ;序列号
            2H          ;刷新时间
            10M         ;重试时间
            1W          ;过期时间
            1D          ;否定答案的TTL值
)

A记录

A记录:

# name: 某主机的FQDN, 例如www.leistudy.com.
# value: 主机名对应主机的IP地址

# 示例:
www.leistudy.com.   IN  A   1.1.1.1
www.leistudy.com.   IN  A   1.1.1.2
mx1.leistudy.com.   IN  A   1.1.1.3
mx2.leistudy.com.   IN  A   1.1.1.3

# NOTE: 避免用于写错名称时给错误答案, 可通过泛域名解析进行解析至某特定地址
# 示例:
*.leistudy.com. IN  A   1.1.1.4
magedu.com. IN  A   1.1.1.4

DNS的轮询(负载均衡)

DNS的轮询(负载均衡)
[root@svr7 /]# vim  /var/named/tedu.cn.zone
……此处省略一万字
tedu.cn.   NS   svr7
svr7          A    192.168.4.7
www         A    192.168.4.20
www        A     192.168.4.21
www        A     192.168.4.22
ftp           A     2.2.2.2
[root@svr7 /]# systemctl  restart named

DNS的泛域名解析

[root@svr7 /]# vim  /var/named/tedu.cn.zone
……此处省略一万字
tedu.cn.  NS   svr7
svr7         A    192.168.4.7
www       A    192.168.4.20
ftp           A    2.2.2.2
*              A    4.4.4.4
tedu.cn.   A    5.5.5.5
[root@svr7 /]# systemctl  restart  named

虚拟机B测试:
[root@pc207 /]#  nslookup   wwwwww.tedu.cn
[root@pc207 /]#  nslookup   tedu.cn

主从架构

DNS主从架构

作用:提高可靠性,从DNS服务器备份主DNS服务器的数据

主DNS的配置关键——修改named.conf配置文件,为从DNS设置授权:

options {
        .. ..
        allow-transfer {
                从DNS服务器的IP地址;
        }; 
};

从DNS的配置关键——无需手动建立解析记录,只需修改named.conf配置文件:

zone "tedu.cn" IN {
        type slave;  								//类型为slave
        file "slaves/tedu.cn.zone";				//下载存放位置
        masters { 主DNS服务器的IP地址; }; 
}; 

虚拟机A:主DNS服务器,以lol.com域名

虚拟机B:从DNS服务器,以lol.com域名

虚拟机A:主DNS服务器

  1. 授权从DNS服务器
[root@svr7 /]# man named.conf     #参考man帮助

[root@svr7 /]# vim  /etc/named.conf

options {

   directory    "/var/named";

   allow-transfer {  192.168.4.207;  };   #允许谁进行传输数据

};

zone "tedu.cn" IN {

​    type master;

​    file "tedu.cn.zone";

};

zone "lol.com" IN {

​    type master;

​    file "lol.com.zone";

};

\2. 声明从DNS服务器

[root@svr7 /]# vim   /var/named/lol.com.zone

lol.com. NS  svr7

lol.com. NS  pc207      #声明从DNS服务器

svr7    A  192.168.4.7

pc207   A  192.168.4.207

www    A  3.3.3.3

[root@svr7 /]# systemctl restart  named

 

虚拟机B:从DNS服务器

1.安装软件包

[root@pc207 /]# yum -y install bind bind-chroot

2.修改主配置文件

[root@pc207 /]# cp  /etc/named.conf /root

[root@pc207 /]# vim  /etc/named.conf

options {

​    directory    "/var/named";

};

zone "lol.com" IN {

 type  slave;        #类型为从服务器

 file "/var/named/slaves/lol.com.slave"; #确保named用户有读写执行权限

 masters   {  192.168.4.7;   };  #指定主DNS服务器

 masterfile-format   text;     #地址库文件明文存储

};

[root@pc207 /]# ls  /var/named/slaves/          [root@pc207 /]# systemctl restart named

[root@pc207 /]# ls  /var/named/slaves/

lol.com.slave

 

[root@pc207 /]# vim  /etc/resolv.conf

nameserver 192.168.4.7

nameserver 192.168.4.207

[root@pc207 /]# nslookup  www.lol.com

 

九、DNS主从数据同步

虚拟机A:

[root@svr7 /]# vim  /var/named/lol.com.zone

…….此处省略一万字

   2020081801     ; serial #数据的版本号,由10个数字组成

​      1D   ; refresh  #每隔1天主从进行数据交互

​      1H   ; retry    #失效之后的时间间隔每一个1小时

​      1W   ; expire   #真正的失效时间,1周

​      3H )  ; minimum #失效记录的记忆时间3小时

lol.com. NS  svr7

lol.com. NS  pc207

svr7     A  192.168.4.7

pc207   A  192.168.4.207

www    A  8.8.8.8

[root@svr7 /]# systemctl restart  named

虚拟机B:

[root@pc207 /]# nslookup  www.lol.com  192.168.4.207

配置DNS子域授权

为一个DNS区域添加授权子域时,需要修改此区域的地址库,添加以下记录:

子域域名.    		IN    NS  	子DNS的FQDN.
子DNS的FQDN.   	 IN     A	  子DNS的IP地址
步骤一:构建父DNS(tedu.cn)服务器

1)将svr7配置为父DNS服务器,确认配置

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

[root@svr7 ~]# viim  /etc/named.conf
options {
	   directory  "/var/named";
};
zone  "tedu.cn" {
	   type  master;
	   file  "tedu.cn.zone";
};
.. ..
正向地址库文件:

[root@svr7 ~]# vim  /var/named/tedu.cn.zone 
$TTL 1D
@	IN SOA	@ rname.invalid. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
@		NS	svr7.tedu.cn.
svr7		A	192.168.4.7
pc207	A	192.168.4.207
www		A	192.168.4.100
.. ..
确保服务已启用:

[root@svr7 ~]# systemctl  restart  named

步骤一:构建父DNS(tedu.cn)服务器

1)将svr7配置为父DNS服务器,确认配置

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

[root@svr7 ~]# viim  /etc/named.conf
options {
	   directory  "/var/named";
};
zone  "tedu.cn" {
	   type  master;
	   file  "tedu.cn.zone";
};
.. ..
正向地址库文件:

[root@svr7 ~]# vim  /var/named/tedu.cn.zone 
$TTL 1D
@	IN SOA	@ rname.invalid. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
@		NS	svr7.tedu.cn.
svr7		A	192.168.4.7
pc207	A	192.168.4.207
www		A	192.168.4.100
.. ..
确保服务已启用:

[root@svr7 ~]# systemctl  restart  named
步骤二:构建子DNS(bj.tedu.cn)服务器

1)将pc207配置为子DNS服务器,确认配置

安装软件包bind、bind-chroot:

[root@pc207 ~]# yum  -y  install  bind  bind-chroot
.. ..
建立主配置文件/etc/named.conf:

[root@pc207 ~]# mv  /etc/named.conf  /etc/named.conf.origin  	//备份默认配置
[root@pc207 ~]# vim  /etc/named.conf  							//建立新配置
options {
    directory  "/var/named";
};
zone  "bj.tedu.cn" { 							//定义子DNS的正向区域
    type  master;
    file  "bj.tedu.cn.zone";
};
建立地址库配置文件:

[root@pc207 ~]# cd  /var/named/  							//进地址库目录
[root@pc207 named]# cp  -p  named.localhost  tedu.cn.zone  	//参考范本建地址库文件
[root@pc207 named]# vim  bj.tedu.cn.zone  					//修订地址库记录
$TTL 1D  										//文件开头部分可保持不改
@   IN SOA  @ rname.invalid. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
@       NS  pc207.bj.tedu.cn.  					//本区域DNS服务器的FQDN
pc207   A   192.168.4.207  					//为NS主机提供A记录
www     A   1.2.3.4  							//添加测试记录 www.bj.tedu.cn
2)启动系统服务named,并设置开机自启

[root@pc207 named]# systemctl  restart  named
[root@pc207 named]# systemctl  enable  named
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
3)测试 —— 向子DNS可成功查询到子区域中的站点

[root@pc207 ~]# host  www.bj.tedu.cn  192.168.4.207
Using domain server:
Name: 192.168.4.207
Address: 192.168.4.207#53
Aliases: 

www.bj.tedu.cn has address 1.2.3.4
步骤三:在父DNS上配置子域授权

1)测试 —— 未配置子域授权时,向父DNS无法正确查询到子区域中的站点

若父DNS配置有 * 泛域名,则反馈的结果为对应的IP地址119.75.217.56,而不是子DNS中记录的1.2.3.4:

[root@pc207 ~]# host  www.bj.tedu.cn  192.168.4.7
Using domain server:
Name: 192.168.4.7
Address: 192.168.4.7#53
Aliases: 

www.bj.tedu.cn has address 119.75.217.56
若父DNS未配置有 * 泛域名,则找不到解析结果(not found):

[root@pc207 ~]# host  www.bj.tedu.cn  192.168.4.7
Using domain server:
Name: 192.168.4.7
Address: 192.168.4.7#53
Aliases: 

Host www.bj.tedu.cn not found: 3(NXDOMAIN)
2)修改父DNS区域tedu.cn的地址库,添加授权子域信息

[root@svr7 ~]# vim  /var/named/tedu.cn.zone
.. ..
bj.tedu.cn.         NS   	pc207.bj.tedu.cn.  			//子区域及子DNS主机名
pc207.bj.tedu.cn.   A   	192.168.4.207  				//子DNS的IP地址

[root@svr7 named]# systemctl  restart  named  			//重启服务
步骤四:测试子域授权查询

测试 —— 成功配置子域授权以后,向父DNS可以正确查询到子区域中的站点:

[root@pc207 ~]# host  www.bj.tedu.cn  192.168.4.7
Using domain server:
Name: 192.168.4.7
Address: 192.168.4.7#53
Aliases: 

www.bj.tedu.cn has address 1.2.3.4
 [root@pc207 ~]# systemctl  enable  named
4)可向缓存DNS服务器pc207查询到公共域名(百度、网易等站点)

[root@pc207 ~]# host  www.baidu.com  192.168.4.207   		//查百度的站点IP
Using domain server:
Name: 192.168.4.207
Address: 192.168.4.207#53
Aliases: 

www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 111.13.100.92
www.a.shifen.com has address 111.13.100.91

[root@pc207 ~]# host  www.163.com  192.168.4.207    			//查网易的站点IP
Using domain server:
Name: 192.168.4.207
Address: 192.168.4.207#53
Aliases: 

www.163.com is an alias for www.163.com.lxdns.com.
www.163.com.lxdns.com is an alias for 163.xdwscache.ourglb0.com.
163.xdwscache.ourglb0.com has address 111.11.31.104
163.xdwscache.ourglb0.com has address 111.11.31.114

DNS分离解析

​ 当收到客户机的DNS查询请求的时候

– 能够区分客户机的来源地址

– 为不同类别的客户机提供不同的解析结果

– 为客户端提供最近的服务器地址

view  "视图1" {
    match-clients { 客户机地址1; .. .. ; };          //匹配第1类客户机地址
    zone "目标域名" IN {                              //同一个DNS区域
        type master;
        file "地址库1";                             //第1份地址库
    };
};
view  "视图2" {
    match-clients { 客户机地址2; .. .. ; };          //匹配第2类客户机地址
    match-clients { any; };                          //匹配任意地址
    zone "目标域名" IN {                              //同一个DNS区域
        type master;
        file "地址库2";                             //第2份地址库
    };
};
.. ..
view  "视图n" {
    match-clients { any; };                          //匹配任意地址
    zone "目标域名" IN {                              //同一个DNS区域
        type master;
        file "地址库n";                             //第n份地址库
    };
};

acl地址列表:为大批量的客户机地址建立列表

[root@svr7 /]# vim   /etc/named.conf
······························
acl test {  192.168.4.207;  192.168.4.1;  192.168.4.2; 192.168.4.3;   };
view "a" {  
  match-clients  {   test;   };
·······························
view "b" {  
  match-clients  {   test;   };

案例:DNS项目

在这里插入图片描述

  1. 在Web1机器上构建Web服务,实现基于域名的虚拟Web主机,提供www.163.com与www.qq.com两个网站
  2. 在Web2机器上构建Web服务,实现基于域名的虚拟Web主机,提供www.163.com与www.qq.com两个网站
  3. 客户端192.168.4.207访问www.163.com与www.qq.com两个网站,由Web1服务器提供
  4. 客户端192.168.4.208访问www.163.com与www.qq.com两个网站,由Web2服务器提供
  5. 在192.168.4.7上实现DNS服务器分离解析

实验规划

先配置IP地址(nmcli)和主机名(hostname)

IP地址主机名角色
192.168.4.7svr7.test.cnDNS服务器
192.168.4.10web1.test.cnWeb服务器
192.168.4.20web2.test.cnWeb服务器
192.168.4.207client1.test.cn客户端1
192.168.4.208client2.test.cn客户端2

web1服务器配置

[root@web1 ~]# yum -y install httpd
[root@web1 ~]# vim /etc/httpd/conf.d/web1.conf
[root@web1 ~]# cat /etc/httpd/conf.d/web1.conf
<VirtualHost *:80>
  ServerName  www.163.com
  DocumentRoot  /var/www/163
</VirtualHost>

<VirtualHost *:80>
  ServerName  www.qq.com
  DocumentRoot  /var/www/qq
</VirtualHost>
[root@web1 ~]# mkdir /var/www/163 /var/www/qq
[root@web1 ~]# echo "test web1 163" > /var/www/163/index.html
[root@web1 ~]# echo "test web1 qq" > /var/www/qq/index.html
[root@web1 ~]# systemctl restart httpd
[root@web1 ~]# systemctl enable httpd

web2服务器配置

[root@web2 ~]# yum -y install httpd
[root@web2 ~]# vim /etc/httpd/conf.d/web2.conf
[root@web2 ~]# cat /etc/httpd/conf.d/web2.conf
<VirtualHost *:80>
  ServerName  www.163.com
  DocumentRoot  /var/www/163
</VirtualHost>

<VirtualHost *:80>
  ServerName  www.qq.com
  DocumentRoot  /var/www/qq
</VirtualHost>
[root@web2 ~]# mkdir /var/www/163 /var/www/qq
[root@web2 ~]# echo "wo shi web2 163" > /var/www/163/index.html
[root@web2 ~]# echo "wo shi web2 qq" > /var/www/qq/index.html
[root@web2 ~]# systemctl restart httpd
[root@web2 ~]# systemctl enable httpd

dns服务器配置

[root@dns1 ~]# yum -y install bind bind-chroot
[root@dns1 ~]# vim /etc/named.conf
[root@dns1 ~]# cat /etc/named.conf
options {
    directory   "/var/named";
};
view "web1" {
 match-clients { 192.168.4.207; };
 zone "163.com" IN {
    type master;
    file "163.com.zone";
 };
 zone "qq.com" IN  {
    type master;
    file "qq.com.zone";
 };
};

view "web2" {
 match-clients { 192.168.4.208; };
 zone "163.com" IN {
    type master;
    file "163.com.other";
 };
 zone "qq.com" IN  {
    type master;
    file "qq.com.other";
 };
};

[root@dns1 ~]# cd /var/named/
[root@dns1 named]# cp -p named.localhost 163.com.zone
[root@dns1 named]# vim 163.com.zone
[root@dns1 named]# cat 163.com.zone
···································省略一万字
163.com.    NS   svr7
svr7        A   192.168.4.7
www         A   192.168.4.10

[root@dns1 named]# cp -p named.localhost qq.com.zone
[root@dns1 named]# vim qq.com.zone
[root@dns1 named]# cat qq.com.zone
···································省略一万字
qq.com.     NS  svr7
svr7       A   192.168.4.7
www         A   192.168.4.10

[root@dns1 named]# cp -p 163.com.zone 163.com.other
[root@dns1 named]# vim 163.com.other
[root@dns1 named]# cat 163.com.other
163.com.    NS  svr7
svr7        A   192.168.4.7
www         A   192.168.4.20

[root@dns1 named]# cp -p qq.com.zone qq.com.other
[root@dns1 named]# vim qq.com.other
[root@dns1 named]# cat qq.com.other
qq.com.     NS   svr7
svr7        A   192.168.4.7
www         A   192.168.4.20

[root@dns1 named]# systemctl restart named
[root@dns1 ~]# systemctl enable named

指定主机们的DNS到DNS服务器

[root@dns1 ~]# echo nameserver 192.168.4.7 > /etc/resolv.conf
[root@web1 ~]# echo nameserver 192.168.4.7 > /etc/resolv.conf
[root@web2 ~]# echo nameserver 192.168.4.7 > /etc/resolv.conf
[root@client1 ~]# echo nameserver 192.168.4.7 > /etc/resolv.conf
[root@client2 ~]# echo nameserver 192.168.4.7 > /etc/resolv.conf

客户端测试

客户端1
[root@client1 ~]# nslookup www.qq.com
Server:     192.168.4.7
Address:    192.168.4.7#53

Name:   www.qq.com
Address: 192.168.4.10

[root@client1 ~]# nslookup www.163.com
Server:     192.168.4.7
Address:    192.168.4.7#53

Name:   www.163.com
Address: 192.168.4.10

[root@client1 ~]# curl http://www.163.com
test web1 163
[root@client1 ~]# curl http://www.qq.com
test web1 qq

客户端2
[root@client2 ~]# nslookup www.163.com
Server:     192.168.4.7
Address:    192.168.4.7#53

Name:   www.163.com
Address: 192.168.4.20

[root@client2 ~]# nslookup www.qq.com
Server:     192.168.4.7
Address:    192.168.4.7#53

Name:   www.qq.com
Address: 192.168.4.20

[root@client2 ~]# curl http://www.163.com
test web2 163
[root@client2 ~]# curl http://www.qq.com
test web2 qq

NTP时间同步

  1. 部署一台NTP时间服务器
  2. 设置时间服务器上层与0.centos.pool.ntp.org同步
  3. 设置本地服务器层级数量为10
  4. 允许192.168.4.0/24网络的主机同步时间
  5. 客户端验证时间是否同步

使用yum安装bind、bind-chroot软件包

修改配置文件/etc/chrony.conf

[root@proxy ~]# vim  /etc/chrony.conf
server 0.centos.pool.ntp.org iburst         //server用户客户端指向上层NTP服务器
allow 192.168.4.0/24        //允许那个IP或网络访问NTP
local stratum 10            //设置NTP服务器的层数量

重启chronyd服务

[root@mail ~]# systemctl  restart chronyd
[root@svr7 ~]# firewall-cmd --set-default-zone=trusted   #设置防火墙

步骤二:虚拟机B构建NTP时间同步的客户端

1)修改/etc/chrony.conf文件

[root@pc207 ~]# vim /etc/chrony.confserver 
192.168.4.7 iburst

2)重启chronyd服务

[root@pc207 ~]# systemctl  restart chronyd[root@svr7 ~]
# firewall-cmd --set-default-zone=trusted  #设置防火墙

3)修改时间进行测试

[root@pc207 ~]# date -s "2008-9-1"
2008年 09月 01日 星期一 00:00:00 CST
[root@pc207 ~]# date
2008年 09月 01日 星期一 00:00:01 CST
[root@pc207 ~]# systemctl restart chronyd
[root@pc207 ~]# date
2008年 09月 01日 星期一 00:01:42 CST
[root@pc207 ~]# date
2020年 04月 13日 星期一 18:44:56 CST
[root@pc207 ~]# chronyc  sources –v     #专业查看时间服务端信息命令

邮件服务器

1.构建DNS服务器,提供邮件交换解析记录

虚拟机A:构建DNS服务器

  • 修改主配置文件
[root@svr7 /]# vim   /etc/named.conf
options {
        directory       "/var/named";
};

zone  "qq.com"  IN  {
      type  master;
      file  "qq.com.zone";  
};
  • 建立地址库文件
[root@svr7 /]# cd /var/named/
[root@svr7 named]# cp  -p  named.localhost    qq.com.zone
[root@svr7 named]# vim   qq.com.zone
.......此处省略一万字
qq.com.     NS       svr7
svr7        A        192.168.4.7
www         A        1.2.3.4
  • 添加邮件交换解析记录
[root@svr7 /]# vim /var/named/qq.com.zone
.......此处省略一万字
qq.com.   NS       svr7
qq.com.   MX  10   mail               #声明邮件解析记录,优先级为10,数字越小越优先
svr7      A        192.168.4.7
mail      A        192.168.4.7        #解析邮件服务器地址为192.168.4.7
www       A        1.2.3.4

[root@svr7 /]# systemctl restart named
  • 测试邮件交换记录
[root@svr7 /]# host -t MX qq.com     #测试邮件交换记录,qq.com域名的邮件服务器
qq.com mail is handled by 10 mail.qq.com.
[root@svr7 /]# nslookup mail.qq.com

2.构建邮件服务器

  • 虚拟机A:
  • 安装软件包
  • 修改主配置文件
[root@svr7 /]# vim   /etc/postfix/main.cf
 在末行模式   : set   nu   开启行号功能
 99  myorigin   =   qq.com        #默认补全的域名后缀
 116 inet_interfaces = all         #在本机所有网卡的IP地址,提供邮件功能
 164 mydestination = qq.com        #判断为本域邮件的依据
  • 重启服务
[root@svr7 /]# systemctl  restart  postfix

3.测试

  • mail 发信操作:mail -s ‘邮件标题’ -r 发件人 收件人
[root@svr7 /]# useradd   yg
[root@svr7 /]# useradd   xln
[root@svr7 /]# mail -s  'test01'  -r  yg   xln         #交互式发邮件
hahaxixihehelele
.                    #只有一个点,代表发送
EOT
[root@svr7 /]# echo  hahaxixi    |   mail   -s    '九阴真经'   -r   yg     xln       #非交互式发邮件
  • mail 收信操作:mail [-u 用户名]
[root@svr7 /]# mail -u xln           #以root的身份查看xln的邮件
\>N  1 yg@qq.com        Wed Jun 17 16:44  18/508   "test01"
& 1   #输入邮件编号1
& quit

rsync同步操作

基本操作

rsync   [选项...]  源目录  目标目录

•	同步与复制的差异
–	复制:完全拷贝源到目标
–	同步:增量拷贝,只传输变化过的数据

•	rsync操作选项
–	-n:测试同步过程,不做实际修改
–	--delete:删除目标文件夹内多余的文档
–	-a:归档模式,相当于-rlptgoD  #
–	-v:显示详细操作信息
–	-z:传输过程中启用压缩/解压

rlptgoD:

rlptgoD

  1. 将目录 /boot 同步到目录 /todir 下
  2. 将目录 /boot 下的文档同步到目录 /todir 下
  3. 在目录 /boot 下新增文件 a.txt,删除 /todir 下的子目录 grub2,再次同步使 /todir 与 /boot 一致
 1.rsync  -a  /boot  /todir     
 
 2.rsync  -a  /boot/  /todir  
 
 3.touch  /boot/a.txt
   rm  -rf  /todir/grub2/ 
   rsync  -a  /boot/  /todir/

rsync+SSH同步

列出SSH服务端资源
rsync user@host:远程目录:/

下行:rsync [...] user@host:远程目录  本地目录    #将远程同步到本地

上行:rsync [...] 本地目录  user@host:远程目录    #将本地同步到远程

服务端需要开始sshd服务,并提供授权的用户和密码
同步数据,ssh无密码验证
1.虚拟机A:生成公钥(锁)与私钥(钥匙)
[root@svr7 ~]# ssh-keygen   #一路回车
[root@svr7 ~]# ls /root/.ssh/
id_rsa(私钥)   id_rsa.pub (公钥)
known_hosts(记录曾经远程管理过哪些机器)
2.虚拟机A:将公钥传递到虚拟机B
]# ssh-copy-id     root@192.168.4.207
]# rsync -av --delete  /mydir/    root@192.168.4.207:/opt/

inotify实时同步

部署环境

下载地址:

http://download.sf.net/inotify-tools

下载到后,解压到/usr/loca后make&install

[root@svr7 ~]# tar -xf /root/inotify-tools-3.13.tar.gz  -C  /usr/src/
[root@svr7 ~]# cd  /usr/src/inotify-tools-3.13/
[root@svr7 inotify-tools-3.13]# ./configure
[root@svr7 inotify-tools-3.13]#make
[root@svr7 inotify-tools-3.13]#make install
基本用法
•	基本用法
–	inotifywait  [选项]  目标文件夹
•	常用命令选项
–	-m,持续监控(捕获一个事件后不退出)
–	-r,递归监控、包括子目录及文件
–	-q,减少屏幕输出信息
–	-e,指定监视的 modify、move、create、delete、attrib 等事件类别       
测试inotifywait监控

1)开启监控任务,置入后台

[root@svr7 ~]# inotifywait  -mrq  -e  create,modify,move,attrib,delete /opt &
[1] 55564

2)测试/opt/目录下的新建、修改、改名、更改权限、删除文件等事件的响应消息

观察新建文件时的监控信息:
[root@svr7 ~]# touch  /opt/a.txt
/opt/ CREATE a.txt
/opt/ ATTRIB a.txt

......其他更改提醒响应式操作

3)停止监控任务
[root@svr7 ~]# kill  -9  %1
[1]+  已杀死          inotifywait -mr -e create,modify,move,attrib,delete /opt

shell:结合inotifywait和rsync进行监控

本例要求为两台Web服务器svr7、pc207的网页文档目录配置镜像同步,主要基于inotifywait监控技术实现实时触发操作,需要完成下列任务:

  1. 以 svr7 为发起方,原始目录为 /var/www/html/
  2. 以 pc207 为同步目标,基于SSH免密验证
  3. 编写 inotify+rsync 同步脚本,验证实时同步效果

思想:

解决重复性事情:利用循环解决
while  inotifywait监控操作
do
        需要执行的rsync同步操作
done

#!/bin/bash
FROM_DIR="/var/www/html/"      
RSYNC_CMD="rsync  -az  --delete  $FROM_DIR  root@192.168.4.207:/var/www/html" 

while  inotifywait  -rqq  -e  modify,move,create,delete,attrib  $FROM_DIR 
do
    $RSYNC_CMD
done  &
[root@svr7 ~]#/root/isync.sh
[root@svr7 ~]# pgrep  -l  inotify            //确认任务在运行
56494 inotifywait

[root@svr7 ~]# pkill  -9  inotify			 //结束任务
[root@svr7 ~]# pgrep  -l  inotify            //确认已没有监控任务

虚拟Web

• 提供的默认配置

– Listen:监听地址:端口(80)

– ServerName:本站点注册的DNS名称(空缺)

– DocumentRoot:网页根目录(/var/www/html)

– DirectoryIndex:起始页/首页文件名(index.html)

[root@svr7 ~]# vim /etc/conf/httpd.conf
[root@svr7 ~]# vim /etc/httpd/conf/http.conf
[root@svr7 ~]# vim /etc/httpd/conf/httpd.conf
[root@svr7 ~]# mkdir /var/www/myweb
[root@svr7 ~]# echo test for myweb >/var/www/myweb/index.html
[root@svr7 ~]# systemctl restart httpd
[root@svr7 ~]# curl 192.168.4.7(ip)
test for myweb

一台服务器,提供多个不同页面

• 区分方式

– 基于域名的虚拟主机

– 基于端口的虚拟主机

– 基于IP地址的虚拟主机

•	为每个虚拟站点添加配置
<VirtualHost    IP地址:端口>
           ServerName  此站点的DNS名称
           DocumentRoot  此站点的网页根目录
</VirtualHost>
•	配置文件路径
–	/etc/httpd/conf/httpd.conf    #主配置文件
–	/etc/httpd/conf.d/*.conf        #调用配置文件

•	一旦使用虚拟Web主机功能,所有的网站都要使用虚拟Web主机功能进行呈现


1.新建调用配置文件
[root@svr7 ~]# vim   /etc/httpd/conf.d/haha.conf
<VirtualHost   *:80>    #本机所有地址的80端口,都启用
  ServerName   www.qq.com          #设置网站名称
  DocumentRoot   /var/www/qq        #存放网页文件路径
</VirtualHost>

<VirtualHost   *:80>
  ServerName   www.baidu.com
  DocumentRoot   /var/www/baidu
</VirtualHost>
[root@svr7 ~]# mkdir  /var/www/qq
[root@svr7 ~]# mkdir  /var/www/baidu
[root@svr7 ~]# echo 企鹅 >  /var/www/qq/index.html
[root@svr7 ~]# echo 度娘 >  /var/www/baidu/index.html
[root@svr7 ~]# systemctl  restart   httpd



[root@svr7 ~]# curl www.qq.com
curl: (6) Could not resolve host: www.qq.com; 未知的错误
[root@svr7 ~]# curl http://www.qq.com
curl: (6) Could not resolve host: www.qq.com; 未知的错误
[root@svr7 ~]# cat /var/www/lol/index.html
testlol
[root@svr7 ~]# vim /etc/httpd/conf/httpd.conf
[root@svr7 ~]# curl http://192.168.4.7
testqq

需要域名解析
2./etc/hosts文件直接起到域名解析(只为本机提供解析 没有DNS服务前)
[root@svr7 ~]# vim  /etc/hosts
192.168.4.7    www.qq.com   www.baidu.com
[root@svr7 ~]# curl   http://www.qq.com
[root@svr7 ~]# curl   http://www.baidu.com

[root@svr7 ~]# vim   /etc/httpd/conf.d/haha.conf
<VirtualHost    *:80>
  ServerName  www.qq.com
  DocumentRoot  /var/www/qq
</VirtualHost>
<VirtualHost    *:80>
  ServerName  www.baidu.com
  DocumentRoot  /var/www/baidu
</VirtualHost>
<VirtualHost   *:80>
  ServerName   www.360.com
  DocumentRoot    /webroot
</VirtualHost>
[root@svr7 ~]# systemctl  restart httpd
[root@svr7 ~]# vim  /etc/hosts
192.168.4.7    www.qq.com   www.baidu.com  www.360.com
[root@svr7 ~]# curl   http://www.360.com

3.基于端口的虚拟主机
[root@svr7 ~]# vim /etc/httpd/conf.d/haha.conf
<VirtualHost   *:80>
  ServerName www.qq.com
  DocumentRoot  /var/www/qq
</VirtualHost>
Listen 9000
<VirtualHost   *:9000>
  ServerName  www.qq.com
  DocumentRoot  /var/www/baidu
</VirtualHost>
<VirtualHost   *:80>
  ServerName www.360.com
  DocumentRoot  /webroot
</VirtualHost>
[root@svr7 ~]# systemctl restart httpd
[root@svr7 ~]# curl http://www.qq.com         
[root@svr7 ~]# curl http://www.qq.com:9000

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值