2022-09-07 网工进阶(三十)以太网交换安全-端口隔离、MAC地址表安全、端口安全、MAC地址漂移防止与检测、链路层安全、流量抑制、风暴控制、IPSG(IP Source Guard)

概述

目前网络中以太网技术的应用非常广泛。然而,各种网络攻击的存在,不仅造成了网络合法用户无法正常访问网络资源,而且对网络信息安全构成严重威胁,因此以太网交换的安全性越来越重要。

端口隔离

大型网络中,业务需求种类繁多,只通过VLAN实现报文二层隔离,会浪费有限的VLAN资源。

采用端口隔离功能,可以实现同一VLAN内端口之间的隔离。用户只需要将端口加入到隔离组中,就可以实现隔离组内端口之间二层数据的隔离。端口隔离功能为用户提供了更安全、更灵活的组网方案。

隔离类型

双向隔离

同一端口隔离组的接口之间互相隔离,不同端口隔离组的接口之间不隔离。端口隔离只是针对同一设备上的端口隔离组成员,对于不同设备上的接口而言,无法实现该功能。

单向隔离

为了实现不同端口隔离组的接口之间的隔离,可以通过配置接口之间的单向隔离来实现。缺省情况下,未配置端口单向隔离。

隔离模式

L2(二层隔离三层互通)

隔离同一VLAN内的广播报文,但是不同端口下的用户还可以进行三层通信。缺省情况下,端口隔离模式为二层隔离三层互通。

采用二层隔离三层互通的隔离模式时,在VLANIF接口上使能VLAN内Proxy ARP功能,配置arp-proxy inner-sub-vlan-proxy enable,可以实现同一VLAN内主机通信。

ALL(二层三层都隔离)

同一VLAN的不同端口下用户二三层彻底隔离无法通信。

相关命令

查看端口隔离组状态

[SW1]display port-isolate group all 

配置端口隔离模式

[SW1]port-isolate mode all 

开启端口隔离并加入隔离组

[SW1-GigabitEthernet0/0/1]port-isolate enable group 1

配置单向隔离

[SW1-GigabitEthernet0/0/1]am isolate GigabitEthernet 0/0/2

配置举例

 交换机配置

#
port-isolate mode all
#
interface GigabitEthernet0/0/2
 am isolate GigabitEthernet0/0/4 GigabitEthernet0/0/5
 port-isolate enable group 1
#
interface GigabitEthernet0/0/3
 port-isolate enable group 1
#
interface GigabitEthernet0/0/4
 port-isolate enable group 2
#
interface GigabitEthernet0/0/5
 port-isolate enable group 2

MAC地址表安全

静态MAC地址表项

将一些固定的上行设备或者信任用户的MAC地址配置为静态MAC表项,可以保证其安全通信。

为了防止一些关键设备(如各种服务器或上行设备)被非法用户恶意修改其MAC地址表项,可将这些设备的MAC地址配置为静态MAC地址表项,因为静态MAC地址表项优先于动态MAC地址表项,不易被非法修改。

黑洞MAC地址表项

防止黑客通过MAC地址攻击网络,交换机对来自黑洞MAC或者去往黑洞MAC的报文采取丢弃处理。

为了防止无用MAC地址表项占用MAC地址表,同时为了防止黑客通过MAC地址攻击用户设备或网络,可将那些有着恶意历史的非信任MAC地址配置为黑洞MAC地址,使设备在收到目的MAC或源MAC地址为这些黑洞MAC地址的报文时,直接予以丢弃,不修改原有的MAC地址表项,也不增加新的MAC地址表项。

动态MAC地址老化时间

合理配置动态MAC地址表项的老化时间,可以防止MAC地址爆炸式增长。

为了减轻手工配置静态MAC地址表项,华为S系列交换机缺省已使能了动态MAC地址表项学习功能。但为了避免MAC地址表项爆炸式增长,可合理配置动态MAC表项的老化时间,以便及时删除MAC地址表中的废弃MAC地址表项。

禁止MAC地址学习功能

对于网络环境固定的场景或者已经明确转发路径的场景,通过配置禁止MAC地址学习功能,可以限制非信任用户接入,防止MAC地址攻击,提高网络安全性。

为了提高网络的安全性,防止设备学习到非法的MAC地址,错误地修改MAC地址表中的原MAC地址表项,可以选择关闭设备上指定接口或指定VLAN中所有接口的MAC地址学习功能,这样设备将不再从这些接口上学习新的MAC地址。

限制MAC地址学习数量

在安全性较差的网路环境中,通过限制MAC地址学习数量,可以防止攻击者通过变换MAC地址进行攻击。

配置限制MAC地址学习数,当超过限制数时不再学习MAC地址,同时可以配置当MAC地址数达到限制后对报文采取的动作,从而防止MAC地址表资源耗尽,提高网络安全性。

相关命令

配置静态MAC表项(指定的VLAN必须已经创建并且已经加入绑定的端口;指定的MAC地址,必须是单播MAC地址,不能是组播和广播MAC地址)

[SW1]mac-address static 5489-9826-327C GigabitEthernet 0/0/1 vlan 1

配置黑洞MAC表项

[SW1]mac-address blackhole 5489-9826-327C

配置动态MAC表项的老化时间

[SW1]mac-address aging-time ?
  <0,10-1000000>  Aging-time seconds, 0 means that MAC aging function does not
                  work

关闭基于接口的MAC地址学习功能(缺省情况下,虽然不学习地址,但是会转发报文,如果配置了action discard ,当接口和MAC地址与MAC地址表项不匹配时,则丢弃该报文。匹配时,则转发报文)

[SW1-GigabitEthernet0/0/1]mac-address learning disable action discard 

关闭基于VLAN的MAC地址学习功能(当同时配置基于接口和基于VLAN的禁止MAC地址学习功能时,基于VLAN的优先级要高于基于接口的优先级配置)

[SW1-vlan1]mac-address learning disable 

配置基于接口限制MAC地址学习数

[SW1-GigabitEthernet0/0/1]mac-limit maximum ?
  INTEGER<0-4096>  Maximum MAC address can learn, 0 means unlimited

配置当MAC地址数达到限制后是否进行告警

[SW1-GigabitEthernet0/0/1]mac-limit alarm disable 

配置基于VLAN限制MAC地址学习数

[SW1-vlan1]mac-limit maximum ?
  INTEGER<0-4096>  Maximum MAC address can learn, 0 means unlimited

端口安全

端口安全(Port Security)通过将接口学习到的动态MAC地址转换为安全MAC地址(包括安全动态MAC、安全静态MAC和Sticky MAC),阻止非法用户通过本接口和交换机通信,从而增强设备的安全性。

Sticky MAC

配置端口安全功能后,接口学习到的MAC地址会转换为安全MAC地址,接口学习的最大MAC数量达到上限后不再学习新的MAC地址,仅允许这些MAC地址和交换机通信。如果接入用户发生变动,可以通过设备重启或者配置安全MAC老化时间刷新MAC地址表项。对于相对比较稳定的接入用户,如果不希望后续发生变化,可以进一步使能接口Sticky MAC功能,这样在保存配置之后,MAC地址表项不会刷新或者丢失

Sticky MAC功能一般使用在终端用户变更较少的网络中。

例如:

公司为了防止外来人员使用自己带来的电脑访问公司网络,可以配置端口安全功能。

公司为了防止本公司员工私下更换位置,可以配置端口安全功能。

对比端口安全与Sticky MAC的接口学习MAC的状态变化

功能开启后关闭后
端口安全接口上之前学习到的动态MAC地址表项将被删除,之后学习到的MAC地址将变为安全动态MAC地址。接口上的安全动态MAC地址将被删除,重新学习动态MAC地址。
Sticky MAC接口上的安全动态MAC地址表项将转化为Sticky MAC地址,之后学习到的MAC地址也变为Sticky MAC地址。接口上的Sticky MAC地址,会转换为安全动态MAC地址。

相关命令

开启端口安全功能

[SW1-GigabitEthernet0/0/1]port-security enable 

配置安全端口的动态MAC老化时间(缺省情况下无老化时间)

[SW1-GigabitEthernet0/0/1]port-security aging-time ?
  INTEGER<1-1440>  Aging time (in minute) 

配置安全端口的最大动态MAC学习数量

[SW1-GigabitEthernet0/0/1]port-security max-mac-num ?
  INTEGER<1-4096>  Maximum mac address can learn

配置安全端口超过限制后执行的行为(缺省值restrict)

[SW1-GigabitEthernet0/0/1]port-security protect-action ?
  protect   Discard packets
  restrict  Discard packets and warning
  shutdown  Shutdown 
行为、动作学习到的MAC地址数超过限制时静态MAC地址漂移时
protect丢弃源地址在MAC表以外的报文丢弃带有该MAC地址的报文
restrict丢弃源地址在MAC表以外的报文,同时发出告警丢弃带有该MAC地址的报文,同时发出告警
shutdown执行error down操作,同时发出告警执行error down操作,同时发出告警

PS:默认情况下,接口关闭(error-down)后不会自动恢复,只能由网络管理人员在接口视图下使用restart命令重启接口进行恢复。 如果用户希望被关闭的接口可以自动恢复,则可在接口error-down前通过在系统视图下执行error-down auto-recovery cause port-security interval interval-value命令使能接口状态自动恢复为Up的功能,并设置接口自动恢复为Up的延时时间,使被关闭的接口经过延时时间后能够自动恢复。

配置为sticky端口

[SW1-GigabitEthernet0/0/1]port-security mac-address sticky 

查看安全动态MAC表

[SW1]display mac-address security 

查看Sticky MAC表项

[SW1]display mac-address sticky 

MAC地址漂移防止与检测

MAC地址漂移是指交换机上一个VLAN内有两个端口学习到同一个MAC地址后学习到的MAC地址表项覆盖原MAC地址表项,当一个MAC地址在两个端口之间频繁发生迁移时的现象。

正常情况下,网络中不会在短时间内出现大量MAC地址漂移的情况。出现这种现象一般都意味着网络中存在环路,或者存在网络攻击行为。

防止MAC地址漂移

如果是环路引发MAC地址漂移,治本的方法是部署防环技术,例如STP,消除二层环路。如果由于网络攻击等其他原因引起,可以通过配置接口MAC地址学习优先级,配置不允许相同优先级接口MAC地址漂移解决。

配置接口MAC地址学习优先级

缺省时接口MAC地址学习的优先级均为0,数值越大优先级越高。当MAC地址在交换机的两个接口之间发生漂移时,可以将其中一个接口的MAC地址学习优先级提高。高优先级的接口学习到的MAC地址表项将覆盖低优先级接口学习到的MAC地址表项。

相关命令

配置接口学习MAC地址的优先级

[SW1-GigabitEthernet0/0/1]mac-learning priority 3

配置禁止MAC地址漂移时报文的处理动作为丢弃

[SW1-GigabitEthernet0/0/1]mac-learning priority flapping-defend action discard

配置不允许相同优先级接口MAC地址漂移

当伪造网络设备所连接口的MAC地址优先级与安全的网络设备相同时,后学习到的伪造网络设备MAC地址表项不会覆盖之前正确的表项。如果安全网络设备下电,则交换机仍会学习到伪造网络设备的MAC地址,当网络设备再次上电时将无法学习到正确的MAC地址,因此该特性需谨慎使用

相关命令

配置不允许相同优先级的接口发生MAC地址漂移

[SW1]undo mac-learning priority 0 allow-flapping 

MAC地址漂移检测

交换机支持MAC地址漂移检测机制,分为:基于VLAN的MAC地址漂移检测、全局MAC地址漂移检测。

相关命令

查看MAC地址漂移记录

[SW1]display mac-address flapping record 

基于VLAN的MAC地址漂移检测

配置VLAN的MAC地址漂移检测功能可以检测指定VLAN下的所有的MAC地址是否发生漂移。
当MAC地址发生漂移后,可以配置指定的动作,例如告警、阻断接口或阻断MAC地址。

如果MAC地址发生漂移时,则可根据需求配置接口做出的动作有以下三种:

1 发送告警,当检测到MAC地址发生漂移时只给网管发送告警。

2 接口阻断,当检测到MAC地址发生漂移时,根据设置的阻塞时间(缺省值10秒,该时长使用block-time关键字指定)对接口进行阻塞,并关闭接口收发报文的能力。10秒之后接口会被放开并重新进行检测,此时该接口可以正常收发数据,如果20秒内没有再检测到MAC地址漂移则接口的阻塞将被彻底解除;而如果20秒内再次检测到MAC地址漂移,则再次将该接口阻塞,如此重复2次(该次数使用retry-times关键字指定),如果交换机依然能检测到该接口发生MAC地址漂移则永久阻塞该接口

3 MAC地址阻断,当检测到MAC地址发生漂移时,只阻塞当前MAC地址,而不对物理接口进行阻塞,当前接口下的其他MAC的通信不受影响。

相关命令

配置基于VLAN进行MAC地址漂移检测

[SW1-vlan2]loop-detect eth-loop alarm-only 

全局MAC地址漂移检测

该功能可以检测设备上的所有的MAC地址是否发生了漂移。
若发生漂移,设备会上报告警到网管系统。
用户也可以指定发生漂移后的处理动作,例如将接口关闭或退出VLAN。

在缺省情况下,它只是简单地上报告警,并不会采取其他动作。在实际网络部署中,可以根据网络需求,对检测到MAC地址漂移之后定义以下2种动作:

error-down:将对应接口状态置为error-down,不再转发数据。

quit-vlan:退出当前接口所属的VLAN。

相关命令

配置MAC地址漂移检测功能(缺省情况下,已经配置了对交换机上所有VLAN进行MAC地址漂移检测的功能)

[SW1]mac-address flapping detection 

配置MAC地址漂移检测的VLAN白名单

[SW1]mac-address flapping detection exclude vlan 10 to 20 30

配置发生漂移后接口的处理动作

[SW1-GigabitEthernet0/0/1]mac-address flapping trigger error-down 

配置MAC地址漂移表项的老化时间(缺省值300秒)

[SW1]mac-address flapping aging-time ?
  INTEGER<60-900>  Aging time (unit: second, default value: 300)

注意事项

华为交换机默认开启全局MAC地址漂移检测功能,因此缺省时交换机便会对设备上的所有VLAN进行MAC地址漂移检测。

可以通过配置MAC地址漂移检测的VLAN白名单来实现对某些VLAN不进行MAC地址漂移检测。

如果希望Error-Down的接口能够自动恢复,在系统视图下配置命令error-down auto-recovery cause mac-address-flapping interval time-value

如果接口由于发生了MAC地址漂移,被设置为离开VLAN,如要实现接口自动恢复,可以在系统视图下配置命令mac-address flapping quit-vlan recover-time time-value
 

链路层安全

一般情况下,绝大部分数据在局域网链路中都是以明文形式传输的,这样就会存在许多安全隐患,比如:银行帐户的信息被窃取、篡改,遭受恶意网络攻击等。

针对上述攻击行为,可以部署MACsec功能。网络中部署MACsec后,可对传输的以太网数据帧进行保护,降低信息泄露和遭受恶意网络攻击的风险。

MACsec工作机制

在设备运行点到点MACsec时,网络管理员在两台设备上通过命令行预配置相同的CAK,两台设备会通过MKA协议选举出一个Key Server,Key Server决定加密方案,Key Server会根据CAK等参数使用某种加密算法生成SAK数据密钥,由Key Server将SAK分发给对端设备,这样两台设备拥有相同的SAK数据密钥,可以进行后续MACsec数据报文加解密收发。

Key Server决定加密方案和进行密钥分发的MKA实体。​​​​​​​

CAK(Secure Connectivity Association Key,安全连接关联密钥)不直接用于数据报文的加密,由它和其他参数派生出数据报文的加密密钥。CAK可以在802.1X认证过程中下发,也可以由用户直接静态配置。 

MKA(MACsec Key Agreement protocol)用于MACsec 数据加密密钥的协商协议。 

SAK(Secure Association Key,安全关联密钥)由CAK根据算法推导产生,用于加密安全通道间传输的数据。MKA对每一个SAK可加密的报文数目有所限制,当使用某SAK加密的PN耗尽,该SAK会被刷新。例如,在10Gbps 的链路上,SAK最快4.8分钟刷新一次。 

交换机流量控制

流量抑制

正常情况下,当设备某个二层以太接口收到广播、未知组播或未知单播报文时,会向同一VLAN内的其他二层以太接口转发这些报文,从而导致流量泛洪,降低设备转发性能。 当设备某个以太接口收到已知组播或已知单播报文时,如果某种报文流量过大则可能会对设备造成冲击,影响其他业务的正常处理。

通过配置阈值来限制广播、未知组播、未知单播、已知组播和已知单播报文的速率,防止广播、未知组播报文和未知单播报文产生流量泛洪,阻止已知组播报文和已知单播报文的大流量冲击来进行流量抑制。

流量抑制工作原理

在接口入方向上,设备支持对广播、未知组播、未知单播、已知组播和已知单播报文按百分比、包速率和比特速率进行流量抑制。设备监控接口下的各类报文速率并和配置的阈值相比较,当入口流量超过配置的阈值时,设备会丢弃超额的流量

在接口出方向上,设备支持对广播、未知组播和未知单播报文的阻塞(Block)

在VLAN视图下,设备支持对广播报文按比特速率进行流量抑制。设备监控同一VLAN内广播报文的速率并和配置的阈值相比较,当VLAN内流量超过配置的阈值时,设备会丢弃超额的流量。

流量抑制还可以通过配置阈值的方式对ICMP报文进行限速,防止大量ICMP报文上送CPU处理,导致其他业务功能异常。

流量抑制的应用

流量抑制通过对不同类型的报文采取不同的限制措施,达到限制报文发送速率的目的。

1 在交换机接口的入方向,通过流量抑制功能可以限制任意报文的发送速率。

2 在交换机接口出方向,通过流量抑制功能可以阻塞广播,未知组播和未知单播报文。

3 在交换机的VLAN视图下,通过配置VLAN 内流量抑制限制VLAN内广播报文。

相关命令

配置流量抑制模式(缺省情况下,缺省的抑制模式为packets,在bits模式下,流量抑制的粒度更小、抑制更精确)

[SW1]suppression mode by-bits
Warning: All Interface supression mode will be changed. Continue? [Y/N]:y

配置接口流量抑制百分比(接口下配置流量抑制时,抑制模式需与全局的流量抑制模式保持一致)

//配置广播流量抑制
[SW1-GigabitEthernet0/0/1]broadcast-suppression 60


//配置未知单播流量抑制
[SW1-GigabitEthernet0/0/1]unicast-suppression 60


//配置未知组播流量抑制
[SW1-GigabitEthernet0/0/1]multicast-suppression 60


//配置已知单播流量抑制
[SW1-GigabitEthernet0/0/1]known-unicast-suppression 60


//配置已知组播流量抑制
[SW1-GigabitEthernet0/0/1]known-multicast-suppression 60

配置接口每秒通过报文的最大数量(可用于广播、未知单播、未知组播等)

[SW1-GigabitEthernet0/0/1]broadcast-suppression packets ?
  INTEGER<0-14881000>  Specify the value of packet rate (packet per second)

配置在接口出方向上阻塞报文(可用于广播、未知单播、未知组播等)

[SW1-GigabitEthernet0/0/1]broadcast-suppression block outbound 

查看接口的流量抑制信息

[SW1]display flow-suppression interface GigabitEthernet 0/0/1
 storm type         rate mode   set rate value 
-------------------------------------------------------------------------------
 unknown-unicast    percent     percent: 60% 
 multicast          percent     percent: 60% 
 broadcast          percent     percent: 60% 
-------------------------------------------------------------------------------

风暴控制

正常情况下,当设备某个二层以太接口收到广播、未知组播或未知单播报文时,会向同一VLAN内的其他二层以太接口转发这些报文,如果网络存在环路,则会导致广播风暴,严重降低设备转发性能。

除了STP生成树协议,还可以通过风暴控制来阻断阻塞报文或关闭端口来阻断广播、未知组播和未知单播报文的流量。

风暴控制工作原理

风暴控制可以用来防止广播、未知组播以及未知单播报文产生广播风暴。在风暴控制检测时间间隔内,设备监控接口下接收的三类报文的包平均速率与配置的最大阈值相比较。当报文速率大于配置的最大阈值时,风暴控制将根据配置的动作来对接口进行阻塞报文或关闭接口的处理。


风暴控制的应用

风暴控制与流量抑制相比的优势是可以同时监控接口下的广播报文、未知组播报文和未知单播报文各自的包平均速率,并根据阈值对接口采取阻塞相关报文或者关闭物理接口的惩罚动作。

相关命令

查看风暴控制信息

[SW1]display storm-control 

配置流量抑制及风暴控制白名单

[SW1]storm-control whitelist protocol 

配置接口对报文的风暴控制包模式最小阈值(可用于广播、未知单播、未知组播等)

[SW1-GigabitEthernet0/0/1]storm-control broadcast min-rate ?
  INTEGER<1-1488100>  The minimun rate value (packets per second)

配置接口对报文的风暴控制字节模式最小阈值(可用于广播、未知单播、未知组播等)

[SW1-GigabitEthernet0/0/1]storm-control broadcast min-rate cir ?
  INTEGER<1-1000000>  The minimun rate value (Kbit per second)

配置接口对报文的风暴控制百分比模式最小阈值(可用于广播、未知单播、未知组播等)

[SW1-GigabitEthernet0/0/1]storm-control broadcast min-rate percent ?
  INTEGER<1-100>  The minimum rate value (percent)

min-rate min-rate-value
指定包模式低阈值。如果指定了min-rate-value参数(单位pps),在风暴控制检测时间间隔内,当接口接收报文的平均速率小于该值时,则将该接口的报文恢复到正常转发状态。
max-rate max-rate-value
指定包模式高阈值。如果指定了max-rate-value参数(单位pps),在风暴控制检测时间间隔内,当接口接收报文的平均速率大于该值时,则对该接口进行风暴控制。
 

配置进行风暴控制时的动作

[SW1-GigabitEthernet0/0/1]storm-control action ?
  block     Block the packets of this port
  shutdown  Shutdown this port

配置风暴控制的检测时间间隔

[SW1-GigabitEthernet0/0/1]storm-control interval ?
  INTEGER<1-180>  Interval value (Unit: second)

IP Source Guard

IP地址欺骗攻击中,攻击者通过伪造合法用户的IP地址获取网络访问权限,非法访问网络,甚至造成合法用户无法访问网络,或者信息泄露。IPSG针对IP地址欺骗攻击提供了一种防御机制,可以有效阻止此类网络攻击行为。

IP源防攻击(IPSG,IP Source Guard)是一种基于二层接口的源IP地址过滤技术。它能够防止恶意主机伪造合法主机的IP地址来仿冒合法主机,还能确保非授权主机不能通过自己指定IP地址的方式来访问网络或攻击网络。

通俗来讲就是防止管理员分配好的IP地址被占用。

IPSG工作原理

IPSG利用绑定表(源IP地址、源MAC地址、所属VLAN、入接口的绑定关系)去匹配检查二层接口上收到的IP报文,只有匹配绑定表的报文才允许通过,其他报文将被丢弃。常见的绑定表有静态绑定表和DHCP Snooping动态绑定表。

绑定表生成后,IPSG基于绑定表向指定的接口或者指定的VLAN下发ACL,由该ACL来匹配检查所有IP报文。主机发送的报文,只有匹配绑定表才会允许通过,不匹配绑定表的报文都将被丢弃。当绑定表信息变化时,设备会重新下发ACL。

缺省情况下,如果在没有绑定表的情况下使能了IPSG,设备将拒绝除DHCP请求报文外的所有IP报文。

静态绑定表项包含:MAC地址、IP地址、VLAN ID、入接口。静态绑定表项中指定的信息均用于IPSG过滤接口收到的报文。

动态绑定表项包含:MAC地址、IP地址、VLAN ID、入接口。IPSG依据该表项中的哪些信息过滤接口收到的报文,由用户设置的检查项决定,缺省是四项都进行匹配检查。常用的检查项有基于源IP地址过滤,基于源MAC地址过滤,基于源IP地址+源MAC地址过滤,基于源IP地址+源MAC地址+接口过滤,基于源IP地址+源MAC地址+接口+VLAN过滤等。

相关命令

配置静态用户绑定表项

[SW1]user-bind static ip-address 192.168.1.1 mac-address 5489-98AA-4AA7 interfac
e GigabitEthernet 0/0/1 vlan 1

开启接口的IPSG功能

[SW1-GigabitEthernet0/0/1]ip source check user-bind enable 

开启接口的IP报文检查告警功能

[SW1-GigabitEthernet0/0/1]ip source check user-bind alarm enable 

配置IP报文检查告警阈值(当丢弃的IP报文超过告警阈值时,会产生告警提醒用户)

[SW1-GigabitEthernet0/0/1]ip source check user-bind alarm threshold ?
  INTEGER<1-1000>  Threshold value 

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹅一只

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值