Canary Workshop

Whatever is worth doing at all is worth doing well

使用 Gnuk 和 ST-Link v2 制作 GPG 硬件密钥

市场上常见的 GPG 硬件密钥(即 GPG 智能卡)主要是 YubiKey 和 Nitrokey,这些产品常常比较昂贵(对作为 GPG 密钥来说)。经过搜寻,发现了利用的 ST-Link v2 与 Gnuk 制作密钥的方案。在万能的某宝上 ST-Link v2 只需不到20元即可买到。ST-Link v2 的主要部分是一枚 STM32 芯片,同时搭配有 128KB 的存储空间(虽然设计上是 64KB,但实际上能买到的都是 128KB),正好可以存入 Gnuk 的二进制程序码。

自制 Tunnel Broker 服务

许多人都经常使用 Hurricane Electrics 提供的 Tunnel Broker 这项服务。我们可以通过其免费获得公网 IPv6 地址。但有时,这项免费服务并不是很适合我们的情况。比如本地通往 HE 的隧道服务器网络不佳,或者 HE 不提供我们需要的服务器位置。如果我们拥有 IPv6 地址块,则可以尝试自建 Tunnel Broker 服务。虽然维基百科上称 HE 的服务器部署方案是“Unknown”,从连接指令会发现其实就是 SIT 隧道而已,因此也是很好仿制的。这里我使用了/64 + /64 + /48大小的 IPv6 地址块尝试了模仿 HE 的隧道配置并取得了成功。

Linux 连接北邮校园网

事实上这篇文章是在折腾树莓派时写的。北邮校园网并不使用一般使用的 WPA2 的网络验证方式,且校园网内设备数量繁多,难以找到目标设备。因此文末附有一个超级简单的使用 Hurricane Electric Free DNS 的动态 DNS 脚本。

使用 HAProxy 实现单端口多服务

我们知道,默认情况下 HTTPS 服务监听443端口,而 SSH 监听22端口。是否可以将二者合在一个端口呢?例如,这样来规避仅能访问80或443端口的网络的限制。之前有使用 SNI Proxy 实现这个功能,即能识别为 HTTPS 的包传输给 nginx 而剩下的传输给 sshd 。那么,假如又增加了某种“没有特征”的流量转发工具呢?是不是无法使用一个端口了?

这里就要祭出一大神器 HAProxy 。虽然这样的转发不是其主要使用场景,但是使用 HAProxy 的功能是完全可以达到目的的。

实现的原理不论是 SSH 服务还是 HTTPS 服务,都拥有十分强烈的特征。如果对每个 TCP 数据包进行识别,按照一定特征对其进行转发,而完全无法识别的发送给特定程序,目的就实现了。

操作环境: Debian 9 x64

Debian 9下使用Bind9的分地区解析功能

自从去年CloudXNS翻车后,就逐渐将DNS挪到了HE.net,后来又迁移到自建的DNS上。但按国家、大洲甚至时区等解析的功能始终无法实现,于是就折腾了一下Bind9的GeoIP功能,总结了一下其中的坑,在这里记录详细的配置过程。

期望的目标:

  • 对于来自亚洲、欧洲、北美洲的请求分别返回服务器A、B、C的地址
  • 对于来自中国的请求无视上面的亚洲设置,直接返回服务器D的地址
  • 对于来自其他地区的请求,返回服务器E的地址
  • 措施一定的抗攻击措施

以下步骤在全新的Debian 9 x64上测试通过。

Debian下完整邮件服务器的安装、配置

几个月时间断断续续折腾出来了一台完整的邮件服务器,在这里记录一下安装流程以备参考。

真的很麻烦!真的很麻烦!真的很麻烦!
左转第三方邮件,右转iRedMail

套件组成主体:

  • Postfix - SMTP服务器
  • Dovecot - IMAP/POP3服务器
  • MariaDB - 数据库
  • SpamAssassin - 反垃圾邮件
  • ClamAV - 杀毒工具
  • RoundCube - Web端程序
  • nginx和PHP - Web环境
  • OpenDKIM - DKIM工具

本文使用全新安装的Debian 9 x64操作。

本文参考了中、英、日文互联网上的大量教程、博文、问答、讨论,其中主体部分参考DigitalOcean文档中的教程。本文最终希望打造一台拥有基础收发功能、抗垃圾、抗病毒、易用的邮件服务器。本文部署的服务均使用TLS,认为SSL证书和私钥分别位于/etc/ssl/mail/mail.crt/etc/ssl/mail/mail.key。安装时为方便操作,直接使用root用户执行命令。

下面开始安装吧

Debian 9 + nginx + PHP 7 + MariaDB环境下的ownCloud安装配置

很早以前,当我还在用Apache2的时候,我曾经安装过ownCloud,但那时没有服务器空间存储文件。现在有了一台大硬盘的存储型VPS,搭建ownCloud便又一次提上了日程。ownCloud官方推荐的WebServer环境是Apache2,各类教程也基于之编写。我因为已经习惯nginx,便想设法让其运行于nginx之上。这并非不可以,但前前后后居然折腾了数个小时,ownCloudnginx上运行的配置堪称坑!坑!!坑!!!为了给以后的安装留下参考,我在这里记录下安装的详细过程。

服务器端Transmission的替代品:Cloud Torrent

之前为了在校下载文件和下载一些被天朝【哔】掉的资源,我在服务器上搭建了Transmission,表现良好。但Transmission的功能太强大,有许多我用不到的功能,因此我换用了更轻量级的BT客户端Cloud Torrent。这是一个极简的BT客户端,相比Transmission有如下优点:

  • 由Go语言写成,仅有一个二进制文件,极为轻量级
  • 资源占用小
  • 界面简洁易操作
  • 下载完毕后直接给出HTTP链接,更便于拖回本地

这些特性正好符合我的需求,于是我卸载了Transmission换用Cloud Torrent,使用supervisor守护运行,并用nginx作为反向代理以便于访问和添加HTTPS支持。以下步骤在Ubuntu 16.04.3 LTS x64的服务器上测试通过:

KVM VPS的全盘备份与恢复

事情的起因是,VPS又爆炸了。。。

虽然说整个服务器爆炸到必须重装的事情遇到的也不少了,但天天重装也不是个办法。现在很多VPS服务商不提供备份服务,仅自己备份数据仍然无法免除重装的麻烦。服务器恢复之后,痛定思痛,明白需要找到个合适的备份方法。于是有了通过SSH进行dd的方法。