网络管理
网络地址转换 NAT
NAT 概述
- 需要在专用网连接到互联网的路由器上安装 NAT 软件。装有 NAT 软件的路由器叫作 NAT路由器,它至少有一个有效的外部全球IP地址
- 所有使用本地地址的主机在和外界通信时,都要在 NAT 路由器上将其本地地址转换成全球 IP 地址,才能和互联网连接
NAT 路由器工作原理
VMWare 配置 NAT
虚拟机设置
每一个 VMnet* 相当于一个网络,虚拟机如果想要上网,就设置成 VMnet 的网段内的 IP 地址。通过默认网关(也就是在宿主机中虚拟出来的网卡地址,它也在这个网段里,也是该网段的默认网关),发给物理机,宿主机的虚拟网卡收到该数据报后,再将数据报源地址改为物理机的公网地址,最后向外转发(就是 NAT 的过程)。
- VMnet* 相当于你物理机里的一个网段,上网的时候统统用物理机的公网地址替换了(NAT 行为)
- 要想让虚拟机上网,必须把物理机的网卡放入和虚拟机一个网段,数据才能出去
- 虚机若想访问物理机的共享资源 / Ping,地址应该写物理机虚拟网卡的地址而不是物理机公网地址
虚拟网络编辑器
Linux 网络环境配置
自动获取 IP
- 说明:登陆后,通过界面的来设置自动获取 IP
- 特点:Linux 启动后会自动获取 IP,缺点是每次自动获取的 IP 地址可能不一样
指定固定 IP
说明:通过修改配置文件 /etc/sysconfig/network-scripts/ifcfg-ens33
来指定 IP。
监控网络状态
netstat
- 基本语法:
netstat [选项]
- 功能描述:查看系统网络服务的情况
- 选项说明
-an
按一定顺序排列输出-p
显示哪个进程在调用
- 示例
- 查看系统所有的网络服务:
netstat -anp | more
- 查看服务名为 sshd 的服务的信息
- 查看系统所有的网络服务:
ping
一种网络检测检测工具,它主要是用检测远程主机是否正常,或是两部主机间的介质是否为断、网线是否脱落或网卡故障。
进程管理
基本介绍
- 在 Linux 中,每个执行的程序(代码)都称为一个"进程"。每一个进程都分配一个 ID 号。
- 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如 www 服务器。
- 每个进程都可能以 2 种方式存在的:前台与后台
- 前台进程就是用户目前的屏幕上可以进行操作的
- 后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行
- 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束。
显示系统执行的进程
- 指令格式:
ps –aux | grep xxx
- 功能描述:是用来查看目前系统中,有哪些正在执行,以及它们执行的状况
- 常用的参数有
aux
,也可以不加任何参数ps -a
显示当前终端的所有进程信息ps -u
以用户的格式显示进程信息ps -x
显示后台进程运行的参数
- 若只希望查看 sshd 服务的进程状况:
ps -aux | grep sshd
- 查询结果的列名说明
查看进程的父进程
- 要求:以全格式显示当前所有的进程,查看进程的父进程
ps -ef
是以全格式显示当前所有的进程。参数-e
显示所有进程,-f
表示"全格式"- 若只关心个别进程,可通过
ps -ef | grep xxx
对查询结果进行过滤 - 查询结果的列名说明
查看进程树,可以更加直观的来看进程信息
- 基本语法:
pstree [选项]
- 常用选项:
-p
显示进程的 PID-u
显示进程的所属用户
- 应用实例:
- 以树状的形式显示进程的 pid
- 以树状的形式进程的用户 id
- 以树状的形式显示进程的 pid
终止进程
- 基本介绍:若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用
kill
命令来完成此项任务。 - 基本语法
kill [选项] 进程号
:通过进程号杀死进程killall 进程名称
:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用
- 常用选项:
-9
表示强迫进程立即停止 - 最佳实践
- 踢掉某个非法登录用户
- 终止远程登录服务 sshd,在适当时候再次重启 sshd 服务
- 终止多个 gedit 编辑器:
killall gedit
- 强制杀掉一个终端
- 踢掉某个非法登录用户
动态监控进程
- 基本语法:
top [选项]
- 功能描述:top 与 ps 命令很相似。它们都用来显示正在执行的进程。top 与 ps 最大的不同之处,在于 top 在执行一段时间可以更新正在运行的的进程。
- 选项说明
- 交互操作说明
- 应用实例
- 监视特定用户
- top:输入此命令,按回车键,查看执行的进程
- u:然后输入
u
回车,再输入用户名即可
- 终止指定的进程
- top:输入此命令,按回车键,查看执行的进程
- k:然后输入
k
回车,再输入要结束的进程 ID 号
- 指定系统状态更新的时间(每隔10秒自动更新):
top -d 10
- 监视特定用户
服务管理
简述
服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql,sshd,防火墙等),因此我们又称为守护进程,是 Linux 中非常重要的知识点。
systemctl
指令:systemctl [start | stop | restart | reload | status] 服务名
举例:查看当前防火墙的状况,关闭防火墙和重启防火墙
- iptables 是 Linux 中对网络数据包进行处理的一个功能组件,就相当于防火墙,可以对经过的数据包进行处理,例如:数据包过滤、数据包转发等等。iptables 其实是一堆规则,防火墙根据 iptables 里的规则,对收到的网络数据包进行处理。iptables 里的数据组织结构分为:表、链、规则。
- iptables 在 CentOS 7 版本上需要自行安装:
yum install iptables-services
- 检查是否安装成功
- 启动 iptables:
systemctl start iptables.service
- 有关命令
systemctl start iptables #启动 systemctl status iptables #查看运行状态 systemctl restart iptables.service #重启 systemctl stop iptables.service #停止 systemctl enable iptables.service #设置开机启动 systemctl disable iptables.service #禁止开机启动
- 关闭或者启用防火墙后,立即生效。[telnet 测试某个端口即可]
- 这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。如果希望设置某个服务自启动或关闭永久生效,要使用
chkconfig
指令
查看服务名
- 使用
setup → 系统服务
就可以看到
- 查看
/etc/init.d/服务名称
服务的运行级别
- 查看或者修改默认级别:
vi /etc/inittab
- Linux 有 7 种运行级别(RunLevel):常用的是级别 3 和 5
- 运行级别0:系统停机状态,系统默认运行级别不能设为 0,否则不能正常启动
- 运行级别1:单用户工作状态,root 权限,用于系统维护,禁止远程登陆
- 运行级别2:多用户状态(没有NFS),不支持网络
- 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
- 运行级别4:系统未使用,保留
- 运行级别5:X11 控制台,登陆后进入图形 GUI 模式
- 运行级别6:系统正常关闭并重启,默认运行级别不能设为 6,否则不能正常启动
- 开机的流程说明
- 如果不小心将默认的运行级别设置成 0 或者 7 ,怎么处理?进入单用户模式,修改成正常的即可
通过 chkconfig 命令可以给每个服务的各个运行级别设置自启动/关闭。 chkconfig 重新设置服务后自启动或关闭,需要重启机器 reboot 才能生效。
chkconfig --list | grep xxx
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off
- 请显示当前系统所有服务的各个运行级别的运行状态
chkconfig --list
- 请查看 sshd 服务的运行状态
service sshd status
- 将 sshd 服务在运行级别 5 下设置为不自动启动
chkconfig --level 5 sshd off
- 当运行级别为 5 时,关闭防火墙
chkconfig --level 5 iptables off
- 在所有运行级别下,关闭防火墙
chkconfig iptables off
- 在所有运行级别下,开启防火墙
chkconfig iptables on
RPM 包管理
简述
一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有 .RPM 扩展名的文件。RPM 是 RedHat Package Manager(RedHat 软件包管理工具)的缩写,类似 Windows 的 setup.exe,这一文件格式名称虽然打上了 RedHat 的标志,但理念是通用的。
Linux 的分发版本都有采用 (如 suse,redhat,centos ...),可以算是公认的行业标准了。
查询 rpm
- rpm 包的简单查询指令:
rpm –qa | grep xx
- rpm 包名基本格式
- 其它查询指令
rpm -qa | more
查询所安装的所有 rpm 软件包rpm -qi 软件包名
查询软件包信息rpm -q 软件包名
查询软件包是否安装rpm -ql 软件包名
查询软件包中的文件rpm -qf 文件全路径名
查询文件所属的软件包
卸载 rpm
- 基本语法:
rpm -e RPM包的名称
- 细节讨论
- 如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息。如:
rpm -e foo
removing these packages would break dependencies:foo is needed by bar-1.0-1
- 如果我们就是要删除 foo 这个 rpm 包,可以增加参数
--nodeps
,就可以强制删除,但是一般不推荐这样做,因为依赖于该软件包的程序可能无法运行。如:rpm -e --nodeps foo
- 如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息。如:
安装 rpm
- 基本语法:
rpm -ivh RPM包全路径名称
- 参数说明
- i=install 安装
- v=verbose 提示
- h=hash 进度条
- 以安装 Firefox 为例,需要先找到 rpm 包:挂载当初安装 Linux 的 ISO 文件
YUM
- Yum 是一个 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装(要求联网),可以自动处理依赖性关系,并且一次安装所有依赖的软件包。
- yum 的基本指令
- 查询 yum 服务器是否有需要安装的软件:
yum list | grep xxx
- 安装指定的 yum 包:
yum install xxx
- 查询 yum 服务器是否有需要安装的软件:
- 示例:使用 yum 的方式来安装 Firefox