Linux的防火墙
一、防火墙概述
防火墙是一种计算机硬件和软件的结合,使internet和intranet之间建立一个安全网关(Security Gateway),从而保护内网免受非法用户侵入的技术。
防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成。计算机流入流出的所有网络通信和数据包均要经过此防火墙。
1.1、种类
从逻辑上讲,防火墙大体可以分为主机防火墙和网络防火墙。
- 主机防火墙:针对单个主机进行防护。
- 网络防火墙:往往对于网络入口或边缘,针对于网络入口进行防护,服务于防火墙背后的本地局域网。
从物理上讲,防火墙可以分为硬件防火墙和软件防火墙。
- 硬件防火墙:在硬件级别实现部分防火墙功能,另一部分功能基于软件实现,性能高,成本高。
- 软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙,性能低,成本低。
1.2、linux包过滤防火墙概述
Linux的防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制。
属于典型的包过滤防火墙。linux系统的防火墙体系基于内核编码实现,具有非常稳定的性能和极高的效率,因此获得广泛的应用。
netfilter: 指的是linux内核中实现包过滤防火墙的内部结构,不以程序或文件的形式存在,属于“内核态”又称内核空间的防火墙功能体系
iptables:指的是用来管理linux防火墙的命令程序,通常位于/sbin/iptables目录下,属于“用户态”又称用户空间的防火墙管理体系
iptables的作用是为包过滤机制的实现提供规则,通过各种不同的规则,告诉netfilter对来自某些源,前往某些目的或具有某些协议特征的数据包应该如何处理,为了更加方便的组织和管理防火墙规则,iptables采用了表和链的分层结构
高并发的时候,iptables影响性能,一般使用硬件防火墙。
iptables IP 信息包过滤系统由哪两个组件组成?
是由 IP 信息包过滤系统,它实际上由两个组件 netfilter 和 iptables组成
1)netfilter:位于Linux内核中的包过滤功能,称为Linux防火墙的“内核态”
总结:Netfilter是Linux内核中的网络数据包处理框架
框架,最终处理还是内核
2)iptables:位于usr/sbin/iptables,用来管理防火墙规则。称为Linux防火墙的“用户态”
总结:iptables是基于Netfilter的用户空间工具,用于配置和管理数据包过滤规则
管理规则的,防火墙,数据包的规则
1.3、安装 iptabes
CentOS7默认使用firewalld防火墙,没有安装iptables,若想使用iptables防火墙。必须先关闭firewalld防火墙,再安装iptables
**关闭firewalld防火墙**
systemctl stop firewalld.service
systemctl disable firewalld.service
**安装iptables 防火墙**
yum -y install iptables iptables-services
**设置iptables开机启动**
systemctl start iptables.service
systemctl enable iptables.service
iptables防火墙的配置方法:
1、使用iptables命令行。
2、使用system-config-firewall centso7不能使用 centos 6可以使用
3、CentOS 7 的设计考虑了向后兼容性,允许用户通过传统的命令行工具(如 iptables)来管理防火墙规则。
但是我们还是习惯性的使用iptables
二、iptables的四表五链结构
每个规则表相当于内核空间的一个容器,根据规则集的不同用途划分为默认的四个表,在每个表容器内又包括不同的规则链,根据处理数据包的不同时机划分为五种链
iptables的四表五链结构
iptables的作用是为包过滤机制的实现提供规则,通过各种不同的规则,告诉netfilter对来自某些源,前往某些目的或具有某些协议特征的数据包应该如何处理,为了更加方便的组织和管理防火墙规则,iptables采用了表和链的分层结构
所以它会对请求的数据包的包头数据进行分析,根据我们预先设定的规则进行匹配来决定是否可以进入主机。
四表:
- filter 根据具体的规则要求决定如何处理一个数据包(确定是否放行该数据包),filter 表对应的内核模块为 iptable_filter,表内包含三个链,即 INPUT、 OUTPUT、FORWARD。
- nat 用来修改数据包的ip地址(源、目标),端口号等信息表内包含三个链,即POSTROUTING 、 OUTPUT、PREROUTING 。
- mangle 用来修改数据包的服务类型、生命周期,或者设置mark标记实现流量整形等高级应用
- raw 主要用来决定是否对数据包进行状态跟踪
五链:
- INPUT 当收到访问防火墙本机地址的数据包时,应用此链中的规则
- OUTPUT 当防火墙本机向外发送数据包时,应用此链中的规则
- FORWARD 当接收到需要通过防火墙中转发送给其他地址的数据包时,应用此链中的规则
- PREROUTING 在对数据包做路由选择之前,应用此链中的规则
- POSTROUTING 在对数据包做路由选择之后,应用此链中的规则
forward
prerouting
postrouting
2.1、流向
规则表应用顺序:raw→mangle→nat→filter
rmnf
规则链的应用顺序取决于数据的流向
- 入站数据流向:PREROUTING→路由选择→INPUT→应用程序
- 转发数据流向:PREROUTING→路由选择→FORWARD→POSTROUTING
- 出站数据流向:OUTPUT→路由选择→POSTROUTING
规则链内部的处理规则
按第一条规则……第二条规则的顺序进行匹配处理,遵循“匹配即停止”的原则,
一旦找到一条匹配规则将不再检查后续的其他规则,如果一直找不到匹配的规则,就按默认规则处理。
默认规则用 iptables -L 查看,规则链后面出现(policy ACCEPT)即是默认放行
默认策略不参与链内规则的顺序编排
-F清空链时,默认策略不受影响
注意:需要先关闭firewalld防火墙否则会跟iptables起冲突
需要先安装iptables-services软件(yum安装,默认系统自带iptables命令)
安装完需设定开机自启
2.2、示意图
三、基本语法
iptables 【-t 表名】 【管理选项】【链名】【匹配条件】 【-j 控制类型】
【-t 表名】如果不指定表名,默认是filter表
管理选项
- -A 在指定链末尾追加一条 iptables -A INPUT
- -I 在指定链中插入一条新的,未指定序号默认作为第一条 iptables -I INPUT
- -P 默认策略 iptables -P OUTPUT ACCEPT
- -D 删除 iptables -t nat -D INPUT
- -R 修改、替换某一条规则 iptables -t nat -R INPUT
- -L 查看 iptables -t nat -L
- -n 所有字段以数字形式显示(比如任意ip地址是0.0.0.0而不是anywhere,比如显示协议端口号而不是服务名) iptables -L -n,iptables -nL,iptables -vnL
- -v 查看时显示更详细信息,常跟-L一起使用
- --line-number 规则带编号 iptables -t nat -L -n --line-number /iptables -t nat -L --line-number
- -nvL --line-number 组合查看
- -F 清除链中所有规则 iptables -F
- -X 清空自定义链的规则,不影响其他链 iptables -X
- -Z 清空链的计数器(匹配到的数据包的大小和总和)iptables -Z
- -S 查看链的所有规则或者某个链的规则/某个具体规则后面跟编号 iptables -t nat -S、iptables -t nat -S POSTROUTING 1
控制选项(需大写)
- ACCEPT 允许数据包通过
- REJECT 拒绝数据包通过,必要时会给数据包发送端一个响应信息
- DROP 直接丢弃数据包,不给任何回应
- LOG 在/var/log/messages文件中记录日志信息,然后将数据包给下一条规则,它本身不处理数据包
- DNAT:修改数据包的目的地址。
- MASQUERADE(mɑːskəˈreɪd):伪装成一个非固定公网IP地址。
防火墙规则的“匹配即停止”对于 LOG 操作来说是一个特例,因为 LOG 只是一种辅助
我们直接操作语法是临时的
1永久保存默认存放路径:/etc/sysconfig/iptables
2.防火墙规则的保存其他方式
iptables-save //查看当前规则iptables-save > /etc/sysconfig/iptables //保存到默认配置文件下次重启不会丢失,或者其他文件
iptables-restore < /etc/iptables/rule.v4 //恢复
systemctl restart iptables.service //刷新所有规则,比如-F清空后,会刷新。
四、查看规则列表
查看已有的防火墙规则时,使用管理选项“-L”,结合“--line-numbers”选项还可显示各条规则在链内的顺序号。例如,若要查看 filter 表 INPUT 链中的所有规则,并显示规则序号, 可以执行以下操作iptables [-t表名] -n -L [链名] |[-- line-numbers]
或iptables - [vn]L
注意:不可以合写为-Ln(L必须在最后)
iptables -vnL --line-numbers
比如 注意大写,可以用tab补全
iptables -L INPUT --line-numbers
当防火墙规则的数量较多时,若能够以数字形式显示地址和端口信息,可以减少地址解析的环节,在一定程度上加快命令执行的速度。例如,若要以数字地址形式查看 filter 表INPUT 链中的所有规则,可以执行以下操作
-nL
iptables各字段解读
字段名 | 描述 |
---|---|
pkts (或 packages) | 对应规则匹配到的报文的个数。 |
bytes | 对应匹配到的报文包的大小总和(以字节为单位)。 |
target | 规则对应的target,表示规则匹配成功后需要采取的措施(如ACCEPT、DROP、REJECT等)。 |
prot | 表示规则对应的协议,指定哪些协议的数据包需要匹配此规则(如tcp、udp、icmp等)。 |
opt | 规则对应的选项,通常包含一些额外的参数或标记,用于进一步细化规则的行为。但在基础iptables 规则中可能不常见。 |
in | 表示数据包由哪个接口(网卡)流入。可以指定通过哪块网卡流入的报文需要匹配当前规则。 |
out | 表示数据包由哪个接口(网卡)流出。可以指定通过哪块网卡流出的报文需要匹配当前规则。 |
source | 表示规则对应的源头地址。可以是一个IP地址,也可以是一个IP地址网段。 |
destination | 表示规则对应的目标地址。可以是一个IP地址,也可以是一个IP地址网段。 |
五、添加新的规则
添加新的防火墙规则时,使用管理选项“-A”、“-I”,前者用来追加(添加在尾部)规则,后者用来插入规则(默认作为第一条,新规则)
因为规则是匹配即停止的,所以先后很重要。
例如,若要在 filter 表 INPUT 链的末尾添加一条防火墙规则,可以执行以下操作(其中 “-p 协议名”作为匹配条件)。
iptables -t filter -A INPUT -p icmp -j REJECT //不允许任何主机ping本主机
iptables -I INPUT 2 -p tcp --dport 22 -j ACCEPT
六、删除清空规则
6.1、删除
删除一条防火墙规则时,使用管理选项“-D”。例如,若要删除 filter 表 INPUT 链中的第
五条规则,可以执行以下操作。
iptables -D INPUT 5
第二种写法
iptables -t filter -D INPUT -p icmp - j REJECT
原本
删除
6.2、清空
我们所修改的都是临时的规则列表
清空指定链或表中的所有防火墙规则,使用管理选项“-F”。例如,若要清空 filter 表 INPUT
iptables -F INPUT
注意
1.若规则列表中有多条相同的规则时,按内容匹配只删除的序号最小的一条
2.按号码匹配删除时,确保规则号码小于等于已有规则数,否则报错
3.按内容匹配删数时,确保规则存在,否则报错
使用管理选项“-F”时,允许省略链名而清空指定表所有链的规则。
例如,执行以下操作 分别用来清空 filter 表、nat 表、mangle 表
iptables -F
iptables -t nat -F
iptables -t mangle -F
注意:
l.-F仅仅是清空链表中的规则,并不影响-P设置的默认规则,默认规则需要手动进行修改
2.-P设置了DROP后,使用-F 一定要小心!
防止把允许远程连接的相关规则清除后导致无法远程连接主机,此情况如果没有保存规则可重启主机解决。
3.如果不写表名和链名,默认清空filter表中所有链里的所有规则
七、规则的匹配条件
在编写防火墙规则时,匹配条件的设置起着决定性的作用。只有清晰、准确地设置好匹配条件,防火墙才知道要对符合什么条件的数据包进行处理,避免“误杀”。对于同一条防火墙规则,可以指定多个匹配条件,表示这些条件必须都满足规则才会生效。根据数据包的各种特征,结合iptables的模块结构,匹配条件的设置包括三大类:通用匹配、隐含匹配、显式匹配。
7.1、通用匹配
通用匹配也称为常规匹配,这种匹配方式可以独立使用,不依赖于其他条件或扩展模块。 常见的通用匹配包括协议匹配、地址匹配、网络接口匹配。
- 协议匹配
写 iptables 规则时使用“-p 协议名”的形式指定,用来检查数据包所使用的网络协议(protocol),如 tcp、udp、icmp 和 all(针对所有 IP 数据包)等,可用的协议类型存放于 Linux 系统的/etc/protocols文件中。
例如,若要丢弃通过 icmp 协议访问防火墙本机的数据包,允许转发经过防火墙的除 icmp 协议之外的数据包,可以执行以下操作。
iptables -A FORWARD ! -p icmp -j ACCEPT //感叹号”!”表示取反
- 地址匹配
-s 源地址、-d目的地址
可以是IP、网段、域名、空(任何地址)
iptables -I INPUT -s 192.168.100.200 -p icmp -j REJECT 不允许192.168.100.200这个主机ping本主机
iptables -I INPUT -s 192.168.100.0/24 -j DROP 禁止192.168.100.0网段的所有主机的所有连接
iptables -A OUTPUT -d 192.168.245.211 -p icmp -j DROP //丢弃ping 192.168.245.211的数据包
- 接口匹配
-i入站网卡、-o出站网卡
iptables -A INPUT -i ens33 -s 192.168.100.0/24 -j DROP 丢弃来自192.168.100.0网段并且从ens33接口进入的数据包
有可能不是主机型防火墙,网络型防火墙有两个网卡,既连公网又连私网的情况需要指定出入接口
iptables -A INPUT -i ens33 -j DROP //所有从ens33网卡进来的数据包都被丢弃,所以xshell会断连
7.2、隐含匹配
要求以特定的协议匹配作为前提,包括端口、TCP标记、ICMP类型等条件。
端口匹配: --sport 源端口、--dport 目的端口
源端口是指自己,源本,如果用sport就是自己访问其他人的的22端口不能用,一般不会这样设置,自己给自己找麻烦
目标端口 是指别的机器访问自己主机 dport
可以是个别端口、端口范围
--sport 1000 匹配源端口是1000的数据包
--sport 1000:3000 匹配源端口是1000-3000的数据包
--sport :3000 匹配源端口是3000及以下的数据包
--sport 1000: 匹配源端口是1000及以上的数据包
注意: --sport和--dport 必须配合-p <协议类型>使用
iptables -A INPUT -p tcp --dport 22 -s 192.168.245.211 -j DROP //不允许211主机ssh到本机,指定端口之前一定要指定协议
7.3、显式匹配
这种匹配方式要求有额外的内核模块提供支持,必须手动以“-m 模块名称”的形式调用相应的模块
要求以“-m扩展模块”的形式明确指出类型,包括多端口、MAC地址、IP范围、数据包状态等条件。
- 多端口匹配
-m multiport --sport 源端口列表
-m multiport --dport 目的端口列表
iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT 允许开放25,80,110,143端口,以便访问邮件和网站服务
iptables -I INPUT -p tcp --dport 20:21 -j ACCEPT 开放ftp访问,冒号表示端口的范围从20-21端口
iptables -A INPUT -p tcp -m multiport --dport 20,21 -j ACCEPT 开放ftp访问的另一种方法,写成多端口模式,端口之间用逗号分隔
*这里--dport和--dports都可以
- IP范围匹配
-m iprange --src-range IP范围
iptables -A FORWARD -p udp -m iprange --src-range 192.168.80.100-192.168.80.200 -j DROP
禁止转发源地址位于192.168.80.100-192.168.80.200的udp数据包
MAC地址匹配: -m mac --mac-source MAC地址
iptables -A FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP
禁止来自某MAC地址的数据包通过本机转发
- 状态匹配
-m state --state 连接状态
常见的连接状态:
- NEW(新的) :与任何连接无关的,还没开始连接
- ESTABLISHED (已经立):响应请求或者已建立连接的,连接态
- RELATED(相关的) :与已有连接有相关性的(如FTP主被动模式的数据连接),衍生态,一般与ESTABLISHED 配合使用,表示这个封包是与我们主机发送出去的封包有关, 可能是响应封包或者是联机成功之后的传送封包!这个状态很常被设定,因为设定了他之后,只要未来由本机发送出去的封包,即使我们没有设定封包的 INPUT 规则,该有关的封包还是可以进入我们主机, 可以简化相当多的设定规则,比如FTP
- INVALID(无效的):不能被识别属于哪个连接或没有任何状态,例如数据破损的封包状态
related 相关的
established 确定
invalid无效的
iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP
禁止转发与正常TCP连接无关的非--syn请求数据包(如伪造的网络攻击数据包)
iptables -A INPUT -p tcp -m state --state ESTABLISHED, RELATED -j ACCEPT
对进来的包的状态进行检测。已经建立tcp连接的包以及该连接相关的包允许通过。
7.4、扩展控制位(了解就行)
TCP标记匹配: --tcp-flags TCP标记
iptables -I INPUT -i ens33 -p tcp --tcp-flags SYN,RST,ACK SYN -j ACCEPT
#丢弃SYN请求包,放行其他包
ICMP类型匹配: --icmp-type ICMP类型
#可以是字符串、数字代码
"Echo- Request" (代码为8)表示请求
"Echo- Reply" (代码为0)表示回显
"Dest ination-Unreachable" (代码为3)表示目标不可达
关于其它可用的ICMP协议类型,可以执行“iptables -p icmp -h”命令,查看帮助信息
iptables -A INPUT -p icmp --icmp-type 8 -j DROP #禁止其它主机ping本机
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT #允许本机ping其它主机 先拒绝:iptables -A INPUT -p icmp -j DROP
iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT #当本机ping不通其它主机时提示目标不可达
#此时其它主机需要配置关于icmp协议的控制类型为REJECT
iptables -A INPUT -p icmp -j REJECT
八、设置默认策略
iptables 的各条链中,默认策略是规则匹配的最后一个环节——当找不到任何一条能够匹配数据包的规则时,则执行默认策略。
默认策略的控制类型为 ACCEPT(允许)、DROP(丢弃)两种。
例如,执行以下操作可以将 filter 表中 FORWARD 链的默认策略设为丢弃, OUTPUT 链的默认策略设为允许。
iptables [-t表名] -P <链名> <控制类型>
iptables -P INPUT DROP
输入后没显示 清除所有规则之后才会生效
iptables -F
发现远程登录不上去了ssh
可以在本地机器systemctl restart iptables.service
一般在生产环境中设置网络型防火墙、主机型防火墙时都要设置默认规则为DROP,并设置白名单
[root@localhost ~]# iptables -t filter -P FORWARD DROP
需要注意的是,当使用管理选项“-F”清空链时,默认策略不受影响。因此若要修改默认 策略,
必须通过管理选项“-P”重新进行设置。另外,默认策略并不参与链内规则的顺序编排, 因此在其他规则之前或之后设置并无区别。
相关文章:

Linux的防火墙
一、防火墙概述 防火墙是一种计算机硬件和软件的结合,使internet和intranet之间建立一个安全网关(Security Gateway),从而保护内网免受非法用户侵入的技术。 防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成。…...

跟张良均老师学大数据人工智能-批量集训营开班中
随着我国大数据和人工智能产业的飞速发展,未来社会对高素质科技人才的需求日益旺盛。为助力广大青少年提前掌握前沿技术,实现自我价值,泰迪智能科技多名优秀老师联合打造暑期大数据人工智能集训营,旨在培养具备创新精神和实战能力…...

2024年音频剪辑必备:五大最佳音频编辑软件精选!
在数字时代,音频剪辑已成为创意表达的重要工具。无论是音乐制作、播客编辑还是视频后期,一款优秀的音频剪辑软件都是不可或缺的。推荐五款备受推崇的音频剪辑工具。 福昕音频剪辑 链接:https://www.foxitsoftware.cn/audio-clip/ 福昕音频…...
Native Programs(本机程序)
Native Programs System Program(系统程序)Config ProgramStake ProgramVote ProgramAddress Lookup Table ProgramBPF LoaderEd25519 ProgramSecp256k1 Program Solana contains a small handful of native programs that are part of the validator im…...
RisingWave 1.10 发布!新增用户自定义聚合函数
我们非常高兴地宣布:RisingWave 1.10 版本正式发布!新版本为大家带来了许多重要更新,例如:新增用户自定义聚合函数 (UDAF)、支持从游标获取多个更新、支持可溢出哈希 Join、增强 CDC 连接器、新增 Sink 连接器等。一起来了解本次更…...

Modbus通讯协议
Modbus通讯协议 Modbus协议是一种用于电子控制器之间的通信协议,它允许不同类型的设备之间进行通信,以便进行数据交换和控制。Modbus协议最初为可编程逻辑控制器(PLC)通信开发,现已广泛应用于工业自动化领…...

fal.ai发布超分辨率模型——AuraSR V2
今天,我们发布了单步 GAN 升频器的第二个版本: AuraSR。 我们在上个月发布了 AuraSR v1,社区的反响让我们深受鼓舞,因此我们立即开始了新版本的训练。 AuraSR 基于 Adobe Gigagan 论文,以 lucidrain 的实现为起点。Gi…...

SYD88xx代码复位不成功和解决办法
原来的复位代码如下: void ota_manage(void){#ifdef _OTA_if(ota_state){switch(ota_state){case 1 : #if defined(_DEBUG_) || defined(_SYD_RTT_DEBUG_)dbg_printf("start FwErase\r\n");#endifCmdFwErase();#if defined(_DEBUG_) || defined(_SYD_RTT_DEBUG_)db…...
加油,为Vue3提供一个可媲美Angular的ioc容器
为什么要为Vue3提供ioc容器 Vue3因其出色的响应式系统,以及便利的功能特性,完全胜任大型业务系统的开发。但是,我们不仅要能做到,而且要做得更好。大型业务系统的关键就是解耦合,从而减缓shi山代码的生长。而ioc容器是…...
RS485 CAN SPI IIC UART RS232这些通信协议传输距离、传输速度对比给出比较顺序-笔记(面试必备)
各类通信协议(RS485、CAN、SPI、I2C、UART、RS232)的传输距离和传输速度各有不同,适用于不同的应用场景。以下是这些通信协议的传输距离和传输速度的对比及排序: 传输距离比较(从长到短) RS485 最大传输距…...

高频JMeter软件测试面试题
近期,有很多粉丝在催更关于Jmeter的面试题,索性抽空整理了一波,以下是一些高频JMeter面试题,拿走不谢~ 一、JMeter的工作原理 JMeter就像一群将请求发送到目标服务器的用户一样,它收集来自目标服务器的响应以及其他统计…...

iptables netfilter
iptables -L --line...
如何使用Python自动发送邮件?
Python 提供了强大的内置库 smtplib 和 email,让我们能够轻松地发送各种类型的电子邮件。本指南将带你逐步了解如何使用 Python 发送邮件,从简单文本邮件到包含 HTML 内容、附件和内嵌图片的复杂邮件。 1. 准备工作: 1.1 安装必要的库 确保…...
C#中读写INI配置文件
在作应用系统开发时,管理配置是必不可少的。例如数据库服务器的配置、安装和更新配置等等。由于Xml的兴起,现在的配置文件大都是以xml文档来存储。比如Visual Studio.Net自身的配置文件Mashine.config,Asp.Net的配置文件Web.Config࿰…...
深入解析Spring中的@RequestMapping注解
RequestMapping是Spring框架中的一个核心注解,用于映射Web请求到处理器类的方法上。本文将详细介绍RequestMapping注解的用途、支持的属性以及如何在Spring MVC和Spring WebFlux中应用它。 1. 引言 在Spring框架中,RequestMapping是一个用于简化请求映…...
Python:lambda函数
lambda函数解释 Lambda函数,也被称为匿名函数,是Python等编程语言中用于创建简单、一次性使用的函数对象的一种快捷方式。在Python中,lambda函数使用lambda关键字定义,其后紧跟一个或多个参数(用逗号分隔)…...
MySQL查询语句
1. 一般查询 select * from table; 创建表:并插入数据,为下面的查询做例 create table info ( id int primary key, name varchar(10), score decimal(5,2), address varchar(20), hobbid int(5));insert into info values(1,liuyi,80,bei…...
远程连接服务
1.SSH协议握手流程 TCP三次握手后当前主机与远程服务器之间协商用哪种协议版本,ssh有两个(ssh1/ssh2)一般用ssh2,协商完后进入到密钥交换的阶段,客户端会生成一个公钥和一个私钥,公钥用来上锁,私…...
系统架构设计师——软件开发方法分类
分类 软件开发方法是指软件开发过程所遵循的办法和步骤,从不同的角度可以对软件开发方法进行不同的分类。 按照开发风范 软件开发过程中,开发方法的选择对项目的成功至关重要。这些方法可按照特定的开发风范分为自顶向下和自底向上两种主要策略&#…...

《看漫画学Python》全彩PDF教程,495页深度解析,零基础也能轻松上手!
前言 说起编程语言,Python 也许不是使用最广的,但一定是现在被谈论最多的。随着近年大数据、人工智能的兴起,Python 越来越多的出现在人们的视野中。 在各家公司里,Python 还常被用来做快速原型开发,以便更快验证产品…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...