利用 Cloudflare Tunnel 实现服务公网发布
坑边闲话:中国的网络建设人为地施加了很多限制,比如没有公网 IP,比如封锁 80、443、445 等常用端口,比如将上行限制到一个低到离谱的速率。别问,问就说是防止电信诈骗!然而,在某些正经需求面前,端口被封锁还真的玩不转。何解?且看本文!
1. 中国网络的局限性·
在传统的存储、网络、计算三元组中,存储和计算一般都是在内网中部署,网络可分为内网和外网两个部分,彼此的架构完全不同。外网一般看重的是
路由全球可达性
上下行速率
1000 以下的端口可用性
很遗憾,中国在这三个方面可谓是遥遥落后:
我们无法访问国际互联网,国际互联网要想访问中文互联网的资源也面临相当的门槛;
中国民用宽带上行速率极差,千兆宽带配 30Mbps 上行非常普遍;
常规端口被封锁,导致无法发布 web 服务。
如果想要托管 web 服务器如私人 blog,则只能选择 GitHub pages 静态发布或购买昂贵的云服务器。然而,赛博菩萨 Cloudflare 提供了一种神奇的解决方案,可以让你在没有 web 端口甚至是没有公网 IP 的情况下,自由发布自己的 web 服务。
2 Cloudflare ...
关于 iPad Pro M4,这次真的不想做视频了
坑边闲话:关于 iPad Pro M4,这次真的不想做视频了。
哔哩哔哩原文
iPad Pro 在我眼里是苹果最差劲的、最有前途的产品,苹果可能自己也不明白要做一个什么样的终端产品。
乔布斯没有给 iPad 一个很明确的定义,毕竟当初就是想做一个便宜的、大号的 iPhone,以此作为家庭娱乐的便利终端,顺便可以让饭店帮食客点菜。现在苹果可能想把 iPad 做成一个高级的带屏幕的手写板,然而这大大限制了它的用户群,毕竟平面设计是绝对的小众群体。
此外,Wacom 在这个领域要比苹果专业得多。
iPhone 是个绝对大众化的产品,Pro 和数字版没有太大差别,无非就是摄像头、高刷而已。
MacBook Pro 的最有价值用户群和 MacBook 的用户群的人群分布是类似的,随便一网下去,你总是能捕获到相似比例的 MBP 和普通 MBA 用户。
但是 iPad Pro 和 iPad 的用户群并不是。
在教室里,你一网下去,上来的几乎都是 iPad(甚至都不是 Air);
但是在某个设计室,捕获上来的可能全是 iPad Pro.
苹果给了太多独占功能给 iPad Pro,却对广 ...
使用 FreeFileSync 同步文件的正确姿势
坑边闲话:FreeFileSync 是一款久经考验的文件备份工具,与 FastCopy 相比它并不是很快,但是它支持的模式更加复杂一些,所以在对性能要求不高的场景下,FreeFileSync 依旧是首选。
1. 备份哲学·
FreeFileSync 的本质是一个同步软件,对用户来说,同步与备份可能有着完全不同的语义。
同步:保持两个文件夹完全一致,典型的应用场景就是配置文件、软件本体的同步。
备份:将源文件夹的内容补充到目的文件夹,目标文件夹里的所有东西都要得到保留。典型的场景是相册备份。
FreeFileSync 支持多路径、多备份配置文件,实际效用非常好。
2. 软件备份·
电脑上绝大多数软件都是安装模式,即通过一个引导程序将自己安装到磁盘中,并根据系统模式确定配置文件、缓存文件的存放位置。一般配置文件会存放在 AppData 或者家目录,缓存文件一般会放在 AppData 目录。然而,有一部分绿色文件的配置文件会随同程序本身存放在一个文件夹中,为此我们需要手动管理这些软件的版本、配置文件。软件二进制版本是随升级而变化的,因此需要同步;配置文件可能因机器而已,因此部分配置文 ...
如何正确安装 Windows 系统
坑边闲话:Windows 是现代生活里非常重要的软件,它占据了绝大多数的桌面环境。本文以生态成熟且稳定性较高的 Windows 10 为例,讲解安装系统的正确方法。
1. 核心问题·
Windows 的安装是非常简单的操作,但是按照官方的步骤操作,会在以后的维护过程中遇到极为不利的场景,以下是几个例子:
在一个 2TB 的巨大 SSD 上不分区,然后安装系统。这样做非常简单粗暴,用起来最为简便,因为这种环境里不存在分区的概念。然而,系统一旦崩溃,就需要对整个硬盘里的重要数据进行备份,代价比较大,而且在备份完之前不能进行系统安装。
现在市面上绝大多数笔记本电脑和台式机都可以安装两个及以上的 M.2 固态硬盘,用户可以选择 512GB 系统盘搭配 2TB 数据盘的方式进行组合使用,优点是比较灵活,缺点是带来了略高的发热及功耗。但是在重装系统时,将会失去系统盘里的所有数据,包括 AppData 里面的所有缓存数据。此外,很多软件默认把对用户不可见的缓存、配置放在 C:\Users\YOURNAME 目录里,这些数据对用户来说至关重要,盲目格式化重装可能也会丢失这部分数据。
以上两个场 ...
通过 Tailscale 搭配 CNAME DNS 实现内网服务外网访问
坑边闲话:最近在搭建一些内网服务,比如 Gitea、JupyterLab、Portainer 等,但这些服务均部署在内网环境,无法通过公网访问。所以我就想到了使用 Tailscale 搭配 CNAME DNS 实现内网服务外网访问的方法。这样我本人在接入 Tailscale VPN 之后,就可以在任何地方通过公网访问到内网的服务了。
1. Tailscale 简介·
Tailscale 是一个基于 WireGuard 协议的 VPN 服务,它可以让你轻松地在多个设备之间建立安全的连接。Tailscale 有一个非常大的优势,就是它可以穿透 NAT,所以你可以在任何地方都能访问到你的设备。
2. Tailscale 安装·
Tailscale 支持多种平台,包括 Linux、Windows、macOS、iOS、Android 等等。你可以在 Tailscale 官网 上找到对应的安装方法。这里我以 Linux 为例,介绍一下 Tailscale 的安装方法。
2.1. Linux 安装·
Tailscale 提供了一个脚本,可以帮助你安装 Tailscale. 你可以使用下面的命令来 ...
Windows Server 2022 配置 Mellanox 网卡 RDMA
坑边闲话:在高性能计算的互联解决方案中,Mellanox 家的产品一直是首选之一,甚至没有之一。基于 TCP/IP 的存储共享网络也可以从 Mellanox 技术获益,实现较高的 I/O 带宽和较低的延迟。
我们以 Windows Server 2022 为例,讲解如何配置基于 RDMA 的 SMB 文件共享。
1. SMB Direct·
2. 配置 Windows Server 驱动·
2.1 开启 Windows Server DCB 数据中心桥接功能·
IEEE 802.1 数据中心桥接(DCB)是一系列标准。DCB 的主要目的是让局域网和存储区域网络能在数据中心的同一个网络上运行。比如,同一台交换机可以同时承载普通以太网流量与存储流量。DCB 通过定义不同的链接级别,实现了 FCoE 和 iSCSI 等技术。同一台交换机承载不同类型的以太网流量本身就是天经地义,然而在存储和高性能计算领域,应用对延迟、丢包率的容忍度较普通流量更低,因此交换机不仅要提高性能,而且要有更先进的拥塞控制算法、QoS 算法。
DCB 有以下核心功能:
基于优先级的流控制,即 PFC(Priori ...
ZFS 性能测试
坑边闲话:ZFS 的文件测速一直是一个老大难问题,因为它涉及到了复杂的缓存系统。缓存系统的存在,使得对文件系统做贴近原生接口速度的测试非常困难,用户在测试的时候往往是在测缓存,而非是真正的磁盘。
12345678910111213sudo fio \ -filename=fio.bin \ -direct=1 \ -ioengine=libaio \ -rw=write \ -bs=128k \ -size=128G \ -numjobs=16 \ -iodepth=32 \ -runtime=180 \ ...
存储迁移:zfs send recv 还是 rsync?
坑边闲话:存储系统随时面临扩容的考验。在不重建存储池的情况下,使用 ZFS 自带的 expansion 方案也是可行的。然而 data vdev 变多之后,占用量不均衡的现象很令人烦恼。这种不均衡拉长了 scrub 所需时间,限制了 I/O 并行度。要彻底解决这个问题,唯一可行的方案就是数据迁移。
1. ZFS 添加阵列的弊端·
在传统认知里,RAID 重建是很危险的操作。比如我们可以往 RAID-5 里添加硬盘,此时会产生一次重建:RAID 卡会按照一定的原则,将原阵列中的一部分数据和校验值分摊到新的硬盘上,使得新阵列的所有硬盘具有相同的容量占用。由于重建过程耗时良久,而且系统会进行高强度的读后写,导致磁盘处于高负载状态。一旦出现高温或电源供给不稳定,极容易造成阵列损毁。在机械硬盘时代,阵列重建过程耗时非常久。尽管 SSD 可以让重建工作变得更高效,但这依旧是个麻烦,而且会带来服务降级,甚至造成服务的中断。
作为对比,ZFS 支持实时扩容。ZFS 的操作很简单,当目前的存储池占用达到 80% 左右的时候,系统提示告警。当然,80% 只是一个常见值,用户可以自行设定阀值。在收到告警 ...
在命令行中使用 ZFS 相关命令
坑边闲话:TrueNAS 提供了良好的 ZFS 使用体验,但是频繁使用 Web 界面并非是一个令人舒适的事情。我的原则是,与存储相关的问题尽量在命令行里解决。此外,将 Debian 系统配置为一个理想的存储服务器是很吸引人的,但这依旧需要用户对存储管理的命令行有深入的理解。
本文包括但不限于以下内容;
ZFS 打快照、删除快照
ZFS 存储吃创建
ZFS 文件系统创建与销毁
ZFS 文件系统的参数调整
1. 安装 ZFS 相关组件·
Debian 或者 Ubuntu 等 Linux 发行版不具备 TrueNAS 的网页图形化界面,因此操作 ZFS 时颇为繁琐,为此我们做简单介绍。
1.1 常规安装·
在 Debian 12 的 的 stable 上游中,zfs-linux 的版本比较老旧,很多新的特性无法支持。为此,我们需要使用 bookworm-backports 中的 zfs-linux.
首先确保在 apt 配置文件里开启了相关上游,即确保下面的行存在:
12deb http://deb.debian.org/debian bookworm-backports main ...
内网 IP 地址分配规划
坑边闲话:在内网中我们一般使用 DHCP 对设备进行地址分发、网关分配、DNS Server 分配。其中,地址是最常用的。虽然 IP 地址可以通过本地的 DNS 服务解决,但是能有规律地对设备进行静态地址分发却是一个很有用的功能。
1. 为什么要对 IP 地址这么重视?·
面对标题中的问题,很多网络老手可能都觉得没有意义,因为 DHCP 的出现就是为了解放网络管理员。但是这并不代表 DHCP 就是最好的。对于某些设备,我们既希望它能有一个固定的 IP 地址,同时又能够保持一定的自动化。
保持固定 IP 地址,就能在不知晓主机名的时候推断出设备类型,也能快速推断出有哪些未授权设备被分发了地址。
当移动设备漫游到其他网络的时候,使用同一套地址分配策略,也能给机器分配合适的主机名。
1.1 网段选择·
为了保证最高的自由度,我们选择在内网里使用 10.0.0.0/8 的内网段。假设该网段按照点分十进制表达为 10.a.b.c/8,则
使用 a 字段表明位置,如实验室、国外的实验室、宿舍、家等
使用 b 字段表明机器,如 r740-rack,z690-desktop,x1e-lapt ...
使用 Harbor 管理个人容器镜像
坑边闲话:容器是现代开发、运维都要学习的技术,开发人员要让应用的逻辑尽可能地做到可水平扩展、可监控状态,运维人员要尽可能地将服务以云原生的方式部署并实现高可用。在这个过程中,镜像管理非常重要,这涉及到软件的供应链安全,也关系到整个 DevOps 的流程顺滑性。
1. Harbor 简介·
在使用容器的时候,我们实际需要的是进程。进程是一个动态的概念,它需要某些二进制代码、可执行文件。后这就是我们说的 Application. 在传统环境中,我们需要到软件官网将程序下载下来,然后装入内存,得到一个动态的进程。使用容器部署任务与此类似,毕竟容器只是加了更强的隔离属性的进程。容器所需要的代码软件就是镜像。
这么说也不完全,毕竟容器在生成的时候可以指定目录映射,将本地的可执行程序映射到容器空间。但是传统的以容器为软件持久化存储的环境中,软件只来自于镜像,不来自于本地的文件映射。
因此,镜像与软件有相似的属性,也面临相似的问题。比如,容器也面临网络传播的体积限制,我们总是希望打包出来体积越小越好。此外,软件的供应链安全也是一个敏感话题,如何对镜像进行签名也是一个绕不开的问题。
如何才能像 ...
curl 教程
坑边闲话:wget 和 curl 在命令行下载文件时很常见。然而,curl 的诸多参数很复杂。
curl 发展自 1998 年,算是一个相对年轻的工具。它本身就是一个迷你的浏览器,可以请求 HTTP 内容,因此下载文件也不在话下。
此外,curl 还是一个开发库,它提供了若干个在 HTTP 开发时需要用到的组件。
-L 重定向·
如果页面发生重定向,则 curl 也会继续请求重定向后的内容。
重定向是个危险的操作,因此如果包含发送 secret, curl 不会将 secret 发送给重定向后的服务器。
可通过 --max-redirs 设置重定型的深度。
-o·
--output,将网络返回的数据写入文件,而非写入到 stdout.
由于 curl 支持解析自定义脚本,因此用 -o 参数时可以编程。
-O·
--remote-name
-O 经常用来做临时下载,它会将远程资源的文件名解析出来,并以此创建本地文件。
--output-dir·
当 -O 或 -o 指定时,该参数才生效。
1curl --output-dir "/tmp" -O https://e ...
英语词汇学习 s2
坑边闲话:作为一个中国人,而且是语言能力偏弱的人,我学习英语的时间可能比各位读者都要久,但是我的英语水平并不是很高。至少在我 27 岁将近(还有十几天)的时候,我感觉自己与英语母语者交流还是有一定的障碍。**自高中毕业,系统学习英语的时间变少了,我感到很惭愧。**但是我大学到研究生,写了很多有益的博客,提升自我同时分享了知识。为什么不能把自己英语学习的笔记、思考写成博客呢?
甚至,还可以借助 ChatGPT 啊!这一切是多简单。
Disposition·
很容易记忆:
dis, 表示否定
position,位置(超级熟悉)
然而,disposition 并不表示未知错误。属于让人望文生义的词汇。
名词:性格,倾向。
A man of a good disposition. 一个性情良好的男人。
记忆:在一个错误环境中才能表现出真实的品性、性格、倾向。
法律:对财产的处置权
Napoleon had railway at his disposition. 拿破仑有铁路可以利用。
HTTP 请求头,用于指示资源如何被展现,特别是在下载文件时需要指定。Content-D ...
英语词汇学习 s1
坑边闲话:作为一个中国人,而且是语言能力偏弱的人,我学习英语的时间可能比各位读者都要久,但是我的英语水平并不是很高。至少在我 27 岁将近(还有十几天)的时候,我感觉自己与英语母语者交流还是有一定的障碍。**自高中毕业,系统学习英语的时间变少了,我感到很惭愧。**但是我大学到研究生,写了很多有益的博客,提升自我同时分享了知识。为什么不能把自己英语学习的笔记、思考写成博客呢?
甚至,还可以借助 ChatGPT 啊!这一切是多简单。
1. 词汇 20K·
以下是曾经读过的论文里不认识的单词。我尽量做点笔记,把这些词记住。
aesthetically·
要记住这个词很简单:
aes,学密码的太熟悉不过,AES 高级加密算法
the,定冠词
tically,你肯定记得住
aesthetic 是形容词,审美的,美学的,艺术的。
发音 /iːsˈθetɪk/
adhere·
[v] 遵守
如何记忆:只能在这里(here)贴广告(ad),这个规矩你要(遵守)
常见搭配
adhere to,遵守某规则制度
It is important to adhere to r ...
Unix 命令行环境配置
坑边闲话:我曾经看到无数人对 Linux 图形化桌面十分地依赖,哪怕是跑编辑器应用都愿意在 Ubuntu 桌面里,而不愿意使用 VSCode Remote Dev. 我甚至这一切只是形式,但是我更愿意相信,优雅简单、贴近底层的方法才是美妙的。
Linux 和 macOS 本质上都是 Unix,只不过前者是净室实现,后者是一脉相承。至于 Solaris 等小型机系统我没有使用过,FreeBSD 等系统因为驱动匮乏也没有进入我的参考列表。所以,本文以
macOS
Debian 12
为例,简单介绍如何使用 Terminal 搭建良好的开发环境。
1. 个人电脑的选择·
1.1 硬件选择·
在 2023 年十月这个档口,我个人认为,个人计算机相较 2015 年(也就是我读大一的时候)已经有了长足的进步。当年只有权贵才能拥有的 8 核心 i7 5960X 处理器,其性能竟然能被 miniPC 轻松吊打。
最佳实践
经过测试,零刻 GTR7 32GB 内存加 1TB 固态硬盘版本,可以轻松完成我以下任务:
使用 Acrobat DC Pro 阅读 20 页以内的 PDF 格式的论文; ...
qBitTorrent 服务部署实战
坑边闲话:下载文件是现代人必备的技能之一,虽然现在流媒体服务越来越流行,但是在内容审查越来越严格的当下,掌握 P2P 下载技能十分必要。
1. P2P 下载服务·
自从互联网诞生之初就有了文件传输需求,后来随着 MP3 等音频文件的出现,快速共享音乐文件成为了彼时互联网的刚需。当年传输几百 KB 的音频对于低速互联网是个挑战,今天的互联网虽已有了长足的进步,千兆下行带宽已经普及,但是下载动辄数十乃至上百 GB 的 VR、4K 内容依旧对中心服务器的带宽产生了巨大的挑战。虽说此一时非彼一时,但道高一尺魔高一丈。科技进步催生了新的需求,新的需求又带来只有新科技才能解决的问题。
P2P 下载,本质就是为了文件共享而生。它依赖中心服务器做控制平面,但是不依赖中心服务器做内容获取,反而是从其他节点获取文件。因此,所谓的 PT/BT 文件下载,并非是严格意义上的 P2P 网络,但是它解放了中心化的内容分发服务器。
当我们的电脑启动 P2P 服务之后,我们可以通过 Torrent 种子里嵌入的 Tracker 服务器信息,往服务器注册自己的的意向,同时,服务器也会反馈给我们当前种子里列出的文件在 ...
Vim 基础教程与配置初步
坑边闲话:我使用 Vim 的 logo 作为头像已经接近十年了,这表达了我对 Vim 编辑器的热爱,同时也表达了我对设计优秀的工具的敬佩。但是我一直不敢做与 Vim 相关的教程,因为 Vim 的配置太繁琐了,而且我对有些功能也只是一知半解,并不能称为 Vim 专家。正逢我把所有配置迁移到 Lua,就借此机会详细说明我的 Vim 配置,以及我对 Vim 的个人理解。
后续会出一些更加详细的配置教程,但本文专注于 Vim 的基础概念与操作。
1. NeoVim 还是 Vim·
这个问题很关键。我的答案是 NeoVim. 尽管现在 Vim 9.0 已经发布,有些棘手的问题也解决了七七八八,但是我已经用 NeoVim 很多年了,再换回去比较可惜。
我对新手的建议也是 NeoVim. 主要原因是网络上参考资料比较多,解决问题的成本较低。
无需担心软件是否是“名门正派”的问题,NeoVim 本身就是 Vim 的一个分支 (fork),所以他们是同根的软件,NeoVim 就是根正苗红的 Vim.
无需担心没有大版本发布的问题,目前 NeoVim 早就很成熟了,版本一直维持在 0.x 只是一个习 ...
GitHub Copilot Chat 教程
Copilot 是 GitHub 通过其托管的无数开源项目训练所得到的代码提示工具,它的能力非常强大。如今有了大预言模型的加持,Copilot 更胜以往。最近,微软推出了 Copilot Chat 聊天机器人,与 VSCode 深度绑定,能提供很棒的用户体验。
1. 如何获取 Copilot Chat·
首先声明,GitHub Copilot 插件是需要付费的,但是我们可以通过注册学生大礼包的方式获得免费试用的权限。
GitHub Student Developer Pack
通过上面的链接,使用 EDU 结尾的邮箱注册成功,可以获得一个认证机会。随后,使用浏览器的 webRTC 摄像头功能,把自己的学生证拍照上传 (切记,不是上传图片!),半天就可以通过审核。随后你的 GitHub 账号将变成 Pro 版本。
使用经过认证的账号登录 VSCode GitHub Copilot 插件,即可使用全部功能。
接下来就是 Copilot Chat 功能。该插件依赖 GitHub Copilot,所以先要完成上述的步骤。随后,安装完 Chat 插件,即可直接通过对话的方式使用。
2. 使 ...
Debian 12 DNS 配置实战
坑边闲话:Debian 12 是一个完善的高级系统,在 DNS 方面,它同时支持 NetworkManager 和 systemd,而此二者在网络管理方面具有重叠的功能,同时启用会产生冲突。
1. 本机 DNS 配置·
一般来说,Debian 12 系统遵循大多数 Linux 采用的 DNS 配置方法,即 DNS 服务器地址、搜索域都被写在 /etc/resolv.conf 文件里。一个常见的配置文件如下所示:
12nameserver 127.0.0.53search littlenewton.cn
接下来讲解这几个网段的意思:
nameserver 指的是 DNS 服务器的地址,比如
Google 8.8.8.8
DNSPod 119.29.29.29
Cloudflare 1.1.1.1
本机的某个服务,如 dnsmasq、AdGuard Home、systemd-resolved 等。这些软件会在本地起一个服务端口,允许其他进程通过 TCP/IP 方式发起 DNS 请求,因此填写的一般是 127.0.0.0/8 地址。
此外,多个 nameserver 可以同时填写,彼 ...
OpenWrt 的缺陷
坑边闲话:笔者使用 OpenWrt 自 2016 年双十二开始,至今已有七年了。OpenWrt 提供了便捷的网络配置手段,但是也存在一些不便的地方。
本文尽力从 OpenWrt 的缺陷开始入手,讨论改进或者环节的方案,希望能对刚开始学习 OpenWrt 的用户和已经具有一定使用经验的用户有所帮助。
1. 缺乏 systemd 系统管理方案·
尽管很多人诟病 systemd,但是毫无疑问它使得系统的配置、管理变得更加简单且现代化,Debian 等系统默认启用 systemd 就是最好的证明。
注意,大家诟病它,并不是因为它管得太多,而是它最开始的代码不太完善,经常做 API 的大改动。如今 systemd 已经非常稳定。
OpenWrt 作为嵌入式系统,并没有提供 systemd 作为 init 进程,许多任务的启动、管理也是依赖 /etc/init.d/xxx.conf 配置文件进行管理。因此,许多没有写清楚标准错误、标准输出的任务,就没办法轻松地判断失败的原因,给 debug 造成了很大的麻烦。
2. 无线驱动匮乏·
因为无线芯片的驱动涉及到巨量的知识产权问题,故以高通为代表 ...
Debian 12 系统初始化
坑边闲话:Linux 的系统初始化教程对新手非常有帮助,本文提供一个合适的流程化操作,方便用户使用相关服务。本文遵循最小化安装原则,帮助用户逐步构建自己的 Linux 系统。所谓最小化安装,指的是不添加过多的 package,只包含最基本的系统组件。当然,也不包括图形化界面。
停止更新
2025 年 8 月 9 日,Debian 官方正式发布 Debian 13,代号 Trixie. 笔者已经全面升级到了 Trixie, 因此本文只作纪念,不再更新。
前期必看步骤:使用 ZFSBootMenu 安装 Linux
重装前先备份
若用户是重装系统,请务必记得备份重要数据,比如
zsh 历史记录 ~/.config/zsh/.zhistory
systemd 的自定义条目,如
多容器组合启动服务 harbor.service, minio.service
ZFS 定期快照任务 zfs_snapshot.service
/etc/fstab 的特殊挂载条目
家目录中的工程项目
某些特殊的、只存储在本地的容器镜像孤本
1. 配置常规用户·
遵照 使用 ZFSBootMenu 安 ...
Tailscale 全平台部署教程
坑边闲话:WireGuard 作为下一代 VPN 技术,除了面对 ISP UDP QoS 时比较尴尬之外,性能、安全性都是非常有保障的。但是 WireGuard 的配置相对繁琐,需要用户掌握许多密码、网络的知识才能完成。此外,典型 WireGuard 的 Full-Mesh 的结构也让设备的增添、移除变得非常复杂。Tailscale 通过引入管理节点,让配置变得自动化,同时 Tailscale 也支持自定义管理平面。
1. Tailscale 简介·
Tailscale 是一个基于 WireGuard 的网络技术,用于创建安全、简单、私有的虚拟网络,它具有以下优点:
基于 WireGuard: WireGuard 是一个新的、高性能的 VPN 协议,旨在提供安全、简单、快速的网络连接。Tailscale 使用 WireGuard 作为其底层协议,但对其进行了封装,以提供更加用户友好和企业友好的功能。
简单性: 传统的 VPN 和私有网络解决方案通常需要复杂的配置和维护。Tailscale 的目标是简化这个过程,使任何人都可以在几分钟内设置自己的私有网络。
跨平台: Tailsca ...
DNS 服务必知必会
坑边闲话:DNS 是现代互联网的基石,在我看来 DNS 比 TCP/IP 还要重要。没有 TCP/IP 还可以用其他通信协议,但是没了 DNS,互联网就要熄灭了。
1. DNS 简介与 DNS 劫持、污染·
1.1 DNS 常识·
DNS 的全称是 Domain Name System,也就是域名系统。原则上,我们这套互联网基于 TCP/IP,也就是可靠传输加全球路由寻址。然而,因为人类不方便记忆 IP 地址,所以产生了域名系统。比如要访问谷歌,你第一想到的是 google.com 而不是 google 的 IP 地址。毕竟,人类并不能准确记忆大量的数字地址。将 IP 地址与域名通过 DNS 联系起来,是个非常聪明的办法。
将域名对应的 IP 地址找出来的过程,叫做 DNS 查询。从这里你就看出来了,DNS 查询实际上是个应用层协议。我们往 DNS 服务器的 53 端口发送一个 DNS 解析请求,然后 DNS 服务器把域名对应的 IP 地址返回给我们,这样我们就可以愉快地使用 IP 地址进行路由通信了。有过编程经验的同学应该清楚,在写某些记录的时候你可以用域名代替 IP 地址,这时 ...
校园网环境配置 IPv6 网络
坑边闲话:中国高效的校园网 IPv6 分配一般基于 DHCP/SLAAC,且百分之九十九的情况下都不会给 ipv6-pd 前缀,因此在宿舍内网里分配 IPv6 同时兼容 IPv4 NAT 一直是一个老大难的问题。中继模式看似可行,但是 OpenWrt 支持度并不高;NAT66 过于野蛮,也没有太好的用武之地。
本文介绍的方案可将路由器变成一个 IPv6 交换机,同时保持 IPv4 内网功能不变。
1. 警告·
注意,虽然通过 ebtables-legacy 命令在以太网层次实现校园网 IPv6 接入很棒,效果非常稳定。然而,这里面存在安全隐患。这种方式相当于把外网接到内网里,因为该方案利用了 IPv6、IPv4 双栈分离的特性,因此,OpenWrt 的防火墙对 IPv6 的入侵流量没有任何防护能力,所有的基于转发的过滤规则都不起作用。
这必然给骇客攻击留下了后门,毕竟 LAN Zone 是我们的后花园,允许另一个属性的流量自由出入,肯定不是好事情。虽然现在还不清楚有什么隐患,但是应该提醒读者,这并不是最佳实践。
最后,如果你确实对校园网 IPv6 分配有需求,而且需要用到软路由, ...
Debian 12 部署 K8S 集群
坑边闲话:Kubernetes 已经是容器编排领域的事实标准,它将容器运行时和网络模块解放出来,只作为一个编排工具存在。在云原生场景和高可用需求下,容器能跑起来不重要,能编排才重要。
本文将详细介绍:
K8S v1.28 的安装与配置
K8S Calico 网络配置及其原理
K8S 接入 Portainer 管理 UI
1. 安装 Kubernetes·
这里以 Debian 12 为例。
本节内容同时适用于 Master 节点和 Worker 节点。
1.1 添加 Google Kubernetes 上游库并安装 kubeadm·
123456789101112# 安装必要的 apt 包sudo apt-get updatesudo apt-get install -y apt-transport-https ca-certificates curl# 下载 Google Cloud 公开签名秘钥curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /e ...