认识
SRv6 Policy 是在 SRv6 技术基础上发展的一种新的引流技术;
组成
SRv6 Policy 路径表示为指定路径的段列表(Segment List),称为 SID 列表(Segment ID List)。每个 SID 列表是从源到目的地的端到端路径,并指示网络中的设备遵循指定的路径,而不是遵循 IGP 计算的最短路径;
如果数据包被导入 SRv6 Policy 中,SID 列表由头端添加到数据包上,网络的其余设备执行 SID 列表中嵌入的指令;
https://datatracker.ietf.org/doc/draft-ietf-spring-segment-routing-policy/[……]
「SRv6」- SRv6 Policy
「CSS」- 响应式网页设计 | Responsive Web Design
在 CSS3 中,引入 Responsive Web Design 特性:对于使用 @media 包裹的 CSS 属性,仅当某些条件得到满足时这些 CSS 属性才会生效。我们也需要使用该特性,来针对不同的屏幕尺寸使用不同的 CSS 属性。该笔记将记录:在 CSS 中,如何使用 @media 来编写 CSS 属性,以及相关问题出来。
简单示例
https://www.w3schools.com/cssref/atrule_media.php
如下 CSS 代码,仅在浏览器窗口在 600px 以下时,背景色设置才生效:
@media only screen and (max-width: 600px) {
body {
background-color: lightblue;
}
}
屏幕尺寸的分界线
@media (min-width:320px) { /* smartphones, portrait iPhone, portrait 480×320 phones (Android) */ }
@media (min-width:480px) { /* smartphones, Android phones, landscape iPhone */ }
@media (min-width:600px) { /* portrait tablets, portrait iPad, e-readers (Nook/Kindle), landscape 800×480 phones (Android) */ }
@media (min-width:801px) { /* tablet, landscape iPad, lo-res laptops ands desktops */ }
@media (min-width:1025px) { /* big landscape tablets, laptops, and desktops */ }
@media (min-width:1281px) { /* hi-res laptops and desktops */ }
参考文献
Responsive Web Design Media Queries css – Media Queries: How to target desktop, tablet, and mobile? – Stack Overflow[……]
「Frontend」- 开源 CDN 服务,前端静态资源
前端静态资源
国内有哪些靠谱的 Javascript 库 CDN 可用? – 知乎
我们需要使用开源可靠的 CDN 服务,因为有时我们无法在自建主机上部署并使用第三方库这里将整理可靠的、受大家推荐的 CDN 服务。
BootCDN – Bootstrap 中文网开源项目免费 CDN 加速服务
ul and li
Horizontal list items | https://stackoverflow.com/questions/15710701/horizontal-list-items
ul > li {
display: inline-block;
/* You can also add some margins here to make it look prettier */
}
div
使其垂直居中
#abc{
display: table;
}
#abc span {
vertical-align:middle;
display: table-cell;
}[……]
「TCR」- 腾讯云 | 容器镜像服务 | Tencent Container Registry
认识
容器镜像服务(Tencent Container Registry,TCR)是腾讯云提供的容器镜像云端托管服务。
官网:https://console.cloud.tencent.com/tcr/ 文档:https://cloud.tencent.com/document/product/1141 仓库:
组成
WIP
构建
容器镜像服务同时提供:
企业版
提供企业级的独享镜像安全托管服务,面向需要在生产业务中使用云原生制品托管服务的个人及企业客户,容器镜像服务支持上述的全部功能特性并持续更新。当前容器镜像服务企业版支持包年包月或按量计费购买。
个人版
提供基础的云上镜像托管、分发服务,限额使用,仅面向个人使用或企业客户临时测试使用。个人版服务为云上共享服务,即所有个人版用户将共享服务后端及数据存储,且镜像托管及上传下载具有配额限制。容器镜像服务个人版不收取费用,可直接开通使用。
个人版快速入门 | https://cloud.tencent.com/document/product/1141/63910
配额:
The repository buq-cr/default’s tag has reached its limit(100). We invite you to use TCR, the enterprise-class container registry.
注册腾讯云账号
开通容器镜像服务
选择所需使用的地域,当前个人版服务在中国大陆仅在广州部署并提供服务,支持北京,上海,成都等地域跨地域内网访问,其他支持地域请参见 购买指南,实际可使用地域请以控制台地域列表为准。
初始化个人版服务
初始化密码
docker tag nginx:latest ccr.ccs.tencentyun.com/project-a/nginx:latest
创建命名空间
创建镜像仓库(可选)
在完成命名空间创建后,直接通过 Docker 客户端向该命名空间内推送镜像,对应的镜像仓库将被自动创建。
推送拉取镜像
sudo docker tag nginx:latest ccr.ccs.tencentyun.com/project-a/nginx:latest
sudo docker push ccr.ccs.tencentyun.com/project-a/nginx:latest
sudo docker pull ccr.ccs.tencentyun.com/pro[……]
「ECK」- Elasticsearch | Elastic Cloud on Kubernetes | on Kubernetes with Operator
认识
Built on the Kubernetes Operator pattern, Elastic Cloud on Kubernetes (ECK) extends the basic Kubernetes orchestration capabilities to support the setup and management of Elasticsearch, Kibana, APM Server, Beats, Elastic Agent, Elastic Maps Server, and Logstash on Kubernetes.
官网:
文档:
Elastic Cloud on Kubernetes | https://www.elastic.co/docs/deploy-manage/deploy/cloud-on-k8s
Elastic Cloud on Kubernetes API Reference | https://www.elastic.co/docs/reference/cloud-on-k8s/api-docs
Tools and APIs for Elastic Cloud on Kubernetes | https://www.elastic.co/docs/deploy-manage/deploy/cloud-on-k8s/tools-apis
仓库:https://github.com/elastic/cloud-on-k8s
组成
WIP
构建
部署 Operator 服务 | Deploy an orchestrator | https://www.elastic.co/docs/deploy-manage/deploy/cloud-on-k8s/deploy-an-orchestrator
我们通过习惯于通过 Helm chart 部署,参考文档 https://www.elastic.co/docs/deploy-manage/deploy/cloud-on-k8s/install-using-helm-chart
性质
常用组件部署 | https://www.elastic.co/docs/deploy-manage/deploy/cloud-on-k8s/manage-deployments
其他组件部署 | Orchestrate other Elastic applications
应用
部署 Elasticsearch 服务
Users and roles | Elastic Cloud on Kubernetes [master] | Elastic[……]
「SR-MPLS-TE-POLICY」- 模块交互原理
背景信息
Egress Router R3 向 Ingress Router R1 通告 5.5.5.5/32 路由,最终从 R1-R3 建立 SR Policy 隧道。隧道路径如图,Color 为 Green;
SR Policy 业务流程:信息收集
BGP-LS 收集网络拓扑、网络带宽、链路时延等信息,用于后续计算 SR Policy 路径和隧道状态呈现;
前提准备:
控制器规划:用户可根据业务 SLA 要求在控制器上统一规划 color,color 与 SR 隧道路径的 SLA 要求(即算路约束)的对应关系;
在设备上,使能 Segment Routing 相关功能;
网络头尾节点创建 BGP 会话,便于传递 BGP 私网路由;
BGP 对等体关系建立成功,头尾节点之间有可达的路由信息,能够将携带 color 团体属性;
SR Policy 业务流程:路由着色
通过 NETCONF 协议,控制器向 Egress 路由器下发 VPN 出口策略或 BGP 出口策略。为路由前缀 5.5.5.5/32 设置扩展团体属性 Color Green,路由下一跳是 R3 的地址 3.3.3.3;
SR Policy 业务流程:路由传递
Egress 路由器将着色的路由 5.5.5.5/32 通过 MP-BGP 通告给 Ingress 路由器;
SR Policy 业务流程:下发 SR Policy
控制器向头端下发 SR Policy。R1 接收到 R3 的 BGP 路由 5.5.5.5/32。后续执行转发时,根据此路由的 Color 和下一跳迭代到 SR Policy 隧道;
注,图示步骤仅帮助学习理解,并不代表实际先后顺序。在真实环境中,控制器下发 SR Policy 和 NETCONF 下发配置可能同时进行;
SR Policy 业务流程:引流及报文转发
Ingress 路由器将 SR Policy 生成转发面隧道。头结点根据 Color 完成引流转发及转发(本例);
支持其他引流方式,例如 DSCP 引流(根据不同的 DSCP 值而使用不同的隧道);[……]
「Computer」- 时区与时间
时区与时间
List of time zone abbreviations Wikipedia/Time zone
# timedatectl
Local time: Mon 2020-06-22 09:28:09 CST
Universal time: Mon 2020-06-22 01:28:09 UTC
RTC time: Mon 2020-06-22 01:28:10
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
Solar time
太阳时间,是根据在天空中太阳的位置计算时间的流逝。基本单位是天。
Atomic time
原子时间,由原子钟产生的时间尺度,比以前的天文学方法(测量地球自转和绕太阳公转的度量)提供的时间更准确。
TAI – International Atomic Time
GMT – Greenwich Mean Time
格林威治标准时间,是天文时间,
UTC – Coordinated Universal Time
世界标准时间,是这个世界调节时钟和时间的主要时间标准。
在整个地球上,UTC 都是相同的,不会根据时区而调整。
自 1972/01/01 起,全球范围内的官方时间参考就是 UTC。
CST – China Standard Time ?
时区通常以缩写的形式呈现,但是他们并不是国际时间日期标准 ISO 8601 的部分,也不鼓励作为时区标识(因为会有缩写重复的问题)。
前面的 CST 就是时区缩写,但是这种缩写并不唯一: 1)UTC−06 => Central Standard Time (North America) 2)UTC+08 => China Standard Time 3)UTC−05 => Cuba Standard Time
参考 Wikipedia/List of time zone abbreviations 页面查看时区缩写列表。
参考文献[……]
「JAD」- Java Decompiler
jad,Java 反编译工具,使用方法参考源码目录下的Readme.txt文件。
安装
从发行版的源中安装
#!/bin/bash
# Kali GNU/Linux Rolling
apt-get install jad
直接下载程序 参考主页中的Installation章节。 主页:http://www.varaneckas.com/jad
安装的可执行程序
jad,主程序文件。Java 反编译工具。
注意事项
该工具好像不再维护了!!!最后一个稳定版是 1.5.8g/2006;11 年以前;
Error List
#0 error while loading shared libraries: libstdc++-libc6.2-2.so.3: cannot open shared object file
error while loading shared libraries: libstdc++-libc6.2-2.so.3: cannot open shared object file
原因:JAD 动态链接版本依赖libstdc++-libc6.2-2.so.3,至于整个库在哪个包里提供就不知道了。 解决:下载静态链接版本:Jad 1.5.8e for Linux (statically linked)
参考文献
Homepage: http://www.varaneckas.com/jad Wikipediad/JAD
WIP 完善 JAD 文章内容[……]
「snap」- 应用程序降级
查看历史版本
通过 API 查看
curl -H ‘Snap-Device-Series: 16′ http://api.snapcraft.io/v2/snaps/info/anbox # | jq
# “anbox” is the name of the snap package. change it to what you want.
通过 CMD 查看
snap list “certbot” –all
其他查看方法
通过缓存:ls -lah /var/lib/snapd/snaps/
注意,snap 并不是显示历史版本的 snap 包,我们需要找到其他方式来获取旧包的版本
How to get snap download url – Ask Ubuntu ubuntu – Install specific previous version of package using snap? – Unix & Linux Stack Exchange
特定版本回退
How to run a previous version of a snap package – Ask Ubuntu How to list all available revisions on the snap store – Ask Ubuntu
snap revert intellij-idea-ultimate # 上个版本 snap revert intellij-idea-ultimate –revision 212 # 特定版本
snap download certbot
禁用自动升级
How to disable autorefresh in snap – Ask Ubuntu
Managing updates | https://snapcraft.io/docs/managing-updates
snap set core experimental.refresh-app-awareness=true # disable updates while the application is running. snap set system refresh.timer=sat5,23:00-01:00 # don’t want it to update during the weekdays
snap refresh –hold=’720h’ <snap1> <snap2> # hold all updates until after my big presentation
# If no duration[……]
「HUAWEI-ENSP」- 实验学习:VPN Instance | VRF
实验需求
拓扑描述:
右侧 PC1、PC2、PC3 具有相同网段;
左侧 AR4 AR5 AR7 具有相同网段,并具有地址不同的 Loopback 接口;
两侧 PC、AR 设备与中间的 AR8 相连,AR8 为 PC1 PC2 PC3 的网关;
实验过程
配置 PC 与 GW 通信
配置 PC 信息:略……
配置 SW1 设备:
[SW1]interface GigabitEthernet 0/0/1
[SW1-GigabitEthernet0/0/1]port link-type access
[SW1-GigabitEthernet0/0/1]port default vlan 30
[SW1]interface GigabitEthernet 0/0/4
[SW1-GigabitEthernet0/0/4]port link-type access
[SW1-GigabitEthernet0/0/4]port default vlan 30
[SW1]interface GigabitEthernet 0/0/2
[SW1-GigabitEthernet0/0/2]port link-type access
[SW1-GigabitEthernet0/0/2]port default vlan 20
[SW1]interface GigabitEthernet 0/0/3
[SW1-GigabitEthernet0/0/3]port link-type trunk
[SW1-GigabitEthernet0/0/3]port trunk allow-pass vlan 10 20 30
配置 AR8 设备:
[AR8]ip vpn-instance VLAN10
[AR8-vpn-instance-VLAN10]ipv4-family
[AR8]ip vpn-instance VLAN20
[AR8-vpn-instance-VLAN20]ipv4-family
[AR8]ip vpn-instance VLAN30
[AR8-vpn-instance-VLAN30]ipv4-family
[AR8]interface GigabitEthernet 0/0/0.10
[AR8-GigabitEthernet0/0/0.10]ip binding vpn-instance VLAN10
[AR8-GigabitEthernet0/0/0.10]ip address 192.168.1.254 24
[AR8-GigabitEthernet0/0/0.10]dot1q termination vid 10
[AR8-Gi[……]
「Nginx」- 反向代理常用配置 | proxy_pass
场景 | 常用配置 | 经典配置 | ……
NGINX Reverse Proxy nginx 反向代理配置
使用方法可以参考 Module ngx_http_proxy_module / proxy_pass 文档
server {
listen 80;
server_name site.example.com;
location / {
proxy_pass http://127.0.0.1:60080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
}
}
场景 | 代理其他站点
nginx as reverse proxy with upstream SSL – Server Fault proxypass – Nginx proxy domain to another domain with no change URL – Server Fault
server {
…
location / {
…
proxy_pass https://backend.server.hostname/;
proxy_set_header Host backend.server.hostname;
proxy_ssl_trusted_certificate /etc/nginx/sslcerts/backend.server.pem;
proxy_ssl_verify off; # 关闭证书检查
…
}
…
}
配置说明:
如果远程服务器使用 Virtual Server 特性,基本如此,则需要明确指定 proxy_set_header Host backend.serv[……]
「Harbor」- 服务部署
Harbor 1.7.5, HTTPS
Use vmware Harbor to build Mirror Registry – Programmer Sought Installation and Configuration Guide Configuring Harbor with HTTPS Access
环境要求
Python,Docker,Docker Compose
安装 Harbor 服务
1)安装 Docker 环境;
2)安装 Docker Compose 工具;
3)安装 Certbot 命令,申请证书(1),配置自动续期及服务重载(2);
4)安装 Harobor 服务:
# 下载离线安装包
# https://github.com/goharbor/harbor/releases/tag/v1.7.5
# 修改 harbor.cfg 文件
# 执行 install.sh 进行安装
################################################################################
## 如果需要修改配置文件
################################################################################
docker-compose down -v
vim ./harbor.cfg
./prepare
docker-compose up -d
关于 Certbot 问题
1)在配置文件 ./harbor.cfg 中设置证书路径,使用 certbot 申请的证书(位于 /etc/letsencrypt/ 目录); 2)执行 ./prepare 命令将证书复制到 /path/to/harboar/common/config/nginx/cert/ 目录 3)Harbor 的 Nginx 服务使用在 /path/to/harboar/common/config/nginx/cert/ 中的证书
也就是说,在 cert renew 后,如果想要使用新的证书,需要进行“配置文件修改”步骤:
certbot renew
./prepare
docker-compose restart proxy # Nginx 服务
Harbor 2.1.5, HTTPS
GitHub/goharbor/harbor Installation and Configuration Guide Use vmware Harbor to build Mirror Registry – Programmer So[……]
「Flutter」Build for Any Screen
认识
Flutter 是一个开源的跨平台 UI 开发框架,由 Google 开发并维护,支持快速构建高性能的移动、Web、桌面和嵌入式应用。它的核心设计理念是 “一次编写,多端运行”,同时保持原生级别的性能。
Flutter is an open source framework for building beautiful, natively compiled, multi-platform applications from a single codebase.
虽然 Flutter 最初是为移动应用程序开发设计的,但现在也支持桌面应用程序开发。Flutter 使用 Dart 语言开发,可以编译成本地代码。
官网:https://flutter.dev/ 文档:https://docs.flutter.dev/ 仓库:https://github.com/flutter/flutter
组成
Flutter 的组成可以概括为:引擎(渲染 + Dart)+ 框架(Widgets)+ 工具链 + 多平台嵌入。
这种分层设计使其兼具高性能、灵活性和跨平台一致性,成为现代应用开发的热门选择。
核心设计思想
一切皆 Widget:UI 由嵌套的 Widget 组合而成(如布局、样式、交互)。
不可变 UI:Widget 是不可变的,通过重建(而非修改)更新界面。
响应式框架:状态变化自动触发 UI 更新(类似 React)。
引擎 Engine
作用:Flutter 的核心底层框架,负责渲染、输入事件处理、Dart 运行时等核心功能。
关键组件:
Skia:2D 图形渲染引擎(Google 开源),负责绘制 Flutter 的 UI。
Dart Runtime:执行 Dart 代码的虚拟机(JIT 开发模式 / AOT 发布模式)。
Platform Channels:提供与原生平台(Android/iOS)通信的能力(如调用原生 API)。
Text Rendering:文本渲染(如字体、排版)。
特点:
引擎使用 C/C++ 编写,确保高性能。
直接调用 Skia 绘制 UI,不依赖平台原生控件,因此能实现高度一致的跨平台渲染。
框架 Framework
Flutter 的 Dart 层框架,为开发者提供了一套丰富的 API,分为三层:
### a. 基础层(Foundation) 作用:提供最基础的类和服务(如动画、手势、绘图)。 关键库:
`dart:ui`:底层 UI 库(与引擎交互)。
`package:flutter/f[……]
「WEB-BROWSER」- 网页浏览器 | Web Browser
认识
网页浏览器(Web Browser),是一种软件应用程序,用于在互联网上检索、显示和浏览网页。它解析网页的 HTML,CSS 和 JavaScript 代码,将其转换为我们在屏幕上看到的页面。浏览器还可以处理其他类型的网页内容,如 PDF、图像和视频。
组成
WIP
构建
Google Chrome – The browser built by Google
Google Chrome – Download the Fast, Secure Browser from Google
Mozilla Firefox | Get the browser that protects what’s important
Download Firefox Browser — Fast, Private & Free — from Mozilla
Microsoft Edge | Choose the web browser that puts you first
for Windows:Download Microsoft Edge Web Browser | Microsoft for Linux:Microsoft Edge Insider
# 05/11/2021 网页浏览器种类越来越多,现在我们能在 Linux 上运行 Microsoft Edge 浏览器。
Brave Browser | Browse 3x faster than Chrome
Secure, Fast & Private Web Browser with Adblocker | Brave Browser
QupZilla/Falkon | a KDE web browser using QtWebEngine rendering engine
Falkon http://www.qupzilla.com/
QupZilla was renamed to Falkon and moved to KDE infrastructure
LYNX – The Text Web-Browser
https://lynx.invisible-island.net/
在终端中,使用的文本界面浏览器;
# apt-get install lynx
# lynx # 程序文件
性质
WIP
应用
整理该部分的原因:因为 Firefox 太消耗内存了,因此打算换一个轻量级的网页浏览器[……]
「Trojan」- unidentifiable mechanism for bypassing GFW
认识
Trojan is an unidentifiable mechanism for bypassing GFW. This documentation introduces the trojan protocol, explains its underlying ideas, and provides a guide to it.
官网:https://github.com/trojan-gfw 文档:https://trojan-gfw.github.io/trojan/ 仓库:https://github.com/trojan-gfw/trojan
组成
WIP
构造
Trojan Client for macOS | https://github.com/JimLee1996/TrojanX Trojan GUI Client for Windows | https://github.com/rkzrdm/TrojanWin
性质
WIP
应用
WIP[……]
「DDNS」- ddns-go
解决方案
第一步、服务部署
helm repo add truecharts https://charts.truecharts.org/
helm repo update
helm pull truecharts/ddns-go # ddns-go-2.0.32.tgz
helm show values > ddns-go-2.0.32.helm-values.yaml #
vim ddns-go-2.0.32.helm-values.yaml
…
helm –namespace infra-dns \
install ddns-go \
./ddns-go-2.0.32.tgz -f ddns-go-2.0.32.helm-values.yaml \
–create-namespace
helm –namespace infra-dns \
upgrade ddns-go \
./ddns-go-2.0.32.tgz -f ddns-go-2.0.32.helm-values.yaml
第二步、服务访问
kubectl port-forward svc/ddns-go 10168:10168
firefox http://127.0.0.1:10168/
参考文献
jeessy2/ddns-go: 简单好用的 DDNS。自动更新域名解析到公网 IP(支持阿里云、腾讯云 dnspod、Cloudflare、华为云、百度云、porkbun) ddns-go 2.0.32 · truecharts/truecharts[……]
「BLOCKCHAIN」- 区块链钱包 | Blockchain Wallet
认识
区块链钱包(Blockchain Wallet):一种用于存储和管理数字资产的应用程序,可以存储比特币、以太币等数字货币。区块链钱包是管理加密货币和数字资产的工具,它不直接存储货币,而是通过密钥与区块链网络交互,实现对资产的掌控。
构造
常见钱包对比
类型
代表产品
优点
缺点
浏览器插件
MetaMask
轻量,支持以太坊生态
依赖浏览器安全性
硬件钱包
Ledger Nano S+
离线存储,抗黑客
成本高($79 起)
移动钱包
Trust Wallet
多链支持,DeFi 集成
手机丢失风险
imToken | 以太坊和比特币区块链钱包 | https://token.im/
Multi-chain Access | Access your BTC, ETH, EOS, ATOM, BCH, TRX, LTC, CKB, DOT, KSM, FIL, XTZ tokens easily
Phantom | Multiple chains, one wallet. No more switching.
https://phantom.com/
安全注意事项 – 高风险操作:钓鱼网站伪造 MetaMask 界面盗取助记词。 – 备份建议:硬件钱包 + 助记词钢板备份(如 ColdTi)。 – 链上交互:授权 DApp 时检查合约地址(如 Etherscan 验证)。
提示:使用前确认钱包开源审计记录(如 MetaMask 代码公开),大额资产建议冷热结合管理。
性质
核心功能 – 密钥管理: – 私钥:唯一控制资产的密码(如 64 位 16 进制字符串),必须保密。 – 公钥:生成接收地址(如`1A1zP1…`),可公开分享。 – 交易操作:发送、接收加密货币,查询余额(通过区块链浏览器验证)。 – 多链支持:部分钱包兼容比特币、以太坊等多条链(如 Trust Wallet)。
钱包类型 – 按存储方式: – 热钱包(联网):MetaMask(浏览器插件)、Exodus(桌面 / 移动端),适合频繁交易但风险较高。 – 冷钱包(离线):Ledger Nano X(硬件钱包)、纸钱包(打印私钥),更安全但不便携。 – 按控制权: – 托管钱包:交易所提供(如 Coinbase),用户不持私钥,依赖第三方。 – 非托管钱包:用户完全掌控私[……]
「DDNS」- 动态域名服务 | Dynamic Domain Name Server
认识
利用 DNS 可以将域名解析为 IP 地址,从而实现使用域名来访问网络中的节点;
但是,DNS 仅提供了域名和 IP 地址之间的静态对应关系,当节点的 IP 地址发生变化时,DNS Server 无法动态地更新域名和 IP 地址的映射关系。此时,如果仍然使用域名访问该节点,通过域名解析得到的 IP 地址是错误的,从而导致访问失败;
动态域名系统 DDNS(Dynamic Domain Name System,DDNS) 提供解决方案,它可以自动更新用户每次变化的浮动 IP,然后将其与域名相对应,这样其他上网用户就可以通过域名来通信;
组成
DDNS Client
DDNS 客户端:IP 地址变化时,需要在 DNS 服务器上动态更新其域名和 IP 地址映射关系的设备。Internet 用户通常通过域名访问提供应用层服务的服务器,如 HTTP、FTP 服务器。为保证提供应用层服务的服务器 IP 地址变化时,其他用户仍然可以通过域名访问这些服务器,服务器将作为 DDNS 客户端,向 DDNS 服务器发送更新域名和 IP 地址映射关系的 DDNS 更新请求;
DDNS Server
DDNS 服务器:负责通知 DNS 服务器动态更新域名和 IP 地址之间的映射关系。接收到 DDNS 客户端的更新请求后,DDNS 服务器通知 DNS 服务器重新建立 DDNS 客户端的域名和 IP 地址之间的映射关系,从而保证即使 DDNS 客户端的 IP 地址改变,Internet 用户仍然可以通过同样的域名访问 DDNS 客户端;
原理
当 IP Address 发生变化时,通过调用 API 接口来动态更新 DNS Server 上 Domain Name 和 IP Address 之间的映射关系,保证通过 Domain Name 解析到正确的 IP Address;
构建
DDNS 服务提供商有:
www.3322.org
www.oray.cn
https://hsk.oray.com/
https://console.hsk.oray.com/
www.dyndns.com
应用
目前,ISP 大多提供动态 IP(例如 PPPoE 拨号上网),我们若想在网际网络上以自己的网域公布,则可以适用 DDNS 技术;
参考
DDNS 是什么?DDNS 的工作原理是怎样的? – SegmentFault 思否[……]
「S3」- 常见问题处理
图形化管理端(GUI Manager)
GitHub/cloudlena/s3manager
GitHub – cloudlena/s3manager: A Web GUI for your S3 buckets
图形化客户端 | GUI Client
S3 Browser | Windows | 推荐
https://s3browser.com/
# 04/25/2025 首次安装并适用,能够满足我们的场景。
dragondisk | Windows | Mac OS X | Linux
http://www.dragondisk.com/
版本较旧
Explorer for Amazon S3 Windows
http://www.cloudberrylab.com/free-amazon-s3-explorer-cloudfront-IAM.aspx
收费版、免费版
ExpanDrive – Amazing Software for Cloud Storage
https://www.expandrive.com/
cyberduck | Windows | Mac OS X | Linux
https://cyberduck.io/
命令行客户端 | Command Line Interface
AWS CLI
put-object — AWS CLI 1.25.22 Command Reference
Using aws-cli with our S3 – Using and Operating Ceph
$> yum install awscli
$> aws configure
AWS Access Key ID [None]: <your access key>
AWS Secret Access Key [None]: <your secret key>
Default region name [None]:
Default output format [None]:
$> aws –endpoint-url=http://s3.cern.ch s3api list-buckets
…
$> aws –endpoint-url=http://s3.cern.ch s3api put-object \
–bucket <bucketname> –key <file-path-in-s3> –body </path/to/file>
s5cmd
GitHub – peak/s5cm[……]
「kcptun」- A Stable & Secure Tunnel
认识
KCP | A Fast and Reliable ARQ Protocol KCP – A Fast and Reliable ARQ Protocol Wikipedia/Automatic repeat request
组成
kcptun-android 用于 Android 的 kcptun。
kcptun 基于 kcp 协议的简单快速的 udp 隧道。 Go 实现。
网络架构
各网络组件的关系如下(其中 any 表示用于发起请求的任意端口):
Application (any/tcp)
=> (8388/tcp) KCP Client (any/udp)
=> (4000/udp) KCP Server (any/tcp)
=> (8388/tcp) Target Server
应用
通过 KCPTUN 隧道传输 SSH 连接,以提升传输速度。
吞吐测试(kcptun + iperf)
通过 iperf 工具,测试 kcptun 效果。
相关链接
xtaci/kcptun Bandwagon(搬瓦工) CentOS 7 安装 shadowsocks-libev 和 kcptun CentOS 7 环境安装 Shadowsocks-libev 版及 Google TCP-BBR 优化加速
参考文献
GitHub/kcptun[……]
「Nginx」- 转发 SSL 流量、SSL 直通、根据域名进行 SSL 转发
问题描述
在现代 Web 环境中,Nginx 通过作为前端服务出现并监听 HTTPS 请求,而后端应用程序作为独立的服务并提供 HTTP 访问。我们通过 proxy_pass 完成流量转发。
但是,如果后端也监听 HTTPS 请求,虽然能够通过 proxy_pass 完成,但是却要管理两套证书。因此,我们希望能够将 HTTP 流量直传到后端服务,这样仅管理后端证书即可。
该笔记将记录:在 Nginx 中,如何直接转发 SSL 流量,以及相关问题的处理方法。
解决方案
stream {
upstream vpn1_backend {
server 10.0.0.3:443;
}
upstream vpn2_backend {
server 10.0.0.4:443;
}
upstream https_default_backend {
server 127.0.0.1:443;
}
map $ssl_preread_server_name $name {
vpn1.app.com vpn1_backend;
vpn2.app.com vpn2_backend;
https.app.com https_backend;
default https_default_backend;
}
server {
listen 10.0.0.1:443;
proxy_pass $name;
ssl_preread on;
}
}
1)通过 upstream 指令,我们定义后端服务器; 2)通过 ssl_preread 模块,将提取 SSL ClientHello 信息。比如 SNI 字段,并注入 $ssl_preread_server_name 字段; 3)通过 map 指令,根据 $ssl_preread_server_name 的值定义 $name 变量的值; 4)最后,在 proxy_pass 中,使用动态的 $name 变量来选择不同的 upstream 服务器;
已知问题
该方案将遗失客户端的真实 IP 地址,需要进一步配置才能解决问题。
参考文献
Module ngx_stream_map_module Nginx TCP forwarding based on hostname – Stack Overflow SSL Pass-Through in Nginx Reverse proxy? – Stack Overflow Module[……]
「Linux」- 学习使用 snap 安装应用
问题描述
在 Ubuntu 中,已经开始使用 Snappy 进行应用管理(03/21/2021)。我们为什么要接受使用 Snappy 来管理应用呢: 1)我们别无它法:在我们使用 Ubuntu 20.04 时,只能通过 Snappy 安装 Chromium 应用。即使使用 APT 安装 Chromium,最后它还是通过 snap 安装。我们亦可使用 Debian 的 Chromium 安装包,但时这些做法都是逆势而为,我们无法阻挡 Ubuntu 采用 Snappy 管理应用(除非团结集体来抗议 Snappy 工具:-) 2)Snappy 包含更多优秀的应用:此外,很多优秀的应用,比如 MySQL Workbench、Redis Desktop Manager 等等,亦能通过 snap 安装,否则安装过程非常繁琐,还会带来其他问题。 3)Snappy 包含最新版本的应用:在 Snap Store 中,我们可以找到最新版本的应用。对于 Linux 桌面系统来说,这是巨大的优势,让我们摆脱 Linux 软件版本过旧的问题。
虽然我们在网上经常看到禁用、卸载 Snappy 的文章,但是按照目前(03/21/2021)的趋势,我们认为 Snappy 即使未应用于服务器环境,但是在桌面环境领域中,也是非常棒的解决方案。所以,我们准备开始接受新事物,学习新技术,学习 Snappy 的使用方法。至少,在桌面环境中,我们会经常使用 Snappy 管理桌面应用。
该笔记将记录:在 Ubuntu 20.04 LTS 中(应该适用于其他版本),使用 Snappy 安装应用的入门示例(旨在快速上手),以及常见问题处理。
解决方案
我们以安装 kubectl 命令为例,演示如何使用 snap 安装 kubectl 命令:
第一步、搜索应用
# snap search kubectl
Name Version Publisher Notes Summary
kubectl 1.18.8 canonical✓ classic Command line client for controlling a Kubernetes cluster.
kubernetes-worker 0.0.1 canonical✓ – A complete Kubernetes worker
kafkactl 1.11.0 dwi-di[……]
「USDT」- Tether USD
认识
USDT(全称 Tether USD)是全球最大的 稳定币(Stablecoin),由 Tether Limited 公司发行,旨在与美元 1:1 锚定(1 USDT ≈ 1 USD)。它作为加密货币市场的“数字美元”,提供价格稳定性,便于交易、支付和避险。
USDT 是什么,其实就是搭建在数字货币和人民币之间的桥梁,虽然场外交易人民币也能买数字货币,但没有 USDT 购买来的便捷。
USDT(Tether) 又称为稳定币,USDT 中文名叫“泰达币”,是 Tether 公司发行的一种将加密货币与法定货币美元挂钩的数字货币,是一种保存在外汇储备账户、获得法定货币支持的虚拟货币。Tether 公司宣称:每发行一枚 USDT,都将会存储 1 美元的保证金;USDT 持有者可以随时用 USDT 向 Tether 公司兑换等额的美元现金,锚定美元的做法使其具备了信用派生货币的权利,成为币圈山寨美联储。
概括:USDT 是 Tether 公司推出的基于稳定价值货币美元(USD)的代币 Tether USD(简称 USDT),其保证 1 USDT=1 美元价值不变,用户可以随时使用 USDT 与 USD 进行 1:1 兑换。
USDT 是加密货币市场的“基础设施级”稳定币,尽管存在信任争议,但其流动性、多链支持和广泛接受度使其成为交易和存储价值的主要工具。用户需注意监管动态和储备透明度,必要时可分散持有 USDC 或 DAI 以降低风险。
构建
如何获取 USDT?
中心化交易所(CEX):币安(Binance)、OKX、Coinbase 等支持法币直接购买 USDT。
去中心化交易所(DEX): 通过 Uniswap、Curve 等用其他加密货币兑换。
OTC 场外交易:通过本地代理商或平台(如 LocalBitcoins)用法币购买。
性质
稳定币机制
– 法币抵押:每发行 1 USDT,Tether 公司声称在银行储备中持有 1 美元(或等值资产)作为支撑。
法币抵押 是指稳定币(如 USDT、USDC)的发行方通过 持有传统法定货币(如美元、欧元等) 作为储备,来确保其发行的稳定币价值 1:1 锚定对应法币。每发行 1 USDT,Tether 公司声称在其银行账户中持有 1 美元(或等价资产)作为抵押。理论上,用户可以随时用 USDT 兑换回 1 美元(尽管 Tether 并不对所有用户提供直接赎回服务)。
– 透明度争议:Tether 多次被质疑储备金不足,但近年逐步提高审计频率(如公布储备构成:现金、商业票据、国债等)。
多链发行 | 多网络
其不仅限于某条区块链,而是通过跨链协议,在多[……]
「TLS」- SSL Certificates | 腾讯云 | 配置 HTTPS 访问 | Tencent Cloud
认识
SSL 证书(SSL Certificates)提供了安全套接层(SSL)证书的一站式服务,包括证书申请、管理及部署功能,与知名的数字证书授权(CA)机构和代理商合作,为您的网站、移动应用提供 HTTPS 解决方案
官网:https://cloud.tencent.com/product/ssl 文档:https://cloud.tencent.com/document/product/400 仓库:None
组成
WIP
构造
购买指南 / 价格总览 | https://cloud.tencent.com/document/product/400/7994
性质
产品简介 / 产品概述 | https://cloud.tencent.com/document/product/400/7572
应用
Configuring HTTPS servers
在腾讯云购买了域名,赠送了一年的 SSL 证书。其他的云平台应该也有赠送吧(瞎猜的)。我的博客主要是静态页面,压根就没有敏感的数据需要保护。但是,送的 SSL 证书不用干嘛,闲着也是闲着,跟一下风,正好也整理一下与 HTTPS 有关的内容,毕竟这里不用其他的地方还要用。所以,HTTPS 还是很有必要学习一下的。
不同 Web 服务器配置方法
详细的配置方法和各种参数在各个 Web 服务器的官方手册里都有介绍。
腾讯云里也有现成的文档,参考 文档平台 /SSL 证书 / 操作指南 / 证书安装指引 文档。涵盖的 Web 服务器有:Apache 2.x、Nginx、IIS、Tomcat 这四种 Web 服务器。
具体的配置方法这里就不再赘述。
证书自动续期及替换
证书管理 / 证书托管 | https://cloud.tencent.com/document/product/400/55818
证书托管,该服务在检测到续费的新证书(或指定证书)后,可以帮助您自动更新证书(自动将新证书部署到旧证书关联的腾讯云云产品),无需您再手动替换,节省您的证书维护时间。
在腾讯云中,申请的免费证书、购买的正式证书,两者都可以支持托管。
如果您的 SSL 证书仅用于部署至腾讯云云资源,开启云资源托管,可实现新证书自动更新到云资源。 如果您的证书用在非腾讯云云资源,即使您的 SSL 证书已开启证书托管服务,仍然需要手动将新证书安装到您的 Web 服务中(替换原证书)。[……]
「CITA」- 区块链服务
认识
CITA(Cryptape Inter-Blockchain Technology Architecture)是一个开源的区块链解决方案,旨在为企业和开发者提供高度可定制的区块链平台。
主页 | https://citahub.com/#/cita 文档 | https://docs.citahub.com/zh-CN/welcome
组成
CITA 采用了多链架构,可以支持并行处理多个区块链,并提供高性能和高度可扩展性;
构建
通过二进制部署
https://docs.citahub.com/zh-CN/cita/getting-started/run-cita
CITA Monitor
docker buildx build –output type=image,push=true \
–file /srv/cita-monitor/agent/cita_exporter/Dockerfile –tag citamon/agent-cita-exporter:20.2.2 \
–platform linux/amd64,linux/arm64 /srv/cita-monitor/agent/cita_exporter
docker buildx build –output type=image,push=false –file /srv/cita-monitor/agent/process_exporter/process-exporter.git/Dockerfile \
–tag citamon/agent-process-exporter:0.4.0 –platform linux/amd64,linux/arm64 /srv/cita-monitor/agent/process_exporter/process-exporter.git
docker buildx build –output type=image,push=true \
–file /srv/cita-monitor/agent/rabbitmq_exporter/rabbitmq_exporter.git/Dockerfile \
–tag citamon/agent-rabbitmq-exporter:1.0.0-RC –platform linux/amd64,linux/arm64 \
/srv/cita-monitor/agent/rabbitmq_exporter/rabbitmq_exporter.git
docker build \
-f /data/cita-monitor/agent/cita_exporte[……]
「Shadowsocks」- Shadowsocks-Qt5(图形化客户端)
通过仓库直接安装
有些发行版的源中并没有提供Shadowsocks-Qt5的二进制包,只能使用源码进行编译。参考源码编译部分。
通过源码编译安装
安装依赖
安装源中存在的依赖:
apt-get install libqrencode3 libqrencode-dev libzbar0 libzbar-dev \
libbotan-1.10-0 libbotan1.10-dev qtbase5-dev
Shadowsocks-Qt5 还依赖库 libQtShadowsocks,所以需要编译安装:
git clone https://github.com/shadowsocks/libQtShadowsocks.git
cd libQtShadowsocks/
# 安装需要的依赖
apt-get install cmake qtbase5-dev libbotan1.10-dev \
libbotan-2-4 libbotan-2-dev
# 创建构建目录,与源码隔离
# 默认的安装目录为:/usr/local
# 查看构建的选项:cmake .. -L
mkdir build && cd build
cmake .. && make && make install # 构建、安装
# Github Repo: https://github.com/shadowsocks/libQtShadowsocks
# Github Wiki: https://github.com/shadowsocks/libQtShadowsocks/wiki/Installation
编译安装
git clone https://github.com/shadowsocks/shadowsocks-qt5.git
cd shadowsocks-qt5 && mkdir build && cd build
# 查看构建选项
cmake .. -L
# 构建并安装
# 默认的安装目录为/usr/local
cmake .. && make && make install
运行测试
#!/bin/bash
/usr/local/bin/ss-qt5
安装的可执行程序
ss-qt5,shadowsocks的GUI客户端。
常见的编译及运行错误
#1 libQtShadowsocks.so.2: cannot open shared object file
ss-qt5: error wh[……]
「MICROSOFT-EDGE」- 微软基于 Chromium 开源项目及其他开源软件开发的网页浏览器
认识
Microsoft Edge,跨平台的 Microsoft 浏览器,能够在多个操作系统平台中运行,将代替 IE 浏览器。
组成
WIP
构建
on Linux with .deb
Microsoft Edge
# 第一步、下载
# https://www.microsoft.com/en-us/edge?exp=e523&form=MA13FJ
wget https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-beta/microsoft-edge-beta_91.0.864.19-1_amd64.deb
# 第二步、安装
dpkg -i microsoft-edge-beta_91.0.864.19-1_amd64.deb
# 第三步、运行
/usr/bin/microsoft-edge-stable
on Linux with Flatpak
# 05/09/2024 通过 Flatpak 安装
https://flathub.org/apps/com.microsoft.Edge flatpak install flathub com.microsoft.Edge flatpak run com.microsoft.Edge
性质
Split Screen
Multitask with Split Screen Browsing
To try Split screen, select Split screen in the tool bar or select and hold (or right-click) a link then select Open link in split screen.
To exit Split screen, select Close split screen (X) at the top right corner of the active screen.
应用
该笔记将记录:与 Microsoft Edge 的安装方法,以及常见设置。
常用配置
Settings / show favourites bar
Q:如何关闭选中文本出现的菜单? A:其在带 Hide menu ⇒ Hide menu always R:Enable or Disable Mini Menu on Text Selection in Microsoft Edge Tutorial | Windows 11 Forum
Q:清除 DNS 缓存? A:edge://net-internals/#dn[……]
「DNS」- 环境部署 | 服务搭建 | 常用工具
服务端的实现
Wikipedia/Comparison of DNS server software
SkyDNS | DNS service discovery for etcd | https://github.com/skynetservices/skydns
BIND | Versatile, classic, complete name server software | https://www.isc.org/bind/
PowerDNS | A Faster, Safer, and More Secure Internet | https://www.powerdns.com/
DNS Safety | DNS Filter for Your Network | https://dnssafety.diladele.com/
第三方的服务
阿里云 | Alibaba Cloud DNS |
https://help.aliyun.com/zh/dns/?
万网 | 域名注册_域名查询 | 阿里云旗下品牌 | https://wanwang.aliyun.com/domain 新网 | 域名| https://www.xinnet.com/domain/domain.html 渠网在线 | http://www.7114.com/index.html
GoDaddy CN | 买域名 | 世界最大域名注册商 | https://sg.godaddy.com/zh
管理端的实现
Wikipedia/DNS management software
常用相关工具
host
nslookup
dig
whois[……]
「TSOCKS」- 命令及选项
tsocks(1)
透明地允许应用程序使用SOCKS代理,是Shell包装器,简化了tsocks(8)库的使用
命令语法格式
tsocks [application [application’s arguments]]
tsocks [-on|-off]
tsocks
命令描述
介于libtsocks.so和被代理的程序之间的一个包装器。实际上,tsocks命令是一个脚本。
命令支持的选项及含义
[application [application’s arguments]] 与环境变量LD_PRELOAD中的设置一起运行程序,这样tsocks将代理程序中的SOCKS连接。
[-on|-off] 用于添加或删除LD_PRELOAD环境变量的值。当libtsocks.so(tsocks(8))存在于环境变量LD_PRELOAD中时,所有的应用将自动使用代理来访问网络。
如果想使用此功能,必须在Shell脚本中加入如下source /usr/bin/tsocks或者. /usr/bin/tsocks行。
. tsocks -on — 将libtsocks.so添加到LD_PRELOAD中。别忘记前导的点号。
. tsocks -off — 将libtsocks.so从LD_PRELOAD中移除。别忘记前导的点号。
[-show|-sh] 显示LD_PRELOAD变量的值。
<without any argument> 用值为libtsocks.so的LD_PRELOAD变量创建一个新的SHELL。
手册上是这么写的。但是,就目前的情况看,单纯的执行tsocks命令会返回”缺少参数”错误。查阅tsocks的脚本程序之后,发现使脚本写的由问题。注释参数检查的行。
相关手册
tsocks.conf(5) tsocks(8)
参考文献
man 1 tsocks, Version 1.8beta5+ds1-1
inspectsocks(1)
man 1 inspectsocks, version tsocks 1.8beta5+ds1-1
检测SOCKS服务使用的协议版本
命令行语法格式
inspectsocks server [port]
server:SOCKS5协议客户端的IP地址或者主机名。
port:可选的端口号。默认为1080。
注意事项
该命令作用于SOCKS协议的客户端,也就是说:
server: 指的是SOCKS协议客户端的主机名
port: 指的是客户端监听的端口号。
该命令不[……]
「SCIENTIFIC-BROWSING」- kcptun + Squid | 创建 HTTP(s) 代理
第一步、部署 Squid 服务
WIP
第二步、部署 kcptun 服务
第一步、下载程序
xtaci/kcptun/releases https://github.com/xtaci/kcptun/releases/download/v20191127/kcptun-linux-amd64-20191127.tar.gz
第二步、服务端运行
服务端监听 54639 端口,将该端口的报文转发到 127.0.0.1:8123 服务:
./server_linux_amd64 -l “:54639” -t “127.0.0.1:8123” \
-mode fast3 -nocomp -sockbuf 16777217 -dscp 46
第三步、客户端运行
客户端监听本地的 8123 端口,将该端口的报文转发到 96.45.180.39:54639(远程的 KCPTUN 服务)上:
./client_linux_amd64 -l “:8123” -r “96.45.180.39:54639” \
-mode fast3 -nocomp -autoexpire 900 -sockbuf 16777217 -dscp 46
此时,如果要远程服务器时,直接使用客户端连接本地的 8123 端口即可。
改进
Client Server Server Server Watcher[……]