iptables教程

news2024/12/23 0:20:42

iptables

netfilter/iptables(简称iptables)是与2.4.x和2.6.x系列版本Linux内核集成的IP信息包过滤系统。

Iptables Tutorial

1、表和链

1.1、表

iptables会根据不同的数据包处理功能使用不同的规则表。它包括如下五个表:filternatmangle,raw,security

  • filter

    filter是默认的表(如果命令中没有使用-t 指定表,就会使用filter),包含真正的防火墙过滤规则。

​ 内建的规则链包括:INPUT(处理进入的数据包)、OUTPUT(处理本地生成的数据包)和FORWARD(处理转发的数据包)。

​ 在filter表中只允许对数据包进行DROP或ACCEPT操作,而无法对数据包进行更改。

  • nat

    nat表主要用于进行网络地址转换(Network Address Translation, NAT)。包含源地址、目的地址及端口转换使用的规则,当遇到创建新连接的数据包时,会查阅此表。

​ 内建的规则链包括PERROUTINGOUTPUTPOSTROUTING

PREROUTING链的作用是在包刚刚到达防火墙时改变它的目的地址(如果需要的话)。

OUTPUT链改变本地产生的包的目的地址。

POSTROUTING链在包就要离开防火墙之前改变其源地址,此表仅用于NAT,也就是转换包的源或目标地址。实际的操作分为以下几类:

​ (1)DNAT:主要用在这样一种情况,即假设你有一个合法的IP地址,要把对防火墙的访问重定向到其他的机器上(比如DMZ)。也就是说,我们改变的是目的地址,以使包能重路由到某台主机。

​ (2)SNAT:SNAT改变包的源地址,这在极大程度上可以隐藏本地网络或者DMZ等。一个很好的例子是我们知道防火墙的外部地址,但必须用这个地址替换本地网络地址。有了这个操作,防火墙就能自动地对包做SNAT和De-SNAT(就是反向的SNAT),以使LAN能连接到Internet。

  • mangle

    mangle表主要用来定义数据包的操作方式。我们可以改变不同的包及包头的内容,比如TTL、TOS或MARK。这些标志随后被filter表中的规则检查。

    内建的规则链包括:PREROUTINGINPUTFORWARDPOSTROUTINGOUTPUT

raw表设置raw一般是为了不再让iptables做数据包的连接跟踪处理提高新能。内建的规则链包括:PREROUTINGOUTPUT

security表用于强制访问控制 (MAC) 网络规则,例如由 SECMARKCONNSECMARK 目标启用的规则。 强制访问控制由 Linux Security Mod‐ 实现诸如SELinux之类的Ules。

1.2、链

链是数据包传播的路径,一条链就是规则的一个检查清单,每一条链中可以有一条或多条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,查看该数据包是否满足规则所定义的条件,决定是否按预定义的方法处理该数据包,如果包头不符合链中的规则,iptables就会根据该链的默认策略来处理数据包。

表对应的相关规则链的功能如下:

❑ INPUT链:当一个数据包由内核中的路由计算确定为本地的Linux系统后,它会通过INPUT链的检查。

❑ OUTPUT链:保留给系统自身生成的数据包。

❑ FORWARD链:经过Linux系统路由的数据包(即当iptables防火墙用于连接两个网络时,两个网络之间的数据包必须流经该防火墙)。

❑ PREROUTING链:用于修改目的地址(DNAT)。

❑ POSTROUTING链:用于修改源地址(SNAT)。

1.3、iptables五条链的相互关系。

在这里插入图片描述

1.4 iptables传输数据包的过程

数据包流经iptables防火墙的路径是经过严格定义的一个处理过程,下图描述了数据包流经iptables防火墙时的传输过程。

在这里插入图片描述

(1)流入本机的数据包穿过iptables防火墙的传输过程

官方文档位置

过程1:数据包从网络传入,并由网卡接收。

过程2:随后转入mangle表的PREROUTING链。

过程3:再转入nat表的PRETOUTING链,这个链主要用来做DNAT,即目的地址转发。

过程4:内核对数据包进行路由选择。

过程5:因为数据包是传入本机的,因此转入mangle表的INPUT链。

过程6:然后转入filter表的INPUT链。

过程7:最终到达接收数据包的应用程序。

(2)流出本机的数据包穿过iptables防火墙的传输过程

官方文档位置

过程1:应用程序生成数据包,根据源地址、目的地址、外出接口等信息进行路由判断。

过程2:随后转入mangle表的OUTPUT链。

过程3:再转入nat表的OUTPUT链,这个链可以用来做DNAT。

过程4:进入filter表的OUTPUT链,对该数据包进行选择性过滤。

过程5:然后进入mangle表的POSTROUTING链。

过程6:进入nat表的POSTROUTING链,该链可以做SNAT,即源地址转发,最终进入网络。

(3)流经本机转发的数据包的传输过程

官方文档位置

过程1:数据包从网络传入,并由网卡接收。

过程2:随后转入mangle表的PREROUTING链。

过程3:再转入nat表的PRETOUTING链,这个链主要用来做DNAT,即目的地址转发。

过程4:内核对数据包进行路由选择。该包的目的地址是另一台主机,所以转入mangle表的FORWARD链。

过程5:再转入filter表的FORWARD链,针对这类包的所有过滤操作都在该链进行。

过程6:过滤后转入mangle表的POSTROUTING链。

过程7:最后通过nat表的POSTROUTING链进行SNAT,最终进入网络。

(1)用户可以在各个链定义规则。当数据包到达上图的任意一个链时,iptables就会根据链中定义的规则来处理这个数据包。iptables将数据包的头信息与它所传递到链中的每条规则进行比较,看它是否与某条规则完全匹配。如果数据包与某条规则匹配,iptables就对该数据包执行由该规则指定的操作。如果某条链中的规则决定要丢弃(DROP)数据包,数据包就会在该链中丢弃;如果链中规则接收(ACCEPT)数据包,数据包就可以继续前进。但是,如果数据包和某条规则不匹配,那么它将与链中的下一条规则进行比较。如果该数据包不符合该链中的任意一条规则,那么iptables将根据该链预先定义的默认策略来决定如何处理该数据包。

(2)PREROUTINGPOSTROUTING链只对请求连接的数据包进行操作,对属于该连接的后续数据包,不予比对规则,只按已确定的规则自动进行操作。因此建议不要在此链上作过滤操作;否则将漏掉对后续数据包的过滤。

2、iptables命令格式

iptables命令的基本格式如下:<>括起来的为必设项,[]括起来的为可选项。iptables命令要求严格区分大小写。

iptables [-t table] <COMMAND>  [chains] [rule-matcher] [ -j target ]

各选项说明:

  • 表选项(table)

    netfilter的表操作是以-t或–table

    来指定的,未指定时默认为filter表。table选项的参数.

    在这里插入图片描述

  • 常用操作命令选项(COMMAND)

    在这里插入图片描述

  • 链选项(chains)

    在这里插入图片描述

    ➢filter表有INPUT、OUTPUT、FORWARD和自定义4种链形式。

    ➢nat表有OUTPUT、PREROUTING和POSTROUTING三种链形式。

    ➢mangle表有INPUT、OUTPUT、FORWARD、PREROUTING和POSTROUTING五种链形式。

  • 常用匹配规则选项(rule-matcher)

    匹配规则选项指定数据包与规则匹配所应具备的特征,包括源地址、目的地址、传输协议(如TCP、UDP、ICMP等)和端口号等。

    在这里插入图片描述

    “! ”为逻辑非;接口名后跟“+”表示所有以此接口名开头的接口都会被匹配。下图为匹配条件扩展。

    在这里插入图片描述

  • 目标动作选项(target)

    当规则匹配一个包时,要执行的目标动作以-j参数标识

    • filter表的目标动作

      在这里插入图片描述

    • nat表的目标动作

      在这里插入图片描述


      REDIRECT目标用于将分组和流重定向到计算机本身。这意味着,例如,我们可以将所有发送到HTTP端口的数据包重定向到我们自己主机上的HTTP代理,如squid。本地生成的数据包映射到127.0.0.1地址。换句话说,这将为转发的数据包或类似内容重写到我们自己的主机的目标地址。重定向目标非常适合在我们需要的时候使用,例如,透明代理,局域网主机根本不知道代理。

      DNAT参数--to-destination

      例如:iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

      –to-ports 选项指定要使用的目标端口或端口范围。如果没有 --to-ports 选项,则永远不会更改目标端口。上面的命令就是将tcp端口号为80的数据包重定向到8080端口。

    • mangle表的目标动作

      在这里插入图片描述

    • 扩展的目标动作

      在这里插入图片描述

      要使用扩展的目标动作,必须在内核中激活相应选项或装载相应内核模块。

3、 iptables的状态state

iptables防火墙的状态(state):

❑ NEW:如果你的主机向远程机器发出一个连接请求,这个数据包的状态是NEW。

❑ ESTABLISHED:在连接建立之后(完成TCP的三次握手后),远程主机和你的主机通信数据的状态为ESTABLISHED。

❑ RELATED:和现有联机相关的新联机封包。像FTP这样的服务,用21端口传送命令,而用20端口(port模式)或其他端口(PASV模式)传送数据。在已有的21端口上建立好连接后发送命令,用20或其他端口传送的数据(FTP-DATA),其状态是RELATED。

❑ INVALID:无效的数据包,不能被识别属于哪个连接或没有任何状态,通常这种状态的数据包会被丢弃。

如规则iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT表示接受ESTABLISHED,RELATED状态的数据包。

如规则 iptables -A INPUT -m state --state NEW -j DROP这个规则是将所有发送到你机器上的数据包(状态是NEW的包)丢弃,也就是不允许其他的机器主动发起对你的机器的连接,但是你却可以主动连接其他的机器。

4、 iptables的使用

  • 规则 iptables -P INPUT DROP会将进入主机的所有数据全部丢掉。如果你是通过远程shell执行这个命令,那么执行后shell将会断开。

比如我的主机当前的规则,所有的都是策略都是ACCEPT

在这里插入图片描述

当执行iptables -P INPUT DROP后,远程shell就会断开,这时通过主机内的shell再次查看当前的规则,就能看到INPUT变成了DROP

在这里插入图片描述

再次执行iptables -P INPUT ACCEPTipables恢复。

  • 规则 iptables -A INPUT -m state --state NEW -j DROP

    这个规则是将所有发送到你机器上的数据包(状态是NEW的包)丢弃,也就是不允许其他的机器主动发起对你的机器的连接,但是你却可以主动连接其他的机器,不过仅仅是连接而已,连接之后的数据是ESTABLISHED状态的。

    执行上面的规则后,在查看当前的规则,就能看到下面DROP的一条。

在这里插入图片描述

这时,如果你本地再新建一条远程shell去连接主机,就会发现无法连接。而之前已经连接的远程shell是可以正常使用的。

在这里插入图片描述

5、保存iptables规则

iptables-save > /opt/iptables_save 将当前的iptables配置保存到 /opt/iptables_save中

iptables-restore < /opt/iptables_save 从/opt/iptables_save中恢复iptables的配置

6、一些常用的命令

注意这里没有使用-t参数指定表名,默认显示的就是filter表,如果要显示其他的表,需要使用-t后加表名。如-t nat

  • 查看iptables规则

    iptables -L
    

    -L参数可以后跟--line-numbers 参数打印出行号。

    iptables -L --line-numbers 。后面命令中指定插入行号,替换行号等等都可以参照--line-numbers输出的行号

  • 将IP地址和端口号以数字格式显示列出所有链的规则。

    iptables -nL
    
  • 详细列出所有链的规则

    iptables -vL
    #不能使用 iptables -Lv
    
  • 列出INPUT链的规则

    iptables -L INPUT
    
  • 列出INPUT链的1号规则

    iptables -L INPUT 1
    
  • 显示所有链的规则

    iptables -S
    
  • 详细显示所有链的规则

    iptables -vS
    #不能使用iptables -Sv
    
  • 显示INPUT链的规则

    iptables -S INPUT
    
  • 显示INPUT链的1号规则

    iptables -S INPUT 1
    

    清除指定链和表中的所有规则

  • 清除所有链的规则(默认为filter表)

    iptables -F
    
  • 清楚INPUT链的所有规则

    iptables -F INPUT
    
  • 将所有链中的规则的包字节计数器清零。

    iptables -Z
    
  • 将INPUT链中的规则的包字节计数器清零

    iptables -Z INPUT
    
  • 在INPUT、OUTPUT和FORWARD链上设置默认规则策略为DROP(拒绝所有数据包)

    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    
  • 在INPUT链上添加规则,协议为tcp,目标端口号是21

    iptables -A INPUT -p tcp --dport 21
    

    这里没有指定动作,所以就按照INPUT的默认动作进行处理。

    执行完上面的命令再次查看,就会看到INPUT中多了一个对应的条目

    在这里插入图片描述

  • 在INPUT链上插入规则,协议为tcp,目标端口号是22

iptables -I INPUT 1 -p tcp --dport 23

​ 从下图也能看到多了一条dpt:telnet的条目,原来的dpt:ftp的行号已经变成了2

在这里插入图片描述

  • 在INPUT链上替换规则号1的iptables规则,将目标端口号更改为24

     iptables -R INPUT 1 -p tcp --dport 24
    

在这里插入图片描述

  • 删除规则

    首先找到规则对应的行号。使用-L --line-numbers参数。

    比如要删除上面INPUT中的tcp端口是24的规则。通过iptables -L --line-numbers看到对应行号是1。

    执行iptables -D INPUT 1就可以删除。

  • 创建用户自定义链

    iptables -N WWW   #创建用户自定义链WWW
    

    在这里插入图片描述

  • 指定协议

    iptables -A INPUT -p tcp -j ACCEPT
    iptables -A INPUT -p udp -j ACCEPT
    
  • 指定ICMP类型

    iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
    iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
    iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
    
  • 指定IP地址

    iptables -A INPUT -s 192.168.0.5   -j ACCEPT
    iptables -A INPUT -s 192.168.1.0/24   -j ACCEPT  #允许192.168.1.0这个子网的所有主机访问
    
  • 指定接口

    iptables -A INPUT -i eth0 -j ACCEPT
    iptables -A FORWARD -o eth0 -j ACCEPT
    iptables -A FORWARD -o ppp+ -j ACCEPT
    
  • 指定端口号

    iptables -A INPUT -p tcp --sport www -j ACCEPT
    iptables -A INPUT -p tcp --sport 80-j ACCEPT
    iptables -A INPUT -p tcp --dport 53-j ACCEPT
    iptables -A INPUT -p tcp --sport 22:80-j ACCEPT
    

7、NAT案例:

使用NAT功能,首先需要将文件“/proc/sys/net/ipv4/ip_forward”设置为1(默认是0),才能打开内核的路由功能。

具体命令如下:

echo "1">/proc/sys/net/ipv4/ip_forward

在这里插入图片描述

上面有A、B、C三个服务。它们都在同一局域网内。A服务器有公网 ip 10.x.x.x。B、C都没有公网ip。B、C两个服务器连接公网都需要通过A服务器进行转发。外部网路无法直接访问B、C服务器。A服务器也就是充当了路由器。

现在B服务器部署了一个nginx服务,想让公网上的用户访问需要怎么做呢。

  1. 外部公网服务器访问nginx服务器

因为公网只能访问到A服务器,所以我们可以在A服务器上进行DNAT处理,将访问A服务器80端口的请求全部转发到B服务器。由于DNAT只会修改目标ip,不会修改源ip。所以在B 服务器处理完请求,还会把响应继续发送到A服务器,A服务器这时会对B服务器返回的响应继续执行unDNAT操作,将响应返回对应的公网服务器。

具体的命令如下:

#这个命令需要在A服务器上执行,将访问自己公网ip:80的请求转发到B服务器80端口
iptables -t nat -A PREROUTING --dst 10.x.x.x  -p tcp --dport 80 -j DNAT --to-destination 192.168.1.102:80

在这里插入图片描述

如上图,我们在A服务器上面标注1的地方将目标ip修改成了B服务器的ip 192.168.1.102,在标注2的地方路由选择的时候,发现目的ip不是本机,就直接进行转发。

进行路线就是图上红色箭头标注的路线,可以看到数据包压根就不会流转到INPUT mangleOUTPUT filter这一段。

这样设置之后公网服务器是可以正常访问,没有任何问题。

  1. 局域网内部访问nginx服务器

C服务器通过请求10.x.x.x:80去访问的时候,发现无法访问。

具体的原因是由于B服务器处理完请求写回的时候发现ip是192.168.1.101,不需要经过A服务器就能直接访问。因此B直接将响应发送回C服务器。但是由于C服务器只是给A服务器10.x.x.x发送了请求,并没有给B服务器192.168.1.102发送请求,所以收到B服务器192.168.1.102的响应后,就直接丢弃了。

所以我们还需要B服务器处理完请求后,依旧能返回到A服务器,由A服务器将请求再转发回C服务器。当前B服务器将响应发送回C,没有发送回A的原因是发送给B的请求的源ip是C的ip。所以我只需要把B服务器收到的请求中的源ip修改成A服务器的ip,那B服务器处理完后,就会将响应发送回A服务器。A服务器收到响应后,就会继续向回转发。

具体命令如下:

# 在A服务器上执行,将发送给B服务器80端口的消息,将源ip修改成自己的ip地址
iptables -t nat -A POSTROUTING -p tcp --dst 192.168.68.102 --dport 80 -j SNAT --to-source 10.x.x.x

在这里插入图片描述

如上图,我们在标注3的地方修改了源ip地址,改成了A服务器的地址,这样B服务器处理完请求返回响应的时候回根据源ip地址,将请求发送到A服务器。A服务器收到请求后回原路返回。

  1. A服务器访问nginx服务器

    A服务器自己请求10.x.x.x:80去访问,还是无法访问。

    对照着图其实也是很好理解的,我们将请求转发到B服务器是在PREOUTING nat执行的,如果的本机的话,压根就不会流转到PREOUTING nat,也就是在PREOUTING nat进行的设置对本机发出的请求都是无效的。

    这时,我们就可以在OUTPUT nat这个阶段进行处理,将本机发出的请求目的ip地址是10.x.x.x:80的,将它的目的ip地址修改成B服务器的ip地址。这样本机也就可以正常访问了。

    具体命令如下:

    #还是在A服务器执行,将A服务器发出的请求目的ip修改成192.168.1.102
    iptables -t nat -A OUTPUT --dst 10.x.x.x -p tcp --dport 80 -j DNAT --to-destination 192.168.1.102:80
    

在这里插入图片描述

如上图,本机发出的请求,起点位置在应用程序这里,所以PREROUTING nat不会生效,OUTPUT natPOSTROUTING nat这两个地方的设置才会生效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/950693.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

写用例写的焦头烂额?看看摸鱼5年的老点工是怎么写的...

给你个需求&#xff0c;你要怎么转变成最终的用例&#xff1f; 直接把需求文档翻译一下就完事了。 老点工拿到需求后的标准操作&#xff1a; 第一步&#xff1a;解析需求 先解析需求-找出所有需求中的动词&#xff0c;再列出所有测试点。测试点过程不断发散&#xff0c;对于…

Revit SDK:SetParameterValueWithImageData 用图片像素值设置族实例参数值

前言 这个例子通过从图片中获取颜色&#xff0c;将颜色转换成数值&#xff0c;赋值给分割表面上对应族实例的对应参数。 内容 获取颜色的代码&#xff1a; Bitmap image new Bitmap(doc.PathName "_grayscale.bmp"); System.Drawing.Color pixelColor new Syst…

设计模式--迭代器模式(Iterator Pattern)

一、什么是迭代器模式 迭代器模式&#xff08;Iterator Pattern&#xff09;是一种行为型设计模式&#xff0c;用于提供一种统一的方式来访问一个聚合对象中的各个元素&#xff0c;而不需要暴露该聚合对象的内部结构。迭代器模式将遍历集合的责任从集合对象中分离出来&#xf…

MyBatisx代码生成

MyBatisx代码生成 1.创建数据库表 CREATE TABLE sys_good (good_id int(11) NOT NULL,good_name varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,good_desc varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,PRIMARY KEY (good_id) ) ENGINEInnoDB DEFAULT CHA…

[C/C++]函数的栈空间(避免栈空间溢出)

个人主页&#xff1a;北海 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏✨收录专栏&#xff1a;C/C&#x1f91d;希望作者的文章能对你有所帮助&#xff0c;有不足的地方请在评论区留言指正&#xff0c;大家一起学习交流&#xff01;&#x1f9…

C++八股记录

C内存管理 C中&#xff0c;内存分成5个区。 栈&#xff1a;函数内局部变量&#xff1b;自动管理&#xff0c;效率高&#xff0c;但空间较小&#xff1b; 堆&#xff1a;new分配的内存块&#xff1b;手动管理&#xff0c;效率低&#xff0c;但空间大&#xff1b; 自由存储区&…

ScottPlot图标控件的使用

效果图 控件获取方法 Nugget ScottPlot.WinForms 参考代码 Form1.Designer.cs namespace ScottplotDemo {partial class Form1{/// <summary>/// 必需的设计器变量。/// </summary>private System.ComponentModel.IContainer components null;/// <summary…

《动手学深度学习》-57长短期记忆网络LSTM

沐神版《动手学深度学习》学习笔记&#xff0c;记录学习过程&#xff0c;详细的内容请大家购买书籍查阅。 b站视频链接 开源教程链接 长短期记忆网络&#xff08;LSTM&#xff09; 长期以来&#xff0c;隐变量模型存在长期信息保存和短期输入缺失的问题。解决这一问题的最早…

bazel入门学习笔记

简介 Bazel Google开源的&#xff0c;是一款与 Make、Maven 和 Gradle 类似的开源构建和测试工具。 它使用人类可读的高级构建语言。Bazel 支持多种语言的项目&#xff0c;可为多个平台构建输出。Bazel支持任意大小的构建目标&#xff0c;并支持跨多个代码库和大量用户的大型代…

webpack loader和plugins的区别

在Webpack中&#xff0c;Loader和Plugin是两个不同的概念&#xff0c;用于不同的目的。 Loader是用于处理非JavaScript模块的文件的转换工具。它们将文件作为输入&#xff0c;并将其转换为Webpack可以处理的模块。例如&#xff0c;当您在Webpack配置中使用Babel Loader时&…

深入浅出AXI协议(3)——握手过程

一、前言 在之前的文章中我们快速地浏览了一下AXI4协议中的接口信号&#xff0c;对此我们建议先有一个简单的认知&#xff0c;接下来在使用到的时候我们还会对各种信号进行一个详细的讲解&#xff0c;在这篇文章中我们将讲述AXI协议的握手协议。 二、握手协议概述 在前面的文章…

文具寄到墨西哥可以走墨西哥专线吗?

文具寄到墨西哥可以选择墨西哥专线进行运输。墨西哥专线是一种专门为墨西哥进口货物提供的物流服务&#xff0c;其优势在于能够提供快速、高效和可靠的运输服务&#xff0c;以及专业的清关和包税服务。 1.墨西哥专线可以提供快速的运输服务。 一般而言&#xff0c;墨西哥专线的…

Mysql中九种索引失效场景分析

表数据&#xff1a; 索引情况&#xff1a; 其中a是主键&#xff0c;对应主键索引&#xff0c;bcd三个字段组成联合索引&#xff0c;e字段为一个索引 情况一&#xff1a;不符合最左匹配原则 去掉b1的条件后就不符合最左匹配原则了&#xff0c;导致索引失效 情况二&#xff…

从LeakCanary看内存快照解析

在从LeakCanary看内存快照生成一节中&#xff0c;我们已经了解了hprof的生成&#xff0c;并且将生成的hprof文件通过Android Studio进行解析&#xff0c;确实发现了内存泄漏对象MainActivity&#xff0c;但是在实际开发中&#xff0c;要求开发者自己去手动pull hprof文件进行解…

应急物资管理系统|智物资DW-S300提升应急响应能力

项目背景 智慧应急物资管理系统&#xff08;智装备DW-S300&#xff09;是一套成熟系统&#xff0c;依托互3D技术、云计算、大数据、RFID技术、数据库技术、AI、视频分析技术对RFID智能仓库进行统一管理、分析的信息化、智能化、规范化的系统。 本项目采用东识智慧应急物资管理…

ubuntu系统安装tensorRT-8.6.1版本(2023-8月最新版)

目录 前言pip安装可能出现的报错&#xff1a; tar.gz安装 前言 看了无数教程和b站视频&#xff0c;啊啊啊啊啊啊啊啊啊啊啊tensorRT要我狗命啊。我要写全网tensorRT最全的博客!!! 总体来说成功安装方式有两种&#xff0c;pip安装和tar.gz安装&#xff08;其实官网安装方式居多…

d3dx9_29.dll丢失如何修复?dll修复工具下载方法

大家好&#xff01;今天&#xff0c;我将为大家介绍一个与我们日常生活息息相关的话题——电脑d3dx9_29.dll丢失的6种修复方法。作为一名计算机专业的学生&#xff0c;我深知这个文件对我们电脑运行的重要性。在接下来的时间里&#xff0c;我将带领大家了解d3dx9_29.dll的作用、…

C#关于WebService中File.Exists()处理远程路径的异常记录

目录 前言方案一打开网站对应的程序池的高级设置按下图步骤设置凭据重启网站若方案一未能解决&#xff0c;请继续尝试方案二&#x1f447; 方案二从控制面板进入到 凭据管理器为windows凭据添加凭据点击**Windows凭据**&#xff0c;并点击**添加Windows凭据**键入远程路径的地址…

Java之API详解之Biginteger类的详解

6 BigInteger类 6.1 引入 平时在存储整数的时候&#xff0c;Java中默认是int类型&#xff0c;int类型有取值范围&#xff1a;-2147483648 ~ 2147483647。如果数字过大&#xff0c;我们可以使用long类型&#xff0c;但是如果long类型也表示不下怎么办呢&#xff1f; 就需要用…

DC-DC 升压电路、 升压模块原理

一、什么是 DC-DC 转换器&#xff1f; DC-DC 转换器是一种电力电子电路&#xff0c;可有效地将直流电从一个电压转换为另一个电压。 DC-DC 转换器在现代电子产品中扮演着不可或缺的角色。这是因为与线性稳压器相比&#xff0c;它们具有多项优势。尤其是线性稳压器会散发大量热量…