【树莓派不吃灰】Linux服务器篇(核心概念)

news2024/9/21 0:28:39

在这里插入图片描述

目录

    • 1. 第一章 架设服务器前的准备工作
    • 2. 第二章 基础网络概念
    • 3. 第三章 局域网络架构简介
    • 4. 第四章 连上 Internet
    • 5. 第五章 Linux 常用网络指令
    • 6. 第六章 Linux 网络侦错
    • 7. 第七章 网络安全与主机基本防护
    • 8. 第八章 路由观念与路由器设定
    • 9. 第九章 防火墙与 NAT 服务器(重点)
    • 10. 第十章 申请合法的主机名
    • 11. 第十一章 远程联机服务器SSH / XDMCP / VNC / RDP
    • 12. 第十二章 网络参数控管者: DHCP 服务器
    • 13. 第十三章 文件服务器之一:NFS 服务器
    • 14. 第十四章 账号控管: NIS 服务器
    • 15. 第十五章 时间服务器: NTP 服务器
    • 16. 第十六章 文件服务器之二: SAMBA 服务器
    • 17. 第十七章 区网控制者: Proxy 服务器
    • 18. 第十八章 网络驱动器装置: iSCSI 服务器
    • 19. 第十九章 主机名控制者: DNS 服务器
    • 20. 第二十章 WWW 伺服器
    • 21. 第二十一章 文件服务器之三: FTP 服务器
    • 22. 第二十二章 邮件服务器: Postfix

  • ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️
  • ❤️ 本篇创建记录 2022-11-29 ❤️
  • ❤️ 本篇更新记录 2022-11-29 ❤️
  • 🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言 📝
  • 🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请留言轰炸哦!及时修正!感谢支持!
  • 🔥 Arduino ESP8266教程累计帮助过超过1W+同学入门学习硬件网络编程,入选过选修课程,刊登过无线电杂志🔥

1. 第一章 架设服务器前的准备工作

精读鸟哥私房菜 第一章 架设服务器前的准备工作
在这里插入图片描述

在这里插入图片描述
整个联机分为几个部分,包括:网络服务器本身内部防火墙软件设定、各项服务配置文件、细部权限的 SELinux 以及最终最重要的档案权限

在这里插入图片描述

2. 第二章 基础网络概念

精读鸟哥私房菜 第二章 基础网络概念
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 第三章 局域网络架构简介

精读鸟哥私房菜 第三章 局域网络架构简介
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 第四章 连上 Internet

精读鸟哥私房菜 第四章 连上 Internet
在这里插入图片描述

树莓派dns命令:

sudo apt-get install dnsutils

5. 第五章 Linux 常用网络指令

精读鸟哥私房菜 第五章 Linux 常用网络指令
在这里插入图片描述

pi@raspberrypi:~ $ ifconfig wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.104  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::e969:5de2:c5f2:60d2  prefixlen 64  scopeid 0x20<link>
        ether dc:a6:32:ef:0b:9f  txqueuelen 1000  (Ethernet)
        RX packets 32714407  bytes 2720628877 (2.5 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 49913634  bytes 872025979 (831.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

pi@raspberrypi:~ $ 
  • RX:那一行代表的是网络由启动到目前为止的包接收情况, packets 代表封包数、errors 代表封包发生错误的数量、 dropped 代表封包由于有问题而遭丢弃的数量等等
  • TX:与 RX 相反,为网络由启动到目前为止的传送情况;
  • collisions:代表封包碰撞的情况,如果发生太多次, 表示你的网络状况不太好;
  • RX bytes, TX bytes:总接收、发送字节总量
pi@raspberrypi:~ $ cat /etc/wpa_supplicant/wpa_supplicant.conf
pi@raspberrypi:~ $ sudo nano /etc/dhcpcd.conf
pi@raspberrypi:~ $ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    303    0        0 wlan0
169.254.0.0     0.0.0.0         255.255.0.0     U     206    0        0 vetha7980c9
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.0.0     0.0.0.0         255.255.255.0   U     303    0        0 wlan0
pi@raspberrypi:~ $ 

  • Destination, Genmask:这两个玩意儿就是分别是 network 与 netmask 啦!所以这两个咚咚就组合成为一个完整的网域啰!
  • Gateway:该网域是通过哪个 gateway 连接出去的?如果显示 0.0.0.0 表示该路由是直接由本机传送,亦即可以透过局域网络的 MAC 直接传讯;如果有显示 IP 的话,表示该路由需要经过路由器 (通讯闸) 的帮忙才能够传送出去。
  • Flags:总共有多个旗标,代表的意义如下:

U (route is up):该路由是启动的;
H (target is a host):目标是一部主机 (IP) 而非网域;
G (use gateway):需要透过外部的主机 (gateway) 来转递封包;
R (reinstate route for dynamic routing):使用动态路由时,恢复路由信息的旗标;
D (dynamically installed by daemon or redirect):已经由服务或转 port 功能设定为动态路由
M (modified from routing daemon or redirect):路由已经被修改了;
! (reject route):这个路由将不会被接受(用来抵挡不安全的网域!)

  • Iface:这个路由传递封包的接口。

ip 是个指令喔!并不是那个 TCP/IP 的 IP 啦!这个 ip 指令的功能可多了!基本上,他就是整合了 ifconfig 与 route 这两个指令啰~不过, ip 可以达成的功能却又多更多!真是个相当厉害的指令。如果你有兴趣的话,请自行 vi /sbin/ifup ,就知道整个 ifup 就是利用 ip 这个指令来达成的。

pi@raspberrypi:~ $ ip -s link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped missed  mcast   
    8647278892 58209131 0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    8647278892 58209131 0       0       0       0       
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
    link/ether dc:a6:32:ef:0b:9e brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped missed  mcast   
    0          0        0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    0          0        0       0       0       0       
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DORMANT group default qlen 1000
    link/ether dc:a6:32:ef:0b:9f brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped missed  mcast   
    2965435880 35848787 0       0       0       810721  
    TX: bytes  packets  errors  dropped carrier collsns 
    1777368705 54661590 0       0       0       0       
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default 
    link/ether 02:42:a6:1d:99:e2 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped missed  mcast   
    786        6        0       0       0       5       
    TX: bytes  packets  errors  dropped carrier collsns 
    43629      435      0       0       0       0       
6: vetha7980c9@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP mode DEFAULT group default 
    link/ether f6:66:6b:bc:14:be brd ff:ff:ff:ff:ff:ff link-netnsid 0
    RX: bytes  packets  errors  dropped missed  mcast   
    870        6        0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    8916604    23884    0       1       0       0       
pi@raspberrypi:~ $ 

如果说 ip link 是与 OSI 七层协定 的第二层链接层有关的话,那么 ip address (ip addr) 就是与第三层网络层有关的参数啦! 主要是在设定与 IP 有关的各项参数,包括 netmask, broadcast 等等。

pi@raspberrypi:~ $ ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether dc:a6:32:ef:0b:9e brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether dc:a6:32:ef:0b:9f brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.104/24 brd 192.168.0.255 scope global noprefixroute wlan0
       valid_lft forever preferred_lft forever
    inet6 fe80::e969:5de2:c5f2:60d2/64 scope link 
       valid_lft forever preferred_lft forever
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:a6:1d:99:e2 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:a6ff:fe1d:99e2/64 scope link 
       valid_lft forever preferred_lft forever
6: vetha7980c9@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether f6:66:6b:bc:14:be brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 169.254.114.178/16 brd 169.254.255.255 scope global noprefixroute vetha7980c9
       valid_lft forever preferred_lft forever
    inet6 fe80::c53a:237e:1d0f:b20f/64 scope link 
       valid_lft forever preferred_lft forever
pi@raspberrypi:~ $ 

事实上, ip route 的功能几乎与 route 这个指令差不多,但是,他还可以进行额外的参数设计,例如 MTU 的规划等等,相当的强悍啊!

pi@raspberrypi:~ $  ip route show
default via 192.168.0.1 dev wlan0 proto dhcp src 192.168.0.104 metric 303 
169.254.0.0/16 dev vetha7980c9 scope link src 169.254.114.178 metric 206 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 
192.168.0.0/24 dev wlan0 proto dhcp scope link src 192.168.0.104 metric 303 
pi@raspberrypi:~ $ ping -c 3 www.baidu.com
PING www.baidu.com (14.215.177.38) 56(84) bytes of data.
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=1 ttl=57 time=12.1 ms
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=2 ttl=57 time=5.56 ms
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=3 ttl=57 time=6.39 ms

--- www.baidu.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 5.560/8.018/12.105/2.909 ms
pi@raspberrypi:~ $ 

我们前面谈到的指令大多数都是针对主机的网络参数设定所需要的,而 ping 是两部主机之间的回声与否判断, 那么有没有指令可以追踪两部主机之间通过的各个节点 (node) 通讯状况的好坏呢?举例来说,如果我们联机到 yahoo 的速度比平常慢,你觉得是 (1)自己的网络环境有问题? (2)还是外部的 Internet 有问题?如果是 (1) 的话,我们当然需要检查自己的网络环境啊,看看是否又有谁中毒了?但如果是 Internet 的问题呢?那只有『等等等』啊! 判断是 (1) 还是 (2) 就得要使用 traceroute 这个指令啦!

pi@raspberrypi:~ $ traceroute -n www.baidu.com
traceroute to www.baidu.com (14.215.177.38), 30 hops max, 60 byte packets
 1  192.168.0.1  1.925 ms  2.967 ms  2.982 ms
 2  100.64.0.1  11.060 ms  11.175 ms  11.137 ms
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 7  * * *
 8  * * *
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *

pi@raspberrypi:~ $ nslookup www.baidu.com
Server:         192.168.0.1
Address:        192.168.0.1#53

Non-authoritative answer:
Name:   www.baidu.com
Address: 14.215.177.39
Name:   www.baidu.com
Address: 14.215.177.38
www.baidu.com   canonical name = www.a.shifen.com.

pi@raspberrypi:~ $ 

6. 第六章 Linux 网络侦错

精读鸟哥私房菜 第六章 Linux 网络侦错t
在这里插入图片描述

在这里插入图片描述

7. 第七章 网络安全与主机基本防护

精读鸟哥私房菜 第七章 网络安全与主机基本防护
在这里插入图片描述

在这里插入图片描述

  • 经过防火墙的分析

Linux 系统有内建的防火墙机制,因此你的联机能不能成功,得要先看防火墙的脸色才行。预设的 Linux 防火墙就有两个机制,这两个机制都是独立存在的,因此我们预设就有两层防火墙喔。第一层是封包过滤式的 netfilter 防火墙, 另一个则是透过软件控管的 TCP Wrappers 防火墙

  • 封包过滤防火墙:IP FilteringNet Filter。要进入 Linux 本机的封包都会先通过 Linux 核心的预设防火墙,就是称为 netfilter 的咚咚,简单的说,就是 iptables 这个软件所提供的防火墙功能。为何称为封包过滤呢?因为他主要是分析 TCP/IP 的封包表头来进行过滤的机制,主要分析的是 OSI 的第二、三、四层,主要控制的就是 MAC, IP, ICMP, TCP 与 UDP 的埠口与状态 (SYN, ACK…) 等。
  • 第二层防火墙:TCP Wrappers。通过 netfilter 之后,网络封包会开始接受 Super daemons 及 TCP_Wrappers 的检验,那个是什么呢? 说穿了就是 /etc/hosts.allow/etc/hosts.deny 的配置文件功能啰。 这个功能也是针对 TCP 的 Header 进行再次的分析,同样你可以设定一些机制来抵制某些 IP 或 Port ,好让来源端的封包被丢弃或通过检验;

透过防火墙的管控,我们可以将大部分来自因特网的垃圾联机丢弃,只允许自己开放的服务的联机进入本机而已, 可以达到最基础的安全防护。

  • 服务 (daemon) 的基本功能

预设的防火墙是 Linux 的内建功能,但防火墙主要管理的是 MAC, IP, Port 等封包表头方面的信息,如果想要控管某些目录可以进入, 某些目录则无法使用的功能,那就得要透过权限以及服务器软件提供的相关功能了。举例来说,你可以在 httpd.conf 这个配置文件之内规范某些 IP 来源不能使用 httpd 这个服务来取得主机的数据, 那么即使该 IP 通过前面两层的过滤,他依旧无法取得主机的资源喔!但要注意的是, 如果 httpd 这支程序本来就有问题的话,那么 client 端将可直接利用 httpd 软件的漏洞来入侵主机,而不需要取得主机内 root 的密码!因此, 要小心这些启动在因特网上面的软件喔!

  • SELinux 对网络服务的细部权限控制

为了避免前面一个步骤的权限误用,或者是程序有问题所造成的资安状况,因此 Security Enhanced Linux (安全强化 Linux) 就来发挥它的功能啦!简单的说,SELinux 可以针对网络服务的权限来设定一些规则 (policy) ,让程序能够进行的功能有限, 因此即使使用者的档案权限设定错误,以及程序有问题时,该程序能够进行的动作还是被限制的,即使该程序使用的是 root 的权限也一样。举例来说,前一个步骤的 httpd 真的被 cracker 攻击而让对方取得 root 的使用权,由于 httpd 已经被 SELinux 控制在 /var/www/html 里面,且能够进行的功能已经被规范住了,因此 cracker 就无法使用该程序来进行系统的进一步破坏啰。现在这个 SELinux 一定要开启喔!

  • 使用主机的文件系统资源

想一想,你使用浏览器连接到 WWW 主机最主要的目的是什么?当然就是读取主机的 WWW 数据啦! 那 WWW 资料是啥?就是档案啊!_!所以,最终网络封包其实是要向主机要求文件系统的数据啦。 我们这里假设你要使用 httpd 这支程序来取得系统的档案数据,但 httpd 默认是由一个系统账号名称为 httpd 来启动的,所以:你的网页数据的权限当然就是要让 httpd 这支程序可以读取才行啊!如果你前面三关的设定都 OK ,最终权限设定错误,使用者依旧无法浏览你的网页数据的。

所以啊,主机防护还是很重要的!不要小看了!提供几个方向给大家思考看看吧:

  • 建立完善的登入密码规则限制;
  • 完善的主机权限设定;
  • 设定自动升级与修补软件漏洞、及移除危险软件;
  • 在每项系统服务的设定当中,强化安全设定的项目;
  • 利用 iptables, TCP_Wrappers 强化网络防火墙;
  • 利用主机监控软件如 MRTGlogwatch 来分析主机状况与登录文件;

8. 第八章 路由观念与路由器设定

精读鸟哥私房菜 第八章 路由观念与路由器设定
在这里插入图片描述

9. 第九章 防火墙与 NAT 服务器(重点)

精读鸟哥私房菜 第九章 防火墙与 NAT 服务器
在这里插入图片描述

防火墙能作什么呢?防火墙最大的功能就是帮助你『限制某些服务的存取来源』! 举例来说: (1)你可以限制文件传输服务 (FTP) 只在子域内的主机才能够使用,而不对整个 Internet 开放; (2)你可以限制整部 Linux 主机仅可以接受客户端的 WWW 要求,其他的服务都关闭; (3)你还可以限制整部主机仅能主动对外联机。反过来说,若有客户端对我们主机发送主动联机的封包状态 (TCP 封包的 SYN flag) 就予以抵挡等等。这些就是最主要的防火墙功能了!

所以鸟哥认为,防火墙最重要的任务就是在规划出:

  • 切割被信任(如子域)与不被信任(如 Internet)的网段;
  • 划分出可提供 Internet 的服务与必须受保护的服务;
  • 分析出可接受与不可接受的封包状态;

防火墙类型主要则有封包过滤的 Netfilter利用代理服务器 (proxy server) 进行存取代理的方式了。

Netfilter (封包过滤机制)

所谓的封包过滤,亦即是分析进入主机的网络封包,将封包的表头数据捉出来进行分析,以决定该联机为放行或抵挡的机制。 由于这种方式可以直接分析封包表头数据,所以包括硬件地址(MAC), 软件地址 (IP), TCP, UDP, ICMP 等封包的信息都可以进行过滤分析的功能。
Netfilter 提供了 iptables 这个软件来作为防火墙封包过滤的指令。由于 Netfilter 是核心内建的功能,因此他的效率非常的高! 非常适合于一般小型环境的设定呢!Netfilter 利用一些封包过滤的规则设定,来定义出什么资料可以接收, 什么数据需要剔除,以达到保护主机的目的喔!

TCP Wrappers (程序控管)

另一种抵挡封包进入的方法,为透过服务器程序的外挂 (tcpd) 来处置的!与封包过滤不同的是, 这种机制主要是分析谁对某程序进行存取,然后透过规则去分析该服务器程序谁能够联机、谁不能联机。 由于主要是透过分析服务器程序来控管,因此与启动的埠口无关,只与程序的名称有关。 举例来说,我们知道 FTP 可以启动在非正规的 port 21 进行监听,当你透过 Linux 内建的 TCP wrappers 限制 FTP 时, 那么你只要知道 FTP 的软件名称 (vsftpd) ,然后对他作限制,则不管 FTP 启动在哪个埠口,都会被该规则管理的。

Proxy (代理服务器)

在这里插入图片描述

单一网域,仅有一个路由器:
在这里插入图片描述
内部网络包含安全性更高的子网,需内部防火墙切开子网:

不能保证所有使用企业内部计算机的用户都是公司的员工,也无法保证你的员工不会『搞破坏!』 更多时候是由于某些外来访客利用移动式装置 (笔记本电脑) 连接到公司内部的无线网络来加以窃取企业内部的重要信息。
在这里插入图片描述

在防火墙的后面架设网络服务器主机
在这里插入图片描述
防火墙的使用限制

  • 拒绝让 Internet 的封包进入主机的某些端口
  • 拒绝让某些来源 IP 的封包进入
  • 拒绝让带有某些特殊旗标 (flag) 的封包进入

最常拒绝的就是带有 SYN 的主动联机的旗标

  • 分析硬件地址 (MAC) 来决定联机与否

MAC 是焊在网络卡上面的,所以你只要分析到该使用者所使用的 MAC 之后,可以利用防火墙将该 MAC 锁住

  • 防火墙并不能很有效的抵挡病毒或木马程序
  • 防火墙对于来自内部 LAN 的攻击较无承受力

TCP Wrappers
说穿了, TCP wrappers 就是透过 /etc/hosts.allow, /etc/hosts.deny 这两个宝贝蛋来管理的一个类似防火墙的机制, 但并非所有的软件都可以透过这两个档案来控管,只有底下的软件才能够透过这两个档案来管理防火墙规则,分别是:

  • 由 super daemon (xinetd) 所管理的服务;
  • 有支援 libwrap.so 模块的服务

先以 /etc/hosts.allow 为优先比对,该规则符合就予以放行;
再以 /etc/hosts.deny 比对,规则符合就予以抵挡;
若不在这两个档案内,亦即规则都不符合,最终则予以放行。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10. 第十章 申请合法的主机名

精读鸟哥私房菜 第十章 申请合法的主机名
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

11. 第十一章 远程联机服务器SSH / XDMCP / VNC / RDP

精读鸟哥私房菜 第十一章 远程联机服务器SSH / XDMCP / VNC / RDP
在这里插入图片描述

  • 文字接口密码: ssh 为主,已经取代上述的 telnet, rsh 等明码方式;
  • 图形接口: Xdmcp, VNC, RDP 等较为常见

在这里插入图片描述

  • 服务器建立公钥档: 每一次启动 sshd 服务时,该服务会主动去找 /etc/ssh/ssh_host* 的档案,若系统刚刚安装完成时,由于没有这些公钥档案,因此 sshd 会主动去计算出这些需要的公钥档案,同时也会计算出服务器自己需要的私钥档;
  • 客户端主动联机要求: 若客户端想要联机到 ssh 服务器,则需要使用适当的客户端程序来联机,包括 ssh, pietty 等客户端程序;
  • 服务器传送公钥档给客户端: 接收到客户端的要求后,服务器便将第一个步骤取得的公钥档案传送给客户端使用 (此时应是明码传送,反正公钥本来就是给大家使用的!);
  • 客户端记录/比对服务器的公钥数据及随机计算自己的公私钥: 若客户端第一次连接到此服务器,则会将服务器的公钥数据记录到客户端的用户家目录内的 ~/.ssh/known_hosts 。若是已经记录过该服务器的公钥数据,则客户端会去比对此次接收到的与之前的记录是否有差异。若接受此公钥数据, 则开始计算客户端自己的公私钥数据;
  • 回传客户端的公钥数据到服务器端: 用户将自己的公钥传送给服务器。此时服务器:『具有服务器的私钥与客户端的公钥』,而客户端则是: 『具有服务器的公钥以及客户端自己的私钥』,你会看到,在此次联机的服务器与客户端的密钥系统 (公钥+私钥) 并不一样,所以才称为非对称式密钥系统喔。
  • 开始双向加解密: (1)服务器到客户端:服务器传送数据时,拿用户的公钥加密后送出。客户端接收后,用自己的私钥解密; (2)客户端到服务器:客户端传送数据时,拿服务器的公钥加密后送出。服务器接收后,用服务器的私钥解密。

当你登入远程服务器时,本机会主动的用接收到的服务器的 public key 去比对 ~/.ssh/known_hosts 有无相关的公钥, 然后进行底下的动作:

  • 若接收的公钥尚未记录,则询问用户是否记录。若要记录 (范例中回答 yes 的那个步骤) 则写入 ~/.ssh/known_hosts 且继续登入的后续工作;若不记录 (回答 no) 则不写入该档案,并且离开登入工作;
  • 若接收到的公钥已有记录,则比对记录是否相同,若相同则继续登入动作;若不相同,则出现警告信息, 且离开登入的动作。这是客户端的自我保护功能,避免你的服务器是被别人伪装的。

在这里插入图片描述

12. 第十二章 网络参数控管者: DHCP 服务器

第十二章 网络参数控管者: DHCP 服务器
在这里插入图片描述

在这里插入图片描述

  • 客户端:利用广播封包发送搜索 DHCP 服务器的封包

若客户端网络设定使用 DHCP 协议取得 IP (在 Windows 内为『自动取得 IP』),则当客户端开机或者是重新启动网络卡时, 客户端主机会发送出搜寻 DHCP 服务器的 UDP 封包给所有物理网段内的计算机。此封包的目标 IP 会是 255.255.255.255, 所以一般主机接收到这个封包后会直接予以丢弃,但若局域网络内有 DHCP 服务器时,则会开始进行后续行为。

  • 服务器端:提供客户端网络相关的租约以供选择

DHCP 服务器在接收到这个客户端的要求后,会针对这个客户端的硬件地址 (MAC) 与本身的设定数据来进行下列工作:

  • 到服务器的登录文件中寻找该用户之前是否曾经用过某个 IP ,若有且该 IP 目前无人使用,则提供此 IP 给客户端;
  • 若配置文件针对该 MAC 提供额外的固定 IP (static IP) 时,则提供该固定 IP 给客户端;
  • 若不符合上述两个条件,则随机取用目前没有被使用的 IP 参数给客户端,并记录下来。
  • 客户端:决定选择的 DHCP 服务器提供的网络参数租约并回报服务器

由于局域网络内可能并非仅有一部 DHCP 服务器,但客户端仅能接受一组网络参数的租约。 因此客户端必需要选择是否要认可该服务器提供的相关网络参数的租约。当决定好使用此服务器的网络参数租约后, 客户端便开始使用这组网络参数来设定自己的网络环境。此外,客户端也会发送一个广播封包给所有物理网段内的主机, 告知已经接受该服务器的租约。此时若有第二台以上的 DHCP 服务器,则这些没有被接受的服务器会收回该 IP 租约。至于被接受的 DHCP 服务器会继续进行底下的动作。

  • 服务器端:记录该次租约行为并回报客户端已确认的响应封包信息

当服务器端收到客户端的确认选择后,服务器会回传确认的响应封包,并且告知客户端这个网络参数租约的期限, 并且开始租约计时喔!那么该次租约何时会到期而被解约 (真可怕的字眼) ?你可以这样想:

  • 客户端脱机:不论是关闭网络接口 (ifdown)、重新启动 (reboot)、关机 (shutdown) 等行为,皆算是脱机状态,这个时候 Server 端就会将该 IP 回收,并放到 Server 自己的备用区中,等待未来的使用;
  • 客户端租约到期:前面提到 DHCP server 端发放的 IP 有使用的期限,客户端使用这个 IP 到达期限规定的时间,而且没有重新提出 DHCP 的申请时,就需要将 IP 缴回去!这个时候就会造成断线。但用户也可以再向 DHCP 服务器要求再次分配 IP 啰。

13. 第十三章 文件服务器之一:NFS 服务器

第十三章 文件服务器之一:NFS 服务器
在这里插入图片描述

14. 第十四章 账号控管: NIS 服务器

第十四章 账号控管: NIS 服务器
在这里插入图片描述

15. 第十五章 时间服务器: NTP 服务器

第十五章 时间服务器: NTP 服务器
在这里插入图片描述

16. 第十六章 文件服务器之二: SAMBA 服务器

第十六章 文件服务器之二: SAMBA 服务器
在这里插入图片描述

17. 第十七章 区网控制者: Proxy 服务器

第十七章 区网控制者: Proxy 服务器
在这里插入图片描述

18. 第十八章 网络驱动器装置: iSCSI 服务器

第十八章 网络驱动器装置: iSCSI 服务器
在这里插入图片描述

19. 第十九章 主机名控制者: DNS 服务器

第十九章 主机名控制者: DNS 服务器
在这里插入图片描述

20. 第二十章 WWW 伺服器

第二十章 WWW 伺服器
在这里插入图片描述

21. 第二十一章 文件服务器之三: FTP 服务器

第二十一章 文件服务器之三: FTP 服务器
在这里插入图片描述

22. 第二十二章 邮件服务器: Postfix

第二十二章 邮件服务器: Postfix
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python源码剖析2-字符串对象PyStringObject

二、 1、PyStringObject与 PyString_Type PyStringObject是变长对象中的不可变对象。当创建了一个PyStringObject对象之后,该对象内部维护的字符串就不能再被改变了。这一点特性使得 PyStringObject 对象能作为 PyDictObject 的键值,但同时也使得一些字符串操作的效率大大降低…

Kafka RecordAccumulator 三 高并发写入数据

Kafka RecordAccumulator 三 高并发写入数据 首先我们客户端会通过多线程的方式来发送消息&#xff08;一般业务需求可能会通过业务系统或者大数据流计算系统如Spark Streaming或者Flink将业务数据发送出去&#xff0c;进而让下游系统消费使用&#xff09;&#xff0c;那这里业…

【Linux】进程状态|僵尸进程 |孤儿进程

索引运行状态&#xff1a;阻塞状态挂起状态看看Linux是怎么做的运行状态R睡眠状态S停止状态T两个特殊的进程&#xff1a;僵尸进程孤儿进程在之前我们听过很多很多进程的状态&#xff0c;像是运行、新建、就绪、挂起、阻塞、等待、停止、挂机、死亡等等。推荐阅读&#xff1a;通…

http协议之digest(摘要)认证,详细讲解并附Java SpringBoot源码

目录 1.digest认证是什么&#xff1f; 2.digest认证过程 3.digest认证参数详解 4.基于SpringBoot实现digest认证 5.digest认证演示 6.digest认证完整项目 7.参考博客 1.digest认证是什么&#xff1f; HTTP通讯采用人类可阅读的文本格式进行数据通讯&#xff0c;其内容非…

Android入门第40天-Android中的Service(SimpleStartService)

简介 博文总阅读量已经突破了300万&#xff0c;给自己加油打CALL。 从今天开始&#xff0c;之前39天的Android如果每一篇只有30分钟就能读完和掌握那么从今天开始越往后会越复杂。因为我们的Android教程开始进入“中级”难度了。特别是Service&#xff0c;这个Service我要分成…

java面向对象的三大特性之封装和继承(配视频讲解)

&#x1f345;程序员小王的博客&#xff1a;程序员小王的博客 &#x1f345;程序员小王的资源博客&#xff1a;http://wanghj.online/ &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 如有编辑错误联系作者&#xff0c;如果有比较好的文章欢迎…

JMeter入门教程(13) --事务

文章目录1.任务背景2.任务目标3.任务实操3.1.1 事务控制器3.2.2循环控制器1.任务背景 JMeter中的事务是通过事务控制器实现的。&#xff0c;为了衡量服务器对某一个或一系列操作处理的响应时间&#xff0c;需要定义事务。下面我们详细介绍在JMeter中如何使用事务 2.任务目标 …

基于JSP的网络教学平台的设计与实现

目 录 摘 要 I Abstract II 一、 引言 1 &#xff08;一&#xff09;项目开发的背景 1 &#xff08;二&#xff09;项目开发的意义 1 二、可行性分析及总体设计原则 3 &#xff08;一&#xff09;可行性分析 3 1&#xff0e;技术可行性 3 2&#xff0e;经济可行性 3 3&#xff…

MATLAB算法实战应用案例精讲-【图像处理】目标检测(附实战案例及代码实现)

前言 目标检测,也叫目标提取,是一种基于目标几何和统计特征的图像分割。它将目标的分割和识别合二为一,其准确性和实时性是整个系统的一项重要能力。尤其是在复杂场景中,需要对多个目标进行实时处理时,目标自动提取和识别就显得特别重要。 随着计算机技术的发展和计算机视…

Servlet —— Tomcat, 初学 Servlet 程序

JavaEE传送门JavaEE HTTP —— HTTP 响应详解, 构造 HTTP 请求 HTTPS —— HTTPS的加密方式 目录TomcatServlethello world创建项目引入 Servlet 依赖创建目录结构编写代码doGet打包程序部署程序验证程序Tomcat Tomcat 是一个 HTTP 服务器 HTTP 客户端, 就是大家平时用到的浏…

大数据hadoop_HDFS概述(1)

文章目录1. HDFS概述1.1 HDFS背景1.2 定义2. HDFS优缺点2.1 优点2.2 缺点3. HDFS架构4. HDFS文件块大小1. HDFS概述 1.1 HDFS背景 面对今天的互联网公司&#xff0c;每天都会有上亿次的用户访问量&#xff0c;用户每进行一次操作&#xff0c;都会产生数据&#xff0c;面对传统…

Android入门第41天-Android中的Service(bindService)

介绍 在前一天我们介绍了Android中有两种启动Service的方法。并擅述了startService和bindService的区别。同时我们着重讲了startService。 因此今天我们就来讲bindService。bindService大家可以认为它是和Android的一个共生体。即这个service所属的activity如果消亡那么bindS…

Docker涉及的Linux命名空间、CGroups

概述 Linux的NameSpace介绍 很多编程语言都包含了命名空间的概念&#xff0c;我们可以认为命名空间是一种封装&#xff0c;封装本身实现了代码的隔离。在操作系统中命名空间提供的是系统资源的隔离&#xff0c;其中系统资源包括了&#xff1a;进程、网络、文件系统…实际上li…

《模拟电子技术》半导体原理部分笔记

《模拟电子技术》笔记绪论第一章 常用半导体器件第二章 基本放大电路绪论 有的人把三极管的出现作为电子技术工业革命的开始标志学习架构&#xff1a;半导体器件&#xff08;二极管、三极管、场效应晶体管&#xff09;、基于上述管的放大电路、集成运算放大器、放大电路的频率…

第11章 初识IdentityServer4

1 构建IdentityServer4 服务 1.1 通过配置类配置类(Config)实例化IdentityServer4中间件 using IdentityServer4.Models; namespace BuilderServer { /// <summary> /// 【配置--类】 /// <remarks> /// 摘要&#xff1a; /// 通过该中类的方法成员&#xff…

如何给firefox和google chrome鼠标手势

背景 已经习惯了有鼠标手势&#xff0c;因为一天到晚都在浏览器上查询资料&#xff0c;所以必须把这个鼠标手势设置好。 firefox 搜索Foxy Gestures然后安装 google chrome crxMouse Chrome 点击google浏览器上的扩展程序图标&#xff0c;然后点击管理扩展程序&#xff1a…

游泳耳机哪个牌子好、分享几款游泳听音乐最好的耳机推荐

如今,水上运动爱好者越来越多了,无论是游泳,还是冲浪早已成为了我们很多人经常参加的运动项目。不过他们都抱怨过类似的问题——可以在水上运动中使用的无线耳机实在是太少了。防水性能达不到可游泳级别,不带内存需要配备手机使用,这些都是造成耳机无法在水上使用的原因。今天小…

【matplotlib】1-使用函数绘制图表

文章目录使用函数绘制图表1.绘制matplotlib图表组成元素的主要函数2.准备数据3.函数用法3.1函数plot()--展现变量的趋势变化3.2函数scatter()--寻找变量之间的关系3.3函数xlim()--设置x轴的数值显示范围3.4函数xlabel()--设置x轴的标签文本3.5 函数grid()--绘制刻度线的网格线3…

Kong(三)Konga UI安装和使用

一 konga 的github地址 konga安装参考 ① Kong 可视化UI 选择 官方kong-dashboard 1&#xff09;收费&#xff1a;当前kong的社区版是没有dashboard的,但是付费的企业版是有带的2&#xff09;kong-dashboard最新版本v3.6.0,只支持到kongv0.14.x,对于更高的kong版本,功能支…

SpringBoot整合RabbitMQ,实现单机抢票系统

MQ全称为Message Queue, 消息队列&#xff08;MQ&#xff09;是一种应用程序对应用程序的通信方法。MQ是消费-生产者模型的一个典型的代表&#xff0c;一端往消息队列中不断写入消息&#xff0c;而另一端则可以读取队列中的消息。 消息中间件最主要的作用是解耦&#xff0c;中间…