面试题总汇

一. FTP/TFTP/NFS

1.FTP的传输模式:ASCII传输模式和二进制传输模式。
ASCII传输模式: 假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自
动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。但是常常有这样的情况,用户正在传输的文件包含的不是
文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库
等信息的非打印符)。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理,这也是下面要讲的二进
制传输。
二进制传输模式: 在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是
没意义的。 如果两台通讯的机器为同一类型,则可优先使用二进制拷贝。
2.FTP的工作方式: Standard (也就是 PORT方式,主动方式)和 Passive (也就是PASV,被动方式)
主动方式: Port模式FTP 客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这
个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客
户端的指定端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。
被动方式: Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务
器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此
端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接
请注意: PORT模式建立数据传输通道是由服务器端发起的,服务器使用20端口连接客户端的某一个大于1024的端口;在PASV模式
中,数据传输的通道的建立是由FTP客户端发起的,他使用一个大于1024的端口连接服务器的1024以上的某一个端口。 在FTP客户连接
服务器的整个过程中,控制信道是一直保持连接的,而数据传输通道是临时建立的。
3.TFTP工作原理
建立连接:默认情况下,作为 TFTP 服务器的主机 A 会监听 69 端口,当作为客户端的主机 B 想要下载或上传文件时,会向主机 A 的
69 端口发送包含读文件(下载)请求或写文件(上传)请求的数据包。主机 A 收到读写请求后,会打开另外一个随机的端口,通过这个
端口向主机 B 发送确认包、数据包或者错误包。
下载:客户端向服务器的 69 端口(通常情况下)发送一个读请求,服务器收到这个读请求以后,会打开另外一个随机的端口(假设
端口号是 59509),然后在它默认的路径下寻找这个文件,找到这个文件以后,每次读入文件的 512 个字节,通过端口 59509 将这 512
个字节放入数据包中发送给客户端,数据包中还包含了操作码和数据块的编号,块编号从 1 开始计数;客户端收到数据包以后,会向服务
器的 59509 端口发送一个确认包,里面包含了它收到的数据包的块编号;服务器收到确认包以后,继续发送文件的下一个 512 个字节。
如此循环往复,直到文件的末尾,最后一个数据包的数据块的大小会小于 512 个字节,这时服务器就认为传输已经结束,等他接收到这最
后一个数据包的确认包之后就会主动关闭连接。而客户端收到这个小于 512 个字节的数据包后也认为传输已经结束,发送完确认包之后也
会关闭连接。也许会有一种极端情况,就是文件的大小正好是 512 字节的倍数,这样的话,最后一个数据包的大小也是 512 个字节,这
时服务器发送完包含文件数据的数据包以后,还会额外发送一个包含 0 字节的数据包,作为最后一个数据包,这样就可以保证客户端收到
的最后一个数据包的大小总是小于 512 个字节的。也就是说,对于客户端而言,只要它收到的数据包的大小小于 512 个字节,它就认为
传输已经结束,它就会关闭连接。
上传:客户端向服务器的 69 端口(通常情况下)发送一个写请求,服务器收到这个写请求以后,会打开另外一个随机的端口(假设
端口号是 59509),向客户端发送一个确认包,其中块编号是 0,以此来告诉客户端自己已经准备好接收文件,并且告诉客户端自己接收
文件的端口号。然后客户端就开始向服务器的 59509 端口发送数据包,服务器收到数据包后向客户端发送确认包,直到整个文件发送完
毕。这个过程和下载是一样的,只不过双方的角色互换了,客户端成了发数据的一方,而服务器是接收数据的一方。> 4.NFS工作原理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fxkm2EOH-1604371435750)(png/image-20200406105340809.png)]

二. rsync

一般企业在使用 rsync 时会配合 inotify 使用,使用 inotify 监听文件修改情况,一旦文件某些 属性改变,就通知 rsync 进行备份

  • inotify + rsync 方式实现数据同步
  • sersync :金山公司周洋在 inotify 软件基础上进行开发的,功能更加强大
  • 工作原理:
    要利用监控服务(inotify),监控同步数据服务器目录中信息的变化
    发现目录中数据产生变化,就利用 rsync 服务推送到备份服务器上
  • inotify
    异步的文件系统事件监控机制,利用事件驱动机制,而无须通过诸如 cron 等的轮询机制来获取事件,
    linux 内核从 2.6.13 起支持 inotify,通过 inotify 可以监控文件系统中添加、删除,修改、移动等各种事件

inotify-tools 包:

  • inotifywait: 在被监控的文件或目录上等待特定文件系统事件(open ,close,delete 等) 发生,常用于实时同步的目录监控- inotifywatch:收集被监控的文件系统使用的统计数据,指文件系统事件发生的次数统计
    例:使用 inotifywait

rsync 软件包
rsync,rsync-daemon(CentOS 8)
服务文件:/usr/lib/systemd/system/rsyncd.service
配置文件:/etc/rsyncd.conf 端口:873/tcp
rsync命令

rsync 有三种工作方式:

  1. 本地文件系统上实现同步。命令行语法格式为上述”Local”段的格式。
  2. 本地主机使用远程 shell 和远程主机通信。命令行语法格式为上述”Access via remote shell”段的格式。
  3. 本地主机通过网络套接字连接远程主机上的 rsync daemon。命令行语法格式为上述 “Access viarsync daemon”段的格式。# 三. 防火墙

防火墙概念

  • 在计算机领域,防火墙(FireWall)就是基于预先定义的安全规则来监视和控制来往的 网络流量的网络安全系统。防火墙的核心是隔离,其
    将受信任的内部网络和不受信任的 外部网络隔离开。内部网络一般是公司的内部局域网,外部网络一般是 Internet。
  • 一般防火墙工作在网络或主机边缘,对进出网络或主机的数据包基于一定的规则检查, 并在匹配某规则时由规则定义的行为进行处理的
    一组功能的组件,基本上的实现都是默认 情况下关闭所有的通过型访问,只开放允许访问的策略。

防火墙分类

  • 按照防火墙的保护范围,防火墙通常被分为:
    网络防火墙: 网络防火墙在两个或更多的网络间监控和过滤流量,运行在网络设备上。 网络防火墙保护的是防火墙某一侧的网络(一
    般是局域网络)。
    主机防火墙: 主机防火墙运行在一般的电脑主机,并控制进出这些电脑的网络流量, 主机防火墙保护的范围是当前主机。
  • 从实现方式上看,防火墙被分为:
    硬件防火墙: 在专用硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现, 如:华为,天融信 Checkpoint,NetScreen

    软件防火墙: 运行于通用硬件平台上的防火墙应用软件,ISA –> Forefront TMG
  • 从工作交互的网络协议层及划分:
    网络层防火墙: 只可以和 OSI 模型下四层的协议交互
    应用层防火墙: 运行应用层防火墙的设备可以叫代理服务器或代理网关,可以与 OSI 的七层协议交互。

Netfilter 中的 hook 函数

  • Netfilter 在内核中选取五个位置放了五个 hook(“勾子”) function(INPUT、OUTPUT、 FORWARD、PREROUTING、
    POSTROUTING),而这五个 hook function 向用户开放, 用户可以通过一个命令工具(iptables)向其写入规则,规则由信息过滤表
    (table)组成, 信息过滤表包含控制 IP 包处理的规则集(ruleset),规则被分组放在(chain)上。
  • 三种数据包流动方向
    流入本机:PREROUTING –> INPUT–>用户空间进程
    流出本机:用户空间进程 –>OUTPUT–> POSTROUTING
    转发:PREROUTING –> FORWARD –> POSTROUTING
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IwJFaoKh-1604371435755)(png/2019123117471156.png)]
    数据包大致传输过程 :
  1. 当一个网络数据包进入网卡时,数据包首先进入 PREROUTING 链,内核根据数据包目的 IP 判断是否需 要转送出去
  2. 如果数据包就是进入本机的,数据包就会沿着图向下移动,到达 INPUT 链。数据包到达 INPUT 链 后,任何进程都会收到它。本机上
    运行的程序可以发送数据包,这些数据包经过 OUTPUT 链,然后 到达 POSTROUTING 链输出3. 如果数据包是要转发出去的,且内核允许转发,数据包就会向右移动,经过 FORWARD 链,然后到 达 POSTROUTING 链输出

iptables 扩展匹配条件

multiport 扩展 以离散方式定义多端口匹配

iprange 扩展 指明连续的(但一般不是整个网络)ip 地址范围 源 IP 地址范围 目标 IP 地址范围

mac扩展 mac 模块可以指明源 MAC 地址

string 扩展 string 扩展用于对报文中的应用层数据做字符串模式匹配检测

time 扩展 根据将报文到达的时间与指定的时间范围进行匹配

limit 扩展 基于收发报文的速率做匹 令牌桶过滤器

state 扩展 state 扩展模块,可以根据”连接追踪机制”去检查连接的状态,较耗资源, 会消耗内存,使用 conntrack 机制:追踪本机
上的请求和响应之间的关系

  • 状态类型
    :新发出请求;连接追踪信息库中不存在此连接的相关信息条目,因此,将其 识别为第一次发出的请求
    :NEW 状态之后,连接追踪信息库中为其建立的条目失效之前期间内 所进行的通信状态
    :新发起的但与已有连接相关联的连接,如:ftp 协议中的数据连接与命令 连接之间的关系
    :无效的连接,如 flag 标记不正确
    :未进行追踪的连接,如 raw 表中关闭追踪
    已经追踪到的并记录下来的连接信息库
    调整连接追踪功能所能够容纳的最大连接数量
    查看连接跟踪有多少条目
    不同的协议的连接追踪时长
    state 模块使用格式 :

开放被动模式的 ftp 服务 :

  1. 装载 ftp 连接追踪的专用模块: 跟踪模块路径:/lib/modules/kernelversion/kernel/net/netfilter1
  1. 放行请求报文: 命令连接:NEW, ESTABLISHED 数据连接:RELATED, ESTABLISHED
  1. 放行响应报文

具体操作:

iptables 规则保存

使用 iptables 命令定义的规则,手动删除之前,其生效期限为 kernel 存活期限
持久保存规则

  • CentOS 7,8
  • CentOS 6

加载规则

  • CentOS 7 重新载入预存规则文件中规则: -n, –noflush:不清除原有规则 –
    t, –test:仅分析生成规则集,但不提交- CentOS 6

开机自动重载规则

  • 用脚本保存各 iptables 命令;让此脚本开机后自动运行 /etc/rc.d/rc.local 文件中添加脚本路径 /PATH/TO/SOME_SCRIPT_FILE
  • 用规则文件保存各规则,开机时自动载入此规则文件中的规则 在/etc/rc.d/rc.local 文件添加
  • 定义 Unit File, CentOS 7,8 可以安装 iptables-services 实现 iptables.service

SNAT 实现

SNAT:基于 nat 表的 target,适用于固定的公网 IP
例:10.0.1.0/24 网段的主机访问外部网络时,IP 数据包源地址被替换为 172.18.1.6-172.18.1.6 中的某一个地址

另一个 target 为,适用于动态的公网 IP,如拨号网络

DNAT 实现

DNAT:nat 表的 target,适用于端口映射

  • 例如

转发 REDIRECTREDIRECT,是 NAT 表的 target,通过改变目标 IP 和端口,将接受的包转发至同一个主机 的不同端口,可用于 PREROUTING

OUTPUT 链

四. Linux启动流程和内核管理

系统启动流程

Centos6

启动过程总结:
或者:

  • 运行级别:为系统运行或维护等目的而设定0-6:7个级别
  • /etc/rc.d/rc.sysinit: 系统初始化脚本,主要做以下事务“`bash
    (1) 设置主机名
    (2) 设置欢迎信息
    (3) 激活udev和selinux
    (4) 挂载/etc/fstab文件中定义的文件系统
    (5) 检测根文件系统,并以读写方式重新挂载根文件系统
    (6) 设置系统时钟
    (7) 激活swap设备
    (8) 根据/etc/sysctl.conf文件设置内核参数
    (9) 激活lvm及software raid设备
    (10) 加载额外设备的驱动程序
    (11) 清理操作
- grub配置文件:/boot/grub/grub.conf来源:wx25051
                                                        

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年10月2日
下一篇 2020年10月2日

相关推荐