当前位置: 首页 > news >正文

iptables 防火墙(二)

iptables 防火墙(二)

  • 一、SNAT 策略及应用
    • SNAT 策略概述
    • SNAT 策略的应用
  • 二、DNAT 策略及应用
    • DNAT 策略概述
  • 三、规则的导出、导入
    • 规则的备份及还原
      • iptables-save 命令
      • iptables-restore 命令
    • 使用 iptables 服务
  • 四、使用防火墙脚本
    • 防火墙脚本的构成
    • 防火墙脚本示例
  • 五、总结

在上一篇文章中,我们初步了解了iptables防火墙的基本概念和基本使用方法。iptables是Linux系统下一款强大的网络数据包处理工具,它可以用来设置允许哪些数据包通过以及拒绝哪些数据包,并根据具体的规则来进行数据包过滤。本文将带大家进一步深入iptables的使用,包括更复杂的规则设置、链的管理以及高级应用技巧。

一、SNAT 策略及应用

SNAT 策略概述

SNAT策略的典型应用环境

  • 局域网主机共享单个公网IP地址接入Internet

SNAT策略的原理

  • 源地址转换,Source Network Address Translation
  • 修改数据包的源地址
    在这里插入图片描述

开启路由转发,未设置地址转换的情况

  • 正常情况下,作为网关的 Linux 服务器必须打开路由转发,才能沟通多个网络。
  • 未使用地址转换策略时,从局域网 PC(如 192.168.1.234)访问 Internet 的数据包经过网关转发后其源 IP 地址保持不变,
  • 当 Internet 中的主机收到这样的请求数据包后,响应数据包将无法正确返回(私有地址不能在 Internet 中正常路由),从而导致访问失败
    在这里插入图片描述

开启路由转发,并设置 SNAT 转换的情况

  • 如果在网关服务器中正确应用 SNAT 策略,数据包转发情况就不一样了
    在这里插入图片描述

SNAT 策略的应用

在这里插入图片描述

  • SNAT 策略只能用在 nat 表的 POSTROUTING 链,
  • 使用 iptables 命令编写 SNAT 策略时,需要结合“–to-source IP 地址”选项来指定修改后的源 IP 地址
  • 如-j SNAT --to-source 218.29.30.31

共享固定 IP 地址上网

  • Linux 网关服务器通过两块网卡 ens33、ens37 分别连接 Internet 和局域网,其中 ens33 的 IP 地址为 218.29.30.31,ens37 的 IP 地址为 192.168.1.1。
  • 所有局域网 PC 的默认网关设为 192.168.1.1,且已经设置了正确的 DNS 服务器。
  • 要求 192.168.1.0/24 网段的 PC 能够通过共享方式正常访问 Internet。

(1) 打开网关的路由转发。

  • 对于 Linux 服务器,IP 转发是实现路由功能的关键所在,对应为/proc 文件系统中的ip_forward 设置,
  • 当值为 1 时表示开启,为 0 时表示关闭。
  • 若要使用 Linux 主机作为网关设备,必然需要开启路由转发。
# 永久打开路由转发功能
[root@localhost ~]# vi /etc/sysctl.conf
……            # 省略部分内容
net.ipv4.ip_forward = 1                    # 将此行写入配置文件
[root@localhost  ~]# sysctl -p            # 读取修改后的配置
# 在测试过程中,若只希望临时开启路由转发,也可以执行以下操作。
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
# 或者
[root@localhost ~]# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1

(2) 正确设置 SNAT 策略。

  • 通过分析得知,需要针对局域网 PC 访问 Internet 的数据包采取 SNAT 策略,将源地址更改为网关的公网 IP 地址,
  • 参考以下操作在网关中设置防火墙规则。
  • 若要保持 SNAT 策略长期有效,应将相关命令写入到 rc.local 配置文件,以便开机后自动设置。
[root@localhost ~]# iptables -t nat -A  POSTROUTING  -s  192.168.1.0/24  -o  ens33  -j  SN AT --to-source 218.29.30.31

(3) 测试 SNAT 共享接入结果。

  • 上述操作完成以后,使用局域网中的 PC 就可以正常访问 Internet 中的网站了。
  • 对于被访问的网站服务器来说,将会认为是网关主机218.29.30.31 在访问(可观察Web 日志获知),
  • 而并不知道实际上是企业内网的 PC 192.168.1.234 在访问。

共享动态 IP 地址上网
在这里插入图片描述

二、DNAT 策略及应用

DNAT 策略概述

DNAT策略的典型应用环境

  • 在Internet中发布位于企业局域网内的服务器

DNAT策略的原理

  • 目标地址转换,Destination Network Address Translation
  • 修改数据包的目标地址
    在这里插入图片描述
    进行DNAT转换后的情况

发布企业内部的 Web 服务器
(1) 打开网关的路由转发。

[root@gw ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
[root@gw ~]# sysctl -p
net.ipv4.ip_forward = 1

(2) 正确设置 DNAT 策略。

[root@gw ~]# iptables -t nat -A PREROUTING -d 192.168.72.154 -p tcp --dport 2333 -j DNAT --to-destination 192.168.72.145:22
[root@gw ~]# iptables -t nat -A POSTROUTING -d 192.168.72.145 -p tcp --dport 22 -j SNAT --to 192.168.72.154

(3) 测试 DNAT 发布结果。
在这里插入图片描述
发布企业内部的 OpenSSH 服务器
(1) 配置 OpenSSH 服务。

(2) 打开网关的路由转发。

[root@gw ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
[root@gw ~]# sysctl -p
net.ipv4.ip_forward = 1

(3) 正确设置 DNAT 策略。

[root@gw ~]# iptables -t nat -A PREROUTING -i ens33 -d 192.168.72.154 -p tcp --dport 3333 -j DNAT --to-destination 192.168.72.145:22

(4) 测试 DNAT 发布结果。
在这里插入图片描述

三、规则的导出、导入

规则的备份及还原

iptables-save 命令

  • iptables-save 命令用来批量导出 Linux 防火墙规则。
  • 直接执行 iptables-save 命令时, 将显示出当前启用的所有规则。
[root@gw ~]# iptables-save > iptables_kgc.txt        # 备份所有表的规则

iptables-restore 命令

  • iptables-retore 命令用来批量导入 Linux 防火墙规则
  • 如果已经使用 iptables-save 命令导出的备份文件,则恢复规则的过程在一瞬间就能完成。
  • 与 iptables-save 命令相对的iptables-restore 命令应结合重定向输入来指定备份文件的位置。
[root@gw ~]# iptables-restore < iptables_kgc.txt        # 从备份文件恢复规则

使用 iptables 服务

自动启用防火墙规则

  • 在服务器中调试好各种 iptables 规则以后,使用 iptables-save 备份为默认的规则配置文件/etc/sysconfig/iptables,然后就可以通过 iptables 服务来调用。
[root@gw ~]# yum -y install iptables-service        # 下载 iptables-service
[root@gw ~]# cat iptables_kgc.txt > /etc/sysconfig/iptables        # 备份导入到配置文件
[root@gw ~]# systemctl start iptables        # 启动服务
[root@gw ~]# systemctl enable iptables        # 设置开机自启动服务

清空所有防火墙规则

  • 在调试各种防火墙规则的过程中,为了排除其他规则的干扰,有时候需要清空某些表的规则。
  • 当需要一次清空所有表的规则时,停用 iptables 服务是最快捷的方法,也是最彻底的方法。
[root@gw ~]# systemctl stop iptables          # 停止防火墙服务
[root@gw ~]# systemctl status iptables        # 确认防火墙服务的状态
● iptables.service - IPv4 firewall with iptablesLoaded: loaded (/usr/lib/systemd/system/iptables.service; disabled; vendor preset: disabled)Active: inactive (dead) since 一 2024-07-01 12:01:48 CST; 1s agoProcess: 9663 ExecStop=/usr/libexec/iptables/iptables.init stop (code=exited, status=0/SUCCESS)Process: 1692 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=0/SUCCESS)Main PID: 1692 (code=exited, status=0/SUCCESS)701 10:48:48 gw systemd[1]: Starting IPv4 firewall with iptables...
701 10:48:48 gw iptables.init[1692]: iptables: Applying firewall rules: [  确定  ]
701 10:48:48 gw systemd[1]: Started IPv4 firewall with iptables.
701 12:01:48 gw systemd[1]: Stopping IPv4 firewall with iptables...
701 12:01:48 gw iptables.init[9663]: iptables: Setting chains to policy ACCEPT: filter nat [  确定  ]
701 12:01:48 gw iptables.init[9663]: iptables: Flushing firewall rules: [  确定  ]
701 12:01:48 gw systemd[1]: Stopped IPv4 firewall with iptables.

四、使用防火墙脚本

防火墙脚本的构成

定义基本变量

  • 将防火墙的网卡、IP 地址、局域网段、iptables 命令的路径等定义为变量,便于对脚本程序的维护和移植使用,特别是当规则较多的时候。
  • 一旦网络环境发生变化(如公网 IP 地址变更),只需对变量值稍做修改就可以投入使用了。
[root@localhost  ~]# vim /opt/myipfw.sh    //创建脚本文件
#!/bin/bash
INET_IF= "ens33"    //外网接口
INET_IP="218.29.30.31"        //外网接口地址
LAN_IF="ens37"    //内网接口
LAN_IP= "192.168.1.1"        //内网接口地址
LAN_NET="192.168.1.0/24"    //内网网段
LAN_WWW_IP="192.168.1.6"                //网站服务器的内部地址
IPT="/sbin/iptables"    //iptables 命令的路径
MOD="/sbin/modprobe"            //modprobe 命令的路径
CTL="/sbin/sysctl"        //sysctl 命令的路径
  • 设置好相关的变量以后,在后续的脚本内容中就可以直接引用了。
  • 为了提高脚本代码的 可读性,除了添加必要的注释之外,变量名称最好使用有一定含义的字符串。

加载内核模块

  • 在 CentOS 7.3 系统中,iptables 命令的大部分模块都可以根据需要动态载入内核,只有个别模块需要手动进行加载(如与 FTP 发布相关的 ip_nat_ftp、ip_conntrack_ftp)。
  • 但如果需要启用的规则数量较多,为了提高规则设置的效率,保持防火墙的稳定性,建议将用到的各种模块提前加载到内核中。
$MOD ip_tables    //iptables 基本模块
$MOD ip_conntrack    //连接跟踪模块
$MOD ipt_REJECT    //拒绝操作模块
$MOD ipt_LOG    //日志记录模块
$MOD ipt_iprange    //支持IP 范围匹配
$MOD xt_tcpudp    //支持TCP、UDP 协议
$MOD xt_state    //支持状态匹配
$MOD xt_multiport    //支持多端口匹配
$MOD xt_mac    //支持MAC 地址匹配
$MOD ip_nat_ftp    //支持FTP 地址转换
$MOD ip_conntrack_ftp    //支持FTP 连接跟踪

调整/proc 参数

  • /proc 是 Linux 或 UNIX 系统中的一种伪文件系统机制,提供了访问内核运行结构、改变内核设置的实时数据。
  • 与 EXT3、FAT32 等本地文件系统不同,/proc 中的数据存放在内存中而不是硬盘上。
  • 在文件夹/proc/sys 下存放着与系统相关的一些可控参数,可以直接用来改变内核的行为,通常作为 Linux 内核调优的实时入口。
  • 其中包括是否打开 IP 转发、是否响应 ICMP 广播、设置好 TCP 响应超时等,使用 echo、sysctl 命令都可以修改相关参数,当然也可以写到/etc/sysctl.conf 文件(执行 sysctl -p 后生效)。
// 下面仅列出常用的几个/proc 参数调整,更多细节、调优操作此处不做过多介绍,有兴趣的同学请参阅其他资料。
$CTL -w net.ipv4.ip_forward=1    //打开路由转发功能
$CTL -w net.ipv4.ip_default_ttl=128    //修改ICMP 响应超时
$CTL -w net.ipv4.icmp_echo_ignore_all=1    //拒绝响应ICMP 请求
$CTL -w net.ipv4.icmp_echo_ignore_broadcasts //拒绝响应ICMP 广播
$CTL -w net.ipv4.tcp_syncookies=1    //启用SYN Cookie 机制
$CTL -w net.ipv4.tcp_syn_retries=3    //最大SYN 请求重试次数
$CTL -w net.ipv4.tcp_synack_retries=3    //最大ACK 确认重试次数
$CTL -w net.ipv4.tcp_fin_timeout=60    //TCP 连接等待超时
$CTL -w net.ipv4.tcp_max_syn_backlog=3200    //SYN 请求的队列长度
  • 上述脚本内容中,ICMP 相关的参数调整可使本机忽略其他主机的 ping 测试,TCP 相关的内核参数调整可适当提高本机抵抗 DoS 攻击的能力。

设置具体的 iptables 规则
(1) 清理已有的规则。

  • 为了避免已有的防火墙规则造成干扰,通常会预先安排一个“清理”操作,删除所有表中用户自定义的链,清空所有链内的规则。
$IPT  -t filter –X    //删除各表中自定义的链
$IPT -t nat -X
$IPT -t mangle -X
$IPT -t raw -X
$IPT  -t filter –F    //清空各表中已有的规则
$IPT -t nat -F
$IPT -t mangle -F
$IPT -t raw -F

(2) 设置规则链的默认策略。

  • 在实际生产环境中,防火墙过滤规则建议采取“默认拒绝”的策略,可以获得更好的安全性。
  • 这就要求我们充分熟悉相关应用服务、网络协议,才能够识别合法数据包,制定出既防 护严格又行之有效的防火墙方案。
$IPT -P INPUT DROP
$IPT  -P  FORWARD DROP
$IPT  -P  OUTPUT ACCEPT    

(3) 设置 nat 表中的各种规则。

  • iptables 的 nat 表主要用在 Linux 网关服务器中,一般的主机型防火墙方案很少会用到nat 表。
  • 根据实际情况编写相应的 SNAT、DNAT 规则(如局域网共享上网、发布内部 Web 服务器),如果没有则跳过此部分。
$IPT -t nat -A POSTROUTING -s $LAN_NET -o $INET_IF -j SNAT --to-source $INET_IP
$IPT -t nat -A PREROUTING -i $INET_IF -d $INET_IP -p tcp --dport 80 -j  DNAT --to-dest  
ination $LAN_WWW_IP

(4) 设置 filter 表的各种规则。

  • iptables 的 filter 表主要用来过滤数据包,无论是 Linux 网关还是一般的 Linux 服务器都可能用到。
  • 主机型的防火墙主要使用 INPUT、OUTPUT 链,而对于网络型的防火墙主要使用 FORWARD 链。
$IPT -A FORWARD  -s  $LAN_NET -o  $INET_IF  -p  udp  --dport  53  -j ACCEPT
$IPT -A FORWARD -s $LAN_NET -o $INET_IF -p tcp --dport 80 -j ACCEPT
$IPT -A FORWARD -s $LAN_NET -o $INET_IF -p tcp --dport 20:21 -j ACCEPT
$IPT -A FORWARD -d $LAN_NET -i $INET_IF -m state --state ESTABLISHED, RELATED
-j ACCEPT
…… //省略部分内容
  • 需要说明的是,在实际应用过程中,不要过于生硬地照搬他人脚本内容,应根据实际情 况进行有针对性的设计,并做好整体测试,避免因规则不当而导致网络通信故障。
  • 脚本文件编写完成以后,为其添加“x”可执行权限,就可以用来批量设置防火墙规则了。 若要使脚本文件在每次开机后自动运行,可以将脚本路径写入/etc/rc.local 文件中。
[root@localhost  ~]#  chmod +x /opt/myipfw.sh    //添加执行权限
[root@localhost ~]# /opt/myipfw.sh    //执行脚本文件
[root@localhost  ~]#  iptables -nL FORWARD    //查看部分防火墙规则
Chain FORWARD (policy ACCEPT)
target    prot opt source    destination
ACCEPT    udp   --   192.168.1.0/24    0.0.0.0/0    udp dpt:53
ACCEPT    tcp   --   192.168.1.0/24    0.0.0.0/0    tcp dpt:80 
ACCEPT    tcp   --   192.168.1.0/24    0.0.0.0/0    tcp dpts:20:21 
ACCEPT    all    --   0.0.0.0/0   192.168.1.0/24    state RELATED,ESTABLISHED
[root@localhost  ~]# vi /etc/rc.local    //设置为开机自动执行
…… //省略部分内容
/opt/myipfw.sh

防火墙脚本示例

  • 熟悉了防火墙脚本的基本构成之后,下面将展示一个简单的防火墙脚本文件——“主机型”防火墙脚本,主要针对具体的规则设置部分,内容仅供参考。
  • 对于大多数的应用服务器,防火墙只需针对本机进行防护,因此 filter 表中的 INPUT、OUTPUT 链用得最多,特别是前者。例如,可将 OUTPUT 链的默认策略设为允许,不添加其他规则;将 INPUT 链的默认策略设为拒绝,只放行对个别服务(如 Web)的访问,以及响应本机访问请求的数据包。
[root@localhost ~]# vi /opt/myipfw.hostonly
#!/bin/bash
# 1. 定义基本变量IPT="/sbin/iptables" CTL="/sbin/sysctl" # 2. 调整/proc 参数
$CTL  -w net.ipv4.tcp_syncookies=1
$CTL  -w net.ipv4.tcp_syn_retries=3
$CTL -w net.ipv4.tcp_synack_retries=3
$CTL -w net.ipv4.tcp_fin_timeout=60
$CTL -w net.ipv4.tcp_max_syn_backlog=3200 # 3. 设置具体的防火墙规则
# 3.1 删除自定义链、清空已有规则
$IPT -t filter -X
$IPT -t nat -X
$IPT -t mangle -X
$IPT  -t  raw -X
$IPT  -t  filter -F
$IPT -t nat -F
$IPT -t mangle -F
$IPT -t raw -F
# 3.2 定义默认策略
$IPT -P INPUT DROP
$IPT  -P  FORWARD DROP
$IPT  -P  OUTPUT ACCEPT
# 3.3 设置 filter 表中的各种规则
$IPT -A INPUT -p tcp --dport 80 -j ACCEPT
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@localhost ~]# chmod +x /opt/myipfw.hostonly

五、总结

iptables防火墙是Linux系统下一款强大的网络数据包处理工具,它可以根据数据包的源地址、目标地址、端口号、协议类型等信息来决定是否允许数据包通过。通过合理设置iptables的规则和链,我们可以实现复杂的网络访问控制需求。同时,iptables还支持日志记录、端口转发等高级功能,可以满足更复杂的网络应用需求。希望本文能够帮助大家更好地理解和使用iptables防火墙。

相关文章:

iptables 防火墙(二)

iptables 防火墙&#xff08;二&#xff09; 一、SNAT 策略及应用SNAT 策略概述SNAT 策略的应用 二、DNAT 策略及应用DNAT 策略概述 三、规则的导出、导入规则的备份及还原iptables-save 命令iptables-restore 命令 使用 iptables 服务 四、使用防火墙脚本防火墙脚本的构成防火…...

【机器学习】在【PyCharm中的学习】:从【基础到进阶的全面指南】

目录 第一步&#xff1a;基础准备 1.1 Python基础 1.1.1 学习Python的基本语法 1.1.2 控制流 1.1.3 函数和模块 1.2 安装PyCharm 1.2.1 下载并安装 第二步&#xff1a;数据科学基础 2.1 安装必备库 2.1.1 使用pip安装 2.2 数据操作 2.2.1 Pandas基础操作 2.2.2 Nu…...

idea Error running ‘Application‘

1、Error running ‘Application’ Error running ApplicationError running Application. Command line is too long.Shorten the command line via JAR manifest or via a classpath file and rerun.找到 .idea/libraies/workspace.xml 中的 PropertiesComponent 属性&#…...

数据结构和顺序表

什么是数据结构 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 数据元素的三要素 数据结构包括三方面的内容&#xff1a;逻辑结构、存储结构、数据的运算。 逻辑结构 逻辑结构是指数据元素之间的逻辑关系&#xff0c;即从逻辑关系上描述数据。数据的逻辑结…...

【一步一步了解Java系列】:对这个系列的总结以及对缺漏内部类知识的补充

看到这句话的时候证明&#xff1a;此刻你我都在努力 加油陌生人 br />个人主页&#xff1a;Gu Gu Study专栏&#xff1a;一步一步了解Java 喜欢的一句话&#xff1a; 常常会回顾努力的自己&#xff0c;所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者&#xf…...

TCP和UDP

目录 TCPUDPTCP 传输控制协议(Transmission Control Protocol, TCP)是一种面向连接的,可靠的,基于字节流的传输层通信协议。在该层,另一个重要传输协议是用户数据包协议(UDP)。 数据在TCP层称为流Stream,数组分组称为分段Segment。相对的在IP层,数据称为Datagram, 数…...

【ai】tx2 nx:ubuntu18.04 yolov4-triton-tensorrt 成功部署server 运行

isarsoft / yolov4-triton-tensorrt运行发现插件未注册? 【ai】tx2 nx: jetson Triton Inference Server 部署YOLOv4 【ai】tx2 nx: jetson Triton Inference Server 运行YOLOv4 对main 进行了重新构建 【ai】tx2 nx :ubuntu查找NvInfer.h 路径及哪个包、查找符号【ai】tx2…...

类与对象的创建

1.类是一种抽象的数据类型&#xff0c;他是对某一类事务整体描述/定义&#xff0c;但是并不能代表某一个具体的事物 eg&#xff1a;动物&#xff0c;植物&#xff0c;手机&#xff0c;电脑... Person类&#xff0c;Pet类&#xff0c;Car类&#xff0c;这些类都是用来描述、定义…...

基于单片机的 LED 照明灯智能调光系统设计

摘  要&#xff1a; 社会经济的不断发展&#xff0c;推动了智能化生活的进程&#xff0c;智能调光技术开始广泛应用在生活中&#xff0c;人们也逐渐提高了灯光亮灯率等的要求。基于此&#xff0c;笔者主要设计了基于单片机的 LED 照明灯智能调光系统&#xff0c;希望能够为相关…...

客户满意度调查方法有哪些

用户满意度调查作为改进用户体验工作中重要的一项活动&#xff0c;可以帮助企业深入了解客户对产品服务各方面评价。有许多企业想开展客户满意度调查&#xff0c;但是在调查方式上不清楚该用那种方式&#xff1f;另外还要考虑预算&#xff0c;民安智库&#xff08;公众满意度调…...

为什么企业应用开发,c++干不过java?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「c的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; C/C这种东西&#xff0c;根本…...

基于盲信号处理的声音分离——最小化增益的ICA算法

基于最小化增益的ICA算法的算法是依据混合信号经过盲信号分离会产生一定的噪声&#xff0c;为了使得分离后的信号与原信号的比值最小时&#xff0c;叫做增益最小。当增益越小时&#xff0c;分离后噪声越小&#xff0c;分离信号越接近原信号&#xff0c;分离算法的效果越好。这是…...

自动化代码规范检查--Sonarqube部署

参考文档 官方文档安装数据库 官方给出几种数据库: # 我们选用postgres, 拉取镜像 docker pull postgres:16.0# 创建存储卷 docker volume create postgresql-data# 运行容器 docker run -d --name sonarqube-postgres \-p 5432:5432 \-e POSTGRES_DB=sonar_DB \-e POSTGRE…...

基于uni-app与图鸟UI的移动应用模板构建研究

摘要 随着移动互联网技术的迅猛发展&#xff0c;移动端应用已成为企业展示形象、提供服务的重要窗口。本文基于uni-app框架和图鸟UI设计&#xff0c;深入探讨了如何高效构建覆盖多个领域的移动端应用模板。通过对商城、办公、投票、生活服务等多种类型模板的详细介绍&#xff…...

AI智能在Type-C领域的应用

随着科技的飞速发展&#xff0c;Type-C接口凭借其卓越的性能和广泛的应用场景&#xff0c;已成为现代电子设备中不可或缺的一部分。而AI智能技术的兴起&#xff0c;为Type-C领域带来了革命性的变革&#xff0c;推动了其功能的进一步完善和应用领域的拓展。本文将探讨AI智能在Ty…...

INS-GPS组合导航——卡尔曼滤波

系列文章目录 《SAR笔记-卫星轨道建模》 《SAR笔记-卫星轨迹&#xff08;三维建模&#xff09;》 《常用坐标系》 文章目录 前言 一、经典卡尔曼滤波 二、扩展卡尔曼滤波 三、无迹卡尔曼滤波 总结 前言 SAR成像仪器搭载于运动平台&#xff0c;平台的自定位误差将影响SAR…...

day 58 739. 每日温度 496.下一个更大元素 I 503.下一个更大元素II

739. 每日温度 提示 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 示例…...

Dns被莫名篡改的问题定位(笔记)

引言&#xff1a;最近发现用户的多台机器上出现了Dns被莫名修改的问题&#xff0c;从系统事件上看并未能正常确定到是那个具体软件所为&#xff0c;现在的需求就是确定和定位哪个软件具体所为。 解决思路&#xff1a; 首先到IPv4设置页面对Dns进行设置&#xff1a;通过ProcExp…...

JVM原理(八):JVM虚拟机工具之基础故障工具

这里主要介绍监视虚拟机运行状态和进行故障处理的工具 1. jsp:虚拟机进程状况工具 jsp命令格式&#xff1a; jsp [options] [hostid] jps远程查询虚拟机进程状态 2. jstat:虚拟机统计信息监视工具 jstat命令格式&#xff1a; jstat [option vmid [interval [s|ms] [count]…...

Eureka的桥梁:服务消费者交互全解析

Eureka的桥梁&#xff1a;服务消费者交互全解析 在微服务架构中&#xff0c;服务发现是确保服务间有效通信的关键机制。Eureka&#xff0c;作为Netflix开源的服务发现框架&#xff0c;扮演着服务注册中心的角色&#xff0c;为服务消费者和服务提供者提供了一个动态的服务注册与…...

13_网络安全

目录 网络安全协议 网络安全协议 PGP协议 网络安全技术 防火墙技术 入侵检测系统 入侵防御系统 杀毒软件 蜜罐系统 计算机病毒与木马 网络安全协议 网络安全协议 物理层主要使用物理手段隔离、屏蔽物理设备等&#xff0c;其他层都是靠协议来保证传输的安全&#xff…...

C++ 中的数据类型

C规定在创建一个变量或者常量时&#xff0c;必须要指定出相应的数据类型&#xff0c;否则无法给变量分配内存. 1 整型 作用&#xff1a;整型变量表示的是整数类型的数据 C中能够表示整型的类型有以下几种方式&#xff0c;区别在于所占内存空间不同&#xff1a; 数据类型占用…...

CSS|04 复合选择器伪类选择器属性选择器美化超链接

基本选择器&#xff1a;见上篇基本选择器 复合选择器选择器1,选择器2{属性:值;} 多元素选择器&#xff0c;同时匹配选择器1和选择器2&#xff0c;多个选择器之间用逗号分隔举例&#xff1a; p,h1,h2{margin:0px;}E F{属性:值;} 后代元素选择器&#xff0c;匹配所有属于E元素后…...

探索Batch注释的奥秘:REM与::的细微差别

探索Batch注释的奥秘&#xff1a;REM与::的细微差别 在编写Batch文件时&#xff0c;注释是必不可少的部分&#xff0c;它们帮助我们理解代码的意图和逻辑。Batch脚本提供了两种添加注释的方法&#xff1a;REM命令和双冒号::。虽然它们功能相似&#xff0c;但在使用上存在一些细…...

C语言 求数列 S(n) = a + aa + aaa + …aa…a (n 个 a)的和

求数列S(n)aaaaaa…aa…a(n个a)之值&#xff0c;其中a是一个数字&#xff0c;n表示a的位数&#xff0c;n由键盘输入。例如222222222222222&#xff08;此时n5&#xff09; 这个程序读取用户输入的一个数字 a 和一个正整数 n&#xff0c;计算并输出数列 S(n) 的值。 #include …...

MysqlDump

介绍&#xff1a;mysqldump是一个常用的命令行工具&#xff0c;它用于备份或导出MySQL或MariaDB数据库中的数据。这个工具可以创建一个SQL文件&#xff0c;其中包含数据库的结构和数据&#xff0c;这样就可以在其他MySQL服务器上重新创建数据库或进行数据迁移。 基本语法&#…...

某安全公司DDoS攻击防御2024年6月报告

引言&#xff1a; 在2024年6月&#xff0c;网络空间的安全挑战汹涌澎湃。分布式拒绝服务&#xff08;DDoS&#xff09;攻击频发&#xff0c;针对云服务、金融科技及在线教育平台的精密打击凸显出当前网络威胁环境的严峻性。 某安全公司作为网络安全防护的中坚力量&#xff0c…...

Centos下rpm和yum执行卡住问题(已解决)

问题描述 执行rpm和yum卡住&#xff0c; 没有任何报错信息&#xff0c;且无法 ctrl c 终止&#xff0c;只能通过后台 kill -9 杀死。 问题排查&#xff1a; 查看yum日志&#xff1a;yum -vv 软件包 会发现卡在 loading keyring from rpmdb&#xff0c;即load DB存在问题。 …...

python自动化办公之PyPDF2.errors.DeprecationError

背景&#xff1a;pypdf2库在不断更新换代里面的类&#xff0c;逐渐淘汰一些旧的类 PyPDF2.errors.DeprecationError的意思是我们代码里用到的类计划被淘汰了&#xff0c;系统不推荐使用&#xff0c;解决办法&#xff1a;根据提示use xxx instead使用xxx 替换之前的类 例子1 P…...

[leetcode]first-unique-character-in-a-string 字符串中的第一个唯一字符

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int firstUniqChar(string s) {unordered_map<int, int> frequency;for (char ch: s) {frequency[ch];}for (int i 0; i < s.size(); i) {if (frequency[s[i]] 1) {return i;}}return -1;} };...

使用uniapp.pageScrollTo方法进行页面滚动

先看看是不是你想要的&#xff1a; 需求&#xff1a; 有个填写数据的单子在提交的时候&#xff0c;会对必填项做校验&#xff0c;如果必填项没有数据的话&#xff0c;必填项校验生效给出提示&#xff0c;并且页面滚动到第一个需要填写数据的地方。 开发&#xff1a; 因为这个…...

寒武纪实现高维向量的softmax进阶优化和库函数对比

关于寒武纪编程可以参考本人之前的文章添加链接描述,添加链接描述,添加链接描述 实验证明,axis=0和axis=-1的时候,手写softmax速度可以和库函数媲美,甚至于更甚一筹。 src/softmax.mlu #include <bang.h> #include...

我的世界服务器-高版本服务器-MC服务器-生存服务器-RPG服务器-幻世星辰

生存为主&#xff0c;RPG乐趣为辅&#xff0c;重视每位玩家的建议&#xff0c;一起打造心目中的服务器&#xff0c;与小伙伴一起探险我的世界&#xff01; 服务器版本: 1.18.2 ~ 1.20.4 Q群&#xff1a; 338238381 服务器官网: 星辰毛毛雨-Minecraft高版本生存服务器我的世界…...

倒装COB显示屏与传统SMD显示屏安装方式有哪些不同?

COB显示屏与传统SMD显示屏是商业显示领域中非常重要的两种载体&#xff0c;在前面的文章当中我们为大家阐述了倒装COB显示屏的技术特点&#xff0c;今天跟随COB显示屏厂家深圳市中品瑞科技一起来看看&#xff0c;COB显示屏的安装与传统LED显示屏的安装有哪些不同&#xff1f; 一…...

elasticsearch重置密码

0 案例背景 Elasticsearch三台集群环境&#xff0c;对外端口为6200&#xff0c;忘记elasticsearch密码&#xff0c;进行重置操作 注&#xff1a;若无特殊说明&#xff0c;三台服务器均需进行处理操作 1 停止es /rpa/bin/elasticsearch.sh stop 检查状态 ps -ef|grep elast…...

微信小程序写一个可以滚动虚拟列表(瀑布流),减少dom渲染的优化,解决内存问题。

为什么要写这个&#xff1f; 因为在写小程序的时候首页功能比较多&#xff0c;造成渲染的dom有很多&#xff0c;一直setdata跳转到其他页面或者一直滑动就会卡顿&#xff0c;白屏。官方文档上那个不适用于瀑布流。官方文档 理解 刚开始在写这个的时候&#xff0c;就在想微信…...

人工与智能系统之间的交互方式

人工与智能系统之间的交互方式 #mermaid-svg-xSsFZWak2bsyV0un {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-xSsFZWak2bsyV0un .error-icon{fill:#552222;}#mermaid-svg-xSsFZWak2bsyV0un .error-text{fill:#5522…...

【运维】如何在Ubuntu中设置一个内存守护进程来确保内存不会溢出

文章目录 前言增加守护进程1. 编写监控脚本2. 创建 systemd 服务文件3. 启动并启用服务4. 验证服务是否运行注意事项 如何修改守护进程1. 修改监控脚本2. 重新加载并重启服务3. 验证服务是否运行总结 如何设置一个日志文件来查看信息1. 修改监控脚本以记录日志方法一&#xff1…...

调用基类的纯虚函数,如何知道纯虚函数会调用哪个派生类(子类)中的实现。

在 C 中&#xff0c;调用基类的纯虚函数实际上是通过运行时多态性来决定调用哪一个派生类的实现。这种机制是通过虚函数表&#xff08;vtable&#xff09;和虚函数指针&#xff08;vptr&#xff09;实现的。下面我们来详细探讨一下这个过程。 虚函数表和虚函数指针 虚函数表&a…...

塑造卓越企业家IP:多维度视角下的策略解析

在构建和塑造企业家IP的过程中&#xff0c;我们需要从多个维度进行考量&#xff0c;以确保个人品牌能够全面、立体地展现企业家的独特魅力和价值。以下是从不同角度探讨如何做好一个企业家IP的策略。 一、从个人特质出发 深入了解自我&#xff1a;企业家需要清晰地认识到自己的…...

Rust 跨平台-Android 和鸿蒙 OS

1. 安装 rustup rustup 是 Rust 的安装和版本管理工具 $ curl --proto https --tlsv1.2 https://sh.rustup.rs -sSf | sh 该命令会安装 rusup 和最新的稳定版本的 Rust&#xff1b;包括&#xff1a; rustc Rust 编译器&#xff0c;用于将 Rust 代码编译成可执行文件或库。 ca…...

Typora导出为Word

文章目录 一、场景二、安装1、网址2、解压并验证 三、配置四、重启Typora 一、场景 在使用Typora软件编辑文档时&#xff0c;我们可能需要将其导出为Word格式文件 当然我们可以直接在菜单里进行导出操作 文件-> 导出-> Word(.docx) 如果是第一次导出word文件&#xff0…...

数据库被后台爆破如何解决?

在数字化时代&#xff0c;数据库安全成为企业与组织不容忽视的关键环节。其中&#xff0c;“后台爆破”攻击&#xff0c;即通过自动化工具尝试大量的用户名和密码组合&#xff0c;以非法获取数据库访问权限&#xff0c;是常见的安全威胁之一。本文将详细介绍如何识别、防御并解…...

php7.4源码安装dbase7.1.1扩展

安装PHP开发工具 首先&#xff0c;你需要安装PHP开发工具&#xff0c;包括php-devel&#xff08;或php7.4-devel&#xff0c;取决于你的PHP版本&#xff09;和其他编译工具。 bash sudo yum install php7.4-devel gcc make 注意&#xff1a;如果你使用的是不同的PHP版本&#…...

OkHttp的源码解读1

介绍 OkHttp 是 Square 公司开源的一款高效的 HTTP 客户端&#xff0c;用于与服务器进行 HTTP 请求和响应。它具有高效的连接池、透明的 GZIP 压缩和响应缓存等功能&#xff0c;是 Android 开发中广泛使用的网络库。 本文将详细解读 OkHttp 的源码&#xff0c;包括其主要组件…...

08:结构体

结构体 1、为什么需要结构体2、如何定义结构体3、怎么使用结构体变量3.1、赋值和初始化3.2、结构体变量的输出 1、为什么需要结构体 为了表示一些复杂的事物&#xff0c;而普通的基本类型无法满足实际要求。什么叫结构体 把一些基本类型数据组合在一起形成的一个新的数据类型&…...

喜讯!安全狗荣获“2023年网络安全技术支撑优秀单位”称号

6月6日&#xff0c;由中共厦门市委网络安全和信息化委员会办公室&#xff08;以下简称“厦门市委网信办”&#xff09;主办的2023年网络安全技术支撑优秀单位颁奖仪式在厦门成功举行。 作为国内云原生安全领导厂商&#xff0c;安全狗受邀出席此次活动。 会上&#xff0c;安全狗…...

android里面json操作

1.读取assets下面xzhd/aikit/pck.json String json = null; try { InputStream is = activity.getAssets().open(aikitPathInData+"xzhd/aikit/pck.json"); int size = is.available(); byte[] buffer = new byte…...

MATLAB的.m文件与Python的.py文件:比较与互参

simulink MATLAB的.m文件与Python的.py文件&#xff1a;比较与互参相似之处**1. 基本结构****2. 执行逻辑****3. 可读性和维护性** 差异性**1. 语法特性****2. 性能和应用****3. 开发环境** 互相学习的可能性结论 MATLAB的.m文件与Python的.py文件&#xff1a;比较与互参 在编…...

武汉星起航:自运营团队精准把握亚马逊红利,引领跨境电商新潮流

在全球化的浪潮下&#xff0c;跨境电商行业蓬勃发展&#xff0c;为众多企业带来了前所未有的机遇。武汉星起航电子商务有限公司便是其中的佼佼者&#xff0c;其自运营团队凭借对亚马逊平台的深入了解和丰富的运营经验&#xff0c;成功抓住了亚马逊的流量红利&#xff0c;为公司…...

iOS 视图实现渐变色背景

需求 目的是要实现视图的自定义的渐变背景色&#xff0c;实现一个能够随时使用的工具。 实现讨论 在 iOS 中&#xff0c;如果设置视图单一的背景色&#xff0c;是很简单的。可是&#xff0c;如果要设置渐变的背景色&#xff0c;该怎么实现呢&#xff1f;其实也没有很是麻烦&…...

Arthas实战(1)- 运行Arthas

1. 下载Arthas 下载到服务器&#xff1a; wget https://github.com/alibaba/arthas/releases/download/arthas-all-3.7.1/arthas-bin.zip解压 Arthas unzip arthas-bin.zip -d arthas删除压缩包 rm -f arthas-bin.zip 2. 启动Arthas 运行 Arthas java -jar arthas/arthas-bo…...

在AvaotaA1全志T527开发板上使用 UART 连接开发板

连接开发板 AvaotaA1提供两种连接串口输出方式&#xff0c;因为AvaotaA1需要DC 12V/2A/5.5-2.1电源适配器才可以启动系统&#xff0c;请先确保电源已接通。 方式一&#xff1a; 使用配套的 TyepC-SUB 转接板 40Gbps雷电线标准TypeC数据线&#xff0c;就可以同步实现 USB 串口…...

基于Vue的MOBA类游戏攻略分享平台

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Java技术、SpringBoot框架、B/S模式、Vue.js 工具&#xff1a;MyEclipse、MySQL 系统展示 首页 用…...

Java数组

声明数组变量 dataType[] arrRefVar; 或者 dataType arrRefVar[]; 创建数组变量 使用new字符创建数组 arrayRefVar new dataType[arraySize]; 也可以和声明放在一起 dataType[] arrayRefVar new dataType[arraySize]; 或者 dataType[] arrayRefVar {value0, value1, …, …...

初识Java(复习版)

一. 什么是Java Java是一种面向对象的编程语言&#xff0c;和C语言有所不同&#xff0c;C语言是一门面向过程的语言。偏底层实现&#xff0c;比较注重底层的逻辑实现。不能一味的说某一种语言特别好&#xff0c;每一种语言都是在特定的情况下有自己的优势。 二.Java语言发展史…...

tomcat学习--部署java项目

主流开发项目&#xff0c;springboot框架下&#xff0c;jar部署java传统的tomcat发布war包 一 什么是tomcat&#xff1f; 是一个用于运行java程序的软件&#xff0c;发布的时候&#xff1a;开发将源码使用maven打包&#xff0c;生产war包 二 安装tomcat tomcat是java写的&a…...

【技术】汉诺塔的递归问题解析及多语言实现

汉诺塔的递归问题解析及多语言实现 汉诺塔&#xff08;Hanoi Tower&#xff09;问题是一个非常经典的递归问题。它起源于一个古老的传说&#xff1a;有三个柱子和64个大小不一的金盘&#xff0c;开始时这些金盘按从小到大的顺序放在柱子A上&#xff0c;目标是在柱子B上按同样的…...

一文读懂 javascript 函数返回值

文章导读&#xff1a;AI 辅助学习前端&#xff0c;包含入门、进阶、高级部分前端系列内容&#xff0c;当前是 JavaScript 的部分&#xff0c;瑶琴会持续更新&#xff0c;适合零基础的朋友&#xff0c;已有前端工作经验的可以不看&#xff0c;也可以当作基础知识回顾。 这篇文章…...

搜维尔科技:Movella Xsens用于动画,CG,短视频制作案例

用户名称 广州百漫文化传播有限公司 应用场景 基于Xsens MVN Link 动作捕捉系统的动画制作、CG制作、短视频制作、快速动画MAYA插件、影视动漫实时合成预渲染。 现场照片 《西行纪》内容简介&#xff1a;在远古神明的年代&#xff0c;世间存在着天众、龙众、阿修罗等八部众…...

JavaScript与版本控制:编译时光机的双重奏——git仓库

JavaScript与版本控制&#xff1a;编译时光机的双重奏——git仓库 JavaScript&#xff1a;代码的魔法棒版本控制&#xff1a;时光机的钥匙案例一&#xff1a;初始化Git仓库与基本操作初始化仓库添加文件至暂存区提交更改分支管理 案例二&#xff1a;JavaScript项目中的Gitignor…...

【umi-max】初识 antd pro

修改端口号 根目录下的 .env 文件&#xff1a; PORT8888目录结构 (umijs.org) 新增页面 在 umirc.ts 中进行配置。 新增页面 - Ant Design Pro 这里有一个配置 icon:string&#xff0c;可以在菜单加 icon 图标&#xff0c;默认使用 antd 的 icon 名&#xff0c;默认不适用二…...