Canary Workshop

Whatever is worth doing at all is worth doing well

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的方法。

Ghost换到Hexo的各种坑

又双叒叕换CMS了。

陪伴了我9个月的Ghost终于退役了。Ghost的确不错,但是某些地方差强人意,例如极为麻烦的升级,花式的报错,还有几乎为0的扩展性。而这些恰恰是Hexo拥有的,因此我最后决定用Hexo代替Ghost。虽说都是基于Node.js的,但其中还是有不少坑的,前后折腾了大约6小时才完成。

初探nginx+TLS 1.3

春天到了,又到了交配折腾的季节。

一直以来我都在关注TLS 1.3的进展。TLS 1.3作为新一代的安全标准,对比前代的提升是巨大的(参考Cloudflare对于TLS 1.3的介绍)。可惜长期以来这个协议都在草案阶段(从IETF文档上来看从2014年至今,且目前仍未最终定稿,只是已经打到最后阶段并且有了相应的实现),并不能真正部署。今天早晨获悉OpenSSL 1.1.1的测试版发布了,带有TLS 1.3的支持。其实火星了一个月

嘛,无论如何,既然已可以部署,那就部署来看看于是拿出了吃灰的NyaBoom的闲置VPS。下面是完整的部署过程。整个部署基于全新安装的Ubuntu 16.04.2,而且仅仅部署HTTPS相关的最基本模块。

截至目前,OpenSSL 1.1.1仍处于测试阶段,而且TLS 1.3协议本身也尚未定稿,因此下面的操作具有不可预料风险,极不建议在生产环境的服务器上部署。

那么,一切就位,开始吧!