Hexo迁移到Hugo

前言 春节在家闲着无事,想到博客多日未更新,想着小更一下,便开始在轻薄本上安装Hexo,但在安装过程中无意看到了一篇关于使用hugo搭建博客的文章,让我想起了身边一位大佬(链接在此)前段时间也在用hugo搭建blog,在看了几篇有关hexo和hugo对比的文章后,决定开始折腾一下。 安装 Hugo 直接上官网,根据自身系统找到对应安装方法,并且熟悉一下基本的操作,例如新建页面之类的。在本地运行hugo server后,在http://localhost:1313/ 便能查看到默认主题下的个人博客页面,到此Hugo便安装完成了。 主题 在官网上提供了将近三百个主题,我选择了papermod主题。安装过程也很方便,将其仓库clone到hugo的theme文件夹中即可。由于我的博客也作为一个仓库,因此将主题仓库作为博客仓库的子模块。 #下载并设置为子模块: git submodule add https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod --depth=1 #当重新克隆仓库时可能要用到 #git submodule update --init --recursive # needed when you reclone your repo (submodules may not get cloned automatically) #更新主题 git submodule update --remote --merge 参考了网上其他博主的做法,将主题中的layout和assert文件夹复制到站点(也就是根目录)下,因为hugo构建时根目录下的模板和样式优先级比主题里的高,因此会覆盖主题的配置,方便魔改,并且在主题更新时,可以再根据个人需求将旧版本主题的相关文件覆盖,从而实现平滑更新。 (ps. 下文的博客配置中提到的layouts或assert都是指复制到站点根目录下的文件夹,而不是主题中的同名文件夹) 最终本站的根目录结构如下:其中非自定义的都作了一些注释 . |-- README.md |-- archetypes (新建页面的统一格式,可自定义) |-- assets (papermod主题中复制过来的,包括js和css) |-- config.yml (站点配置文件) |-- content (放博客文章或自定义页面例如友链、搜索) |-- data (网站的一些数据,暂时没用到) |-- deploy.sh |-- i18n |-- layouts (papermod主题中复制过来的,包括各种页面模板) |-- public (执行hugo命令后生成,网站发布的内容) |-- resources () |-- static (网站的静态资源) `-- themes (网站主题) 部署 现在我是GitHub+Vercel+个人域名的方案,根据个人需求爱好选择就行了,网上也有很多教程,不再赘述。...

更新: 2022-08-18 · 创建: 2022-01-29 · 6 分钟 · McLsk888

移植admonition到Papermod

更新 最近有网友在移植过程出现了问题,最后发现是本人教程缺斤少两,少了一步字体文件的下载,十分抱歉,现补上。 前言 今天做笔记的过程中,感觉内容有点繁杂,希望有一个内容框可以适当囊括一些内容,在有需要的时候再展开阅读(例如一些概念性的东西),想起之前使用 Hexo 的时候看到过一些博主使用的 标签外挂 ,想着找找 hugo 是不是也有这个东西,于是开始了折腾。 admonition 模块 在经过了一段时间的 google 后,发现 hugo 貌似只有 LoveIt 里有这种类似的公告板模块:admonition ,是基于 hugo 的 shortcodes 实现的,于是打算将其移植到 Papermod 。 移植工作 直接去 LoveIt 主题的 GitHub 仓库 ,找到其使用的 模板 、 样式 和 JS文件 文件。LoveIt 主题的样式都是使用 SCSS 格式,而 Papermod 则是使用 CSS,在经过一波学习以后,读懂了文件中生成样式的循环代码,查看了 hugo 官方文档 后,我尝试直接使用 amonition.scss ,并且下载了其中所需要用到的 字体样式 (这里本来是使用官网的引用代码的,后来选择直接下载到本地),但发现 SCSS 没有被生成 CSS 并整合到网站的 CSS中,于是开始研究,最终不堪折磨 (为什么我这么菜) ,在舍友的建议下,直接将生成的 CSS 代码复制到本地的 shortcodes 里,这里放出 SCSS 代码及其需要的 CSS 代码 (以后有空再研究,或者有大佬可以研究一下(☆▽☆) variables.scss // ========== Admonition ========== // // Color map of the admonition $admonition-color-map: ( 'note': #448aff, 'abstract': #00b0ff, 'info': #00b8d4, 'tip': #00bfa5, 'success': #00c853, 'question': #64dd17, 'warning': #ff9100, 'failure': #ff5252, 'danger': #ff1744, 'bug': #f50057, 'example': #651fff, 'quote': #9e9e9e, ) !...

更新: 2022-11-13 · 创建: 2022-03-03 · 44 分钟 · McLsk888

WLAN安全策略——控制平面安全

安全策略的分类 WLAN的安全方案中,可以根据三个平面进行分类,分别是管理平面安全、控制平面安全和转发平面安全 WLAN安全策略,能够有效防止信息被窃取,防止未经授权的访问,提供稳定高效的无线接入。 篇幅受限,本篇笔记主要记录控制平面的安全策略。 控制平面的安全策略主要包括以下几个方面: 1. 无线用户接入安全 用户接入安全面向的就是STA上线过程中可能发生的安全问题。其安全策略主要包括WEP、WPA、WPA2、WPA3和WAPI等 WEP Wired Equivalent Privacy(有线等效加密协议),由802.11标准定义,采用RC4加密算法。RC4是一种密钥长度可变的流加密算法,系统生成24位的初始向量,WLAN服务端和客户端上配置40位、104位或128位密钥,将两者进行校验和得到最终用于加密的密钥为64位、128位或152位。 WEP安全策略主要涉及链路认证和数据加密 在STA上线过程中提到,链路认证分为开放系统认证和共享密钥认证。 在WEP中,如果选择开放系统认证,那么用户不需要任何认证,即可关联到该无线网络,关联上以后,可以选择是否进行数据加密,若选择数据加密,则要通过配置静态的共享密钥,实现数据加密。但是,在同一SSID下的用户,使用的是同一个静态共享密钥,因此安全性大大降低。 如果选择共享密钥认证,STA和AP需要预先设置好共同的密钥,AP在链路认证中验证两边的密钥是否相同。用户上线后,若要选择数据加密,则使用刚刚设置好的密钥进行加密,即链路认证和数据加密使用的是同一个密钥,同样地,同一个SSID下的所有用户都使用同一个密钥进行加密。 由于WEP共享密钥认证采用的是基于RC4对称流的加密算法,需要预先配置相同的静态密钥,无论从加密机制还是从加密算法本身,都很容易受到安全威胁。 WPA/WPA2 了解决这个问题,在802.11i标准没有正式推出安全性更高的安全策略之前,Wi-Fi联盟推出了针对WEP改良的WPA。WPA的核心加密算法还是采用RC4,在WEP基础上提出了临时密钥完整性协议TKIP( Temporal Key Integrity Protocol)加密算法,采用了802.1X的身份验证框架,支持EAP-PEAP、EAP-TLS等认证方式。随后802.11i安全标准组织又推出WPA2,区别于WPA,WPA2采用安全性更高的区块密码锁链-信息真实性检查码协议CCMP(Counter Mode with CBC-MAC Protocol)加密算法。 目前,WPA和WPA2都可以使用TKIP或CCMP加密算法,以达到更好的兼容性,它们在安全性上几乎没有差别。 WPA/WPA2安全策略涉及链路认证、接入认证、密钥协商和数据加密。 WPA/WPA2的链路认证只支持开放系统认证 接入认证 接入认证又分为企业版和个人版,区别就在于是否有单独的用户认证服务器用来对用户进行认证。 WPA/WPA2支持基于EAP-TLS和EAP-PEAP的802.1X认证方式 基于EAP–TLS的802.1X认证流程图: 基于EAP-PEAP的802.1X认证流程图: 数字证书 图中有讲到证书的验签,这里介绍一下数字证书的原理。 在通信过程中,为了确保通信的保密性,往往会使用一些加密算法对通信数据进行加密,例如对称加密、非对称加密算法等。而这些加密算法需要通信双方交换密钥,这里就存在一个问题,如果有一个中间人,冒充其中一方,与对方交换密钥,如果没有验证对方的身份,那么后续的通信就会被中间人所截获。因此,数字证书就是为了验证身份而产生的。 为了确认通信双方身份,需要一个权威的第三方来进行公证,例如CA,权威机构CA会颁布数字证书,让通信的双方通过这个证书来确认对方的身份。 下面以客户端C和服务端S通信为例,说明数字证书在中间的作用。 首先服务端S要到CA处申请一个数字证书。S首先自己生成一对公私密钥,将公钥 、组织信息、个人信息(域名等)一起提交给CA机构(不会提交私钥),CA机构拿到这个信息摘要后,查验其真实性、合法性,然后CA用自己的私钥给信息摘要签一个名(准确的说是先将信息摘要进行hash求散列值,再将散列值进行私钥签名),把该签名、申请人S组织信息和个人信息(信息摘要)、证书有效时间等,生成一个证书,发送回给服务端S。 S获取到证书后,便可以与其他客户端进行通信。 C向S发起通信请求,S会将获取的证书发送给C。C收到该证书,发现上面有CA机构的一个签名,使用CA机构的公钥(各大浏览器和操作系统会存放各大权威机构的公钥)进行解密,得到S的信息摘要的散列值Hash_A;同时,前面提到,证书上是有S的信息摘要的(明文公开的),C通过相同的hash算法(证书上也会写明),得到摘要信息的散列值Hash_B,通过对比Hash_A和Hash_B是否相等,即可判断服务端S身份是否合法。 若合法,C通过证书拿到了S的公钥,便可以进行后续的密钥交换和通信过程。 对于一些中小型的企业或个人,部署一台认证服务器成本较高,因此WPA/WPA2提供了一种简化模式,即WPA/WPA2预共享密钥(WPA/WPA2-PSK)模式,仅要求在每个WLAN节点(WLAN服务端、无线路由器、网卡等)预先输入一个预共享密钥即可。只要密钥吻合,客户就可以获得WLAN的访问权。由于这个密钥仅仅用于认证过程,而不用于加密过程,因此不会导致诸如使用WEP密钥来进行802.11共享认证那样严重的安全问题。 使用认证服务器时,PMK就是通过协商得到,若使用预共享密钥,则PMK=PSK。PMK会在后续的加密密钥协商中有很大用处。 密钥协商 该过程协商的密钥是指用于后续数据加密所用的密钥,该阶段定义了两种密钥模型: 一种是成对密钥层次结构(对应PTK,Pairwise Transient Key),主要用来加密STA与AP之间往来的单播数据; 一种是群组密钥层次结构(对应GTK,Group Temporal Key),主要用来加密STA与AP之间的广播或组播数据。 PTK和GTK的产生,是根据接入认证阶段生成的成对主钥PMK(Pairwise Master Key)产生。两个密钥的协商过程如下:...

更新: 2022-09-24 · 创建: 2022-02-23 · 2 分钟 · McLsk888

大型WLAN技术

VLAN Pool 把多个VLAN放在同一个池中并提供分配算法的VLAN分配技术 目前一个SSID只能对应一个VLAN,一个VLAN对应一个子网,如果大量用户从某一区域接入,只能扩大VLAN的子网,保证用户能够获取到IP地址。这样带来的问题就是广播域扩大,导致大量的广播报文(如:ARP、DHCP等)带来严重的网络拥塞。 基于此问题考虑,一个SSID需要能够对应多个VLAN,把大量用户分散到不同的VLAN,减少广播域。VLAN Pool提供多个VLAN的管理和分配算法,实现SSID对应多个VLAN的方案。 VLAN Pool有两种分配算法:顺序分配算法和HASH分配算法 顺序分配算法:把用户按上线顺序依次划分到不同的VLAN中,用户上下线用户VLAN容易变化,IP地址变更。 HASH分配:根据用户MAC地址HASH值分配VLAN,用户分配的VLAN固定,可能导致VLAN间用户划分不均匀,有的VLAN用户较多,有的较少。 分配VLAN的流程: 用户终端从某个VAP(Virtual Access Point,在物理AP上虚拟出多个AP,每个虚拟AP就是一个VAP)接入,判断该VAP是否绑定VLAN Pool 如果该VAP对应的模板绑定了VLAN Pool,使用VLAN Pool的分配算法分配一个VLAN,VLAN Pool根据分配算法进行分配 给终端分配一个VLAN 终端从分配的VLAN上线 应用举例: 漫游技术 WLAN漫游指的是STA在不同AP覆盖范围之间移动且保持用户业务不中断的行为 实现WLAN漫游的两个AP需要使用相同的SSID和安全模板,认证模板的认证方式和认证参数也要配置相同。 漫游相关概念 AC内漫游:如果漫游过程中关联的是同一个AC,这次漫游就是AC内漫游。 • AC间漫游:如果漫游过程中关联的不是同一个AC,这次漫游就是AC间漫游。 • AC间隧道:为了支持AC间漫游,漫游组内的所有AC需要同步每个AC管理的STA和AP设备的信息,因此在AC间建立一条隧道作为数据同步和报文转发的通道。AC间隧道也是利用 CAPWAP 协议创建的。如图所示,AC1和AC2间建立AC间隧道进行数据同步和报文转发。 漫游组服务器 STA在AC间进行漫游,通过选定一个AC作为漫游组服务器,在该AC上维护漫游组的 成员表,并下发到漫游组内的各AC,使漫游组内的各AC间相互识别并建立AC间隧道。 漫游组服务器既可以是漫游组外的AC,也可以是漫游组内选择的一个AC。 一个AC可以同时作为多个漫游组的漫游组服务器,但是自身只能加入一个漫游组。 漫游组服务器管理其他AC的同时不能被其他的漫游组服务器管理。也就是说如果一个 AC是作为漫游组服务器角色负责向其他AC同步漫游配置的,则它无法再作为被管理者接受其他AC向其同步漫游配置(即配置了漫游组就不能再配置漫游组服务器)。 漫游组服务器作为一个集中配置点,不需要有特别强的数据转发能力,只需要能够和各个AC互通即可。 家乡代理 能够和STA家乡网络的网关二层互通的一台设备。为了支持STA漫游后仍能正常访问家乡网络,需要将STA的业务报文通过隧道转发到家乡代理,再由家乡代理中转。 STA的家乡代理由HAC或HAP兼任,如图所示,用户可以选取AC1或AP1作为STA的家乡代理。 漫游类型 WLAN漫游分为二层漫游和三层漫游:...

更新: 2022-08-25 · 创建: 2022-04-22 · 1 分钟 · McLsk888

MPLS简介

什么是MPLS MPLS(Multi-Protocol Label Switching , 多协议标签交换)。传统的IP转发采用的是逐跳转发。数据报文经过每一台路由器,都要被解封装查看报文网络层信息,然后根据路由最长匹配原则查找路由表指导报文转发。各路由器重复进行解封装查找路由表和再封装的过程, 所以转发性能低。 与传统IP路由方式相比,MPLS在数据转发时,只在网络边缘分析IP报文头, 在网络内部采用更为离效的标签( Label ) 转发, 节约了处理时间。 MPLS位于TCP/IP协议栈中的数据链路层和网络层之间, 可以向所有网络层提供服务。 通过在数据链路层和网络层之间墙加额外的MPLS头部,基于MPLS头部实现数据快速转发。 MPLS相关名词 LSR 支持MPLS的路由器,称为LSR(Label Switching Router),位于MPLS域边缘、连接其它网络的LSR称为边沿路由器LER (Label Edge Router) ,区域内部的LSR称为核心LSR(Core LSR)。 除了根据位置对LSR进行分类,还可以根据LSR对数据处理的方式进行分类: 入站LSR (Ingress LSR) :通常是向IP报文中压入MPLS头部并生成MPLS报文的LSR 。 中转LSR (Transit LSR) :通常是将MPLS报文进行例如标签置换操作, 并将报文继续在MPLS域中转发的LSR 。 出站LSR (Egress LSR) :通常是将MPLS报文中MPLS头部移除,还原为IP报文的LSR 。 FEC FEC(Forwarding Equivalence Class,转发等价类)是—组具有某些共性的数据流的集合, 这些数据流在转发过程中被网络节点以相同方式处理。 在MPLS网络中,FEC可以通过多种方式划分,例如基于目的IP地址及网络掩码、DSCP等特征来划分。 数据属于哪—个LSP,由数据进入MPLS域时的Ingress LSR决定。 MPLS标签通常是与FEC相对应的,必须有某种机制使得网络中的LSR获得关于某FEC的标签信息。 在传统的采用最长匹配算法的IP转发中,匹配到同一条路由的所有报文就是一个转发等价类。 在MPLS中,关于FEC最常见的例子是:目的IP地址匹配同一条IP路由的报文被认为属于同一个FEC。 LSP LSP ( Label Switched Path , 标签交换路径)是标签报文穿越MPLS网络到达目的地所走的路径。...

更新: 2022-08-24 · 创建: 2022-03-24 · 2 分钟 · McLsk888