




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
nftables配置一、概述nftables包过滤框架历史小解:/dog250/article/details/41526421nftables配置详解:/wiki-nftables/index.php/Main_Page此文档的内容是根据上面的nftables配置详解的链接进行翻译整理的,有些地方可能有错误,对于有问题的地方,可以去上面的英文网站查询,同时对于一些不需要了解的内容,在文中只给出了链接。nftables配置分为表、链、规则三个层次,示例如下:table ip filter/表 chain input/链 type filter hook input priority 0;/规则 chain output/链 type filter hook output priority 0; /规则 ip daddr counter packets 0 bytes 0;/规则 二、基本操作2.1、配置表2.1.1、删除表使用命令:% nft delete table ip foo功能说明:删除整个表其他备注:上述命令适用于内核版本3.18及其之后的版本,但是,在此之前的版本,你需要先删除它的内容,否则你讲遇到类似下面这样的错误提示:% nft delete table filter:1:1-19: Error: Could not delete table: Device or resource busydelete table filter2.1.2、flush表使用命令:% nft flush table ip filter功能说明:删除属于ip filter表的所有规则其他备注:这将删除你注册在这个表中每条链所有的规则2.2、配置链在iptables中,你附加你的链。然而,与iptables模式操作相反,nftables基础结构没有预定义链,因此您需要首先注册您的基础链,然后才能添加任何规则。这允许非常灵活的配置。2.2.1、添加基础链添加基础链的语法如下:% nft add chain type hook priority ; 基础链是注册到Netfilter钩子中的那些,即。这些链看到通过您的Linux TCP / IP堆栈的数据包。以下示例显示如何通过以下命令向foo表添加新基础链:% nft add chain ip foo input type filter hook input priority 0 ; 重要:如果从bash运行此命令,则必须转义分号。此命令注册输入链,它附加到输入钩子,因此它将看到寻址到本地进程的数据包。优先级很重要,因为它决定了链的顺序,因此,如果你在输入钩子有几个链,你可以决定哪一个在另一个之前看到的数据包。如果你想使用nftables来过滤桌面Linux计算机的流量,即。一台不转发流量的计算机,也可以注册输出链:% nft add chain ip foo output type filter hook output priority 0 ; 现在,您可以筛选传入(定向到本地进程)和传出(由本地进程生成)流量。重要说明:如果不包括大括号中指定的规则配置,则创建的非基本规则将不会看到任何数据包(类似于iptables -N chain-name)。对于nftables 0.5,您还可以像iptables中一样指定基本规则的默认策略:% nft add chain ip foo output type filter hook output priority 0 ; policy accept; 在iptables中,两个可能的默认策略是接受(accept)和删除(drop)。在入口钩上添加规则时,必须指定规则将要连接的设备:% nft add chain netdev foo dev0 filter type filter hook ingress device eth0 priority 0 ; 2.2.2、基本链类型可能的规则类型是:filter:这显然是用来过滤数据包。 这是由arp,bridge,ip,ip6和inet表系列支持的。route:如果任何相关的IP报头字段或数据包标记被修改,用于重新路由数据包。 如果你熟悉iptables,这个链类型为mangle表提供了等价的语义,但只为输出钩子(对于其他钩子使用类型过滤器)。 这由ip和ip6表系列支持。nat:用于执行网络地址转换(NAT)。 属于流的第一个分组总是命中此链,不跟踪分组。 因此,切勿使用此链进行过滤。 这由ip和ip6表系列支持。配置规则时可以使用的可能钩子有:prerouting:这些数据包的路由决定还没有发生,因此您不知道它们是否寻址到本地或远程系统。input:它发生在路由决策之后,您可以看到定向到本地系统和在系统中运行的进程的数据包。forward:它也发生在路由决策之后,可以看到没有定向到本地机器的数据包。output:以捕获源自本地机器中的进程的分组。postrouting:在离开本地系统的数据包的路由决定以后。ingress:(仅在netdev系列上可用):从Linux内核4.2开始,在数据包从NIC驱动程序传递之后,您可以在预先路由之前过滤流量。所以你有一个tc的替代。优先级可用于对链进行排序或在某些Netfilter内部操作之前或之后进行排序。 例如,具有优先级-300的预路由挂钩上的链将在连接跟踪操作之前放置。作为参考,这里是iptables中使用的不同优先级的列表:NF_IP_PRI_CONNTRACK_DEFRAG (-400):碎片整理的优先级NF_IP_PRI_RAW (-300):传统优先级的原始表放置在连接跟踪操作之前NF_IP_PRI_SELINUX_FIRST (-225): SELinux操作NF_IP_PRI_CONNTRACK (-200): 连接跟踪操作NF_IP_PRI_MANGLE (-150): 轧制操作NF_IP_PRI_NAT_DST (-100): 目的NATNF_IP_PRI_FILTER (0): 过滤操作,过滤表NF_IP_PRI_SECURITY (50): 可以设置SECmark的安全表的位置NF_IP_PRI_NAT_SRC (100): 源 NATNF_IP_PRI_SELINUX_LAST (225): SELinux在数据包出口NF_IP_PRI_CONNTRACK_HELPER (300): 出口处的连接跟踪2.2.3、添加非基础链您还可以通过以下方式在iptables中创建非基本规则:% nft add chain ip foo test请注意,此链不会看到任何流量,因为它不附加到任何挂钩,但通过使用跳转到链的操作来安排您的规则集到链的树中可能非常有用。2.2.4、删除链您可以删除不需要的链,例如。% nft delete chain ip foo input唯一的条件是你想要删除的链需要是空的,否则内核会告诉你这个链是在使用。% nft delete chain ip foo input:1:1-28: Error: Could not delete chain: Device or resource busydelete chain ip foo input您必须先清除该链中的规则集,然后才能删除链。2.2.5、清除链您还可以清除链的内容。 如果要清除foo表input链中的所有规则,则必须键入:nft flush chain foo input2.2.6、示例示例配置:过滤流量的独立计算机您可以创建具有两个基本链的表,以定义规则,从而过滤来自和离开您计算机的流量,假定IPv4连接:% nft add table ip filter% nft add chain ip filter input type filter hook input priority 0 ; % nft add chain ip filter output type filter hook output priority 0 ; 现在,您可以开始将规则附加到这两个基础链上。 请注意,在这种情况下,您不需要正向链,因为本示例假设您正在配置nftable来过滤不作为路由器的独立计算机的流量。2.3、简单的规则管理2.3.1、追加新规则要添加新规则,必须指定要使用的相应表和链,例如。% nft add rule filter output ip daddr counter其中filter是表,output是链。上面的示例添加了一个规则来匹配由目标为的输出链所看到的所有数据包,以便在匹配时更新规则计数器。 注意,计数器在nftables中是可选的。对于那些熟悉iptables的用户,规则追加相当于iptables中的-A命令。2.3.2、查看规则您可以使用以下命令列出表中包含的规则:% nft list table filtertable ip filter chain input type filter hook input priority 0; chain output type filter hook output priority 0; ip daddr counter packets 0 bytes 0 假设我们还添加了一个使用端口的规则:% nft add rule filter output tcp dport ssh counter您可以使用-n选项禁用主机名解析:% nft list -n table filtertable ip filter chain input type filter hook input priority 0; chain output type filter hook output priority 0; ip daddr counter packets 0 bytes 0 tcp dport ssh counter packets 0 bytes 0 您还可以通过-nn禁用服务名称解析:% nft list -nn table filtertable ip filter chain input type filter hook input priority 0; chain output type filter hook output priority 0; ip daddr counter packets 0 bytes 0 tcp dport 22 counter packets 0 bytes 0 2.3.3、测试你的规则让我们用一个简单的ping到测试这个规则:% ping -c 1 PING () 56(84) bytes of data.64 bytes from : icmp_req=1 ttl=64 time=1.31 ms然后,如果我们列出规则集,我们获得:% nft -nn list table filtertable ip filter chain input type filter hook input priority 0; chain output type filter hook output priority 0; ip daddr counter packets 1 bytes 84 tcp dport 22 counter packets 0 bytes 0 请注意,计数器已更新。2.3.4、在给定位置添加规则如果要在给定位置添加规则,则必须使用句柄作为参考:% nft list table filter -n -atable filter chain output type filter hook output priority 0; ip protocol tcp counter packets 82 bytes 9680 # handle 8 ip saddr ip daddr drop # handle 7 如果要在处理程序编号为8的规则之后添加规则,则必须键入:% nft add rule filter output position 8 ip daddr drop现在,您可以通过列出规则集来检查该命令的效果:% nft list table filter -n -atable filter chain output type filter hook output priority 0; ip protocol tcp counter packets 190 bytes 21908 # handle 8 ip daddr drop # handle 10 ip saddr ip daddr drop # handle 7 如果要在具有处理程序编号8的规则之前插入规则,则必须键入:% nft insert rule filter output position 8 ip daddr drop2.3.5、删除规则您必须通过-a选项获取删除规则的句柄。 句柄由内核自动分配,它唯一地标识规则。% nft list table filter -atable ip filter chain input type filter hook input priority 0; chain output type filter hook output priority 0; ip daddr counter packets 1 bytes 84 # handle 5 可以使用以下命令删除句柄为5的规则:% nft delete rule filter output handle 5注意:有计划通过传递以支持删除规则:% nft delete rule filter output ip saddr counter但这还没有实现。 因此,您必须使用句柄来删除规则,直到实现该特性。2.3.6、删除一条链中的所有规则您可以使用以下命令删除链中的所有规则:% nft delete rule filter output您还可以使用以下命令删除表中的所有规则:% nft flush table filter2.3.7、在最前面添加新规则要通过insert命令预先添加新规则:% nft insert rule filter output ip daddr counter这预先附加了一个规则,该规则将针对寻址到的流量更新每个规则包和字节计数器。在iptables中的等价是:% iptables -I OUTPUT -t filter -d 请注意,iptables总是提供每个规则的计数器。2.3.8、替换规则您可以通过指定规则句柄通过replace命令替换任何规则。 因此,首先必须列出带有选项-a的规则集,以获取规则句柄。# nft list ruleset -atable ip filter chain input type filter hook input priority 0; policy accept; ip protocol tcp counter packets 0 bytes 0 # handle 2 然后,假设您想要使用句柄号2替换规则,则必须指定此句柄号和要放置的新规则,而不是它:nft replace rule filter input handle 2 counter然后,当列出规则集时:# nft list ruleset -atable ip filter chain input counter packets 0 bytes 0 您可以有效地注意到,该规则已被替代为计数任何数据包的简单规则,而不是如前面的规则那样计数TCP数据包。2.4、原子规则替换您可以使用-f选项自动更新规则集:% nft -f file其中file包含您的规则集您可以通过将现有列表存储在文件中来保存规则集,即。% nft list table filter filter-table然后,您可以使用-f选项恢复它:% nft -f filter-table如果您在过滤器表文件的最开始处预置flush表过滤器行,您将实现原子规则集替换,等同于iptables-restore提供的内容。注意,内核在一个事务中处理文件中的规则命令,因此基本上新规则的刷新和加载发生在一个单独的事务中。有些人喜欢用规则集来维护一个shell脚本文件。注意这种方法,你不能使用shell脚本文件来实现原子规则集更新。 因此,最好的方法是使用本机nftables脚本功能,并通过nft -f恢复规则集。2.5、从命令行报告错误当您使用错误的数据类型时,nft命令行实用程序会尝试帮助您。以下示例显示如果将IPv4地址作为TCP端口传递,则错误输出。% nft add rule filter input tcp dport counter drop:1:33-39: Error: Could not resolve service: Servname not supported for ai_socktypeadd rule filter input tcp dport counter drop如果命令不完整,典型输出如下:% nft add rule filter input tcp dport:1:32-32: Error: syntax error, unexpected end of fileadd rule filter input tcp dport2.6、通过表达式构建规则nftables提供以下内置操作:NE表示不相等,或者你可以使用!=LT表示小于,或者你可以使用LE表示小于等于,或者你可以使用=注意:如果您使用来自shell的符号,因为它会将它们分别解释为标准输入和输出重定向。 你需要逃避他们,例如。 = 10242.7、规则集级别的操作2.7.1、使用原生nft语法Linux Kernel 3.18包括一些有关管理您的规则集作为一个整体的可用操作的改进。1、查看规则集清单列出完整的规则集% nft list ruleset列出每个系列的规则集% nft list ruleset arp % nft list ruleset ip % nft list ruleset ip6 % nft list ruleset bridge % nft list ruleset inet这些命令将打印给定系列的所有表/链/集/规则。2、删除规则集此外,您还可以冲洗(擦除,删除,擦除)完整的规则集:% nft flush ruleset也适用于每个系列:% nft flush ruleset arp % nft flush ruleset ip % nft flush ruleset ip6 % nft flush ruleset bridge % nft flush ruleset inet3、备份和还原您可以组合以上两个命令来备份您的规则集:% echo nft flush ruleset backup.nft % nft list ruleset backup.nft并原子加载:% nft -f backup.nft4、以XML或JSON格式您还可以以XML或JSON格式导出规则集。% nft export xml ruleset.xml % nft export json ruleset.json注意,导出操作输出所有家庭(ip,ip6,inet,arp,bridge)的所有表。2.8、监视规则集更新nft可以通过以下方式显示规则集更新的通知:% nft monitor这将订阅任何种类的规则集更新。您可以按以下类型过滤掉事件:object: tables, chains, rules, sets and elements.event: new and destroy.输出格式可以是:plain text (ie. native nft format)xmljson以下示例显示了如何跟踪规则更新:% nft monitor rules如果您只想接收新规则:% nft monitor new rules有点更发达的例子在终端中键入以下内容:term1% nft monitor从不同的终端,如果你键入:term2% nft add table inet filter term2% nft add chain inet filter forward term2% nft add rule inet filter forward counter accept term2% nft flush table inet filter forward term2% nft flush ruleset然后,如果你回到term1,你会看到:term1% nft monitor add table inet filter add chain inet filter forward add rule inet filter forward counter packets 0 bytes 0 accept delete rule inet filter forward handle 4 delete chain inet filter forward delete table inet filter2.9、脚本/wiki-nftables/index.php/Scripting三、数据包匹配支持的选项3.1、匹配数据包报头字段nft命令行实用程序支持以下的第4层协议:AH,ESP,UDP,UDPlite,TCP,DCCP,SCTP和IPComp。3.1.1、匹配传输协议以下规则显示如何匹配任何类型的TCP流量:% nft add rule filter output ip protocol tcp3.1.2、匹配以太网头字段如果要匹配目标地址为ff:ff:ff:ff:ff:ff的以太网流量,可以键入以下命令:% nft add rule filter input ether daddr ff:ff:ff:ff:ff:ff counter不要忘记,第2层头信息仅在input路径中可用。3.1.3、匹配IPv4报头字段您还可以根据IPv4源和目标匹配流量,以下示例显示如何计入来自00并且发往的所有流量:% nft add rule filter input ip saddr 00 ip daddr counter请注意,由于规则附加到输入链,本地机器需要使用地址,否则您将看不到任何匹配的;-)。要过滤像TCP这样的第4层协议,可以使用protocol关键字:% nft add rule filter input protocol tcp counter3.1.4、匹配Ipv6标头字段如果要计算寻址到abdc : 100的IPv6流量,可以键入以下命令:% nft add rule filter output ip6 daddr abcd:100 counter要过滤像TCP这样的第4层协议,可以使用nexthdr关键字:% nft add rule filter input ip6 nexthdr tcp counter不要忘记创建一个ip6表并注册相应的链来运行下面的例子:3.1.5、匹配TCP / UDP / UDPlite流量以下示例显示如何丢弃低TCP端口(1-1024)的所有tcp流量:% nft add rule filter input tcp dport 1-1024 counter drop请注意,此规则使用间隔(从1到1024)要匹配TCP标志,需要使用二进制操作。 例如,要计数非SYNC的数据包:% nft add rule filter input tcp flags != syn counter可以使用更复杂的过滤器。 例如,要计数和记录标志SYN和ACK设置的TCP数据包:% nft -inft add rule filter output tcp flags & (syn | ack) = syn | ack counter log3.1.6、匹配ICMP流量您可以通过以下方式删除所有ICMP回显请求(通常称为ping):% nft add rule filter input icmp type echo-request counter drop这里是可用的icmp类型的列表:名称说明echo-reply回声应答destination-unreachable目的地不可达source-quench来源淬火redirect重定向echo-requesttime-exceeded时间超过parameter-problem参数问题timestamp-request时间戳请求timestamp-reply时间戳回复info-request信息请求info-reply信息回复address-mask-request地址掩码请求address-mask-reply地址掩码回复3.2、匹配数据包元信息nftables附带了分组元信息选择器,您可以使用它来匹配存储在网络数据包中的元信息。3.2.1、元选择器您可以匹配的当前元信息是:接口设备名称和接口设备索引: iifname, oifname, iif and oif.接口类型: iiftyte and oiftype.TC手柄: priority.socket user and group标识: skuid and skgid.包长度: length.3.2.2、按接口名称匹配数据包您可以使用以下选择器来匹配接口名称:iifname,用来匹配输入网络接口名称。oifname,用来匹配输出网络接口名称。IIF,用来匹配网络接口名称的接口索引。 这比iifname快,因为它只需要比较一个32位无符号整数而不是一个字符串。 接口索引是动态分配的,因此不要将其用于动态创建和销毁的接口,例如。 ppp0。OIF, 像iif,但它匹配输出网络接口索引。接口名称的示例用法如下:% nft add rule filter input meta oifname lo accept此规则接受环回伪设备lo的所有流量。3.2.3、按包标记匹配数据包您可以使用以下规则匹配标记为123的数据包:nft add rule filter output meta mark 123 counter3.2.4、匹配数据包的套接字UID您可以使用您的用户名来匹配流量,例如。% nft add rule filter output meta skuid pablo counter或者在给定用户的/ etc / passwd中没有条目的情况下,使用32位无符号整数(UID)。% nft add rule filter output meta skuid 1000 counter让我们只是生成一些HTTP流量来测试此规则:% wget -spider 然后,如果检查计数器,您可以验证数据包是否匹配该规则。% nft list table filtertable ip filter chain output type filter hook output priority 0; skuid pablo counter packets 7 bytes 510 chain input type filter hook input priority 0; 重要:请注意,如果您使用ping测试,通常使用suid安装,以便流量匹配root用户(uid = 0)。3.3、匹配连接跟踪状态元信息正如在iptables中一样,您可以匹配Netfilter通过连接跟踪系统收集的状态跟踪信息(有时称为conntrack或ct信息)以部署状态防火墙。3.3.1、匹配conntrack信息nftables提供了ct选择器,可以用来匹配:1、状态信息: new, established, related and invalid.在这方面,与iptables没有改变;2、conntrack 的标志;3.3.2、匹配状态信息以下示例说明如何使用nftables部署极为简单的状态防火墙:nft add rule filter input ct state established,related counter accept #1nft add rule filter input counter drop #2规则1允许作为与网络已经建立的通信的一部分的分组。 因此,从网络中的计算机到达您的计算机的任何尝试将被删除。 但是,作为您已启动的流的一部分的流量将被接受。 请注意,上面的示例使用逗号分隔的您要匹配的状态列表。如果你不熟悉Netfilter数据流状态机,可以快速阅读一下:/iptables-tutorial/iptables-tutorial.html#STATEMACHINE3.3.3、匹配conntrack标记以下示例显示如何根据conntrack标记匹配数据包:nft add rule filter input ct mark 123 counter要了解更多的关于链接跟踪标记和标记数据包,请查阅下面链接:/wiki-nftables/index.php/Setting_packet_metainformation3.4、速率限制匹配您可以通过限速对流量进行限制。以下示例显示如何每秒接受最多10个ICMP回显请求数据包:% nft add rule filter input icmp type echo-request limit rate 10/second accept从Linux内核4.3,你也可以ratelimit每个字节:% nft add rule filter input limit rate 10 mbytes/second accept以上规则接受低于10 mbytes /秒速率的流量。您还可以使用burst参数指示可以超过速率限制的数据包/字节数:% nft add rule filter input limit rate 10 mbytes/second burst 9000 kbytes accept这表示您可以超过9000 kbytes的时候进行速率限制。您还可以将其用于数据包:% nft add rule filter input icmp type echo-request limit rate 10/second burst 2 packets counter accept所以你可以超过2包每秒后进行速率限制。限制表达式,您可以将其用于来自入口的流量监管,作为来自新netdev系列的tc的替代。四、对数据包支持的处理措施4.1、接受和丢弃数据包4.1.1、丢弃数据包您可以使用drop选项丢弃数据包。 请注意,drop是一个终止操作,因此您无法在其后添加任何其他操作(此操作放在其他所有操作之后)。nft add rule filter output drop请注意,当测试这个,你可能会失去任何互联网连接:-)。4.1.2、接受包接受任何类型流量的简单规则是:nft add rule filter output accept您可以向该规则添加计数器:nft add rule filter output counter accept因此,您可以观看所有流量实际接受:nft list table filtertable ip filter chain output type filter hook output priority 0; counter packets 1 bytes 84 accept 4.2、跳到链像iptables一样,你可以使用链的树来构造你的规则集。 为此,您首先需要通过以下方式创建自定义链:% nft add chain ip filter tcp-chain上面的示例创建了tcp链,将用于添加规则以过滤tcp流量,例如。% nft add rule ip filter input ip protocol tcp jump tcp-chain我们可以添加一个简单的规则到tcp-chain来计算包和字节:% nft add rule ip filter tcp-chain counter列表应该显示:% nft list table filtertable ip filter chain input type filter hook input priority 0; ip protocol tcp jump tcp-chain chain tcp-chain counter packets 8 bytes 2020 计数器应通过生成简单的TCP流量来更新。注意:您只能跳转到非基本链。4.2.1、jump与goto请注意jump和goto之间的区别。1、如果使用jump来获取在另一个链中处理的数据包,数据包将在结束后返回到调用规则的链。2、但是,如果使用goto,数据包将在另一个链中处理,但它们不会返回到调用规则的链。 在这种情况下,应用于数据包的默认策略将是开始处理数据包的原始基础链的默认策略。jump示例:分组是:SRC = DST = TCP端口111运动222table ip filter chain input type filter hook input priority 0; policy accept; # this is the 1 matching rule ip saddr ip daddr tcp dport 111 tcp dport 222 jump other-chain # this is the 3 matching rule ip saddr ip daddr tcp dport 111 tcp dport 222 accept chain other-chain # this is the 2 matching rule counter packets 8 bytes 2020 goto示例:分组是:SRC = DST = TCP端口111运动222table ip filter chain input type filter hook input priority 0; policy accept; # this is the 1 matching rule # default policy accept will be applied after other-chain ends processing ip saddr ip daddr tcp dport 111 tcp dport 222 goto other-chain # this rule will never be reached by this packet! ip saddr ip daddr tcp dport 111 tcp dport 222 accept chain other-chain # this is the 2 matching rule counter packets 8 bytes 2020 4.3、拒绝流量注意:完全拒绝支持可用,在Linux内核3.18。以下规则显示如何拒绝来自网络的所有流量:% nft add rule filter input
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 精准施肥决策支持创新创业项目商业计划书
- 电子比价工具创新创业项目商业计划书
- 2025年高密市消防员考试笔试试题(含答案)
- 直播脱口秀节目创新创业项目商业计划书
- 现场急救知识专题培训课件
- 2025年老年健康管理长期照护服务模式创新与护理服务质量提升路径
- 2025年生态旅游可持续发展规划与管理生态旅游可持续发展评估报告
- 2025年物流行业物流信息化建设与运营报告
- 现场创新思维课件
- 现代财政学原理课件
- 聘请执行校长合同协议
- 订购白酒居间合同协议
- GB/T 6516-2025电解镍
- 2024年中考英语考纲词汇重点单词800词(复习必背)
- 高中物理第八章 静电场专题复习
- 西柏坡的故事与红色教育
- (完整版)常见中药材和中药饮片造假、掺假现象及鉴别方法
- 学生欺凌治理委员会
- 2024全球工程管理前沿
- 小学科学课实验安全
- 人防指挥中心设计方案
评论
0/150
提交评论