制作只有 4KB 大小的永久挂起程序

在我的网络配置中,部分 Docker 容器的服务需要用 Anycast 的方式实现高可用,例如 DNS。 在之前的文章中 ,我的做法是,创建了一个 Busybox 容器运行 tail -f /dev/null 这条命令,永久挂起,不占用 CPU 也永远不会退出,来维持一份网络命名空间给服务程序和 BIRD 共享。 用人话说就是:我自己发明了一遍 Kubernetes 的 Pod。 我不使用 K8S,因为我的节点都是独立的,不组成集群,因此不使用 K8S 的集群功能,另外它的配置也比较复杂。 但是我转念一想,为了网络命名空间建一个 Busybox 容器好像有些大材小用,我还需要手动配置一个 Entrypoint。如果有一个极小的 Docker 镜像,唯一干的事情是等待,那就更好了。 方案一:直接用 Musl + 静态编译做一个 最容易想到的方法就是写一个死循环的 C 程序,不断的用 sleep 之类命令等待。Linux 系统中,Glibc、Musl 等 C 语言运行库提供了一个 pause 函数,暂停程序运行直到程序收到了外部信号。...

静态编译制作微型 Docker 镜像

Docker 镜像中存储的,可以看作是一个个小型 Linux 系统。它们大都以 Debian、Ubuntu 或是 Alpine 作为基础,再在上面安装额外的软件而成。 以完整的 Linux 作为基础的好处就是镜像中会自带常用的命令( ls , cat 等),在镜像构建过程中常常用到。另外它们也带有完善的包管理机制,简单使用 apt-get 就能装好软件,做出一份能用的镜像。但当镜像做出之后,上面这些工具就用不到了,占用了不必要的磁盘空间。另外,完整的操作系统也会带有 SystemD、OpenRC 等管理后台服务的程序,而 Docker 容器常常只用来运行一个程序,后台管理程序就多余了。 虽然 Docker 镜像采用分层设计,将基础的系统镜像(例如 Debian)和上层修改(例如安装的 nginx)分开存储并进行去重,从而减少了重复的空间占用,但没有完全解决问题。例如假设我先基于 Debian 构建了一个镜像 A,过了一个月又构建了镜像 B。但在这一个月中,Debian 的基础镜像进行了升级,...

优雅地在 Traceroute 里膜 拜大佬 的插图

优雅地在 Traceroute 里膜 拜大佬

Traceroute 是常用的检查网络状况的工具之一,会显示你操作的电脑到指定服务器的网络路径上经过的每一个路由器的 IP 地址,类似于这样: 可以看到后两跳的 IP 显示出了对应的域名,这个域名就是 IP 的反向解析记录。反向解析记录在 DNS 服务器中以类似 4.3.2.1.in-addr.arpa 域名的 PTR 记录形式存在。更多的信息可以参考《 在 DN42 中设置 IP 反向解析 》这篇文章。 自然,Traceroute 里能显示字,也就能显示一篇文章。两年前我为了达到这个目的, 开了一堆 Docker 容器,修改它们的路由表让它们连成一长串,来做出显示文章需要的路径 。 但是开一堆容器不够优雅,而且也不方便管理,尤其是路径过长的时候。更好的方法是用一个程序创建一张虚拟网卡,直接根据进入的 Traceroute 请求回复相应的数据包。这样不仅节省了一大堆容器的系统资源和管理负担,而且也容易根据需要实现复杂的功能。 于是我就写了这样一个程序,在 https://github....

友华 PT926G 关闭 TR069

本文介绍如何关闭友华 PT926G 光猫的 TR069 功能,防止电信推送配置/固件更新,导致你自己改的桥接、端口转发等失效。 这台光猫的 WAN 设置里,TR069 连接是无法修改或者删除的。但是我们只要对光猫后台的代码做一点小小的修改,就可以破解这个限制。 首先你需要按照我的《 友华 PT926G 光猫破解 》这篇文章获取 Telnet 管理员密码。 然后 Telnet 进去,执行 su 并输入密码进入 Root Shell。进入后命令行应该会显示 # 。 然后依次执行以下操作: 输入 cp /home/httpd/web/net_eth_links.asp /var/ ,回车运行。 我们准备修改这个文件,但这个文件放在一个只读的分区上,所以先把它复制一份到可以读写的地方。 输入 vi /var/net_eth_links.asp 编辑这个文件。 vi 是著名的非常难用的编辑器,因此我们一步步来: 输入 /is_configurable 然后回车,也就是查找 is_configurable 这个字符串。光标应该会跳转到这个位置:...

未雨绸缪:使用后量子时代的加密算法 的插图

未雨绸缪:使用后量子时代的加密算法

现代互联网上,绝大多数网站都已经支持 HTTPS,其使用的 SSL/TLS 加密协议会将用户的请求数据与网站的响应进行加密,以防止信息被路径上的恶意用户窃取或篡改。而 SSL/TLS 协议中的一个重要组成部分是 RSA、ECDSA 等 非对称加密 算法,这些算法的密钥分为 公钥、私钥 两份,公钥可以公开,而私钥则要妥善保管。 在访问 HTTPS 网站时,会经过以下的流程: 网站会将它的 公钥 (以证书形式)发送给浏览器。 浏览器会校验公钥的有效性,防止中间人篡改公钥,从而拦截或监听通信。 浏览器(或操作系统)内置了一组可信任的证书颁发机构(CA)的公钥,通过密码学方法可以确认这份公钥是其中某个颁发机构生成的。 证书颁发机构则会通过一系列方法(多级证书链,物理隔绝的密钥保存设备)来保护他们自己的私钥安全,防止有人窃取他们的私钥来随意生成被信任的证书信息。 浏览器会与证书颁发机构的服务器联系,查询「证书吊销列表」(Certificate Revocation List)。...

自建 DNS 根服务器

随着近期中美对抗的不断升级,国内的部分社交平台上出现了一种担忧,担心美国切断 DNS 系统的根服务器到中国大陆的网络连接,或者在 DNS 根服务器中删除中国的域名记录,从而破坏中国的互联网。 目前已经有很多分析,说明这种情况不太可能出现,大都从以下两种观点出发: DNS 根服务器使用 Anycast 来广播 IP,中国大陆境内实际上是有根服务器的,不会受到关停影响; 从经济/政治上,美国切断 DNS 根服务器对他们自己的弊大于利。 而今天我会从另一种观点出发: 你可以在短时间内自己搭建一个 DNS 根服务器,并且让你的递归 DNS 使用它。 是的,要自己搭建的 DNS 根服务器和目前作为互联网基础服务的 DNS 根服务器在功能上是等同的。 本文更新日志 2020-10-01:处理根 DNS 记录时,把 DS 记录也保留,以更好支持开启了 DNSSEC 的递归解析服务器。 2020-09-05:初始版本。 DNS 解析原理 我们首先回顾下 DNS 解析的流程: 你打开电脑,输入 https://www.lantian....

友华 PT926G 光猫破解

本文介绍如何在不拆光猫、不使用串口转换器的情况下,破解友华 PT926G 光猫的以下权限: 管理面板的超级管理员用户(telecomadmin) Telnet 的 root 用户 访问 FTP 坐标深圳电信。 登录超级管理员界面 如果你直接访问光猫的 IP( http://192.168.1.1 ),你会看到以下的智能网关登录界面: 在这个界面你可以用 useradmin 账户和光猫背后标记的密码登录,但进去之后没什么功能,只有一个 Wi-Fi 的设置是有用的。 但 nmap 扫描显示事情并不简单: $ nmap -v 192.168.1.1 # 省略一些输出 PORT STATE SERVICE 21/tcp filtered ftp 22/tcp filtered ssh 23/tcp filtered telnet 53/tcp filtered domain 80/tcp open http 445/tcp open microsoft-ds 8080/tcp open http-proxy 10001/tcp open scp-config 32768/tcp open filenet-tms 有一个 8080 端口,我们访问一下( http://192.168.1.1:8080 ): 嗯,熟悉的味道,...

制作一个优雅的平安经生成器

由于本文内容与所用语言有关,中文、英文版内容有少许差异。 《平安经》简介 《平安经》由(前)吉林公安厅党委副书记、常务副厅长贺电所作,书中内容只是句式「XXX 平安」的简单重复,但书籍售价很高。因此公众质疑本书的出版和出售有索贿嫌疑。 《平安经》的内容格式如下:(来自 维基百科 ) 「眼平安,耳平安,鼻平安」 「上海港平安、深圳港平安、宁波舟山港平安、广州港平安」 「初生平安、满月平安、百天平安、1岁平安、2岁平安、3岁平安」 「孟加拉湾平安、墨西哥湾平安、几内亚湾平安」 我一看到这个格式,就发现它很适合做标签云。那么就让我们开始吧! 最简单的版本 我用的是 Hexo 静态网站系统,只要在主题的 layout 文件夹下新建一个 ping-an-jing.ejs 模板文件,然后在合适的地方插入如下代码: <% site . tags . forEach ( tag => { %> < a href = "<%- url_for(tag.path) %>" > <%= tag....

笔记本 Optimus MUXless 下的 Intel 和 NVIDIA 虚拟机显卡直通 的插图

笔记本 Optimus MUXless 下的 Intel 和 NVIDIA 虚拟机显卡直通

更新记录 2022-07-21:补充 GVT-g 开机自启,感谢 Owsmyf 提醒。2022-01-22:根据 NVIDIA 驱动更新、评论区反馈更新内容。 我在新电脑上成功完成了 Optimus MUXed 显卡直通。 摘要(剧透) 我成功在联想 R720 游戏本上把 Intel 核显的 GVT-g 虚拟显卡,以及 NVIDIA 独显本身直通进了虚拟机。 但是由于受到架构本身的限制,这套方案有非常大的局限,例如很多游戏无法调用独显、操作麻烦、显示性能仍然较低等。 因此,现阶段可以为了折腾而尝试,但不建议用于实用用途。 为什么要这么做 我平常浏览网页、写代码等操作都在 Arch Linux 系统下完成,很少使用 Windows 双系统。但是有的时候我想和同学联机游戏,就不得不重启到 Windows 系统。 虽然已经有了 Wine、Proton 兼容层来运行 Windows 应用,还有 DXVK 来转译 DirectX 命令到 Vulkan 来提升性能,但是还是有很多游戏无法在 Wine 环境下正常运行,例如自带 DRM 或者反作弊保护的游戏,...

愿者上钩(指美国签证) 的插图

愿者上钩(指美国签证)

附取消邮件内容: 自2020年2月3日起,美国驻北京大使馆和美国驻成都,广州,上海和沈阳总领事馆暂停普通签证业务的办理。因此,美国驻华使领馆将取消6月29日至7月10日的移民和非移民签证预约。鉴于新型冠状病毒情况的持续变化,美国驻华使领馆仅维持非常有限的人员,因此无法提供常规的签证问询服务。虽然我们会提供少量的紧急面谈,但有计划赴美的申请人应留意2月2日(周日)发布的总统声明,规定在入境美国之前的14天内,去过中国(香港和澳门特别行政区除外)的外国旅客将被禁止入境。更多关于总统声明的信息可从我们网站上获得 https://travel.state.gov/content/travel/en/traveladvisories/ea/Presidential-Proclamation-Coronavirus.html。 在此期间,如果您有紧急的赴美需要并且认为是属于声明以内的豁免情况,请按照 https://ustraveldocs.com/cn/index.html 上指引提出申请紧急预约。请注意,如果您的紧急赴美需求不属于声明以内的豁免情况,...