iptables的四表五链以及一些应用小场景

news2024/9/24 13:22:52

一、前言

        本文主要学习iptables的一些学习,讲解一些四表五链的基本概念,同时通过iptables实现一下场景,比如反向代理端口、禁用域名、限制IP和端口访问。

二、基本概念

2.1 什么是iptables

        iptables是Linux的防火墙管理工具而已,真正实现防火墙功能的是Netfilter,我们配置了iptables规则后Netfilter通过这些规则来进行防火墙过滤等操作

  Netfilter模块:

  它是主要的工作模块,位于内核中,在网络层的五个位置(也就是防火墙四表五链中的五链)注册了一些钩子函数,用来抓取数据包;把数据包的信息拿出来匹配各个各个链位置在对应表中的规则:匹配之后,进行相应的处理ACCEPT、DROP等等。

  下面这张图很明了的说明了Netfilter和iptables之间的关系

2.2 四表五链

2.2.1 五链

  • INPUT链——进来的数据包应用此规则链中的策略
  • OUTPUT链——外出的数据包应用此规则链中的策略
  • FORWARD链——转发数据包时应用此规则链中的策略
  • PREROUTING链——对数据包作路由选择前应用此链中的规则(所有的数据包进来的时侯都先由这个链处理)
  • POSTROUTING链——对数据包作路由选择后应用此链中的规则(所有的数据包出来的时侯都先由这个链处理)

2.2.2 数据流经过的链

  • 请求报文流入本地要经过的链

请求报文要进入本机的某个应用程序,首先会到达iptables防火墙的PREROUTING链,然后又跟PREROUTING链转发到INPUT链,最后转发到所在的应用程序上。

PREROUTING—>INPUT—>PROCESS

  • 请求报文从本机流出要经过的链

请求报文读取完应用程序要从本机流出,首先要经过iptables的OUTPUT链,然后转发到POSTOUTING链,最后从本机成功流出

PROCESS—>OUTPUT—>POSTROUTING

  • 请求报文经过本机向其他主机转发时要经过的链

请求报文经过本机向其他主机转发时,首先进入A主机的PREROUTING链,此时不会被转发到INPUT链,因为不是发给本机的请求报文,此时会通过FORWARD链进行转发,然后从A主机的POSTROUTING链流出,最后到达B主机的PREROUTING链

PREROUTING—>FORWARD—>POSTROUTING

2.2.3 四表

        iptables防火墙中表的概念:在一个链中会有很多的防火墙规则,我们将具有同一种类型的规则组成一个集合,这个集合就叫做表,表可以简单的列成是一些具有同样类型的规则的分组,例如关于IP地址转换的策略都放在一个表中、修改数据保报文的策略都放在一个表中。

  • filter:负责过滤数据包。
    • filter表可以管理INPUT、OUTPUT、FORWARD链。
  • nat:用于网络地址转换。
    • nat表可以管理PREROUTING、INPUT、OUTPUT、POSTROUTING链。
  • mangle:修改数据包中的内容,例如服务类型、TTL、QOS等等。
    • mangle表可以管理PREROUTING、INPUT、OUTPUT、POSTROUTING、FORWARD链。
  • raw:决定数据包是否被状态跟踪机制处理。
    • raw表可以管理PREROUTING、OUTPUT链。

2.2.4 表与链之间的关系

表名拥有的链名
filterINPUT、OUTPUT、FORWARD
natINPUT、OUTPUT、PREROUTING、POSTROUTING
managerINPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING

raw

OUTPUT、PREROUTING

2.2.5 iptables中表与链的优先级概念

在Iptables防火墙中,表与链之间是存在优先级的关系的,因为每张表的作用都是不同的,一张表会同时存放在多个链中,当一条数据报文进入一个链后,会按照表的优先级顺序依次匹配对应的规则。

Iptables防火墙表的优先级顺序:raw—>mangle—>nat—>filter。

当数据报文进入PREROUTING链时,首先规匹配raw表中的规则,然后在匹配mangle表中的规则,最后在匹配nat表的规则,按照优先级顺序依次匹配。

三、使用场景

3.1 语法格式和参数

iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]

-P 设置默认策略:iptables

-P INPUT (DROP|ACCEPT)

-F 清空规则链

-L 查看规则链

-A 在规则链的末尾加入新规则

-I num 在规则链的头部加入新规则

-D num 删除某一条规则

-s 匹配来源地址IP/MASK,加叹号"!"表示除这个IP外。

-d 匹配目标地址

-i 网卡名称 匹配从这块网卡流入的数据

-o 网卡名称 匹配从这块网卡流出的数据

-p 匹配协议,如tcp,udp,icmp

--dport num 匹配目标端口号

--sport num 匹配来源端口号

扩展模块:
-m 模块名 --state 状态

 

  1. -m 模块:

    • -m 后面跟随要使用的模块的名称,例如 -m state 表示使用连接状态模块。
    • 不同的模块提供不同的功能和选项,用于执行特定的任务,例如连接跟踪、端口匹配、时间匹配等。
  2. --state

    • --stateiptables 中连接状态模块的选项之一。
    • 用于指定数据包的连接状态条件。连接状态用于确定数据包是否与一个新连接、已建立连接、相关连接或无效连接相关联。
    • 可能的连接状态包括 NEWESTABLISHEDRELATEDINVALID,分别表示新连接、已建立连接、相关连接和无效连接。
    • 使用 --state 选项,您可以根据连接状态来创建防火墙规则,以允许或拒绝数据包。例如,您可以使用 --state NEW 允许新连接,--state ESTABLISHED 允许已建立连接通过等等。
  • NEW:表示数据包与尚未建立的新连接相关联。这通常用于允许传入的新连接建立。

  • ESTABLISHED:表示数据包与已经建立的连接相关联。这通常用于允许已建立的连接的数据包通过防火墙。

  • RELATED:表示数据包与已建立的连接相关联,但不是严格的 ESTABLISHED 连接。通常用于处理与已建立连接相关的辅助连接,如 FTP 数据通道或 ICMP错误消息。

  • INVALID:表示数据包无法识别为任何已知连接状态的一部分,通常是无效的数据包。

3.2 查看规则表以及查看表的详细规则

1、使用-t 指定表,不指定默认为filter表的规则

#查看nat表的规则
iptables -t nat -L

 

2、查看表的详细规则,并且使用 --line-number参数来显示编号(编号可用于删除规则)

iptables -t nat -nvL --line-numbers

 

3.3 增加、插入、删除规则

  • -A 在最后一条规则后新增规则
  • -I 默认将新规则插入到第一条
  • -F 不指定<链名>,默认清空整个表的规则
  • -D <链名> <规则编号> 删除指定编号的规则(使用--line-numbers可查看编号)

1、增加规则,比如尾部加入规则

iptables -t filter -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

又或者在nat表达POSTROUTING链的第2条规则后增加一条规则

iptables -t nat -I POSTROUTING 3 <new_rule>

2、删除规则

iptables -t 表名 -F 链名

其中,表名可以是filter、nat、mangle、raw等,链名可以是INPUT、OUTPUT、FORWARD等。

例如,要清空filter表中INPUT链的所有规则,可以使用以下命令:

iptables -t filter -F INPUT

 ps:注意这个操作是不可逆的,清空后所有的规则都将被删除。

删除INPUT链的规则标号6

iptables -t filter -D INPUT 6

3.4 iptables拒绝入方向流量

1、拒绝IP段访问本机端口段的请求

iptables -A INPUT -s 192.168.10.0/24 -p tcp --dport 40000:60000 -j DROP

Ps:--dport参数中,区间用 : 符号分隔

2、拒绝指定IP的所有请求

iptables -A INPUT -s 10.10.10.10 -j DROP

3、拒绝IP段的icmp流量

#拒绝IP段的所有icmp且type为8的流量
iptables -A INPUT -s 10.10.10.10/24 -p icmp --icmp-type 8 -j DROP

ps:修改-p 后面的值,可替换协议,目前支持 TCP、UDP、ICMP、ICMPv6、esp、ah、sctp、udplite、all协议

4、限制指定IP段访问

白名单:先允许,再拒绝。

例如只允许192.168.0.0/16的ip段访问本机,其他ip的请求都拒绝,命令如下:

iptables -I INPUT -s 192.168.0.0/16 -j ACCEPT
iptables -I INPUT -s 0.0.0.0/0 -j DROP

3.5 拒绝出方向流量

1、拒绝出方向的域名请求

一般 iptables 自带的都有 string 模块,这个模块的作用就是匹配字符串,匹配到泛域名的 URL,然后就把数据包丢弃,就实现了屏蔽泛域名的功能。

比如限制www.baidu.com,命令如下:

iptables -A OUTPUT -m string --string "baidu.com" --algo bm --to 65535 -j DROP

命令行解释:

-m string

# 指定模块;

--string "youtube.com"

# 指定要匹配的字符串(域名、关键词等);

--algo bm

# 指定匹配字符串模式/算法(还有一种更复杂的算法:kmp);

--to 65535

# 指定端口,这里代表所有端口(1-65535);

-j DROP

# 指匹配到数据包后处理方式,这里是丢弃数据包。

 

3.6 限制端口的并发数和请求频率

1、安装压测工具ab

yum install -y httpd-tools

命令如下,注意最后的斜杠 / 一定不能少。

ab -n 1000 -c 10 http://ip:port/
  • -n 总共请求1000次
  • -c 每次并发10个

2、限制端口的每分钟请求频率

iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --set --name HTTP --rsource

iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 100 --name HTTP --rsource -j DROP
  1. 第一条规则:

    • iptables -A INPUT:将规则附加到 INPUT 链,这是用于处理传入数据包的链。
    • -p tcp:指定规则适用于 TCP 数据包。
    • --dport 80:规则适用于目标端口为 80 的数据包(HTTP 端口)。
    • -m state --state NEW:规则仅适用于新连接。
    • -m recent --set --name HTTP --rsource:使用 recent 模块来设置一个名为 "HTTP" 的连接跟踪表,并将源地址加入 "HTTP" 表中。这个规则的作用是记录每个新连接的源地址。
  2. 第二条规则:

    • iptables -A INPUT:同样将规则附加到 INPUT 链。
    • -p tcp:依然指定规则适用于 TCP 数据包。
    • --dport 80:目标端口为 80 的数据包。
    • -m state --state NEW:仍然只适用于新连接。
    • -m recent --update --seconds 60 --hitcount 100 --name HTTP --rsource -j DROP:使用 recent 模块来检查 "HTTP" 表,如果源地址在最近 60 秒内建立了超过 100 个连接,则将数据包丢弃(-j DROP)。这个规则的作用是如果某个源地址在短时间内建立了过多的连接,就丢弃该连接以减轻服务器的负载。

这两个规则一起工作,首先记录每个新连接的源地址,然后检查 "HTTP" 表,如果某个源地址在短时间内建立了大量连接,就拒绝进一步的连接。这有助于保护服务器免受恶意流量的影响。请注意,您可以根据需要调整规则中的参数,例如 --seconds--hitcount,以满足您的特定需求。

这个规则将在每个IP地址的每个60秒内限制HTTP连接到80端口的数量为100个。如果超过了这个限制,连接将被拒绝。

3、限制端口并发数

(1)限制端口总并发数

iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j RJECT

ps:使用iptables的connlimit模块来实现限制80端口的并发量不超过10个,超过则拒绝连接。注意这里是对所有ip并发的总数进行限制的,不是对于单个ip的并发限制。

(2)限制单个IP端口并发数

iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT --reject-with tcp-reset

  • -A INPUT:将规则附加到 INPUT 链,这是用于处理传入数据包的链。

  • -p tcp:指定规则适用于 TCP 数据包。

  • --dport 80:规则适用于目标端口为 80 的数据包(通常是 HTTP 端口)。

  • -m connlimit:使用连接限制模块。

  • --connlimit-above 10:规则指定当连接数超过 10 个时,应用此规则。这表示一旦有超过 10 个并发连接尝试访问端口 80,将应用这个规则。

  • --connlimit-mask 32--connlimit-above 选项的掩码。32 表示匹配整个 IPv4 地址空间。这意味着限制的是每个源 IP 地址的连接数,而不是整个网络。

    如果需要限制所有的IP的并发连接数,可以使用--connlimit-mask 0


  • -j REJECT:如果连接数超过 10,拒绝连接。

  • --reject-with tcp-reset:拒绝连接时,发送 TCP RESET 包作为响应。

3.7 iptables的几种动作和分析

  • ACCEPT:将数据包放行。
  • REJECT:拒绝该数据包通行,阻拦数据包。
  • DROP:丢弃数据包,不给予任何处理。
  • REDIRECT:重定向

REJECT和DROP的区别:

REJECTDROP是iptables中的两种不同的动作。

REJECT会向源地址回送一条信息,告诉它被拒绝了,而DROP则是默默地将数据包丢弃。所以使用REJECT可以让源地址知道它的请求被拒绝了,而DROP则会使源地址一直等待直到超时。

分析:

  • DROP 的处理效率明显比 REJECT 低。DROP 会导致客户端不停的发送 SYN 包到服务器,最终客户端等待 tcp timeout才停止发送数据包,会占用更多带宽。
  • 从安全层面来考虑,DROP 不会向客户端返回任何数据包,无疑是最安全的。

3.8 端口转发

3.8.1  开启内核转发

要在 Linux 上开启端口转发,您需要启用内核的 IP 转发功能,并添加适当的防火墙规则(如果有防火墙)

echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf
sysctl -p

3.8.2 本地端口转发

本地端口转发,只涉及一台机器,比如外部访问本机的2222端口转发到本地的22端口

iptables -t nat -A PREROUTING -p tcp --dport 2222 -j REDIRECT --to-port 22

添加上面的规则后,外部可以访问,但是本地127.0.0.1无法访问。因为本地的请求不经过PREROUTING

3.8.3 多主机端口转发

A的IP是10.122.131.225,B的IP是10.122.131.34, A和B是内网的互通的,现在一个外部IP(10.121.1.116)为C, C想通过访问B的2222端口从而访问到A的22端口

iptables -t nat -A POSTROUTING -d 10.122.131.225 -p tcp --dport 22 -j SNAT --to-source 10.122.131.34

PS:该命令很重要!规则的作用是修改数据包的源地址,将目标地址为 10.122.131.225 且目标端口为 22(SSH端口)的 TCP 数据包的源地址改为 10.122.131.34

(1)单端口转发

iptables -t nat -A PREROUTING -s 10.121.1.116 -p tcp --dport 2222 -j DNAT --to-destination 10.122.131.225:22

规则的作用是修改数据包的目标地址和端口,将目标端口为 2222 的 TCP 数据包的目标地址改为 10.122.131.225,目标端口改为 22

ps:这两条都要在B机器上执行,因为它是外部访问的目标机器。

如果不想限制外部访问的来源是C,可以不指定-s选项。

iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 10.122.131.225:22

这样任意外部ip访问都可以请求转发了。

3.8.4 多端口转发

针对上面的命令,如果是多端口转发,可以分为多对一和多对多的情况。

PS:经测试,iptables不支持在一条命令中实现不同主机的多端口的不同映射。比如同时将B的80转发到A的8080,将B的443转发到A的4443。

(1)多对一端口转发

例如将B的50000到60000的端口全部转发到A的443端口,命令如下

iptables -t nat -A PREROUTING -p tcp -m multiport --dport 50000:60000 -j DNAT --to-destination 10.122.131.225:443

ps:”–dports” 参数指定端口范围,使用冒号 “:” 表示起始端口和结束端口之间的范围。

(2)多对多端口转发

例如将B的50000到60000的端口全部转发到A的50000到60000的端口,命令如下:

iptables -t nat -A PREROUTING -p tcp -m multiport --dport 50000:60000 -j DNAT --to-destination 10.122.131.225:50000-60000

ps:设置范围的时候两者端口数量必须一致,保持一一对应 的关系,比如iptables -t nat -A PREROUTING -p tcp -m multiport --dport 80,443,8080 -j DNAT --to-destination 10.122.131.225:80,443,8080  如此设置是不行 的 

当然多个端口也可以是不连续的,比如80、443、8080同端口转发,端口用逗号”,”隔开,–to-destination后面的ip不用再指定端口。

iptables -t nat -A PREROUTING -p tcp -m multiport --dport 80,443,8080 -j DNAT --to-destination 10.122.131.225

ps:–to-destination 参数后,使用”-“表示起始端口和结束端口之间的范围。

3.8.5 MASQUERADE的作用

MASQUERADE作用是,从服务器的网卡上,自动获取当前ip地址来做NAT,就不用手动指定转换的目的IP了,实现了动态的SNAT

iptables -t nat -A POSTROUTING -d 10.122.131.225 -p tcp --dport 22 -j SNAT --to-source 10.122.131.34

这条命令用MASQUERADE可以换成下面的写法:

iptables -t nat -A POSTROUTING -d 10.122.131.225-p tcp --dport 22 -j MASQUERADE

3.9 一些该在哪条链哪个表设置规则的问题

3.9.1 来自外部的地址,访问本机的web服务请求都不允许,应该在哪个表哪个链设置规则

        外部访问本机web服务,属于数据流入的操作,首先外部地址访问本地服务会经过 PREROUTIGN和INPUT链,虽然设置规则要近来源地址,但是PREROUTING链没有过滤的表,故而要在第二条链INPUT链做配置。

3.9.2 所有本机发往 10.0.0.0/24tcp流量都不允许

        此流量属于数据流出的操作,会经过PREROUTING链和OUTPUT链,拒绝tcp流量,一般在filter表实现,而PREROUTING不包含filter表,故规则配置在OUTPUT链

3.9.3 所有来自 本地内部网络的主机 向 互联网 发送web服务请求都允许通过

        来自本地内部网络的主机流量,属于属于数据转发请求,会经过 PREROUTING、FORWARD和POSTROUTING链,允许拒绝操作一般在filter表中实现,这里找距离目标端最近的链添加规则,也就是 FORWARD链进行配置

参考来源:iptables命令常用规则汇总 – Zgao's blog

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

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

相关文章

昂利康-002940 三季报分析(20231030)

昂利康-002940 基本面分析 基本情况 公司名称&#xff1a;浙江昂利康制药股份有限公司 A股简称&#xff1a;昂利康 成立日期&#xff1a;2001-12-30 上市日期&#xff1a;2018-10-23 所属行业&#xff1a;医药制造业 周期性&#xff1a;0 主营业务&#xff1a;化学原料药及制剂…

hack_me_please靶机攻略

hack_me_please 扫描 探查无果&#xff0c;扫描js的时候有结果 访问可以看到 该页面可以看到是SeedDMS搭的 应该和CMS类似 渗透 漏洞库查找一下有没有该漏洞 使用whatweb扫描一下刚才的页面 whatweb http://10.4.7.154/seeddms51x/seeddms-5.1.22/ 这个版本高于漏洞库的&a…

软考系统架构师知识点集锦八:嵌入式系统

一、考情分析 二、考点精讲 2.1嵌入式系统概述 2.1.1基本概念 (1)嵌入式系统是以应用为中心、以计算机技术为基础,并将可配置与可裁剪的软、硬件集成于一体的专用计算机系统&#xff0c;需要满足应用对功能、可靠性、成本、体积和功耗等方面的严格要求。 (2)从计算机角度看,嵌…

0039Java程序设计-基于java校园闲置物交易系统论文

文章目录 摘 要目 录系统设计开发环境 摘 要 本文的研究方向是设计和实现学生闲置物网上交易平台。目前&#xff0c;各大高校每年都要举办热热闹闹的“跳蚤”市场&#xff0c;就是给师生的一个闲置物品交易的场所&#xff0c;由此可以看出&#xff0c;大学生对闲置物品交易掉的…

数据结构:算法(特性,时间复杂度,空间复杂度)

目录 1.算法的概念2.算法的特性1.有穷性2.确定性3.可行性4.输入5.输出 3.好算法的特质1.正确性2.可读性3.健壮性4.高效率与低存储需求 4.算法的时间复杂度1.事后统计的问题2.复杂度表示的计算1.加法规则2.乘法规则3.常见函数数量级比较 5.算法的空间复杂度1.程序的内存需求2.例…

CAN总线通信协议

Reference video: 趋近于完美的通讯 CAN总线&#xff01;4分钟看懂&#xff01; CAN通信精华整理&#xff0c;汽车工程师必备技能&#xff0c;一个视频带你轻松掌握&#xff01; 写在前面&#xff1a;CAN通信就三个要点 - 波特率的配置 - 过滤寄存器的配置与理解&#xff08;…

Django 社区志愿者管理系统

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 社区志愿者服务管理系统&#xff0c;主要的模块包括查看首页、个人中心、通知公告管理、志愿者管理、普通管理员管理、志愿活动管理、活动宣…

计算机毕业设计选题推荐-超市售货微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

【C语言初学者周冲刺计划】1.1用筛选法求100之内的素数

目录 1解题思路&#xff1a; 2代码如下&#xff1a; 3运行代码如图所示&#xff1a; 4总结&#xff1a; (前言周冲刺计划:周一一个习题实操&#xff0c;依次类推加一&#xff0c;望各位读者可以独自实践敲代码) 1解题思路&#xff1a; 首先了解筛选法定义&#xff1a;先把…

免费的PPT模版--九五小庞

PPT模板&#xff1a; www.1ppt.com/moban/    行业PPT模板&#xff1a;www.1ppt.com/hangye/ 节日PPT模板&#xff1a;www.1ppt.com/jieri/    PPT素材&#xff1a; www.1ppt.com/sucai/PPT背景图片&#xff1a;www.1ppt.com/beijing/   PPT图表&#xff…

AssertionError: Torch not compiled with CUDA enabled

Pytorch和CUDA版本不兼容&#xff0c;运行python后&#xff08;终端输入python回车&#xff09;用以下代码测试 import torch print(torch.__version__) print(torch.cuda.is_available())返回False则说明目前的pytorch版本无法使用显卡&#xff0c;如下图所示 接着重装合适版…

新能源汽车电池包自动三维尺寸检测系统蓝光光学平面度测量仪-CASAIM

电池包是新能源汽车核心能量源&#xff0c;为整车提供驱动电能。作为新能源汽车的核心部件&#xff0c;其品质直接决定了整车性能。 由于电池包的生产工艺相对复杂&#xff0c;传统的测量工具不仅测量工序复杂、精度不足&#xff0c;还会或多或少接触到电池表面形成瑕疵&#…

[UDS] --- ECUReset 0x11

1 0x11功能描述 根据ISO14119-1标准中所述&#xff0c;诊断服务11主要用于Client向Server(ECU)请求重启行为。该重启行为将会导致Server复位回归到特定的初始状态&#xff0c;具体是什么初始状态取决于Client的请求行为。 2 0x11应用场景 一般而言&#xff0c;对于11诊断服务…

案例分析真题-系统建模

案例分析真题-系统建模 2009年真题 【问题1】 【问题2】 【问题3】 2012年真题 【问题1】 【问题2】 【问题3】 2014年真题 【问题1】 【问题2】 骚戴理解&#xff1a;这个题目以前经常考&#xff0c;不知道今年会不会考&#xff0c;判断的话就是看加工有没有缺少输入和输出&a…

Linux进程的概念

一&#xff1a;冯诺依曼体系结构 什么叫做体系结构&#xff1f;&#xff1f;&#xff1f; 计算机组成 / 芯片架构 输入单元&#xff1a;键盘、话筒、摄像头、usb、鼠标、磁盘&#xff08;ROM&#xff09;/ssd、网卡、显卡 存储器&#xff1a;内存&#xff08;RAM&#xff09…

apache seatunnel支持hive jdbc

上传hive jdbc包HiveJDBC42.jar到seatunel lib安装目录 原因是cloudera 实现了add batch方法 创建seatunnel任务文件mysql2hivejdbc.conf env {execution.parallelism = 2job.mode = "BATCH"checkpoint.interval = 10000 } source {Jdbc {url = "jdbc:mysql:/…

Kafka设计原理详解

Kafka核心总控制器Controller 在Kafka集群中会有一个或者多个broker&#xff0c;其中有一个broker会被选举为控制器&#xff08;Kafka Controller&#xff09;&#xff0c;它负责管理整个集群中所有分区和副本的状态。 当某个分区的leader副本出现故障时&#xff0c;由控制器…

UEditor编辑器导入自定义html模板,jeesite框架报json.parse()错误

文章目录 前言一、错误描述1. 选择模板错误2. 填入模板数据错误二、解决方案1. 选择模板错误解决2.填入数据错误解决总结前言 实现效果如下图: 添加模板 选择模板 填入模板及对应数据 一、错误描述 1. 选择模板错误

Java修仙传之Flink篇

大道三千:最近我修Flink 目前个人理解&#xff1a; 处理有界&#xff0c;无界流的工具 FLINK&#xff1a; FLINK定义&#xff1a; Flink特点 Flink分层API 流的定义 有界数据流&#xff08;批处理&#xff09;&#xff1a; 有界流&#xff1a;数据结束了&#xff0c;程序也…

【图像分割】【深度学习】Windows10下PFNet官方代码Pytorch实现与源码讲解

【图像分割】【深度学习】Windows10下PFNet官方代码Pytorch实现与源码讲解 提示:最近开始在【图像分割】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。 文章目录 【图像分割】【深度学习】Windows10下PFNet官方代码Pytorch实现与源码讲解前言PFNet模型运行…