前言 天朝绝大多数 ISP 均不为用户提供 IPv6 地址,除了教育网。但是教育网的 IPv6 很不稳定(可能和我的学校有关),而且一旦离开学校就没有 IPv6 了,很不爽。 有一种方法是使用 HE.NET 的隧道服务 。在 SixXS 关闭之后,他们是目前仅存的最大的 IPv6 隧道提供者,而且他们的服务完全免费。但是他们的服务并不适用于天朝的家庭网络环境,因为家庭网络普遍是动态 IP,并且部分运营商为了节省成本已经开始使用大内网,用户无法获取独立 IP,在同一内网就会产生冲突。 好消息是,我有好几台 VPS,均由 VPS 提供商或者 HE.NET 的隧道服务提供了 IPv6。这意味着我可以使用 VPN 方案。但是 Open^_^VPN 早就无法正常跨境使用了,其它 VPN 方案或多或少都有一些问题。 之前我拿来 Docker 组网的 ZeroTier One VPN 倒是能很好的解决这个问题。有中心管理面板,配置简单;跨境使用目前没有问题;官方甚至提供了详细的教程。 准备 ZeroTier One 的注册安装和加入网络,...
使用 ZeroTier One 在多台 Docker 服务器间建立双栈互通网络
前言 多台 Docker 服务器上的容器互通是一个不好解决的问题。如果自建一个 Overlay 网络,就需要在一台服务器上建立 etcd 之类的服务。但如果 etcd 所在的服务器挂了,整个网络就 GG 了。我用的便宜 VPS 有偶尔网络中断的情况,我自己搞崩也服务器是常有的事,所以我不能采取这种方式。 Docker 也有其它的基于 Overlay 的商业化组网方案,例如 Weave,但是对于个人用户来说这些方案的价格太高了(我只是搞来玩玩),所以也不考虑。 在这些网络结构上,etcd 或者 Weave 之类的中心服务器记录了每个容器所在的服务器和内部 IP,所以在任何容器上都可以直接 DNS 解析到其它容器。也就是说,假如我设置了 lantian-nginx 和 lantian-phpfpm 两个容器,在 nginx 的配置文件里我可以直接把 php-fpm 的地址填成 lantian-phpfpm:[端口号],方便配置。 但我好像可以放弃这个功能啊?我的容器数量并不多,而且只有几个 MariaDB 需要跨服务器连接,做数据库主从备份,...
使用东北大学网络中心的 SSH 黑名单系统
东北大学网络中心在其网站上提供了一份 SSH 黑名单,列出了使用端口扫描工具扫描 SSH 端口的 IP 名单,貌似是由他们自己设立的蜜罐服务器检测统计的。同时,他们也提供了黑名单对应的 hosts.deny 文件的下载,允许用户使用 cron 一类的计划任务软件自动更新 SSH 黑名单列表并屏蔽这些扫描者(阻止它们登录)。 不确定这套系统是什么时候推出的,但是它至少已经运行了两年了。另外,它对于这些 IP 的屏蔽时间貌似是最后一次发现的 60 天内。 使用方法:在服务器上安装 cron,然后运行如下命令安装脚本: ldd `which sshd` | grep libwrap cd /usr/local/bin/ wget antivirus.neu.edu.cn/ssh/soft/fetch_neusshbl.sh chmod +x fetch_neusshbl.sh cd /etc/cron.hourly/ ln -s /usr/local/bin/fetch_neusshbl.sh . ./fetch_neusshbl.sh 这个脚本会每小时连接东北大学网络中心的服务器,下载最新的 hosts.deny 并应用到你的系统上。...
LT NoLitter:防止 Android 应用乱建文件夹的 Xposed 插件
Android 系统有着用户可直接操作的存储空间,用户可以很方便地管理自己的文件(相比 iOS 而言)。但是某些软件也会在存储空间根目录直接建立大量的文件夹,影响了用户的文件管理,并对强迫症人群造成了极大的威胁。 于是我写了一个 Xposed 插件。插件 Hook 了 Android 的 File 类,当有程序尝试用 File 类读取或写入根目录的文件或文件夹,插件会检测这个文件或文件夹是否存在。如果存在,那么插件不做任何操作;如果不存在,那么插件就将操作重定向到 /Android/files 文件夹下。 相比于 XInternalSD,这样操作的优点是可以对付某些不自律的应用。这些应用不使用 Android 系统函数获取存储路径,而是直接将文件保存到 /sdcard 之类的通用路径,XInternalSD 只修改了获取到的存储路径,因此无能为力。 相比于 SD 重定向,这样操作免除了复杂的配置。用户只需要在装上插件时把文件管理应用拉白名单,...
基于 Mailgun 的 Typecho 评论邮件提醒插件
很多时候,在 WordPress、Typecho 等自建评论系统的网站中回复,只能靠自己不断访问来确定自己的评论有没有被别人回复。然而,对于大多数人来说这样做是非常麻烦的。 博主解决问题的常用方法,就是安装邮件提醒插件。当一名评论者的评论被回复,就会有邮件提醒评论者。 Typecho 上使用最广泛的插件是 CommentToMail,最早由 DEFE 开发,后来由 Byends Upd 接手。该插件通过常用的 PHP Mail,SendMail 或者 SMTP 来发送邮件。 但是,比起以前的注册一个邮箱来发提醒邮件,现在博主们也开始使用 Mailgun 之类的邮件平台。这类邮件平台提供 API 发信功能,不需要再进行复杂的 SMTP 发信设置,也不需要繁杂的处理代码。我就对这个插件进行修改,让它通过 Mailgun API 而不是 SMTP 发送邮件。 GitHub 项目地址: https://github....
将网站迁移到 Docker
Docker 是一个 Linux 下的容器管理软件。每个容器某种意义上相当于一个 OpenVZ VPS,可以将服务器上的各个应用隔离开来。这种隔离有助于同一软件不同版本,或是互相冲突的软件在同一服务器上运行,比如 MySQL 5.7,MySQL 5.6 和 MariaDB 10.1 可以在同一台服务器上的三个 Docker 容器中运行。 但是 Docker 比 OpenVZ 优秀的地方在于,它对 Linux 内核的版本要求要宽松的多。OpenVZ 的内核至今为止停留在 2.6.32(稳定版)和 3.10(开发版),但是 Docker 可以在 3.10 以上的任何版本 Linux 内核运行。我的服务器现在运行 Linux 4.9 内核(为了 BBR),明显不能运行 OpenVZ,但是可以运行 Docker。 Docker 另一个优点是提供了一套非常完整的镜像仓库和自动化工具。在 OpenVZ 上,我必须分别登录每台 VPS,设置网络, apt-get ,还要定期去每台 VPS 上备份数据。但是在 Docker 上,我可以直接使用现有的软件镜像(不用再 apt-get ),...
一次 Linux 内存泄漏的排查
起因 我最近在用 PHP 写一套自己的 VPS 监控系统,包括 VPS 端和显示端。今天下午 3 点,我给监控系统加上了监测 VPS 上服务的运行情况的功能。由于我的 VPS 统一使用 Debian 8 系统,我使用了 service --status-all 作为获取服务运行情况的方式。在测试正常后,我去干其它事了。 晚上 9 点多,我看到了 NodeQuery 于 7 点给我发的报警邮件,提示我的某台 VPS 内存占用过高。 我打开监控系统一看,这台 VPS 的内存占用达到了 400M / 500M。不仅如此,另一台 VPS 也内存暴涨,达到了 600M / 1G,但因为总内存大没有触发报警。 问题是,这两台 VPS 都只安装了 SS 和锐速,怎么可能占用这么大的内存?我登上其中一台,用 ps -aux 查看进程列表,却发现没有任何进程占用了这么大的内存。 锐速背锅? 我第一时间怀疑的是锐速。众所周知,锐速官方关闭了新用户的购买和下载安装通道,因此我们只能使用破解版的锐速。 /serverspeeder/bin/serverSpeeder....
Bilibili 弹幕过滤工具
随着 Bilibili 用户的增多,不少小学生也进入了 B 站,并且发布了大量不合弹幕礼仪的弹幕,对其他用户观看视频造成了极大的影响。不少用户甚至因此彻底关闭弹幕,但不看弹幕用什么 B 站? 我自己用 Python 3 写了个小程序以过滤掉小学生弹幕(同时这个程序也是最近编程课 Python 的练手)。程序可以在 https://github.com/xddxdd/bilibili-dmshield 看到。 可以通过将 comment.bilibili.com 的 IP 通过 hosts 文件指向 127.0.0.1,或者通过 FoxyProxy 或者 SwitchyOmega 等插件将 comment.bilibili.com 的代理指向程序的代理端口,来使用过滤功能。 程序功能如下: 1.顶端底端弹幕过滤:只保留科普君(短时间发送多条顶端底端弹幕)和字幕君(整个视频中发送多条顶端底端弹幕),其它全部重设为滚动弹幕。 2.智能关键词过滤:对于某些关键词(如金坷垃),仅当它在弹幕中大量出现时才会放心,不影响与这些关键词本身相关的视频观看。 3.长弹幕截断:...
Bilibili 底端弹幕转 LRC 工具
Bilibili 上从来不乏各路大神的作品,包括各类原创音乐、翻唱,还有带感的鬼畜。有时我们想把它们保存到一些能放音乐+歌词,但不能放视频的设备上(比如某些 MP3),或者把它们作为 BGM 在后台播放并在桌面上显示歌词。 问题是,许多优秀的作品是无法在主流音乐软件里找到的,即使某些作品能在音乐软件里找到(例如传说和 B 站有一腿的网易云音乐),某些作品一时也没有歌词可用(尤其是新作品)。 但是,当你打开 B 站的弹幕,有许多野生字幕君已经做好了底端弹幕。我们只需要将这些弹幕的时间轴和内容提取出来,就可以快速生成歌词文件(如 LRC)了。 我用 Python 写了一个小程序来帮我干这事。这个程序可以在 https://github.com/xddxdd/bilibili-danmaku2lrc 下载到。 要注意的是,这个小程序依赖 Python Requests 模块,需要先输入以下代码安装: pip install requests # Python 2 pip3 install requests # Python 3 程序运行示例如下: lantian-macbook:...
GetIPIntel 的 Typecho 插件
GetIPIntel 的介绍可以在 刚刚这篇文章 看到。 我写了一个 Typecho 的插件,可以阻止使用代理的访客评论,或者把他们的评论丢进垃圾箱。 功能: 多种模式选择(仅黑名单,快速检查,全面检查) 多种处理措施(人工审核,丢垃圾箱,提交失败) 自定义阈值 插件可以在 https://github.com/xddxdd/typecho-getipintel 下载到。把 GetIPIntel 文件夹丢到 usr/plugins 文件夹下面就行。...