家里ADSL上网无固定外网IP的群晖NAS安全实现与公网MySQL服务器主从同步

家里 ADSL 上网,没有办法分配固定外网 IP ,现在想使用群晖自带的MariaDB 安全实现与公网 MySQL 服务器主从同步。

最大的问题实际上是如果暴漏 MySQL 服务器的端口,但是不限制来源 IP 地址的话,会造成非常大的安全隐患。

但是, ADSL 恰恰不能提供固定的 IP 地址,我们需要解决这个问题。如果通过在公网数据库服务器上搭建 OpenVPN 服务器的方式,我们恰恰可以把内外网的设备影射到同一个子网中,而且 OpenVPN 提供的加密服务支持,刚刚好满足我们的安全需求。

注意一旦配置主从同步,磁盘的休眠会被MySQL的同步写入打断,导致磁盘不能正常休眠,毕竟正常情况下数据库是持续写入的,不存在很长时间的停顿。这样会导致磁盘周期性的咔咔寻道声,尤其是晚上。

噪声问题,参考 群晖(Synology) DS718+希捷酷狼(Seagate IronWolf)12TB空闲发出持续噪声

1. 参考 Ubuntu架设OpenVPN实现内网穿透 搭建整个的 OpenVPN 服务器。映射完成后,设备上会新增一个名为 tun0 的网卡设备。同时所有连接到 VPN 服务器的设备都被被影射到 10.8.0.X 的网段。 公网服务器的地址默认是 10.8.0.1,本文中, 群晖NAS的地址被设定为 10.8.0.7

2. 配置防火墙规则,许可来自指定网卡指定地址的设备的访问。注意,此处一定要指定网卡为 OpenVPN 创建的虚拟网卡,否则造成安全隐患。

3. 参照 ubuntu 16.04配置基于SSL的MySQL主从同步 配置服务器

4. 接下来是群晖NAS的配置

首先是群晖服务器上没有 MySQL,需要安装 MariaDB ,如下图:
继续阅读家里ADSL上网无固定外网IP的群晖NAS安全实现与公网MySQL服务器主从同步

解决macOS Mojave(10.14.6) SSH连接断开问题

在使用SSH客户端进行连接管理的时候如果长时间不输入命令, 服务器会自动断开连接, macOS Mojave(10.14.6) 系统上问题比较严重,即时服务端一直发送数据,也会出现连接中断的情况,导致长时间执行的远程 Shell 会大概率失败。


然后在配置文件尾部,增加如下内容:

同时,对于超长时间的SSH监控,需要设置屏幕关闭时不要让电脑休眠,否则依旧会断开,原因在于对端发送数据的时候,电脑休眠,对于长时间的空连接是没问题的,但是对于数据频繁发送的情况,是必须阻止电脑休眠的。如下图:
继续阅读解决macOS Mojave(10.14.6) SSH连接断开问题

iMaker 3D打印机使用最新的Ultimaker Cura 4.2.1

iMaker 3D打印机本质上是一台 Ultimaker v1.5.7 硬件的机器,当时买的时候,使用的软件还是早期的 Cura 13.06.4

随着 Ultimaker 官方软件的更新,提供了更加方便的操作,以及更加稳定高效的打印能力。从实际打印效果来看,最新的软件明显优于之前的版本,升级软件是非常值得的。

但是当时的硬件厂家已经不提供技术支持了,幸好是开源的软硬件,因此只要自己动手能力足够,还是比较方便操作的。

首先参考 iMaker 3D打印机Marlin固件编译以及故障排除 升级固件到最新的Marlin版本。

接着根据原来的厂家说明书,我们在最新版本的 Ultimaker Cura 4.2.1 上进行如下操作:

继续阅读iMaker 3D打印机使用最新的Ultimaker Cura 4.2.1

iMaker 3D打印机Marlin固件编译以及故障排除

几年之前买的一台 iMaker 3D打印机,已经在角落里面落灰许久了,本质上是一台  Ultimaker v1.5.7硬件的机器,因此使用 Ultimaker 的软件跟固件都是没有问题的。貌似这家公司现在已经快不行了的样子。 官网都已经打不开了。
继续阅读iMaker 3D打印机Marlin固件编译以及故障排除

群晖DSM 6.2增加zgrep命令

群晖 DSM 6.2 系统上执行 zgrep 命令的时候提示找不到命令,其他平台系统(ARM ),需要手工编译安装ZUtils,来提供。但是如果是 X86 系统的话(比如 DS718+ ),可以直接使用交叉编译环境里的工具,直接拷贝到系统即可。

首先参考 搭建群晖交叉编译环境(DS718+/ubuntu 16.04.6/DSM 6.2.1-23824 Update 6) 搭建群晖 DSM 6.2 的编译环境。

DS718+ 执行如下:

 

 

需要编译的(ARM 芯片版本),执行如下命令编译:

对于编译好的程序,复杂的可以自己制作安装包,简单的可以直接通过SSH推送到设备的/usr/local/bin目录下即可。

比如本次编译结果:

参考链接


Debian旧版本源同步脚本

最近 Debian Wheezy/Jessie 源被官方归档了,使得许多来不及更新系统的服务器没源可用,http://archive.debian.org  访问速度太慢, 不得以自己写个脚本同步 Wheezy/Jessie 源。

Debian 官方推荐使用 debmirror 同步源,但是在群晖等设备上不方便使用,因此还是用 rsync 同步通用一些。

主要是自己的 WD MyCloud Gen1 在编译软件的时候,依赖 WheezyJessie 版本的软件包,又没办法升级系统,只能是自己建立软件源,保存一下,免得日后麻烦。

由于 Debian 源的结构,要单独分版本来同步很不方便,包都集中在 /pool 目录下,故此脚本主要根据索引文件来生成该版本的包列表ARCH_EXCLUDE 用来过滤不同架构的包的dists 用来过滤不同版本的同步完成后,整个 Wheezy/Jessie 源(i386,  amd64, arm,  source) 共 96G

Wheezy Archive 源设置

同步脚本代码

更多 debian-archive 源,见: http://www.debian.org/distrib/archive

参考链接


Debian系统启动非常耗时,屏幕显示“A start job is running for /dev/disk/by-uuid/...a71b-4040-9b53-e92525f6803e”,错误“Timed out waiting for device /dev/disk/by-uuid/197c3d31-a71b-4040-9b53-e92525f6803e”

最近Debian 系统启动非常耗时,每次启动都要等待1分30秒的任务超时才能启动,屏幕显示“A start job is running for /dev/disk/by-uuid/...a71b-4040-9b53-e92525f6803e”,如下图:

继续阅读Debian系统启动非常耗时,屏幕显示“A start job is running for /dev/disk/by-uuid/...a71b-4040-9b53-e92525f6803e”,错误“Timed out waiting for device /dev/disk/by-uuid/197c3d31-a71b-4040-9b53-e92525f6803e”