目录
网络管理
1. 网络配置概述(基于nmcli命令行模式)
Linux 服务器连接到网络的配置,例如可以配置
- 静态IP
- VPN网络
- 代理服务器
传统的Linux网络配置是通过network.service
来实现
基于network
的常用命令有:
ifconfig
ifup
ifdown
network.service
评价:适用于拥有比较稳定的网络环境。当网络改动或切换时,必须重启整个network
服务,导致短暂的中断。
新的网络配置方式:NetworkManager
主要工具是nmtui
和nmcli
nmtui
:可以在shell
下执行的一个简单图形界面,其本质是修改Linux
的配置文件nmcli
:是命令行的形式来管理网络类似ifconfig
、ifup
等传统命令
传统的network
与新生的NetworkManager两者同时管理网络时,会出现冲突,一般只需要学一种即可
- 判断当前系统使用哪种网络服务:
systemctl is-enabled + 服务名称
判断是否开机启用systemctl is-enabled network
systemctl is-enabled NetworkManager
systemctl status + 服务名称
判断当前是否启用systemctl stop + 服务名称
停用服务,当发现二者都启用时,就停用一个
不论何种方式,Linux的本质任然是文件配置- Centos7的网络配置文件默认在
/etc/sysconfig/network-scripts/
目录下 - 激活网卡的3种方式(相当于
ifup ens33
):nmcli c up ens33
备注:nmcli c | connection
,连接,可理解为配置文件,相当于ifcfg-ethX或ifcfg-ensXnmcli d connect ens33
备注:nmcli d | device
,设备,可理解为实际存在的网卡(包括物理网卡和虚拟网卡)nmcli d reapply ens33
- 禁用网卡(相当于
ifdown ens33
)nmcli c down ens33
- 通过
ifconfig
查看当前网络配置,centos默认网卡名叫ens33
上图对应的注释如下:
2. nmtui图形网络配置方法 (略)
nmtui提供基于光标的文本用户界面(TUI)
通过nmtui
管理网的前提是:网卡可以被NetworkManager
管理
使用以下命令查看,注意STATE栏的状态
nmcli device
:绿色表示该网卡已经被NetworkManager
管理
上述状态可以通过下面命令查看和修改nmcli networking
:查看nmcli networking on|off
:修改
3. 编辑文件的网络配置方法
vim /etc/sysconfig/network-scripts/ifcfg-ens33
:编辑该文件即可
修改该文件后,保存退出
重新启动ens33网卡,加载配置文件
ifdown ens33
ifup ens33
此时使用ifconfig查看ip,会发现ip被改变了
4. 常用网络命令
ping + 目标ip地址
:
通常用于诊断到目标IP地址的连通性,判断从本机到目标机器,网络是否正常
例如:ping www.baidu.com
, 第一列:返回数据包的大小;第二列:发送数据包的序列;第三列:接收返回数据的时间
netstat
:
利用该指令可得到整个Linux系统的网络情况,选项如下:
-a
(或)--all
:显示所有连线中的 Socket-h | --help
:在线帮助-i | --interfaces
:显示网络界面信息表单-l | --listenling
:显示监控中的服务器的Socket-n | --numeric
:直接使用IP地址,而不通过域名服务器-p | --programs
:显示正在使用Socket的程序识别码和程序名称-s | --statistics
:显示网络工作信息统计表-t | --tcp
:显示TCP传输协议的连线状况-u | --udp
:显示UDP传输协议的连线状况
举例:netstat -antp
:
第一个红框表示:当前正在监听TCP 22
号端口,进程ID 1152
,进程名未sshd
;
第二个红框表示:当前TCP的连接,即我们SSH的连接(Xshell)
ss
命令
- 是Socket Statistics的缩写,用来获取socket统计信息。
ss
的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat
更快速、高效。。- 当服务器的socket连接数量变得非常大时,无论是使用
netstat
命令还是直接cat/proc/net/tcp
,执行速度都会很慢 ss
快的秘诀在于,它利用到了TCP协议栈中的tcp_diag
。tcp_diag
是一个用于分析统计的模块,可以获取Linux 内核中的第一手信息。
常用选项:
-t | --tcp
:显示tcp连接-a | --all
:显示所有连接-l | --listening
:列出所有打开的网络连接端口-s | --summary
:显示Sockets摘要-p | --progress
:显示端口对应的进程-n | --numeric
:不解析服务名称,也可以理解为数字形式显示-r | --resolve
:解析服务名称-m | --memory
:显示内存情况
例如:ss -lntp
:以数字形式显示tcp连接,并显示进程名
红框表示:22端口被 (sshd进程,id为1152)的进程所监听
Linux安装包管理
1. 程序安装包简介
早期:如果想要添加软件,必须获取该软件源代码,然后将其编译成二进制代码。再来运行,这种软件包通常是一个压缩包,如.tar
格式
缺点:
- 获取软件的依赖库文件
- 不知道相关软件的路径
- 删除时可能比较困难
- 更新时比较困难
解决方法:将软件包从简单的压缩包,变成了更复杂的打包,即:
- RPM(Red Hat Package Manager)包,时SUSE、Red Hat、Centos等的首选软件包格式
- Deb包,基于Debina GNU/Linux 的管理包文件,常用于基于Debian的发行版本Linux,如Ubuntu、Linux mint、KNOPPIX等
Linux系统管理员的主要职责之一就是软件管理,包含以下常见工作:
- 安装应用程序
- 更新应用程序
- 给内核Kernel打补丁
因此,我们需要一个合适的工具,查看并维护当前的软件及版本,Linux通常用rpm
来进行软件管理,同时使用yum
作为补充。
2. RPM管理
RPM程序包(相当于.exe
)
就是文件容器,包含特定应用程序或应用程序相关的文件组,通常的RPM程序包,包含如下部分:
- 二进制文件(可执行文件,已经编译好了)
- 安装脚本
- 配置文件
- 软件使用文档
- 安装卸载命令
- 注意:rpm包依赖CPU类型来工作,如
x86
、x86_64
、arm
等
RPM数据库
存于本机的/var/lib/rpm/
目录中,RPM数据库的作用如下:
- 跟踪每个 RPM 中各文件的版本和位置
- 维护各文件的 MD5 校验和
rpm常用命令
rpm -i + packageName
:安装软件包rpm -U + packageName
:升级软件包,如果没有安装,则安装rpm -F + packageName
:只升级软件包,如果原来安装,则不会新安装rpm -e packageName
:卸载程序包
例如:从数据库查询当前系统已安装的 Firefox 浏览器
rpm的局限性
使用rpm
安装软件包,必须先安装完整软件包的依赖,才能安装软件。如果软件的依赖非常多,这就很麻烦
3. yum工具使用
yum(Yellowdog Update Modified)项目:
着手解决RPM软件包依赖的问题
- 主要作用:将RPM不再视为单一软件包,而是视为一个软件库
- 借助软件库,安装软件的工程师不再解决依赖问题,而是由Linux发行版本的经销商来解决。
- yum软件库可以放置到web服务器(http)、FTP服务器(ftp)的一个目录中,甚至本地介质中,甚至本地目录中。
- 一般Linux发行版本的经销商都在国外,我们访问就比较慢,因此国内有很多公司、大学弄了镜像。
- 然后将软件库配置到
/etc/yum.conf
中(这个地方可以修改yum软件库的地址,例如设置为中科大的镜像),或者/etc/yu.repos.d
目录下的文件中
yum基本语法
yum [options] command
- 例如安装火狐浏览器:
yum install firefox
- 用户只需要知道软件名,而不用知道安装包路径或安装包全称
- 例如安装火狐浏览器:
yum工作原理
五个步骤:(如果自己用rpm
安装,前三步就需要自己做)
- 输入
yum install firefox
- 查询
/etc/yum.conf
与/etc/yum.repos.d/*
- 通过上述配置找到RPM包,包含依赖。并复制(下载)到本地
- RPM安装
- 修改RPM数据库
-
配置文件:
/etc/yum.conf
-
搜索软件 search: 当你想知道 editor 相关的软件时,就可以用该命令:
yum search editor
, yum就能把所有跟 editor 相关的信息罗列出来,自己再取选在装哪一个
然后使用 .x86_64之前的字符来进行安装,例如yum install dconf-editor
-
查看软件信息 info:
yum info emacs
-
如果知道一个命令,但不知道命令来自于哪个软件,可以查询:
yum provides netstat
查询到之后,我们就可以安装yum install net-tools
-
查看软件包依赖:
yum deplist net-tools
-
安装软件:
yum install ____
-
删除软件:
yum erase ____
,只会删除列出的软件包,而不会删除相关依赖 -
查看 yum 历史记录:
yum history
,可以查看用户使用yum进行了哪些行动
- 根据ID,可以查看具体信息,例如
yum history info 2
- 彻底还原删除 history 2 中的所有操作:
yum history undo 2
,该指令对系统软件失效
- 根据ID,可以查看具体信息,例如
-
更新软件包:
yum check -update
,去yum的缓存清单/etc/yum.repos.d/*里查询,yum update + packagename
// 更新指定软件yum update
更新所有
-
如果yum配置中使用了软件缓存,那么yum的缓存目录很容易装满,缓存目录中的所有数据都是可以被清除的,清楚后 yum 下次使用时,会自动下载新的元数据
yum clean packages
yum clean metadata
yum clean all