CCNA实战:用Port Security与Wireshark构建企业网络物理防线
1. 项目概述从“蹭网”到企业级网络安全的实战思考最近在帮一个朋友的公司处理网络问题他们遇到的情况挺典型的一个几十人的办公室网络时不时就卡顿IT部门查了半天也没找到根源。后来发现是有员工私接了无线路由器或者把个人笔记本、手机直接插到了办公室墙上的网络端口上。这些未经授权的设备不仅占用了宝贵的IP地址和带宽更关键的是它们像一个个“后门”可能引入病毒、木马或者成为内部数据泄露的跳板。这种“办公室蹭网”行为看似小事实则埋下了巨大的安全隐患。这让我想起了网络工程师入门必考的CCNA认证里一个非常基础但极其重要的安全特性——Port Security端口安全。很多人在学习时可能只是把它当作一个需要背命令的考点但真正在企业网络里它往往是构建第一道物理防线最直接、最有效的工具。今天我就结合这个真实的“防蹭网”需求带大家从零开始手把手完成一次CCNA级别的交换机安全实战。我们不仅会配置Port Security还会用Wireshark这个“网络显微镜”来抓包分析亲眼看看当非法设备接入时网络底层到底发生了什么。无论你是正在备考CCNA的学生还是刚入行的网络运维工程师或是想了解如何管好自家公司网络的技术负责人这篇内容都能给你带来可直接落地的参考。2. 核心需求与方案设计为什么是Port Security在深入配置之前我们必须先理清思路面对“非法设备接入”这个问题我们有哪些武器为什么最终选择Port Security作为核心方案2.1 常见防蹭网手段的局限性分析很多人第一时间想到的是无线网络的WPA2/WPA3加密和MAC地址过滤。但这只针对Wi-Fi。对于有线网络尤其是办公室大量存在的墙面以太网接口信息点这些方法无效。另一种思路是在网络层解决比如在路由器或防火墙做IP-MAC绑定ARP绑定。这确实有效但它位于OSI模型的第三层防范时机“太晚”了。非法设备在获取IP地址并开始通信之前就已经接入了二层网络可能已经引发广播风暴或触发其他二层协议问题。而Port Security工作在OSI第二层数据链路层直接在交换机端口上实施控制。它的核心思想是为每个交换机端口建立一个合法的MAC地址“白名单”。只有源MAC地址在白名单上的数据帧才被允许从这个端口进入交换机否则端口将采取预设的安全违规动作比如直接关闭端口Shutdown或丢弃非法帧。注意这里有个关键点Port Security绑定的是MAC地址而不是IP地址。因为交换机是基于MAC地址进行二层转发的。在设备获取IP地址之前它的MAC地址就已经出现在数据帧里了。因此Port Security能实现最前线的、基于硬件的快速拦截。2.2 Port Security方案的核心设计要点针对这个办公室场景我们的方案设计需要明确以下几个关键点绑定模式选择Port Security支持静态绑定和动态学习。对于办公室固定电脑我们采用静态绑定Static手动将每个端口的合法设备MAC地址配置进去最安全。对于会议室等临时接入点可以考虑动态学习Sticky让端口自动学习第一个接入设备的MAC并绑定适合受控的临时接入。最大MAC地址数每个端口允许多少个合法MAC地址对于普通员工桌面端口通常设置为1即“一个端口一台设备”彻底杜绝私接交换机的行为。对于连接无线AP或IP电话的端口可能需要设置为2或3分别给AP/电话本身及其连接的用户设备。违规动作Violation Action这是Port Security的“牙齿”决定当非法MAC地址出现时端口如何反应。主要有三种protect保护默默丢弃非法帧端口状态不变。不推荐因为管理员无法感知攻击。restrict限制丢弃非法帧但会生成SNMP Trap和Syslog日志并增加违规计数器。推荐用于监控阶段。shutdown关闭端口立即被置为“err-disable”状态需要管理员手动或自动恢复。安全性最高推荐用于生产环境。本次实战我们将采用此模式。老化时间对于动态学习的MAC地址设置其保留在绑定表中的时间。静态绑定的地址不受此影响。基于以上分析我们的最终方案是在接入层交换机连接员工电脑的端口上启用Port Security采用“静态MAC绑定 最大地址数为1 违规动作为shutdown”的策略。这样一旦有未知设备接入该端口立即失效从物理上切断连接并通过日志告警通知管理员。3. 实战环境搭建与基础配置理论清晰后我们开始动手。我使用Cisco Packet Tracer来模拟实验环境它足够完成CCNA级别的交换安全实验。当然如果你有真机或GNS3/EVE-NG等更高级的模拟器原理完全一致。3.1 实验拓扑与设备初始化我们的实验拓扑非常简单但足够典型一台Cisco 2960交换机作为接入层设备两台PCPC-A和PC-B作为合法员工电脑另一台PC-C模拟“非法蹭网设备”。所有设备通过直通线连接到交换机的Fa0/1, Fa0/2, Fa0/3端口。首先进行交换机的基础配置包括主机名、管理IP和远程登录为后续查看日志方便Switch enable Switch# configure terminal Switch(config)# hostname SW-ACCESS SW-ACCESS(config)# interface vlan 1 SW-ACCESS(config-if)# ip address 192.168.1.254 255.255.255.0 SW-ACCESS(config-if)# no shutdown SW-ACCESS(config-if)# exit SW-ACCESS(config)# line vty 0 15 SW-ACCESS(config-line)# password cisco SW-ACCESS(config-line)# login SW-ACCESS(config-line)# exit SW-ACCESS(config)# enable secret class接下来为PC-A和PC-B配置静态IP地址例如PC-A为192.168.1.10/24PC-B为192.168.1.20/24网关均为192.168.1.254。PC-C可以先不配置模拟一个全新的未知设备。3.2 关键配置前的网络连通性测试在配置任何安全策略前务必验证基础网络是通的。这是一个好习惯能避免把连通性问题误判为安全策略故障。 从PC-A ping PC-B的IP地址192.168.1.20应该能通。同时在交换机上使用show mac address-table命令可以看到Fa0/1和Fa0/2端口分别学习到了PC-A和PC-B的MAC地址。这个表是交换机进行二层转发的依据也是我们接下来做Port Security绑定的数据来源。记录下PC-A和PC-B的MAC地址假设分别为PC-A: 0050.7966.6801PC-B: 0050.7966.68024. Port Security 详细配置与参数解析现在进入核心配置环节。我们将为连接PC-A的Fa0/1端口配置Port Security。4.1 端口模式与安全功能启用交换机的端口有多种模式Port Security只能在接入Access模式或干道Trunk模式下配置。对于连接终端设备的端口我们一律配置为Access模式并指定一个VLAN比如VLAN 10。SW-ACCESS(config)# interface fastEthernet 0/1 SW-ACCESS(config-if)# switchport mode access SW-ACCESS(config-if)# switchport access vlan 10然后启用该端口的Port Security功能SW-ACCESS(config-if)# switchport port-security单单执行这一条命令端口已经启用了Port Security但采用的是默认参数最大MAC地址数为1违规动作为shutdown但还没有绑定任何具体的MAC地址。此时端口会动态学习第一个收到的数据帧的源MAC地址并将其绑定类似于Sticky模式。但我们为了精确控制要采用静态绑定。4.2 静态MAC地址绑定与策略强化我们将PC-A的MAC地址静态绑定到Fa0/1端口并明确设置违规动作SW-ACCESS(config-if)# switchport port-security mac-address 0050.7966.6801 SW-ACCESS(config-if)# switchport port-security maximum 1 SW-ACCESS(config-if)# switchport port-security violation shutdown逐条命令解释switchport port-security mac-address 0050.7966.6801将指定的MAC地址静态添加到该端口的安全地址表中。这是最关键的绑定操作。switchport port-security maximum 1明确指定该端口只允许1个MAC地址。即使不配默认也是1但显式配置是良好的习惯。switchport port-security violation shutdown指定违规动作为关闭端口。这是最严格的做法。实操心得在实际运维中我强烈建议将违规动作设置为shutdown。restrict模式虽然方便但非法流量持续冲击端口会产生大量日志可能淹没真正的告警。而shutdown能产生一个明确的、需要干预的故障事件端口err-disable迫使管理员必须去查看和处理从而发现安全威胁。你可以通过配置errdisable recovery让端口在一段时间后自动恢复但这会降低安全性需权衡。4.3 配置验证与状态检查配置完成后不要想当然认为它生效了必须验证。SW-ACCESS# show port-security interface fastEthernet 0/1这个命令的输出至关重要你会看到类似以下信息Port Security : Enabled Port Status : Secure-up Violation Mode : Shutdown Aging Time : 0 mins Aging Type : Absolute SecureStatic Address Aging : Disabled Maximum MAC Addresses : 1 Total MAC Addresses : 1 Configured MAC Addresses : 1 Sticky MAC Addresses : 0 Last Source Address:Vlan : 0050.7966.6801:10 Security Violation Count : 0重点关注几点Port Status: Secure-up表示端口安全已启用且状态正常。Violation Mode: Shutdown确认了我们的配置。Total MAC Addresses: 1和Configured MAC Addresses: 1说明当前绑定的MAC地址数量为1且这1个是手动配置的。Security Violation Count: 0违规计数为0说明尚未发生违规。还可以使用show port-security address来查看所有端口的绑定情况或者show running-config interface fastEthernet 0/1来确认配置是否已写入运行配置。此时PC-A应该能正常通信。用PC-A去ping网关或其他主机一切如常。Port Security在默默守护用户无感知。5. 安全策略触发与Wireshark抓包深度分析配置是静态的真正的价值在于动态防御。现在让我们模拟攻击并用Wireshark看看发生了什么。5.1 模拟非法接入与端口状态突变将PC-C一台全新的MAC地址为0050.7966.6803的电脑接在已经配置了Port Security的Fa0/1端口上拔掉PC-A。然后尝试从PC-C上发起任何网络活动比如ping网关192.168.1.254。几乎在瞬间你会发现ping不通。立刻回到交换机上检查端口状态SW-ACCESS# show interfaces fastEthernet 0/1 status你可能会看到端口状态是err-disabled。再使用show port-security interface fastEthernet 0/1查看详情Port Status很可能变成了Secure-shutdown并且Security Violation Count从0变成了1。这就是违规动作shutdown生效了端口被逻辑关闭物理链路虽然还亮着但已经无法传输任何数据。非法设备PC-C被彻底隔离。5.2 Wireshark抓包洞察二层拦截瞬间为了更深入地理解这个过程我们在PC-C上或者在交换机上做端口镜像将Fa0/1的流量镜像到连接Wireshark的端口运行Wireshark在PC-C接入并尝试ping网关时进行抓包。抓包结果会非常直观地展示Port Security的工作原理ARP请求的“单相思”PC-C接入后为了ping通192.168.1.254它首先需要知道网关的MAC地址。因此它会发出一个ARP广播请求大喊“谁的IP是192.168.1.254请告诉MAC地址是0050.7966.6803的我”。在Wireshark过滤器中输入arp你能清晰地看到这个广播帧。交换机的沉默与丢弃这个ARP请求帧从Fa0/1进入交换机。交换机的端口安全模块会立即检查其源MAC地址0050.7966.6803。发现这个地址不在Fa0/1端口的安全地址表白名单里且该端口只允许1个地址当前已有1个虽然PC-A已拔掉但静态绑定条目依然存在。于是触发违规。违规处理与端口关闭根据配置的shutdown动作交换机硬件或驱动层面会立即将端口置为err-disable状态。这个动作非常快可能在第一个非法帧就是这个ARP请求之后毫秒级内完成。抓包结果分析你在Wireshark里很可能只能看到PC-C发出的那一个ARP请求之后再也没有任何从PC-C发出的帧被捕获如果抓包点在PC-C本身能看到它持续发出的、得不到回应的ARP请求如果抓包点在交换机镜像端口则可能只看到那一个帧就被丢弃了。你绝对看不到网关的ARP回复也看不到任何ICMPping请求和回复。因为端口在数据链路层就被关闭了后续所有帧都被交换机硬件丢弃根本进不了网络。这个抓包分析有力地证明了Port Security的防御点是在数据链路层在协议栈的极早期就完成了拦截非法设备连最基本的ARP通信都无法完成更别提三层以上的攻击了。5.3 违规端口恢复流程端口被err-disable后不会自动恢复除非配置了自动恢复。管理员需要手动干预SW-ACCESS(config)# interface fastEthernet 0/1 SW-ACCESS(config-if)# shutdown SW-ACCESS(config-if)# no shutdown先shutdown再no shutdown是手动恢复err-disable端口的标准操作。恢复后端口恢复Secure-up状态但安全绑定策略依然存在。只有将合法的PC-A接回网络才能恢复正常。注意事项在生产环境中频繁出现端口err-disable需要警惕。这可能不仅仅是员工私接设备也可能是设备网卡故障导致MAC地址漂移甚至是MAC地址欺骗攻击。务必结合日志show log和违规计数进行综合判断。6. 高级应用与扩展场景配置掌握了基础配置后我们可以看一些更贴近实际复杂场景的配置。6.1 连接IP电话与PC的端口配置现代办公室工位通常有一个端口同时连接IP电话和桌面电脑电话串联电脑。这时一个端口需要允许两个MAC地址电话本身和电脑。SW-ACCESS(config)# interface fastEthernet 0/10 SW-ACCESS(config-if)# switchport mode access SW-ACCESS(config-if)# switchport access vlan 10 SW-ACCESS(config-if)# switchport voice vlan 20 SW-ACCESS(config-if)# switchport port-security SW-ACCESS(config-if)# switchport port-security maximum 2 SW-ACCESS(config-if)# switchport port-security violation shutdown这里的关键是maximum 2。我们通常不在这里做静态绑定因为电话和电脑可能会更换。我们可以使用Sticky Learning粘性学习SW-ACCESS(config-if)# switchport port-security mac-address sticky配置后端口会动态学习前两个接入设备的MAC地址并自动将它们转换为静态绑定条目保存到运行配置中。这样既保证了安全只允许两个设备又具备了一定的灵活性。记得在确认学习到正确MAC地址后使用copy running-config startup-config保存配置否则重启后粘性学习的地址会丢失。6.2 动态绑定与老化时间管理对于会议室、访客区等端口我们可能希望允许临时接入但限制设备数量并定期清理。这就需要结合动态学习和老化时间。SW-ACCESS(config)# interface fastEthernet 0/24 SW-ACCESS(config-if)# switchport port-security SW-ACCESS(config-if)# switchport port-security maximum 5 SW-ACCESS(config-if)# switchport port-security violation restrict SW-ACCESS(config-if)# switchport port-security aging time 120 SW-ACCESS(config-if)# switchport port-security aging type inactivitymaximum 5允许最多5个不同设备。violation restrict超过5个后丢弃非法帧并记录日志但不关闭端口保证其他已接入设备可用。aging time 120设置老化时间为120分钟。aging type inactivity老化类型为“不活动”。意思是如果一个MAC地址在120分钟内没有从该端口发送任何数据它的绑定条目将被自动删除。这非常适合访客网络人走茶凉自动释放资源。7. 生产环境部署的注意事项与排错指南将实验室配置平滑部署到生产网络需要考虑更多细节。7.1 部署流程与变更管理信息收集在配置前使用show mac address-table interface [interface-id]命令记录下每个端口当前对应的合法设备MAC地址。最好结合网络管理平台或表格建立“端口-MAC-使用者”的对应关系文档。维护窗口Port Security配置可能导致端口中断如果现有设备MAC未绑定。务必在业务低峰期或计划维护窗口进行操作。分批实施不要一次性在所有端口上配置。可以先从一个部门、一个区域开始验证策略效果和稳定性。配置保存静态绑定和粘性绑定地址必须保存到启动配置中否则交换机重启后会丢失。文档更新任何网络变更都必须更新网络拓扑图和配置文档。记录下每个端口的安全策略最大地址数、违规动作、绑定MAC。7.2 常见问题排查实录即使规划得再好实际中也会遇到问题。下面是我踩过的一些坑和解决方法问题一配置Port Security后合法设备也无法上网了。排查首先show port-security interface查看端口状态是否为Secure-shutdown违规计数是否增加。如果是说明该设备MAC地址未被成功绑定或绑定错误。解决检查绑定的MAC地址是否正确。对比show port-security address和设备的真实MAC在设备上用ipconfig /all或ifconfig查看。确认端口模式是access。在 trunk 端口上配置 port-security 行为略有不同。如果使用粘性学习确认设备是第一个接入的并且已通过发送流量让交换机学习到MAC。问题二端口频繁进入err-disable状态但连接的是合法电脑。排查这可能是“MAC地址漂移”。常见于笔记本电脑同时连接有线网卡和无线网卡且操作系统存在网络桥接或聚合功能导致同一个IP在两个端口对应不同MAC或MAC地址变化。解决检查终端设备的网络设置禁用不必要的虚拟网卡或网络桥接。考虑在交换机端口上启用switchport port-security mac-address sticky让交换机重新学习正确的MAC。在极端情况下可以检查是否遭遇了MAC地址欺骗攻击。问题三如何监控全网Port Security状态排查手动登录每台交换机检查不现实。解决日志集中管理确保交换机的日志服务器syslog指向一个集中管理平台。Port Security的违规事件特别是restrict和shutdown动作会生成日志便于集中告警。SNMP监控通过SNMP监控交换机的ifOperStatus端口状态和特定的Port Security OID当端口变为err-disabled时触发告警。定期脚本检查编写脚本定期通过SSH或Telnet登录交换机执行show port-security和show interfaces status err-disabled命令汇总违规信息。问题四误操作将管理端口如连接核心交换机的上行口配置了Port Security并触发关闭。预防这是灾难性的。绝对不要在Trunk端口或连接网络基础设施交换机、路由器、防火墙、服务器的端口上轻易配置严格的Port Securitymaximum1。如果必须配置务必先静态绑定好正确的MAC地址并考虑使用violation restrict而非shutdown。恢复如果远程连接已断只能通过Console线本地登录恢复。Port Security是交换机安全体系的基石之一它简单、有效、对设备性能几乎无影响。但它主要防的是物理层面的非法接入和简单的MAC泛洪攻击对于更复杂的二层攻击如DHCP欺骗、ARP欺骗需要结合DHCP Snooping、DAI动态ARP检测等技术共同构建防御体系。这次实战从一个小痛点出发希望能让你不仅记住几条命令更能理解其背后的设计思想和应用场景。网络安全的建设正是由这样一个个扎实的基础配置累积而成的。

相关新闻

AI Agent开发核心架构与Google ADK实战指南

AI Agent开发核心架构与Google ADK实战指南

1. 从零理解AI Agent开发的核心架构在当今AI技术快速发展的时代,Google开源的Agent Development Kit(ADK)为开发者提供了一个强大的框架来构建智能代理系统。ADK不是一个独立的大模型,而是一个"智能操作系统"&#xff0…

2026/10/20 12:22:10 阅读更多 →
maven多模块项目jar包依赖版本统一管理最佳实践

maven多模块项目jar包依赖版本统一管理最佳实践

maven多模块项目jar包依赖版本统一管理最佳实践1. 问题描述2. 解决方案2.1 父 pom配置2.2 模块中pom文件配置3. 总结1. 问题描述 现有一个基于Java8构建的供应链管理springboot项目,项目的目录结构如下: scm-parent(父工程) scm…

2026/10/21 10:04:43 阅读更多 →
EKF与自适应博弈在航天追逃策略中的应用

EKF与自适应博弈在航天追逃策略中的应用

1. 项目背景与核心价值在航天器末端追逃博弈场景中,信息的不完全性一直是制约策略有效性的关键瓶颈。传统博弈论中的纳什均衡建立在完全信息假设基础上,而实际工程中我们往往只能获取对手的部分状态信息。这篇复现论文的创新点在于将EKF(扩展…

2026/10/18 13:06:02 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/22 10:18:38 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/21 9:32:40 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/22 9:44:47 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/22 10:42:00 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/22 10:40:08 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/22 10:56:37 阅读更多 →

日新闻

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/22 1:47:45 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/21 21:32:28 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/22 5:12:39 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 21:50:56 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 21:51:55 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 16:24:48 阅读更多 →