反向代理:从 NginxProxyManager 到 Nginx
坑边闲话:反向代理作为应用部署过程中极为关键的一环,在现代互联网应用中发挥了巨大的作用。 1. 反向代理简介· 反向代理是一个非常有用的网络服务工具,它可以作为一个中介站在客户端和服务器之间,接收客户端的请求并将这些请求转发给后端的服务器。当后端服务器返回响应时,反向代理会再次作为中介,将响应传回给客户端。这种设置有多种用途,以下是一些关键点,你可以在博客中使用: 负载均衡:反向代理可以将来自客户端的请求分发到多个服务器,确保每个服务器的负载都保持在一个合理的水平,从而提高整体的服务性能和可靠性。 缓存:反向代理可以缓存后端服务器的响应。当多个客户端请求相同的内容时,反向代理可以直接从缓存中提供响应,而不必每次都从后端服务器获取,从而加快响应速度。 安全和匿名性:反向代理可以隐藏后端服务器的真实 IP 地址和身份,为后端服务器提供一个额外的保护层。此外,它还可以作为一个应用层防火墙,阻止恶意请求。 SSL 终端:反向代理可以处理 SSL/TLS 握手,释放后端服务器的负担,使其专注于处理应用逻辑。 内容压缩:反向代理可以压缩从后端服务器返回的内容,从而减少传输的数据量,加快...
解决 WireGuard 网络 Windows SMB 访问问题
坑边闲话:将 WireGuard 部署在 OpenWrt 等内网网关上是个好的思路,但是 Windows 的 SMB 文件和打印机服务一直不允许非本地网段的流量发起访问。本文将介绍相关的解决方案。 1. 问题原因· Windows 10 等系统因为安全问题,防火墙策略比较严格,因为这种个人系统一般不会对外提供服务。 Windows Server 2022:SMB 服务请求可能被来自互联网,因此 src_ip 是任意的。 Windows 10:本机一般只是个人使用,不用做服务器,因此 SMB 服务只能被来自本局域网的机器访问,src_ip 必须是内网地址,其他地址都会被 DROP. 2. 解决方案· 解决方案有两种: 更改 Windows 10 的防火墙策略 将 WireGuard 来的流量在 OpenWrt 端做动态伪装,即做一次 SRC NAT. 接下来,我从 SMB server 角度和 OpenWrt 网关角度,提出两个可行的方案。 2.1 更改 Windows 10 的防火墙策略· 在搜索里找到高级安全 Windows Defender 防火墙,以管理员身份打...
OpenWrt 22.03.5 源码编译:修改 AdguradHome 至最新版本
坑边闲话:OpenWrt 的稳定版一直比较保守,RC 要 4~5 轮才放出正式版,而正式版中的关键组件更新也很保守。目前 22.03.5 的 AdGuardHome 版本很老旧,除非开机后通过命令行手动升级,否则很难直接搞定。最麻烦的是配置文件 /etc/adguardhome.yaml 不能向下兼容,即老版本软件无法解析新版本的配置文件。此外,软件升级需要连接外网,没有了 AdguradHome 做 DNS 也很成问题。 1. 下载最新版 linux-amd64 二进制· 该文件可以在 GitHub 官方仓库里找到,通过 wget 直接下载: 1wget https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.36/AdGuardHome_linux_amd64.tar.gz 在 OpenWrt 编译流程里,package 的 Makefile 依赖的源代码一般是一个 URI 链接,在编译时通过 curl 或者其他工具在线拉取。从某种意义上看,OpenWrt 也是一种符合 gentoo 思想的发...
我的个人平台:存储、网络与计算
坑边闲话:或许是出于心理因素,我一直认为只有将数据和服务放在自己的机器上才是可靠的。虽然我十分依赖 Dropbox、坚果云、iCloud 等公有云服务,但是我能保证,在失去了这些服务后,我的个人数字生活并不会受到很大的冲击。本篇文章详细介绍我的私人数据平台的细节,其中不乏我的思考和经验。 1. 明确需求· 需求永远是第一位的,它可以决定 存储模型 网络带宽要求 可访问性 举例来说,对于影视飓风这种公司,他们的存储需求与客户量非常大的 web 服务内容提供商有着明显区别,因此在选择存储服务的时候,两者有着天差地别的不同。 我本人的存储需求比较简单,主要包含下列模块: AppData 里包含我个人使用的 Docker 容器的运行时所需存储,如图 2 所示。 Backup 存放个人备份数据,理论上这个数据集应该坚持异地备份,但是本地留一个备份也无可厚非。 CloudStorage 下全都是 zvol, 用来当作 Dropbox、坚果云、OneDrive 本地同步盘的存储 target. 由于同步网盘的一大功能就是实时自动同步,因此在某个同步节点开启快照功能,将有助于在云发...
OpenWrt 设置多个 WireGuard 接口
坑边闲话:WireGuard 作为下一代 VPN,基于 UDP 传输。我的理解是最好不要直接使用 WireGuard 做连接,而是把它当作某个大解决方案的内核使用。比如把 containerd 当作 K8S、docker 的核心组件。毕竟,直接使用 WireGuard 门槛非常高,而某些场景需要动态调节 MTU,这在手动配置的情况下几乎是不可实现的。 1. WireGuard 是什么?· WireGuard (简称 wg) 是一个简单、快速且现代的虚拟专用网络(VPN)技术,提供了高效、安全和轻便的解决方案。相比于其它 VPN 协议,如 OpenVPN 和 IPsec,WireGuard 的代码更少、更易于审计,并且速度更快。 主要特点 简单性:它的代码基础小,使得审计更容易。 高性能:采用最新的加密技术。 现代的加密技术:包括 Curve25519、ChaCha20、Poly1305 等。 跨平台:支持 Linux、Windows、macOS、BSD、iOS、Android 等。 无状态:没有传统的会话概念,每个数据包都是自包含的。 重要的时间节点 2016:Wire...
(写作中) Usenix Security 2023 论文阅读
前言:Usenix Security 2023 的 Summer、Fall 季度投稿已经产生了所有的 accepted paper. 其中不乏非常有趣的标题。 1. Fuzz· Fuzztruction: Using Fault Injection-based Fuzzing to Leverage Implicit Domain Knowledge 作者是 Nils Bars,来自德国鲁尔大学-波鸿 (RUB). To realize this concept, we propose a set of compile-time and run-time analyses to mutate the generator in a targeted manner, 151 个 unique crashes (Automated deduplication) 27 bugs 4 CVE 12 Generator ---> Consumer(Formated data) 2. Firmware Analysis· to be done 3. Network·...
Git 高级教程:重点讲解
前言:Git 作为版本控制工具在全球的开发者(游戏除外)中得到了广泛的使用。加深对 Git 的理解,有助于规范化开发流程,降低合作开发的成本,减少合作时误操作的产生。 1. 编辑相关· 1.1 git diff 相关的算法· 在 Git 中,我们会利用内置的算法对文件进行操作,普通 add、commit 涉及的数学算法并不多。但是如果产生了冲突,或更普遍的文件修改,Git 就需要知道文件发生了哪些修改。 文件更新和冲突标记其实是一个原理,区别在于前者是在一个 commit 链上进行,有着严格的前后时序关系,因此 Git 会很自信地将老版本的内容更新为新版。但是如果基于同一个 commit 产生了两个有冲突的分叉,当我们合并这两个分叉的时候就产生了冲突。这时 Git 不再自信,它需要我们人工介入,按照程序员的意愿修改完冲突,随后再合并。因此,文件更新前后的版本对比和冲突时的 diff 标记,使用的算法是一致的。 在此,我们隆重介绍 Meyers 算法。该算法来自于 Eugene W. Myers 的一篇十五页的论文:An O(ND) Difference Algorithm a...
Debian 12 升级与配置恢复教程
前言:2023 年 6 月 10 日,Debian 正式升级到 12 bookworm 版本。代号:书虫。不得不承认,Debian 是最为重要的 Linux 发行版之一,许多知名的 Linux 发行版也是基于 Debian,如 Ubuntu、TrueNAS SCALE 等。 注意,Debian 12 的升级过程相对比较简单,而且该版本经过了为期一年的测试,稳定程度已经相当可观,因此除非有特殊需求(或者太懒),建议升级。 1. 升级到 Debian 11 最新版· 最近的 debian 11 apt 上游貌似进行了更新,因此可以将 /etc/apt/sources.list 修改为以下最新版: 12345678910111213141516# /etc/apt/sources.list# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free# deb-src https://mirrors.tuna...
VSCode Clangd 插件配置实战
前言:许多程序员青睐 Visual Studio 或者 Jetbrains IDEs,主要是因为这些开发环境有着很良好的代码提示、代码补全、代码检查、语法高亮。这篇文章将揭开“智能提示”,并给出 VSCode 环境下开发 C/C++ 程序的最佳实践。 1. 编译系统· 很多初学者可能只用过单文件编译,比如把所有的函数都写在一个文件里,然后通过 main 作为 entry 进行调用。后面再做复杂项目的时候,就已经用上了 IDE,因此对于 IDE 做了哪些工作以及为什么要做这些工作,程序员缺乏理解。 一般我们认为编译系统由下面四个部分组成: 前处理(PreTask) 编译前需要拉取最新代码,比如 build-root 编译系统中需要拉取 package 对应的最新代码库或指定哈希值的提交版本。 编译链接(Task) 后处理(PostTask) 某个目标编译完成,需要将之移动(move)到某个特定目录以便于执行下一步操作。 改变某个文件的权限标记。 可选的打包与安装 packaging install 1.1 现有的编译组织总结· 第 0 代,(shell)...
ANTLR4 教程 p1:概论
前言:ANTLR4 作为一个编译器前端的生成器,具有非常高的应用价值。可谓是编译器涉及领域少数必学工具之一。 今天以一个 demo 作为出发点,讲解 ANTLR4 的要点: ANTLR4 是什么? ANTLR4 怎么用? ANTLR4 能做什么? 1. ANTLR4 是什么· ANTLR 的全称是 ANother Tool for Language Recognition,官方定位为 Parser Generator,即解析器的生成器。很多计算机术语翻译成汉语就显得很奇怪,这或许也是汉语言文化没有孕育出自然科学的一大问题。解析器指的是对语言进行结构的工具,常见的目的是将语言拆分成多个相关的语素,一般的生成目标是 Parse Tree,即语法解析树。 1234565+6 ADD / \ / \ 5 6 比如,5+6 在人看来是一个普通的算术式,但是在计算机看来就是一个字符串。能否通过计算机将之解析成一种结构?如 加数, +, 被加数。答案很显然是可能的。 如果定义一种语言:任意组合的、带算术优先级的代数式。我们能否写出解析器?答案也是可行的。下面举几个...
NFS 配置 p1:基于可信网络
前言:NFS 是一种文件系统级别的共享,在 UNIX/Linux 环境里应用非常广泛。 尽管 NFS 的配置在很多系统管理员眼里是非常简单的,但是常规的 NFS 简单配置并不能保证合理的用户认证、多用户识别。网上很多教程对 NFS fstab 表项的小参数也解释得不够清楚,本文尝试做一个较为深入的 NFS 教程。 服务端 TrueNAS SCALE Debian 12 客户端 Debian 12 1. NFS 服务端配置· 在配置之前需说明,目前 NFS 没有很简便的认证、加密方案,本文介绍的 Kerberos 配置相对比较复杂。如果没有特殊需求,可以考虑使用 iSCSI 块网络存储、SMB 文件网络分享。 1.1 TrueNAS SCALE NFS 共享· 在一般存储网络中,NFS Server 都是由专业 NAS 系统担任。本节先以 TrueNAS SCALE 为例进行图形化的讲解。 1.1.1 配置 TrueNAS SCALE NFS 服务参数· 在 System Settings -> Services -> NFS 里,进行如下图的配置。...
iSCSI 配置
前言:iSCSI 作为最通用的块存储协议,在数据中心、计算集群里获得了广泛应用。 iSCSI 协议的配置比 NFS、SMB/Samba 等常见的文件共享协议要复杂很多,其中涉及到 target、initiator、session 等多个概念,本文尝试从服务端和客户端两个角度进行配置。 服务端 TrueNAS SCALE Debian 12 客户端 Windows 10/Server Debian 12 1. iSCSI 服务端配置· iSCSI 的配置非常复杂,介绍复杂系统一般有两种写作方法。第一种是先介绍前置知识,然后介绍技术流程,第二种是在技术流程中随机插入需要的前置知识。前者体系性较好,但是容易让读者在阅读前期理解困难。后者从流程出发,故事线漂亮,但是缺乏对知识的梳理。本文采取第一种介绍流程。因此为了保证准确理解 iSCSI 服务端配置过程中的一些术语,我要对下面几个词组进行解释。 Portals 指的是存储区域网络(SAN)中的一个网络位置,由 IP 地址和 TCP 端口(一般是 3260)构成,可以把它想象成一扇门,后面是 initiator 可...
深入理解 Python 虚拟环境
前言:Python 作为一个优秀的解释型语言,在各个计算机细分领域都有着广泛的运用。然而 Python 不同版本之间的细微不兼容性使得 Python 解释器、第三方库的管理变得很困难。 为了解决依赖问题,Python 社区发明了许多方法。本文从三个角度出发,试图解释清楚新手面对 Python 虚拟环境时经常遇到的困惑。 Python 虚拟环境是如何创建的 系统如何识别并套用某个虚拟环境 Python 虚拟环境有哪些实现且推荐使用哪个虚拟环境管理器 1. 如何理解 Python 虚拟环境· 现阶段有若干个 Python 虚拟环境生命周期管理方法,这里列举较为常用的两种: conda virtualenv Python 虚拟环境(Isolated Environment)看似神秘,实则非常简单,它的存在依赖于两种 Linux 对象: PATH 环境变量 独立的 Python 虚拟环境对应的目录 使用下列命令可以输出环境变量: 1echo $PATH | sed 's/:/\n/g' | sort 查看不同虚拟环境下 PATH 环境变量的差异。 fu...
查看硬盘 S.M.A.R.T. 温度
前言:在 TrueNAS SCALE 上面监控磁盘温度挺简单,但是批量查看磁盘温度操作颇为繁琐,本文提供一个相对简单的脚本,方便用户使用。 1. 确定磁盘入口· 在 Linux 系统中一切都是文件,因此独立的磁盘也被认为是文件。通过查看 /dev/disk/by-id 目录(下称 by-id 目录)可以知道目前接入了哪些物理磁盘。by-id 目录里的文件,大多以如下前缀命名: nvme-,表明这是 NVMe 固态硬盘 ata-,表明这是 SATA 硬盘 scsi-,表明这是 SAS 硬盘 wwn-,World Wide Naming,一般用来给 SATA 和 SAS 硬盘取独立串号的时候使用。 /dev/disk/by-id 目录下存放的均是软链接,所有设备均指向 /dev 目录下的块设备描述文件。 注意,使用 CrystakDiskInfo 无法识别 SAS 硬盘。 2. 生成 Python3 脚本· 使用 Python 进行运维管理是非常方便的,因为 Python 的数据结构比较高级,因此编程时更符合人的逻辑思维。Bash/Zsh 的数据结构太过简陋,要实现较为复杂的...
Linux Zsh 环境配置
坑边闲话:Zsh 的配置笔者用了许多年,丰富的生态和现代化的配置,使得 Zsh 的体验非常良好。2023 年国庆之后,我把 Zsh 的配置用模块化的方式重新维护了一遍,更加贴合日常习惯。本文介绍我的 Zsh 配置文件,重点讲解总体架构和设计思路。 毫无疑问,Bash 依旧是 Linux shell 编程的首选。但是,Zsh 的强大生态和丰富插件却吸引了越来越多用户去使用。 选择 Shell 类语言进行编程不是个好的方案,因为它在流程控制方面有先天的弱势,可用的高级数据结构接近于无。在进行复杂脚本编程时,我习惯用 Python,其中会调用短的系统命令完成任务执行,但是将流程控制交给 Python 解释器。因此对我而言,选择什么 Shell 不是难题,因为我不用 Shell 编程。 Shell 是用户与 Linux 内核进行交互的重要中间件,Shell 一般通过 exec 系列命令生成新的进程执行 shell script,进而完成用户的意图。Shell 程序可以从命令行中获取参数、命令,也可以通过 stdin (一般是文件)获取输入,两者在功能上是等价的。Zsh、Bash 等...
Windows Terminal 配置
坑边闲话:忆往昔岁月,不堪回首,伟大的 Windows 竟然拿不出一个像样的终端模拟器。mintty.exe 和封装后的 cmder 之流,总是有各种问题,而且不兼容 emoji 字符。后来,全网 Windows 用户随着一个华丽的广告沸腾了,微软宣布了终端软件 Windows Terminal 的开发进程,而且开源!如今,Windows Terminal 正式版已经陪伴我们走过了很长一段时间,其稳定性和易用性已经非常不错,关键是颜值相当高。如果你是一个追求完美与和谐的 User,那么请跟上我的步伐,我们重新起航! 知乎原文 重要提醒:本文的所有配置经过无数网友的多重考验,请勿在配置过程中突发奇想而走弯路,一定要认真阅读每一个段落、每一个句子! 1. 相关软件下载与安装· 为保证后续配置过程顺利,用户需要将所需要的软件、字体下载到本地。 1.1 Windows Terminal· 相信这一步对大多数人不构成任何困难,Microsoft Store 里搜索 App 名称并下载即可。 如果你下载的版本低于 v1.18,则需要到 GitHub 仓库下载最新的 Releas...
TexLive 安装指南:实机版
坑边闲话:每年的清明时节,除了期待已久的假期,还有 TeXlive 套件的更新。今年(2023)的 3 月 11 日,texlive-2023 如期而至。为了书写简介,文中一律使用 texlive 作为标识符,而不采用 TeXLive 等 LaTeX 专有的表示方法。 知乎原文: v2019.May.03 v2020.Apr.28 v2021.Apr.04 1. 下载镜像· texlive 2023 的下载速度可以做到飞快,因为我们有国内镜像。所谓镜像,也就是 mirror,指的是国外网站的一个完整拷贝,这份拷贝被放在国内,服务于中国用户。笔者常用的镜像网站是清华大学的金枪鱼镜像网站,在该网站下,可通过 CTAN 条目找到具体的 iso 镜像下载地址。 点击上图中红框里的文件,或者将 HTTPS 链接复制到迅雷,即可满速下载。 2. 安装 texlive 2023· 略。 环境变量: 1234export MANPATH=/usr/local/texlive/2021/texmf-dist/doc/man:${MANPATH}export IN...
使用 ebtables 接入 IPv6 公网
坑边闲话:细心的伙伴可能留意到,我删除了最近一期的视频。大家可能感到疑惑,毕竟标题非常炸裂,效果可以说是杀手级的。这里我解释一下。 哔哩哔哩原文 1. 视频下架的原因· 首先,这个视频里我的北邮人 ID 没有打码,违反了北邮人社区公约。其实主要是我懒,现在不像 2020 年初疫情在家那么闲,没时间对视频做剪辑,只能尽量用通俗易懂的话表达清楚,同时附上尽可能详尽的博客、视频描述。 其次,虽然通过 ebtables-legacy 命令在以太网层次实现校园网 IPv6 接入很棒,而且我已经用了一周多了,效果非常稳定。但是,这里面存在安全隐患。这相当于把外网接到内网里来,而且是利用了 IPv6 + IPv4 双栈分离的特性,所以 OpenWrt 的防火墙是拦不住的,所有的基于转发的过滤规则都不起作用。这必然给骇客攻击留下了后门,毕竟 LAN Zone 是我们的后花园,允许另一个属性的生物自由出入,肯定不是个好事情。虽然我现在还不清楚有什么隐患,但是我知道这并不是 Best Practice. 主要是因为第二点,我下架了视频。 2. 原教程指南· 如果你确实对校园网 IPv6...
九评 iPhone 14 Pro
坑边闲话:手机这玩意儿太复杂,但是也太普通,所以我一般不会测评。今天简单谈谈换机的体验。 从 iPhone X 64G 银色升级到 iPhone 14 Pro 256G 银色。 1. 质感拉满的扬声器· 手机要实现立体声其实挺难的,毕竟下部的喇叭和顶部的喇叭尺寸一般不同,因此保持两个声道的响度一致是困难的。之前的 iPhone X 也算可以,但是 iPhone 14 Pro 有质的提升,声音非常饱满,个人已经听不出有什么不对称了。 在这种麦克风、扬声器领域,苹果的升级从来都是不可忽视的。 2. 灵动岛可能是最没有感受的变化· 灵动岛给人的感受像是过山车: 发布会的动画震撼世界:交互和硬件设计的完美结合 到手后:有点难看,阳光下容易看到“卸妆照” 用了一段时间:感觉貌似还行。 目前我觉得灵动岛基本没什么感知上的障碍,反而觉得一代刘海挺宽,影响左右两个小耳朵内的内容呈现。毕竟灵动岛处于手机上部,眼睛不会经常聚焦在这里。如果你仔细观察就会发现,自己注视的 main focus 是屏幕中间,上下边框的存在感挺低的。 不过能把刘海做窄确实是个大好事,交互上升级一下也很不错。看得出苹...
西部数据 SN850X 缓存设计分析
坑边闲话:感觉这个 SN850X 的 SLC 策略挺有意思的。 老第一号哔哩哔哩视频 前两天研究了一下 ZFS 的 ARC 策略,它大体是这样的。ARC 原本是 IBM 的专利算法,后来被 ZFS 改进升级,能支持不同的 Block Size,而且 Cache 块指针的类型可以在 LRU 和 LFU 之间切换[1]。 西部数据这个挺有意思,感觉创新性很大。尽可能把数据驻留在 SLC 状态的闪存里会提升读取速度,毕竟 SLC 比较简单,译码的时候无须主控调动复杂的纠错码。但是到底要不要采用 ARC 机制就不好说了。ARC 是加速读取,用各种动态适应性算法保证 LFU 和 LRU 都能驻留在 Cache 里,而不是像传统算法那样只能保证其中一种的可用性。 不过话说回来,这个 SLC/TLC 之间的缓存策略挺复杂。ZFS ARC 仅仅是读缓存,ARC 失效不会影响到 data vdev 里的数据。但是固态里的 SLC 和 TLC 一般是没有包含关系的。SN850X 动不动就 850MB/s 的缓外可能就是这个地方没处理好,导致有些数据频繁在 SLC 和 TLC 里挪动,所以也有...
雷电 4 时代的繁荣
坑边闲话:春节回家,仿佛与科技生活隔离了。不过趁着春节刚过去,赶紧给大家分析一下我的一些见解。此前我做过很多扩展坞的视频,今天打算简单说说选择雷电 4 扩展坞的一些细节。 哔哩哔哩原文 1. 明确 JHL7440 和 JHL8440 的差异· 从字面上看,JHL8440 是 JHL7440 的取代者,但是从支持的引脚端口上看,两者并不是简单的新旧版本升级关系。 从本质上看,雷电扩展坞的强大 USB 性能、UHS II 读卡器性能都是 USB 通道的特点,与雷电本身关系不大。一个 JHL7540/8540 控制器本身就提供一个完整的 USB 控制器,所以雷电接口上接入的 USB 设备能充分发挥应有的带宽。而某些纯 USB 的扩展坞因为上游的 USB 是来自南桥的集成控制器,所以性能稍微有点弱。 不太恰当地说,USB 扩展坞上的 USB 是南桥预留 hsio 来的,而 MacBook Pro 等电脑的雷电控制器里的 USB 是独立于南桥的,其上游带宽更充足。要高性能 USB 扩展而不需要雷电的朋友,可以买个 USB 3.2gen2x2 的扩展卡,直接插在直连 CPU 的 ...
RTX 3090 PCIe 3.0 不同通道数量性能测试
坑边闲话:坑边闲话:快过年了,家里什么年货也没买,就剩一张 RTX3090 Vulcan OC,那么是插 PCIe 3.0 x8 好呢还是插 PCIe 3.0 x16 好呢?废话,有条件当然是插 PCIe 3.0 x16 咯。但是两者差别大吗?让我们一起来看看。 哔哩哔哩原文 作为一个 X299 的老用户,虽然我 PCIe 版本老,但是我通道数量多啊!M.2 扩展卡、U.2 扩展卡、显卡、万兆网卡、SAS-RAID 卡任君选择。 然而,事情的真相是主板的 PCIe slot 插槽数量、带宽分配方式都决定,你不能随便插。就比如我这个某嘉的主板有四条 PCIe 插槽,从上到下分别是 x16_A x8_B(与 x16_B 共享带宽) x16_B x8_C 其中后缀为 B 的共享带宽,用 switch 芯片做切分,且 x16 的优先级更高。于是总带宽就是 16 + 16 + 8 + (4 + 4 两个 M.2) 共计 48 lane,正好全部利用到位。相邻插槽之间是两槽宽度。于是庞大的 3090 最好是插在 x16_A 上,这样你的 3090 会挡住 x8_B,但是 x16...
Docker 容器技术 p1:安装与常用命令
坑边闲话:容器技术作为微服务的底层,现已融入到开发、部署里。在许多教学场景下,教师为了方便学生集中注意力于课程实质,一般会提供配置好的开发环境并打包为容器镜像,然后进行统一发布。容器的底层细节非常复杂,而且只有在 Linux 内核下才有较为良好的实现,macOS 等 UNIX 和 Windows NT 目前只能靠底层安装一个 Linux 虚拟机的形式提供容器服务。Linux 容器技术缩写为 LXC. 然而本文不尝试从容器技术的前世今生开始逐步探讨,而是试图提供一个快速上手的引导。 知乎原文 1. 安装容器系统组件· Container 技术发展了这么多年,已经较为成熟。最初的容器技术是由 docker.io 这家公司搞出来的,后来诸多行业大佬发现这块蛋糕无比巨大,十分有必要把它从 Docker 公司手里抢过来。于是 EMC、Redhat 等大牌公司联合起来,搞了个开放容器组织 OCI,试图架空 docker 公司在容器技术上的话事人角色。另一方面,Docker 公司的 Docker 产品确实存在一些问题,比如需要一个 docker-daemon 守护进程,而且 docke...
雷电技术将何去何从
坑边闲话:纵论 Thunderbolt,老湿玩过的设备可能比大多数网友都多一些,玩过十来个扩展坞,硬盘盒也不计其数,显卡坞也玩过几个。但是 Thunderbolt 4 时代,可谓是市场乏力。今天老湿谈谈未来走向。先说明,这篇文章被打脸毫不意外,我在这里只是说说个人想法。 雷电 3 时代有很多出色的雷电设备,不计其数的硬盘盒,迭代了两种网络控制器的雷电 3 万兆网卡(最新的是 Aqc100 系列,支持 M1 Mac,老款芯片不支持),从单控制器到双雷电控制器的显卡坞。说句俗话就是雷电是个筐,什么都能往里装。 雷电转换成 PCIe 标准插槽之后,可不就是你想插入什么外设都可以吗,前提是你的电脑有驱动。我就见过有些人玩过雷电转 PCIe ,然后插一个双口的 HPE 544+FLR 40Gb 网卡。而雷电 3 采集卡(4K 60Hz 采集)等玩意儿也不新鲜了。 可以说雷电 3 时代的雷电外设市场是非常给力的!产品遍地开花,玩家不亦乐乎。 1. 雷电 3 末期,产品同质化严重· 在雷电外设遍地开花之后,很多小厂也入坑了。因为 intel 怕外设厂商设计能力不足,所以给出了不少参考设计,...
IPv6 中继的正确姿势
坑边闲话:Moments: 这又是一个全新的系列,平时发的动态也挺老长,有字有图。不如多写点直接弄成一篇水的一笔的博客吧! 哔哩哔哩原文 在之前的小愿望 IPv6 DHCP 模式下,我想进所有办法让 OpenWrt 把 IPv6 relay 给弄起来了。尽管可用,但是并不好用。我的视频还吸引了好多小白入坑,实在是良心过意不去。当然,这一切的锅都要推给校园网工作人员技术不行。 今天我们看看家庭环境 PPPoE 的拨号上网是怎么搞定 IPv6 地址分发的。 其实这个真的很简单,我们要做的有两步: 在光猫里启用 IPv6,不管你光猫是拨号还是桥接模式,都可以选择启用 IPv6 在光猫桥接的情况下,我们直接在 OpenWrt WAN 口输入宽带账号密码,拨号成功后,自动生成 WAN_6 接口(DHCP 模式不会自动生成该接口),然后我们就可以愉快使用 IPv6 了。而且是每个设备都有一个 IPv6 公网地址,连你家的烤面包机都有。是不是很棒棒呢! 在光猫拨号的情况下,也不要担心。我们只需要设置一个 WAN6 接口,协议为 DHCPv6,然后在这个 WAN6 上配置中继,并设...





























