当前位置: 首页 > 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;为服务消费者和服务提供者提供了一个动态的服务注册与…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...