通常网络参数的取得方式常见的有底下这几种:
1.手动设定固定 IP
常见于学术网络的服务器设定、公司行号内的特定座位等。这种方式你必须要取得底下的几个参数才能够让你的 Linux 上网的:
-IP
-子网掩码(netmask);
-通讯闸(gateway)
-DNS主机的IP(通常会有两个)
2.网络参数可自动取得(dhcp 协议自动取得)
常见于 IP 分享器后端的主机,或者是利用电视线路的缆在线网(cable modem),或者是学校宿舍的网络环境等。这种网络参数取得方式就被称为dhcp。
3.光纤到家与 ADSL 宽带拨接
不论 IP 是固定的还是每次拨接都不相同(被称为浮动式IP),只要是透过光纤到家或宽带调制解调器【拨接上网】的,就是使用这种方式。拨接上网虽然还是使用网络卡连接到调制解调器上,不过,系统最终会产生一个替代调制解调器的网络接口 (ppp0),那个 ppp0也是一个实体网络接口。
CentOS 7 对于网卡的编号的规则:
eno1:代表由主板 BIOS内建的网卡;
ens1:代表由主板 BIOS内建的 PCI-E界面的网卡;
enp2s0:代表 PCI-E 界面的独立网卡,可能有多个插孔,因此会有s0, s1…的编号~
eth0:如果上述的名称都不适用,就回到原本的预设网卡编号。
【ifconfig -a】可以将网卡全部列出。
假设已经向 ISP (Internet Service Provider) 取得网络参数,基本上的网络参数需要这些数据的:
method:manual (手动设定);
IP:172.16.1.1;
netmask:255.255.0.0;
gateway: 172.16.200.254;
DNS: 172.16.200.254;
hostname:study.centos.feng
nmcli 是透过一个名为【联机代号】的名称来设定是否要上网,而每个【联机代号】会有个【网卡代号】,这两个东西通常设定成相同。
nmcli connection show [网卡代号]
IP4,IP6 指的是目前的实际使用的网络参数,最上面的 connection 开头的部份则指的是联机的状态。
比较重要的几个参数:
connection.autoconnect [yes|no]:是否于开机时启动这个联机,预设通常是 yes 才对;
ipv4.method [auto/manual]:自动还是手动设定网络参数的意思;
ipv4.dns [dns_server_ip]:就是填写 DNS 的IP地址;
ipv4.addresses [IP/Netmask]:就是 IP 与 netmask 的集合,中间用斜线/来隔开;
ipv4.gateway [gw_ip]:就是 gateway 的IP地址。
可以使用 nmcli 设定网络参数。设定完毕后,实际生效还得要启动(up)。
nmcli connection up [网卡代号]
如果网络是由自动取得的 DHCP 协议所分配的,只需要知道 ipv4.method 那个项目填成 auto即可。
主机名的修改就得要透过 hostnamectl 这个指令来处理。
hostnamectl set-hostname [主机名]
时区的显示与设定
timedatectl [command]
时间的调整
时间的格式可以是【yyyy-mm-dd HH:MM】的格式。
timedatectl set-time "2023-12-10 20:15"
用 ntpdate 手动网络校时
手动网络校时透过 ntpdate 这个指令即可。
ntpdate tock.stdtime.gov.tw
tock.stdtime.gov.tw指的是台湾地区国家标准实验室提供的时间服务器。
至于 hwclock 则是将正确的时间写入 BIOS时间记录内。如果确认可以执行,未来应该可以使用 crontab来更新系统时间。
hwclock -w
LANG 与 locale 的指令能够查询目前的语系数据与变量,/etc/locale.conf 其实就是语系的配置文件。
系统的语系与目前软件的语系数据可能是可以不一样的。如果想要知道目前【系统语系】的话,除了呼叫配置文件之外,也能够使用 localectl 来查阅。
防火墙其实是一种网络数据的过滤方式,它可以依据服务器启动的服务来设定是否放行,也能够针对信任的用户来放行。
由于目前 CentOS 7 的预设防火墙机制为 firewalld,他的管理界面主要是透过指令列 firewall-cmd 这个详细的指令。
组态:【执行时期】与【永久记录】的差异
基本上,防火墙的规则拟定大概有两种情况,一种是【暂时用来执行】的规则,一种则是【永久记录】的规则。一般来说,刚刚启动防火墙时,这两种规则会一模一样。不过,后来可能会暂时测试而加上几条规则,如果该规则没有写入【永久记录】区的话,那下次重载防火墙时,该规则就会消失。
不要只是在运行时间增加规则设定,而是必须要在永久记录区增加规则才行。
区域(zone):依据不同的环境所设计的网络界域(zone)
早期的 iptables 防火墙服务,所有的规则都得要自己手动来撰写,然后规则的细分得要自己去规划,所以很可能会导致一堆无法理解的规则。
新的 firewalld 服务就预先设计这些可能会被用到的网络环境,里面的规则除了public(公开网域)这个界域(zone)之外,其它的界域则暂时为没有启动的状况。因此,在预设的情况下,只要考虑 public 那个项目即可。
相关设定项目
防火墙规则通常需要设定的地方有:
服务:一般来说,如果 Linux server 是作为 Internet 的服务器,提供的是比较一般的服务,那么只要
处理【服务】项目即可。预设服务器已经提供了 ssh 与 dhcpv6-client 的服务埠口;
端口:如果提供的服务所启用的埠口并不是正规的埠口。那如果想要让人家连进来,就不能只开放上面的【服务】项目,连这个【端口】的地方也需要调整才行。另外,如果有某些比较特别的服务是 CentOS 预设没有提供的,所以【服务】当然也就没有存在。这时也可以直接透过端口来搞定它;
丰富规则(rich rule):如果有【整个网域】需要放行或者是拒绝的时候,那么前两个项目就没有办法适用,这时就得要这个项目来处理了。
界面:就是这个界域主要是针对哪一个网络卡来做规范的意思;
系统有个名为 dmidecode 的软件,它可以解析CPU型号、主板型号与内存相关的型号等等。
dmidecode -t type
列出整个系统的硬件信息:
Linux kernel 在开机时就能够侦测主机硬件并加载适当的模块来驱动硬件了。而核心所侦测到的各项硬件装置,后来就会被记录在 /proc 与 /sys 当中了。包括 /proc/cpuinfo, /proc/partitions, /proc/interrupts 等等。
其实核心所侦测到的硬件可能并非完全正确。因为他仅是【使用最适当的模块来驱动这个硬件】而已,所以有时候难免会误判啦(虽然机率非常之低)。
除了直接呼叫出 /proc 底下的文件内容之外, Linux有提供几个简单的指令来将核心所侦测到的硬件叫出来:
gdisk:可以使用 gdisk -l 将分区表列出;
dmesg:观察核心运作过程当中所显示的各项讯息记录;
vmstat:可分析系统(CPU/RAM/IO)目前的状态;
lspci:列出整个 PC 系统的 PCI 接口装置;
lsusb:列出目前系统上面各个USB端口口的状态,与连接的USB装置;
iostat:与vmstat类似,可实时列出整个CPU 与接口设备的Input/Output状态。
lspci
lspci [-vvn]
不必加上任何选项,就能够显示出目前的硬件配备为何。如果想要了解某个设备的详细信息时,可以加上 -v 或 -vv 来显示更多的信息。
lspci -s 00:01.0 -vv
-s
后面接的那个怪东西每个设备的总线、插槽与相关函数功能。
使用 lspci 时,所有的数据都是由 /proc/bus/pci/ 目录下的数据所取出的。不过,由于硬件的发展太过迅速,防止 pci.ids 可以使用命令在线更新对应的文档:update-pciids
。
lsusb
系统接了多少个USB 装置:
lsusb [-t]
# -t:使用类似树状目录来显示各个 USB 端口口的相关性。
iostat
iostat [-c|-d] [-k|-m] [-t] [间隔秒数] [侦测次数]
smartd 服务可以查询磁盘好坏。
具有备份意义的文件通常可以粗分为两大类,一类是系统基本设定信息、一类则是类似网络服务的内容数据。
操作系统本身需要备份的文件:
这方面的文件主要跟【账号与系统配置文件】有关系。
主要的需要备份的账号的文件呢:/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow,/home底下的用户家目录等等,而由于Linux预设的重要参数档都在 /etc/ 底下,所以只要将这个目录备份下来的话,那么几乎所有的配置文件都可以被保存的。
至于 /home 目录是一般用户的家目录,自然也需要来备份;由于使用者会有邮件,所以】 /var/spool/mail/ 内容也需要备份;另外,由于如果自行更动过核心,那么 /boot 里头的信息也就很重要。所以,操作系统本身的数据必须要备份的文件为:
/etc/ 整个目录;
/home/ 整个目录;
/var/spool/mail/;
/var/spoll/{atlcron}/;
/boot/;
/root/;
如果自行安装过其他的软件,那么 /usr/local /或 /opt 也最好备份一下。
网络服务的数据库方面:
首先是这些网络服务软件的配置文件部分,如果网络软件安装都是以原厂提供的为主,那么配置文件案大多是在 \etc 底下;若套件大多来自于自行的安装,那么 /usr/local这个目录可就相当的重要了。此外,使用者主动提供的文件,以及服务运作过程会产生的数据,都需要被考虑来备份。
若假设提供的服务软件都是使用原厂的 RPM 安装的。所以要备份的数据文件有:
软件本身的配置文件案,例如:/etcl整个目录,/usr/local/ 整个目录;
软件服务提供的数据,以 WWW 及 Mariadb 为例;
WWW资料:/var/www 整个目录或 /srv/www 整个目录,及系统的用户家目录;
Mariadb:/var/lib/mysql 整个目录;
其他在 Linux主机上面提供的服务之数据库文件。
推荐需要备份的目录:
如果硬件或者是由于经费的关系而无法全部的数据都予以备份时,至少需要备份这些目录:
/etc;
/home;
/root;
/var/spool/mail/, /var/spool/cron/, /var/spool/at/;
/var/lib/;
不需要备份的目录:
/dev:这个随便要不要备份;
/proc,/sys,/run:这个真的不需要备份啦!
/mnt,/media:如果没有在这个目录内放置自己系统的东西,也不需要备份;
/tmp:存暂存档不需要备份;
在备份的时候,选择一个【数据存放的地方】也是很需要考虑的一个因素。
异地备援系统
【异地备援系统】:将系统数据【备份】到其他的地方去。
缺点就是带宽严重的不足。在这种状态下,所能采取的策略大概就是【仅将最重要的数据给他传输回去】。
储存媒体的考虑
【近端的装置来备份】
过去使用的储存媒体可能有 Tape, Mo, Zip, CD-RW, DVD-RW,外接式磁盘等等。近年来由于磁盘容量不断上提,加上已经有便宜的桌上型 NAS储存设备,这些 NAS储存设备就等于是一部小型Linux server,里面还能够提供客制化的服务,可能提供硬件或软件的磁盘阵列,包括不同的连接界面与传输协议。
如果主机是负责相当重要的服务,因此如果有不明原因的当机事件造成系统损毁时,希望在最短的时间内复原系统。此时,如果仅备份关键数据时,那么得要在系统出错后,再去找新的 Linux distribution 来安装,安装完毕后还得要考虑到数据新旧版本的差异问题,还得要进行数据的移植与系统服务的重新建立等等,等到建立妥当后,还得要进行相关测试。这种种的工作需要耗费大量的时间。所以,仅有关键数据是不够的。
完整备份的话:若硬件出问题导致系统损毁时,只要将完整备份拿出来,整个给他倾倒回去硬盘,所有事情就搞定了。有些时候(例如使用dd 指令)甚至连系统都不需要重新安装。
完整备份就是将根目录(/
)整个系统通通备份下来的意思。在某些场合底下,完整备份也可以是备份一个文件系统(filesystem)。
虽然完整备份在还原方面有相当良好的表现,但是系统用的越久,数据量就会越大。如此一来,完整备份所需要花费的时间与储存媒体的使用就会相当麻烦。所以,完整备份并不会也不太可能每天都进行的。
如果每天都备份数据有两种方式:累积备份与差异备份。
所谓的累积备份,指的是在系统在进行完第一次完整备份后,经过一段时间的运作,比较系统与备份文件之间的差异,仅备份有差异的文件而已。而第二次累积备份则与第一次累积备份的数据比较,也是仅备份有差异的数据而已。如此一来,由于仅备份有差异的数据,因此备份的数据量小且快速!备份也很有效率。
累积备份的还原方面比较麻烦:依次还原累积备份的数据,才是最完整的还原程序。
完整备份常用的工具有 dd, cpio, xfsdump/xfsrestore 等等。因为这些工具都能够备份装置与特殊文件。
dd 可以直接读取磁盘的扇区 (sector) 而不理会文件系统,是相当良好的备份工具,不过缺点就是慢很多;cpio 是能够备份所有档名,不过,得要配合 find 或其他找文件名的指令才能够处理妥当。以上两个都能够进行完整备份,但累积备份就得要额外使用脚本程序来处理。
可以直接进行累积备份的就是 xfsdump 这个指令。
差异备份与累积备份有点类似,也是需要进行第一次的完整备份后才能够进行。
差异备份指的是:每次的备份都是与原始的完整备份比较的结果。所以系统运作的越久,离完整备份时间越长,那么该次的差异备份数据可能就会越大。
差异备份所使用的磁盘容量可能会比累积备份来的大,但是差异备份的还原较快,因为只需要还原完整备份与最近一次的差异备份即可。
完整备份虽然有许多好处,但就是需要花费很多时间。所以,如果在主机提供的服务并不是一定要24小时提供的前提下,可以仅备份重要的关键数据即可。
关键数据备份不需要整个系统都备份。
硬件损毁,且具有完整备份的数据时
由于是硬件损毁,所以不需要考虑系统软件的不稳定问题,所以可以直接将完整的系统复原回去即可。
首先,必须要先处理好硬件,然后依据你的备份状态来复原。举例来说,如果是使用差异备份,那么将完整备份复原后,将最后一次的差异备份复原回去,系统就恢复了。
由于软件的问题产生的被攻破资安事件
由于系统的损毁是因为被攻击,此时即使恢复到正常的系统,那么这个系统依然会被攻破。所以,此时完整备份的复原可能不是个好方式。
最好是需要这样进行啦:
1.先拔除网络线,最好将系统进行完整备份到其他媒体上,以备未来查验;
2.开始查阅登录档,尝试找出各种可能的问题
3.开始安装新系统(最好找最新的distribution);
4.进行系统的升级,与防火墙相关机制的制订;
5.根据 2 的错误,在安装完成新系统后,将那些 bug 修复;
6.进行各项服务与相关数据的恢复;
7.正式上线提供服务,并且开始测试;
《鸟哥的Linux私房菜-基础篇》学习笔记