Linux-Centos7学习笔记


使用



init 5


进入图形界面,使用



init 3


回到命令行界面  
 到了这里,差不多必备的软件就全了。接下来在练习命令的时候,你可能会创建一些文件、目录、用户等,也可能误操作导致**系统损坏,网络不通**等问题,因此,强烈建议不再动这个,而是以此为母版,**克隆**一些。  
 例如:  
 Centos7-test:练习Linux命令  
 Centos7-docker:练习Docker使用  
 Centos7-web:练习Web开发与部署  
 之后不需要了可以直接删除。


## 克隆与网络连接


上了班一般设置自动快照,网络一般不用管,都是云服务器,有外网ip和VPC。这里还是简单配置一下。


### 克隆


我不会动母版,所以都是使用链接克隆,可以节省空间  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/9110c55ef1b9402cb1a222de104c3943.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_17,color_FFFFFF,t_70,g_se,x_16#pic_center)  
 原来的是NAT的,克隆了一个Bridge的。之后NAT的不再开机,只做母版留着克隆。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/afc7aacd84c549bdbda0f5485adc9c0e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_17,color_FFFFFF,t_70,g_se,x_16)


### 网络连接


#### VM与物理机设置




| 类型 | ip | 子网掩码 | 网关 | DNS |
| --- | --- | --- | --- | --- |
| 物理机/宿主机/主机 | 192.168.31.164 | 255.255.255.0 | 192.168.31.1 | 自动 |
| 桥接虚拟机 | 192.168.31.3 | 255.255.255.0 | 192.168.31.1 | 192.168.31.1 |
| NAT虚拟机 | 192.168.100.3 | 255.255.255.0 | 192.168.100.2 | 8.8.8.8;114.114.114.114 |


**桥接设置**  
 选择与物理机一直的网卡即可  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/8953d3ce07984c3c8b0059e0da8c3e0a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_19,color_FFFFFF,t_70,g_se,x_16#pic_center)  
 **NAT设置**  
 设置网关  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/0a92d7b5e99c4bda8991b4ba9ae6d0a4.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)  
 设置子网ip,子网掩码,dhcp  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/0bec6c45b3a44d8eaa97db527a5de350.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_19,color_FFFFFF,t_70,g_se,x_16#pic_center)  
 **Host-Only设置**  
 设置子网ip,子网掩码,dhcp  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/0f64d827da2048d98ded5ba611b0b1e9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)  
 **物理机/宿主机/主机设置**  
 网络连接  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/747f594baeb14373846b2971837f3341.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)  
 ip自动  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/751fdf4eb7854b18b80ae820a9783071.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_20,color_FFFFFF,t_70,g_se,x_16)  
 ipconfig查看  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/b6661d144848409785cda29309493304.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_19,color_FFFFFF,t_70,g_se,x_16#pic_center)  
 接下来设置虚拟机


#### 桥接模式


主机网卡与虚拟机虚拟的网卡,利用网桥进行通信。类似于虚拟一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机中。  
 **注意:虚拟机ip地址需要与主机在同一个网段,如果需要联网,网关与DNS保持一致。**  
 **虚拟机网络适配器设置为桥接模式**  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/8efa5f8066ed4d9e8daf26f5e514c330.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_20,color_FFFFFF,t_70,g_se,x_16)  
 **修改网络配置**



cd /etc/sysconfig/network-scripts


文件一般为ifcfg-ensxx,你的可能不是33  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/829d785db1944d9c84e0ea8ede698493.png#pic_center)  
 修改为协议为static,设置静态ip,网关,dns  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/6f6a530ba2a849779d5e424e1bf2d1da.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_9,color_FFFFFF,t_70,g_se,x_16#pic_center)  
 **重启网络**



/etc/init.d/network restart


**测试网络**  
 发现无法ping通宿主机,但是可以访问主机http服务(这里使用的python -m http.server开启的)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/9dba370baa594213b0f813cb609a5178.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)  
 所以,应该是宿主机防火墙的问题  
 设置防火墙  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/49be8f690ea1467f9417e911bee4a1e6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)  
 启用上图所示的虚拟机监控,启用后前面会有绿色对勾  
 **测试访问主机与外网**  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/1f6a23eb2a8f46868061a4c755a6a36f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_16,color_FFFFFF,t_70,g_se,x_16#pic_center)  
 **测试主机访问虚拟机**  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/0bb20c0f8b8849ea8457bf21122e52f2.png#pic_center)


#### NAT(地址转换)模式


借助虚拟NAT设备和虚拟的DHCP,虚拟机和物理机共用一个IP。  
 **注意:虚拟机使用NAT模式时,Linux系统要配置成dhcp。**  
 **虚拟机网络适配器设置为NAT模式**  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/7b066096c25c4b4cadfbb8ebb1025f6e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_20,color_FFFFFF,t_70,g_se,x_16)  
 **修改网络配置**



cd /etc/sysconfig/network-scripts


文件一般为ifcfg-ensxx,你的可能不是33  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/d71fcaea791b4f7b88d0458f820dc58e.png#pic_center)  
 修改为dhcp,设置个静态ip  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/e8ab3e6323da4272b9df49e8c062cc52.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_11,color_FFFFFF,t_70,g_se,x_16#pic_center)  
 **重启网络**



/etc/init.d/network restart


**测试网络**  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/d2e2962023444710a7086d16e93fe22f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_16,color_FFFFFF,t_70,g_se,x_16#pic_center)  
 **测试主机访问虚拟机**  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/0bb20c0f8b8849ea8457bf21122e52f2.png#pic_center)


#### Host-Only模式


将虚拟机**与外网隔开**,使得虚拟机成为一个独立的系统,**只与主机互相通讯**。相当于NAT模式去除了虚拟NAT地址转换功能。  
 这个我不用,就不展示了。


## 文件与目录


### 自带目录


![在这里插入图片描述](https://img-blog.csdnimg.cn/a877c6fe46814f9f985f8dbcf352d438.png#pic_center)


* bin:二进制文件目录,/usr/bin的软链接
* boot:系统启动相关的文件
* dev:Device,设备文件目录,声卡、磁盘等
* etc:常用系统及二进制安装包配置文件默认路径 例如,/etc/passwd /etc/hosts
* home:普通用户家目录
* lib:库文件目录,/usr/lib的软链接
* lib64:库文件目录,/usr/lib64的软链接
* media、mnt:临时挂载存储设备的目录
* opt:有些软件会安装在这里
* proc:操作系统运行时,进程信息及内核信息存放在这里,例如,/proc/cpuinfo
* root:root用户家目录
* run:运行目录,存放系统运行时数据
* sbin:大部分系统管理命令存放目录,root可执行命令存放目录,/usr/sbin的软链接
* srv:服务目录,存放本地服务相关文件
* sys:系统目录,存放硬件信息
* tmp:临时文件目录
* usr:存放应用程序和文件 /usr/bin(普通用户的应用程序)、/usr/lib (库文件)
* var:系统和软件运行时产生的日志信息,例如,/var/log


**进阶前的命令就不展示了,可以看参考的Linux基础**


### 目录


* cd:change dirctory
* pwd:print working directory
* ls:list
* mkdir:make directory
* rm:remove
* rmdir:remove directory,不推荐,可使用rm代替


### 文件


* touch
* echo
* mv
* cp
* head
* tail
* cat
* more
* less
* ln
* grep
* find
* locate



:用前面的内容覆盖掉后面文件的内容

:用前面的内容追加到后面的文件尾部
|:管道,前面的做后面的输入


### 压缩与备份


* zip
* unzip
* tar


## 用户与权限管理


### 用户


* whoami
* id
* useradd
* passwd
* userdel
* usermod
* su


### 用户组


* groupadd
* groupdel


### 权限


* chown
* chgrp


## 系统管理


### 系统查看


#### 系统版本



lsb_release -a



cat /etc/issue


#### 内核版本



uname -a


-r参数获取部分


#### cpu信息



cat /proc/cpuinfo


#### cpu和内存使用



top


### 时间日期


* date:日期
* cal:日历


### 任务调度


* crontab


### 进程管理


* ps:进程查看
* kill:杀死进程


## 其他


* history:历史命令
* runlevel:运行级别
* init
* help
* man
* shutdown:关机
* poweroff:关机
* halt:关机
* reboot:重启


## 进阶


### 服务管理


#### service(不推荐)



service 服务名 [start | stop | restart | reload | status]


* start:启动
* stop:停止
* restart:重启
* reload:重新载入
* status:状态


**查询sshd服务状态**



service sshd status


![在这里插入图片描述](https://img-blog.csdnimg.cn/5ea4a208e8fb4aa29eb6bf03b3a7c648.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)


#### systemctl


![在这里插入图片描述](https://img-blog.csdnimg.cn/82001dedfa63496ba0dfd9e5227ffa0b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)



systemctl [Options…] {COMMANDS…}


start:启动  
 stop:停止  
 status:状态  
 reload:重新载入  
 restart:重启  
 enable:开机启动  
 disable:取消开机启动  
 **开机启动sshd服务**



systemctl enable sshd


![在这里插入图片描述](https://img-blog.csdnimg.cn/271107cf506f4a70baec3ac1969f44c6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)


### 文件


#### sed


这个命令最厉害的地方在于**在文件中间进行插入,替换,删除**  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/d5a10235f268487884f43dd38ee9d477.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)



sed [-hnV][-e


参数说明


* -e<script>或–expression=<script> 以选项中指定的script来处理输入的文本文件。
* -i 修改源文件


动作说明


* a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行);
* c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
* d :删除,因为是删除啊,所以 d 后面通常不接任何东东;
* i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
* p :打印,将某个选择的数据印出。通常 p 会与参数-n一起运行
* s :取代,通常这个 s 的动作可以搭配正规!例如 1,20s/old/new/g  
 创建文件tested,并写入一些内容,内容如下  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/cb25a7785ccb442e829718604e7059b4.png#pic_center)  
 **在第四行后插入一行内容,内容为:新的第5行**



sed -e 4a\新的第5行 testsed


![在这里插入图片描述](https://img-blog.csdnimg.cn/85730cc222d8449bb3d3491b18e66902.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_12,color_FFFFFF,t_70,g_se,x_16#pic_center)  
 注意:默认是将结果输出到控制台,而不是文件,可以使用重定向>来放到新的文件,例如



sed -e 4a\新的第5行 testsed > newtestsed


![在这里插入图片描述](https://img-blog.csdnimg.cn/a7785d29b361410397c88ef2dbd3b87a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_16,color_FFFFFF,t_70,g_se,x_16#pic_center)  
 **在第3行前插入内容,内容为:新的第3行**



sed ‘3i 新的第3行’ testsed


![在这里插入图片描述](https://img-blog.csdnimg.cn/e18fd811602848d3b47af249f584bb7d.png#pic_center)


**删除第4-5行**



sed “4,5d” testsed


![在这里插入图片描述](https://img-blog.csdnimg.cn/fd20cbc09c764abea9c521b11fbbd91a.png#pic_center)  
 **取代第3,4行:内容为第3-4行**



sed ‘3,4c 第3-4行’ testsed


![在这里插入图片描述](https://img-blog.csdnimg.cn/5f2551ece9db46dfadae81da4154f10a.png#pic_center)  
 **搜寻含有4的行,并输出,带有行号**



sed -n ‘4p’ testsed


![在这里插入图片描述](https://img-blog.csdnimg.cn/30597a104c7d42b880e1257cb39c98dc.png#pic_center)  
 直接替换是这样的



‘s/要被取代的字串/新的字串/g’


将第2-4行的这是替换为这个是  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/abcb45dbf21b4525b4fc54c2e031aa7d.png#pic_center)  
 **前面都是输出到控制台或重定向到新文件,testsed文件还未改变,接下来说一下直接修改源文件!!!注意测试时不要使用系统配置,或记得备份**  
 **把所有数字,改为number**



sed -i ‘s/[0-9]/number/g’ testsed


![在这里插入图片描述](https://img-blog.csdnimg.cn/aefbcda4ce4944e6b29efdd75ba982d7.png#pic_center)


### 磁盘


#### mount


挂载  
 挂载/dev/vda到/data下



mount /dev/vda /data


#### df


disk free,磁盘情况统计



df -Th


![在这里插入图片描述](https://img-blog.csdnimg.cn/0e6444e23f3642dc880352b007d652e1.png#pic_center)


#### fdisk


一个创建和维护分区表的程序  
 **查看分区情况**



fdisk -l


![在这里插入图片描述](https://img-blog.csdnimg.cn/b96d5656c562410696e00802e5adee3e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)  
 磁盘这里,如果你是云服务商用户,可以尝试买一块数据盘,挂载一下


-------------2022-03-13更新-----------------


### 安全


#### selinux


一般都会关闭  
 1、临时关闭(不用重启机器)



setenforce 0


2、修改配置文件(需要重启机器)  
 修改/etc/selinux/config 文件  
 将SELINUX=enforcing改为SELINUX=disabled  
 重启机器即可


#### iptables(centos 5、6)


iptables会加大延迟,一般内网关闭,外网看情况  
 iptables是用于配置 Linux 2.4.x 及更高版本包过滤规则集的用户空间命令行程序。它面向系统管理员。  
 由于网络地址转换也是从数据包过滤规则集配置的,因此也使用iptables。  
 iptables 包还包括 ip6tables。 ip6tables用于配置 IPv6 包过滤器。  
 简单说,iptables是一个规则表链,用于包过滤和NAT



yum install iptables-service



systemctl [stop|start|restart|status] iptables


使用



man iptables


查看选项等信息  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/51178a854ad044f2bc8cad34af700b46.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)


##### 匹配流程


层层匹配  
 匹配到就不再继续匹配了,不论是丢弃还是接受,直接处理  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/c353bddfb3844212b9bcbba21ed31e86.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)


##### 5 tables && 5 chains && many policies


**表包含链,链包含规则**  
 前面man的手册往下继续翻看,可以找到表  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/df8038f7a8394be5a6db6344bf74e927.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)


* filter:默认表,不用-t参数指定,进行包过滤,有INPUT、FORWARD、OUTPUT三条链
* nat: 地址转换,用于代理,进行包转发,有创建新连接的包时,考虑此表,类似网络交换机的acl,有PREROUTING、OUTPUT、POSTROUTING三条链
* mangle: 有PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING
* raw:基本没用过的表,有PREROUTING、OUTPUT两条链
* security:安全表,**新版本才有的**,结合SELINUX,在filter表之后使用,有INPUT、FORWARD、OUTPUT三条链


接下来,说说五条链  
 INPUT:入站,过滤目的地址是本机的数据包  
 OUTPUT:出站,过滤源地址是本机的数据包  
 FORWARD:转发,转发流经主机的数据包  
 PREROUTING:预路由,路由判断之前执行的规则链,改变数据包的目的地址、目的端口等。  
 POSTROUTING:已路由,路由判断之后执行的规则链,改变数据包的源地址、源端口等。


接下来说说语法、规则  
 部分语法如下



iptables -t 表名 [命令选项] [匹配条件] [-j 控制类型]

查看规则列表
-L #列出所有的规则条目
-n #以数字形式显示地址、端口等信息
-v #以更详细的方式显示规则信息
–line-numbers #查看规则时,显示规则的序号(方便通过序号删除规则)

添加新的规则
-I #在链的开头(或指定序号)插入一条规则
-A #在链的末尾追加一条规则

删除、清空规则
-D #删除链内指定序号(或内容)的一条规则
-F #清空所有的规则
-X #是清理自定义的链,用的少
-Z #清理规则序号

设置默认规则
-P #为指定的链设置默认规则
-p #指定协议名称
-s #指定地址
-i #指定网段
–dport #指定端口
-m multiport --sports #指定多源端口
-m multiport --dports #指定多目的端口
-m iprange --src-range #指定IP范围
-m mac --mac-source #指定mac
-m state --state #指定状态


整个规则就是条件+处理方式  
 条件可以是目的ip地址、目的端口、数据包类型等  
 处理方式常见:  
 ACCEPT:接受  
 DROP:丢弃  
 REJECT:拒绝  
 JUMP:跳转  
 MATCH:匹配


##### 实践


查看所有链规则



iptables -L


![在这里插入图片描述](https://img-blog.csdnimg.cn/54bba7ec121146c6a86ed9052d551dd3.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGFkeV9raWxsZXI5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)


#### firewalld(centos 7)


![图片来源](https://img-blog.csdnimg.cn/img_convert/f0bc48d8fd5937c68bafd347596f4f61.png#pic_center)  
 上图为iptables和firewall的关系,在service层面是平级的,然后firewall最终还是调用的iptables的command。去执行内核的netfilter。




| 对比项 | firewalld | iptables |
| --- | --- | --- |
| 配置文件 | /etc/firewalld | /etc/sysconfig/iptables |
| 对规则的修改 | 不需要全部刷新策略,不丢失现行连接 | 需要全部刷新策略,丢失现行连接 |
| 防火墙类型 | 动态防火墙 | 静态防火墙 |


firewall使用时隔离iptables,隔离与取消隔离命令如下



systemctl mask iptables
systemctl umask iptables


firewalld使用的越来越多了,下面这些都在使用


* RHEL 7+
* CentOS 7+
* Fedora 18+
* SUSE 15+
* OpenSUSE 15+


##### 架构与概念


firewalld的架构如下图所示  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/fa3dfb5ff15d0366acd66e51e4cdedd7.png#pic_center)  
 firewalld 有两层设计:核心层和顶层的 D-Bus 层。核心层负责处理配置和后端,如 firewalld.conf、iptables、ip6tables、ebtables、ipset等。  
 firewalld D-Bus 接口是更改和创建防火墙配置的主要方式。所有 firewalld 提供的在线工具都使用该接口,例如 firewall-cmd、firewall-config 和 firewall-applet。


**zone**  
 不同的区域之间的差异是其对待数据包的默认行为不同,根据区域名字我们可以很直观的知道该区域的特征,在CentOS7系统中,默认区域被设置为public。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/6d646d3ac5db475fa4564c89e450ae9c.png#pic_center)  
 通过将网络划分成不同的区域,制定出不同区域之间的访问控制策略来控制不同程序区域间传送的数据流。  
 开启firewalld后,使用命令



firewalld-cmd --list-all-zone


可以查看所有zone,包含以下几种zone


* block:任何进入的网络连接都被拒绝,并返回 IPv4 的 icmp-host-prohibited 报文或者 IPv6 的 icmp6-adm-prohibited 报文。只允许由该系统初始化的网络连接。
* drop:任何流入网络的包都被丢弃,不作出任何响应。只允许流出的网络连接。
* external:用在路由器等启用伪装的外部网络。你认为网络中其他的计算机不可信并且可能伤害你的计算机。只允许选中的连接接入。
* internal:用在内部网络。你信任网络中的大多数计算机不会影响你的计算机。只接受被选中的连接。
* home:用在家庭网络。你信任网络中的大多数计算机不会影响你的计算机。只接受被选中的连接。
* public:用以可以公开的部分。你认为网络中其他的计算机不可信并且可能伤害你的计算机。只允许选中的连接接入。
* trusted:允许所有网络连接。
* work:用在工作网络。你信任网络中的大多数计算机不会影响你的计算机。只接受被选中的连接。
* zmd:用以允许隔离区(dmz)中的电脑有限地被外界网络访问。只接受被选中的连接。


**zone内规则匹配优先级**


* 关联zone的源网段
* 关联zone的网卡
* IP地址、网卡都没有关联zone,进入默认zone


##### 使用


firewall-cmd、firewall-config和firewall-applet,这里仅展示firewall-cmd的部分功能。  
 **部分命令**




| 
 命令 
 

 | 
 解释 
 

 |
| 
 firewall-cmd --zone=public --list-all 
 

 | 
 查看公开区域的信息 
 

 |
| 
 firewall-cmd --list-all-zone 
 

 | 
 查看所有区域的信息 
 

 |
| 
 firewall-cmd --zone=public --list-ports 
 

 | 
 查看指定区域所有开启的端口号 
 

 |
| 
 systemctl start firewalld 
 

 | 
 开启防火墙 
 

 |
| 
 systemctl stop firewalld 
 

 | 
 关闭防火墙 
 

 |
| 
 systemctl enable firewalld 
 

 | 
 设置开机启动 
 

 |
| 
 sytemctl disable firewalld 
 

 | 
 停止并禁用开机启动 
 

 |
| 
 firewall-cmd --reload 
 

 | 
 刷新规则 
 

 |
| 
 /etc/firewalld 
 

 | 
 配置文件的路径 
 

 |

 \*\*部分参数\*\* 


| 
 参数 
 

 | 
 作用 
 

 |
| 
 --version 
 

 | 
 查看版本 
 

 |
| 
 --permanent 
 

 | 
 永久生效 
 

 |
| 
 --get-active-zones 
 

 | 
 查看区域信息 
 

 |
| 
 --state 
 

 | 
 查看防火墙状态 
 

 |
| 
 --get-default-zone 
 

 | 
 查询默认的区域名称 
 

 |
| 
 --set-default-zone=<区域名称> 
 

 | 
 设置默认的区域,使其永久生效 
 

 |
| 
 --get-zones 
 

 | 
 显示可用的区域 
 

 |
| 
 --get-services 
 

 | 
 显示预先定义的服务 
 

 |
| 
 --get-active-zones 
 

 | 
 显示当前正在使用的区域与网卡名称 
 

 |
| 
 --add-source= 
 

 | 
 将源自此IP或子网的流量导向指定的区域 
 

 |
| 
 --remove-source= 
 

 | 
 不再将源自此IP或子网的流量导向某个指定区域 
 

 |
| 
 --add-interface=<网卡名称> 
 

 | 
 将源自该网卡的所有流量都导向某个指定区域 
 

 |
| 
 --change-interface=<网卡名称> 
 

 | 
 将某个网卡与区域进行关联 
 

 |
| 
 --list-all 
 

 | 
 显示当前区域的网卡配置参数、资源、端口以及服务等信息 
 

 |
| 
 --list-all-zones 
 

 | 
 显示所有区域的网卡配置参数、资源、端口以及服务等信息 
 

 |
| 
 --add-service=<服务名> 
 

 | 
 设置默认区域允许该服务的流量 
 

 |
| 
 --add-port=<端口号/协议> 
 

 | 
 设置默认区域允许该端口的流量 
 

 |
| 
 --remove-service=<服务名> 
 

 | 
 设置默认区域不再允许该服务的流量 
 

 |
| 
 --remove-port=<端口号/协议> 
 

 | 
 设置默认区域不再允许该端口的流量 
 

 |
| 
 --reload 
 
![](https://img-blog.csdnimg.cn/img_convert/9a8cb5f8c0ec69e6499adead0da6e95b.png)



最全的Linux教程,Linux从入门到精通

======================

1.  **linux从入门到精通(第2版)**

2.  **Linux系统移植**

3.  **Linux驱动开发入门与实战**

4.  **LINUX 系统移植 第2版**

5.  **Linux开源网络全栈详解 从DPDK到OpenFlow**



![华为18级工程师呕心沥血撰写3000页Linux学习笔记教程](https://img-blog.csdnimg.cn/img_convert/59742364bb1338737fe2d315a9e2ec54.png)



第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。



![华为18级工程师呕心沥血撰写3000页Linux学习笔记教程](https://img-blog.csdnimg.cn/img_convert/9d4aefb6a92edea27b825e59aa1f2c54.png)



**本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。**

> 需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论


  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值