内网是如何访问到互联网的(华为源NAT)
私网地址如何能够访问到公网的?
在上一篇中,我们用任意一个内网的终端都能访问到百度的服务器,但是这是我们在互联网设备上面做了回程路由才实现的,在实际中,之前也说过运营商是不会写任何路由过来的,那对于我们这种私网地址是如何访问到公网的呢?那就是依靠一个技术,NAT---网络地址转换
「模拟器、工具合集」复制整段内容
链接:https://docs.qq.com/sheet/DV0xxTmFDRFVoY1dQ?tab=7ulgil
NAT技术的由来与实现
在网络基础篇中讲解过目前的IPV4地址已经是枯竭的状态了,在早期发现问题的时候提出过几个解决办法,取消固定网络位的方式,引入了子网掩码,VLSM、CIDR来解决IP地址浪费的问题,同时提出了私网地址的概念,这样使得局域网都可以使用私网地址来进行通信,缓解了IPV4地址被用尽的情况,但是也带来了一个问题,私网地址的流量是不能进入公网的,因为私网地址每个不同的局域网都可以使用,重复都没有关系,在这样的情况下引入了一个技术,就是NAT,它实现的功能就是把私网地址转换成公网地址,相当于做了一个”伪装”一样,这样自然就能够去访问互联网了。
(1)配置更改
想要知道是如何实现的,那就先得配置上,然后在配合抓包以及查看状态来整体了解,先来做下初始化操作。
#出口路由器整改
[AR1200]interface g0/0/1
[AR1200-GigabitEthernet0/0/1]undo pppoe-client dial-bundle-number 1
[AR1200-GigabitEthernet0/0/1]ip address dhcp-alloc
[AR1200]undo ip route-static 0.0.0.0 0.0.0.0 Dialer1
这里把之前做的PPPOE去掉,改成简单的DHCP模式,跟目前家庭网络其实差不多,更容易理解
#互联网设备整改
[internet]interface g0/0/1
[internet-GigabitEthernet0/0/1]ip address 192.168.1.1 24
[internet-GigabitEthernet0/0/1]dhcp select interface
[internet]undo ip route-static all
Warning: This operation may lead to the deletion of all the public IPv4 static routes and their configurations. Continue? [Y/N]:y //去掉所有静态路由
现在已经获取到地址了,也可以访问到外网的百度服务器,但是下面是无法访问的,配置下NAT,来看看它是如何实现的。
(2)NAT相关配置
#ACL匹配需要NAT转换的流量
[AR1200]acl number 3000
[AR1200-acl-adv-3000]rule
permit ip
在华为路由器配置里面,它是需要先定义一个规则的,这个规则的作用是匹配哪些内网网段能够做NAT转换,也就是该列表里面的允许转换,如果不在则不允许,而这个规则匹配工具就叫做ACL(Access Control list,访问控制列表),它的作用非常广泛,在NAT里面它就起到一个匹配的作用。
#命令解析
#ACL匹配需要NAT转换的流量
[AR1200]acl number 3000
[AR1200-acl-adv-3000]rule permit ip
在华为路由器配置里面,它是需要先定义一个规则的,这个规则的作用是匹配哪些内网网段能够做NAT转换,也就是该列表里面的允许转换,如果不在则不允许,而这个规则匹配工具就叫做ACL(Access Control list,访问控制列表),它的作用非常广泛,在NAT里面它就起到一个匹配的作用。
#命令解析
acl number 3000:这条命令的作用是定义一个高级ACL,ID编号范围是3000~3999,高级可以匹配源目IP、源目端口号、协议类型等参数,在实际中用的最多,也最推荐用这种。
rule permit ip:这个命令的作用是定义规则,一个ID编号里面是可以匹配N多规则的
• rule 后面跟动作,其中permit为匹配(抓取)的意思
• ip表示整个IPV4全部匹配,其实它是一条简化命令,完整是rule permit ip source any destination any,平时可以省略不写
整体下来这条ACL的作用就是匹配(抓取)所有ipv4数据。
#NAT转换配置
[AR1200]interface g0/0/1
[AR1200-GigabitEthernet0/0/1]nat outbound 3000
这条命令的就是做NAT转换,但是这里注意outbound表示是出去的方向,也就是从内网进从外网出,其中3000就是上面定义的acl number 3000,这里只需要输入ID即可,整体命令的意思是,ACL 3000里面规则匹配上的进行NAT转换。(目前这里ACL是全部匹配)
(3)开始测试
访问成功了,现在是互联网设备没有回程路由的(注意服务器DNS与HTTP服务开启)
(4)NAT是如何实现内网访问外网的
开启互联网接口的抓包以及出口路由器G0/0/0口抓包,然后来看看NAT是如何实现访问的
出口路由器G0/0/0口的抓包,过滤下,输入tcp or dns
互联网G0/0/1口的抓包,不知道大家第一眼看过去有没有发现不一样的地方
这个地址就是出口路由器对接互联网接口获取到的地址,源地址是从192.168.255.1变成了192.168.1.254了!来看看具体是如何实现的
1、PC2发起DNS请求,经过办公区一交换机的二层转发、A核心的三层转发,以及出口路由器的三层转发
查询路由表交给互联网处理,该路由是DHCP模式,自动从运营商设备获取到的
2、出口路由器在发出的时候,发现接口配置了NAT转换
有了nat outbound 3000这个配置存在,路由器会查询ACL 3000的规则,发现是全部匹配,就会执行一个操作,NAT转换
抓包对比可以发现,源地址:192.168.255.1变成了192.168.1.254,源端口:49153变成了3624,其余的目的IP与目的端口号是没有变化的。
并且路由器会记录这个转换记录在NAT 会话中(原始的五元组信息:源IP、目的IP、源端口、目的端口、协议,以及转换后的源地址以及源端口号),它的作用待会就能体现了,但是,这里模拟器有一个小问题,它的端口号记录的是不对的,跟抓包的完全对应不上的,真机是没这个问题的,转换后,把这个数据从G0/0/1发送出去,交给互联网。
3、互联网设备收到以后,查询路由表直接发现目标地址是直连,直接把数据交给服务器处理。
4、服务器收到DNS请求后,开始回应,告诉客户端 www.baidu.com ,对应的地址是61.128.1.1
将这个回应交给网关处理,就从网卡发出去,值得注意的是,服务器回应的地址是192.168.1.254(出口路由器的接口地址)
5、互联网收到这个数据包后,查询目的地址,查询路由表,发现是直连网段,直接丢给出口路由器
6、关键的来了,出口路由器收到以后,发现是给自己的,但是它发现自己的G0/0/1口是有NAT功能配置的,于是查询是否有NAT会话表
路由器只要发现NAT会话里面有对应匹配(比如这里目的地址是192.168.1.254,端口号是10258的,就会匹配第二条,自然就会把192.168.1.254转换成192.168.255.1,端口号变成2312,当然这个模拟器的NAT会话不对,但过程是这样的)
抓包对比,从互联网交给出口路由器的回包,目的地址是192.168.1.254,目的端口号是3624,经过出口路由器后,出口路由缓存了NAT会话信息,该数据包匹配了NAT会话的信息,它执行一个操作,NAT还原,把192.168.1.254还原成192.168.255.1,目的端口号3624还原成49153,这个就是就是路由器保留这个会话信息的作用,如果说路由器只执行转换操作,而不去生成这个NAT会话信息,那么导致的情况是,数据包回来的时候,路由器发现找的是自己,但是自己并没与去DNS请求,就把数据包给丢弃了,导致内网无法得到响应,也可以看出来NAT会话信息的重要性,后续排错会经常查看会话表。
转换后,出口路由器查询路由表,发现192.168.255.1属于直连路由,直接从G0/0/0口发出去,交给192.168.250.1处理,然后核心A经过三层转发,交给办公区1交换机,同样执行二层转发交给PC2,至此PC2就得到了www.baidu.com 对应的IP地址了,剩下的流程是一样的,发起SYN,关键的地方就在于出口路由器的NAT转换。
有用的信息汇总与经验分享
(1)通过上面的分析知道,之所以内网能够去访问到外网资源,就是出口路由器做了NAT技术,NAT技术在实际中有两种分类,目前我们这篇接触到的叫做源NAT技术中的NAPT(网络地址端口转换),从上面抓包可以看到,在经过出口路由做了NAT配置的接口,源地址以及端口都会被转换,所以这个技术叫做源NAT--NAPT。
(2)数据包经过出口路由器的时候,接口配置了nat outbound 3000,路由器会查看ACL 3000里面的规则来进行转换,那转换的是哪个地址呢?就是接口的地址
从抓包也可以看出来,内网的192.168.255.1经过出口路由器后被转换成了192.168.1.254,这种直接使用接口获取的地址进行转换的在实际中用的最多的,通常的场景是能上外网的地址只有一个的情况下使用这种方式,像DHCP从猫获取只有一个可上网地址,PPPoE拨号获取到的也只有一个地址,所以我们直接在接口下面配置nat outbound后面跟对应的ACL ID即可,它就会利用接口获取(配置)的地址进行转换,这种方式叫做Easy IP,这个只是一个称呼,每个厂商不太一样,记住它的作用即可。
(3)在回顾之前说过的运营商不会去在乎你内网是如何配置的,它也不会写回程路由,第一个是因为内网使用的是私网地址,运营商没法写,第二个是运营商知道在企业的出口,都会去配置NAPT技术,把内网的IP信息转换成运营商能够正常回包的地址。比如上面的环境,就像家庭网一样,猫出来分配192.168.1.0/24的网络,电脑或者路由器接下面就可以直接上网,因为猫能够处理该网段的信息,同样的上面的出口路由器从互联网那获取了一个地址192.168.1.254,这个互联网是知道这个地址在哪的,它能够去处理与转发,最终内网的192.168.255.1或者其他网段过来转换成该地址,就自然能够穿越互联网抵达服务器那了,换个角度看,它就像换了一个”马甲”伪装了一样,从始至终互联网设备看到的都是192.168.1.254在发数据,是看不到内网里面真实的地址信息的,所以NAT技术还有一个特性是隐藏地址真实信息。
(4)出口路由器在进行NAPT转换以后,在NAT信息中会保存一份记录,叫做NAT会话信息表,它的作用就是记录当前的该会话把源地址以及端口号转换成了多少,当该数据从外网返回的时候,出口路由器能够正常的处理,它可以依据之前生成的会话信息表,来还原成之前的信息。
这里要注意,很多初学者卡在这,觉得为什么要还原呢?,PC2在发起DNS请求的时候,源端口是自己随机生成的(抓包看到得是49153),目的端口是53,它本地会维护这样一个会话,等待服务器的返回,记录的信息就是对应的端口号信息,如果这个时候外网返回的不进行还原,第一个目的地址互联网返回的是192.168.1.254,而不是192.168.255.1,第二个互联网返回的端口号是转换后的3624,实际PC2随机的端口号是49153,这两个是缺一不可的,否则会导致该通信就失败了,这就是要还原的原因,也是为什么要生成这样一个NAT会话表的作用,就是为了后续的数据包能够正常的还原信息返回。
(5)NAT会话信息并不是永久存在的,它有一个生存时间,不同的协议与应用生存时间不一样
通过display firewall-nat session aging-time可以查看,也可以通过firewall-nat session 修改时间
多个内网网段它是如何转换的?
在上面我们只测试了192.168.255.1访问,实际内网有很多内网都需要去访问外网的很多资源,那假设同时用PC2以及client2都去访问61.128.1.1,能不能通呢?
重新抓互联网G0/0/1接口的数据
测试没有问题
过滤一下,只看DNS,有两次请求,两次回应,自然有一个是PC2,一个是client2的,这是经过路由器NAPT转换,所以源地址都变成了192.168.1.254了
源地址都是一样,因为现在出口路由器就一个可上网地址,自然都转换的192.168.1.254,区别不一样的就是源端口,一个是3112,一个是3624,这个就是NAPT的核心机制了,不同的内网终端在经过出口路由器的时候,执行NAPT转换,接口地址只有一个都转换成192.168.1.254,端口号随机转换成不一样的,这样就能够很清晰的区分,当服务器回应这两个请求后,抵达出口路由器的时候,可以根据对应的端口号信息来进行区分,到底哪个回应给PC2的,哪个是回应给client2的,还原成会话信息表中之前的信息进行回复,这样保证只有一个可上网地址的情况下,多私网用户可以上网。
其他外网对接方式如何调用(PPPoE与静态)
#静态专线调用NAT
interface GigabitEthernet0/0/1
ip address 219.135.2.55 255.255.255.192
nat outbound 3000
这个跟DHCP模式是一样的,直接物理口调用即可
#PPPoE拨号调用NAT
interface Dialer1
link-protocol ppp
ppp chap user ccieh3c
ppp chap password simple ccieh3c.com
ppp pap local-user ccieh3c password simple ccieh3c.com
mtu 1492
tcp adjust-mss 1452
ip address ppp-negotiate
dialer user ccieh3c
dialer bundle 1
nat outbound 3000
这个有点特别,在拨号接口调用,因为实际可上网的地址在拨号口上,而不再物理口
相关文章:
内网是如何访问到互联网的(华为源NAT)
私网地址如何能够访问到公网的? 在上一篇中,我们用任意一个内网的终端都能访问到百度的服务器,但是这是我们在互联网设备上面做了回程路由才实现的,在实际中,之前也说过运营商是不会写任何路由过来的,那对于…...
华为无线AC、AP模式与上线解析(Huawei Wireless AC, AP Mode and Online Analysis)
华为无线AC、AP模式与上线解析 为了实现fit 瘦AP的集中式管理,我们需要统一把局域网内的所有AP上线到AC,由AC做集中式管理部署。这里我们需要理解CAPWAP协议,该协议分为两种报文:1、管理报文 2、数据报文。管理报文实际在抓包过程…...
奖励模池化
奖励模池化 奖励模型概述 奖励模型(Reward Model)在机器学习,特别是强化学习领域中被广泛使用。它的主要作用是**对智能体(Agent)的行为进行评估并给予奖励。**例如,在训练一个机器人执行任务时,当机器人的动作符合预期目标(如成功抓取物品、按照正确路线行走等),奖励…...
基于django协同过滤的音乐推荐系统的设计与实现
一、摘要 随着现代音乐的快速发展,协同过滤的音乐推荐系统已成为人们业余生活的需求。该平台采用Python技术和django搭建系统框架,后台使用MySQL数据库进行信息管理;通过用户管理、音乐分类管理、音乐信息管理、歌曲数据管理、系统管理、我的…...
Tiptap,: 富文本编辑器入门与案例分析
Tiptap 是一个现代的富文本编辑器,基于 ProseMirror 打造,旨在提供一个灵活且功能强大的文本编辑解决方案。它具有开箱即用的能力,同时也允许开发者根据业务需求进行高度定制化扩展。与传统的富文本编辑器相比,Tiptap 提供了更精细…...
使用Linux的logrotate工具切割日志:Tomcat、NGINX(journal文件清理)
文章目录 引言I Tomcat日志切割配置轮转参数验证码II NGINX访问文件的配置和切割access.log 访问日志的配置使用Linux的logrotate工具切割日志验证文件切割III /run/log/journaljournalctl文件清理引言 journal文件清理: 只保留过去两天,清理之前的文件 journalctl --vacuu…...
CSS系列(11)-- 滤镜与混合模式详解
前端技术探索系列:CSS 滤镜与混合模式详解 🎨 致读者:探索视觉效果的艺术 👋 前端开发者们, 今天我们将深入探讨 CSS 滤镜与混合模式,学习如何创建独特的视觉效果。 滤镜效果详解 🚀 基础滤…...
linux - 存储管理
1.了解硬件 -- 磁盘 硬盘有机械硬盘(HDD)和固态硬盘(SDD) 接下来,主要以机械磁盘为例(更具代表性,在linux系统层面,无论是机械磁盘还是固态硬盘,文件的读取和写入都iNode(索引节点)管理文件的元数据和实际数据块) 1.盘片&#x…...
在 Kibana 中为 Vega Sankey 可视化添加过滤功能
作者:来自 Elastic Tim Bosman 及 Miloš Mandić 有兴趣在 Kibana 中为 Vega 可视化添加交互式过滤器吗?了解如何利用 “kibanaAddFilter” 函数轻松创建动态且响应迅速的 Sankey 可视化。 在这篇博客中,我们将了解如何启用 Vega Sankey 可视…...
styled-components 库的用法介绍和实践总结
styled-components 库的实践用法总结 前言 前段时间开发了一个 NiceTab 浏览器插件,并写了一篇介绍文章,新开发了一款浏览器Tab管理插件,OneTab 的升级替代品, 欢迎品尝!。 在插件中用到了 styled-components 这个库,于是做一个基本的介绍和分享。 在开发 NiceTab 插件…...
SSE(Server-Sent Events)主动推送消息
说明 使用Java开发web应用,大多数时候我们提供的接口返回数据都是一次性完整返回。有些时候,我们也需要提供流式接口持续写出数据,以下提供一种简单的方式。 SSE(Server-Sent Events) SSE 是一种允许服务器单向发送事…...
pandas.core.frame.DataFrame怎么进行对象内容的读写
在 Python 中,pandas.core.frame.DataFrame 是 Pandas 数据库的核心数据结构,可以方便地读取和操作表格数据。以下是几种常见的读取内容的方法: 读取特定列 通过列名获取数据。 # 假设 df 是一个 DataFrame data df["列名"] # …...
短作业优先调度算法
一、实验目的 了解并掌握作业调度的功能,熟悉并掌握各种作业调度算法。 二、实验内容 模拟实现SJF调度。 设置作业体:作业名,作业的到达时间,服务时间,作业状态(W——等待,R——运行,F——完成)…...
SpringBoot 应用并发处理请求数的深入解析
SpringBoot 应用并发处理请求数的深入解析 一、引言 在现代Web开发中,了解一个应用程序可以同时处理多少个并发请求是至关重要的。 对于基于Spring Boot构建的应用程序来说,这个问题的答案并非绝对,而是取决于多个因素,包括但不…...
MetaGPT中的教程助手:TutorialAssistant
1. 提示词 COMMON_PROMPT """ You are now a seasoned technical professional in the field of the internet. We need you to write a technical tutorial with the topic "{topic}". """DIRECTORY_PROMPT (COMMON_PROMPT "…...
介绍一款docker ui 管理工具
http://vm01:18999/main.html 管理员登陆账号 jinghan/123456 ui启动命令所在文件夹目录 /work/docker/docker-ui 参考链接 DockerUI:一款功能强大的中文Docker可视化管理工具_docker ui-CSDN博客...
0022 基于SpringBoot的婚纱摄影线上预约系统的设计与实现
电子商城系统 1.项目描述2. 绪论2.1 研究背景2.2 目的及意义2.3 国内外研究现状 3.需求分析4.界面展示5.源码获取 1.项目描述 摘 要 本文旨在研究并开发一套基于Spring Boot框架的婚纱摄影线上预约系统,以满足现代婚纱摄影行业对高效、便捷、个性化服务的需求。该系…...
uni-app在image上绘制点位并回显
在 Uni-app 中绘制多边形可以通过使用 Canvas API 来实现。Uni-app 是一个使用 Vue.js 开发所有前端应用的框架,同时支持编译为 H5、小程序等多个平台。由于 Canvas 是 H5 和小程序中都支持的 API,所以通过 Canvas 绘制多边形是一个比较通用的方法。 1.…...
Comparator.comparing 排序注意
1. 对数字型字符串排序 List<String> values new ArrayList<>();values.add("10");values.add("6");values.add("20");values.add("30");values.add("50");//方法1 (正确的排序方法)//倒…...
PPO系列3 - PPO原理
On Policy: 采集数据的模型,和训练的模型,是同一个。缺点:慢,生成一批样本数据,训练一次,又要重新生成下一批。 Off Policy: 采集数据的模型,和训练的模型,不是同一个。有点…...
.idea
.idea/ 文件夹下的文件和目录主要用于存储 JetBrains IDE(如 PyCharm、IntelliJ IDEA 等)的项目配置。下面是一些常见文件和目录及其作用的详细介绍: 1. workspace.xml 用户界面布局:保存了IDE窗口布局,包括打开的文…...
单片机:实现呼吸灯(附带源码)
单片机实现呼吸灯详细解读 呼吸灯是一种常见的灯光效果,广泛应用于电子产品、汽车、家居照明等领域。其基本特性是通过逐渐增亮和减弱的方式,使得灯光呈现出“呼吸”的效果,给人一种平缓、舒适的视觉感受。在嵌入式系统中,呼吸灯…...
PostgreSQL数据库序列信息查询
PostgreSQL序列信息查询 说明: 在PostgreSQL数据库中序列和表都是序列的对象。 数据库中不应该存在孤儿序列,序列应该和表对应的字段绑定起来。绑定后删除表或表对应的字段后,序列会自动被删除。 创建测试表和序列 create table test_t(…...
【Linux】Nginx一个域名https一个地址配置多个项目【项目实战】
👨🎓博主简介 🏅CSDN博客专家 🏅云计算领域优质创作者 🏅华为云开发者社区专家博主 🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入!…...
Linux驱动开发(12):中断子系统–按键中断实验
本章我们以按键为例讲解在驱动程序中如何使用中断, 在学习本章之前建议先回顾一下关于中断相关的裸机部分相关章节, 这里主要介绍在驱动中如何使用中断,对于中断的概念及GIC中断控制器相关内容不再进行讲解。 本章配套源码和设备树插件位于“…...
代码随想录-算法训练营-番外(图论02:岛屿数量,岛屿的最大面积)
day02 图论part02 今日任务:岛屿数量,岛屿的最大面积 都是一个模子套出来的 https://programmercarl.com/kamacoder/0099.岛屿的数量深搜.html#思路往日任务: day01 图论part01 今日任务:图论理论基础/所有可到达的路径 代码随想录图论视频部分还没更新 https://programmercar…...
20 go语言(golang) - gin框架安装及使用(一)
一、简介 Gin是一个用Go语言编写的高性能Web框架,专注于构建快速、可靠的HTTP服务。它以其速度和简洁性而闻名,非常适合用于开发RESTful API。 高性能:Gin使用了httprouter进行路由管理,这是一个轻量级且非常快速的HTTP请求路由器…...
重生之我在学Vue--第3天 Vue 3 模板语法与指令
重生之我在学Vue–第3天 Vue 3 模板语法与指令 文章目录 重生之我在学Vue--第3天 Vue 3 模板语法与指令前言一、数据绑定1.1 单向绑定1.2 双向绑定 二、常用指令2.1 v-bind2.2 v-model2.3 v-if2.4 v-show2.5 v-for2.6 v-on 三、事件处理与表单绑定3.1 事件处理3.2 表单绑定 前言…...
电脑win11家庭版升级专业版和企业版相关事项
我的是零刻ser9,自带win11家庭版,但是我有远程操控需求,想用windows系统自带的远程连接功能,所以需要升级为专业版。然后在系统激活页面通过更改序列号方式,淘宝几块钱买了个序列号升级成功专业版了。但是,…...
docker 架构详解
Docker架构是基于客户端-服务器(C/S)模式的,包含多个关键组件,以确保容器化应用的高效构建、管理和运行。以下是对Docker架构的详细解析: Docker 架构概述 Docker 架构采用客户端-服务器(C/S)…...
网站排版设布局/如何搭建网站
背景知识视频教程了解消息队列遥测传输(MQTT) - 国外课栈viadean.com掌握MQTT - 国外课栈viadean.com使用NodeMCU(由ESP8266支持),MicroPython和PyCharm进行物联网 - 国外课栈viadean.com了解服务器安全如果我们…...
dedecms 网站根目录/谷歌优化是什么意思
一直很喜欢电脑,开始只是打打游戏,后来逐渐对网络技术产生了兴趣,2001年的中美民间网络战,更激发了我学习网络安全技术的渴望,平时都是逛论坛,看帖子自学,跟着帖子里教的动手去做,有…...
电子商务网站怎么做/网站排名怎么做
2012年12月24日15:51:14 第一次修改 2011-09-10晚上,开始准备些成人高考数学的试题,上网找了半天,发现都是有水印的,于是心头火起,决定想办法把水印干掉。凭着上学期上过的一点数字图像处理,倒腾了两个小时…...
电子商务网站设计书/企业网站策划
目录 一、长按与短按 二、单击与双击 一、长按与短按 在按键按下的时候,即key_down下降沿开始计时。给定一个计时时间,如果在这个计时时间之内检测到了key_up上升沿,即按键松开,则为短按。如果在这个定时时间内没有检测到key_up…...
阿里云的网站空间/磁力狗在线
本篇博客通过一个简单的登陆小样例来入门,简单了解一下struts2是怎样工作的: 第一步引入Jar包: commons-fileupload-1.2.1.jar,文件上传 commons-logging-1.0.4.jar,日志包 freemarker-2.3.15.jar,struts2的…...
如何自己做网站/百度站长管理平台
现在大多办公室都会给玻璃门贴上防撞条,也会选择在上面镂空或者喷印上公司logo,那么办公室玻璃门防撞条有几种款式呢?下面双潇玻璃贴膜就来为大家解答一下。办公室玻璃门防撞条的这几种款式你都知道吗?玻璃门防撞条设计一股有单条…...