继续阅读恒兴HX-207教学收音机组装
恒兴HX-207教学收音机组装
继续阅读恒兴HX-207教学收音机组装
群晖 DS718+
,系统默认自带2GB
的内存,平时使用足够了,但是随着软件的增加,内存有些捉襟见肘,需要增加一些内存。
群晖 DS718+
的内存型号信息如下图:
继续阅读群晖DS718+增加内存
家里 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
创建的虚拟网卡,否则造成安全隐患。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
$ export slave_ip=10.8.0.7 #删除可能已经存在的配置,避免出现多条重复记录 $ sudo iptables -D INPUT -i tun0 -p tcp -s $slave_ip --dport 3306 -j ACCEPT #增加配置,只允许特定地址访问数据库端口 $ sudo iptables -I INPUT -i tun0 -p tcp -s $slave_ip --dport 3306 -j ACCEPT $ sudo iptables -L -n -v #保存配置 $ sudo apt-get install iptables-persistent #注意,iptables-persistent 与 ufw 冲突, #现象就是系统重启后执行 sudo ufw status 显示 inactive, #但是sudo systemctrl ufw status 或sudo service ufw status 显示服务正常, #实际上ufw并没有正常工作。 #如果两者同时安装,需要参考 https://www.mobibrw.com?p=29330 进行配置 $ sudo netfilter-persistent save #配置被保存到/etc/iptables/rules.v4 /etc/iptables/rules.v6这两个文件下面, #最好确认一下实际保存的内容,尤其是安装了denyhosts等其他安全软件的情况下, #可能会记录了多余的规则,需要手工删除 |
3. 参照 ubuntu 16.04配置基于SSL的MySQL主从同步 配置服务器
4. 接下来是群晖NAS的配置
首先是群晖服务器上没有 MySQL
,需要安装 MariaDB
,如下图:
继续阅读家里ADSL上网无固定外网IP的群晖NAS安全实现与公网MySQL服务器主从同步
在使用SSH客户端进行连接管理的时候如果长时间不输入命令, 服务器会自动断开连接, macOS Mojave(10.14.6)
系统上问题比较严重,即时服务端一直发送数据,也会出现连接中断的情况,导致长时间执行的远程 Shell
会大概率失败。
1 2 3 4 5 |
# 如果全局所有用户都有效,则调整如下文件 $ sudo vim /etc/ssh/ssh_config # 如果仅仅当前用户都有效,则调整如下文件 # vim ~/.ssh/config |
1 2 3 4 5 6 7 8 9 10 11 12 |
Host * SendEnv LANG LC_* # macOS Mojave 需要设置为 no 否则照样会断开 TCPKeepAlive no # 客户端每隔 60S 发送一个空报文 ServerAliveInterval 60 # macOS Mojave 需要增加,原因在于Qos检测命令不被对端支持,导致连接丢失 # packet_write_wait: Connection to 10.10.10.111 port 22: Broken pipe IPQoS lowdelay throughput |
iMaker 3D打印机本质上是一台 Ultimaker v1.5.7
硬件的机器,当时买的时候,使用的软件还是早期的 Cura 13.06.4
。
随着 Ultimaker
官方软件的更新,提供了更加方便的操作,以及更加稳定高效的打印能力。从实际打印效果来看,最新的软件明显优于之前的版本,升级软件是非常值得的。
但是当时的硬件厂家已经不提供技术支持了,幸好是开源的软硬件,因此只要自己动手能力足够,还是比较方便操作的。
首先参考 iMaker 3D打印机Marlin固件编译以及故障排除 升级固件到最新的Marlin
版本。
接着根据原来的厂家说明书,我们在最新版本的 Ultimaker Cura 4.2.1
上进行如下操作:
iMaker
3D打印机,已经在角落里面落灰许久了,本质上是一台 Ultimaker v1.5.7
硬件的机器,因此使用 Ultimaker
的软件跟固件都是没有问题的。貌似这家公司现在已经快不行了的样子。 官网都已经打不开了。群晖 DSM 6.2
系统上执行 zgrep
命令的时候提示找不到命令,其他平台系统(ARM
),需要手工编译安装ZUtils
,来提供。但是如果是 X86
系统的话(比如 DS718+
),可以直接使用交叉编译环境里的工具,直接拷贝到系统即可。
首先参考 搭建群晖交叉编译环境(DS718+/ubuntu 16.04.6/DSM 6.2.1-23824 Update 6) 搭建群晖 DSM 6.2
的编译环境。
DS718+
执行如下:
1 2 3 4 5 6 7 |
$ cd ~/toolkit//build_env/ds.x64-6.2/ $ scp -r ./bin/zgrep username@10.10.10.111:~/ $ ssh 10.10.10.111 -l username $ sudo mv ~/zgrep /usr/local/bin/ |
需要编译的(ARM
芯片版本),执行如下命令编译:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
$ cd ~/toolkit/pkgscripts-ng # 下载 ZUtils 1.8 $ sudo wget http://deb.debian.org/debian/pool/main/z/zutils/zutils_1.8.orig.tar.xz -O ../build_env/ds.x64-6.2/root/zutils_1.8.orig.tar.xz # 也可以本站下载 sudo wget https://www.mobibrw.com/wp-content/uploads/2019/04/zutils_1.8.orig_.tar.xz -O ../build_env/ds.x64-6.2/root/zutils_1.8.orig.tar.xz $ sudo chroot ../build_env/ds.x64-6.2/ $ cd root $ export PREFIX="/root/build_libs" $ export HOST="x86_64-linux-gnu" $ mkdir -p $PREFIX # 编译 ZUtils 1.8 $ tar xvf zutils_1.8.orig.tar.xz $ cd zutils-1.8/ $ PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ \ LD_LIBRARY_PATH=$PREFIX/lib/ \ ./configure \ --prefix=$PREFIX $ make clean $ make $ make install |
对于编译好的程序,复杂的可以自己制作安装包,简单的可以直接通过SSH推送到设备的/usr/local/bin目录下即可。
比如本次编译结果:
1 2 3 4 5 6 |
# 暂时只需要zgrep,因此只安装 zgrep $ scp -r $PREFIX/bin/zgrep username@10.10.10.111:~/ $ ssh 10.10.10.111 -l username $ sudo mv ~/zgrep /usr/local/bin/ |
最近 Debian Wheezy/Jessie
源被官方归档了,使得许多来不及更新系统的服务器没源可用,http://archive.debian.org 访问速度太慢, 不得以自己写个脚本同步 Wheezy/Jessie
源。
Debian
官方推荐使用 debmirror
同步源,但是在群晖等设备上不方便使用,因此还是用 rsync
同步通用一些。
主要是自己的 WD MyCloud Gen1
在编译软件的时候,依赖 Wheezy
,Jessie
版本的软件包,又没办法升级系统,只能是自己建立软件源,保存一下,免得日后麻烦。
由于 Debian
源的结构,要单独分版本来同步很不方便,包都集中在 /pool
目录下,故此脚本主要根据索引文件来生成该版本的包列表ARCH_EXCLUDE
用来过滤不同架构的包的dists
用来过滤不同版本的同步完成后,整个 Wheezy/Jessie
源(i386, amd64, arm, source
) 共 96G
Wheezy Archive
源设置
1 2 |
deb http://mirrors.163.com/debian-archive/ wheezy main contrib non-free deb-src http://mirrors.163.com/debian-archive/ wheezy main contrib non-free |
同步脚本代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
#!/bin/sh #author: igi #date: 2012-03-28 NAME="debian" SYNC_FILES="$NAME"_files #TO="/tmp/$NAME" TO="./$NAME" FROM="archive.debian.org::debian-archive/debian" #FROM="debian.ethz.ch::debian-archive/debian" #FROM="mirror.1und1.de::debian-archive/debian" #FROM="debian.koyanet.lv::debian-archive/debian" #RUNDIR="/tmp/" RUNDIR="./" ARCH_EXCLUDE="alpha hppa hurd-i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 s390x sparc ppc64el" for ARCH in $ARCH_EXCLUDE; do EXCLUDE=$EXCLUDE"\ --exclude binary-$ARCH/ \ --exclude *_$ARCH.deb \ --exclude *_$ARCH.udeb \ --exclude installer-$ARCH/ \ --exclude Contents-$ARCH* " done #dists='lenny etch' dists='wheezy jessie' for dist in $dists; do DIST_INCLUDE=${DIST_INCLUDE}"\ --include /dists/$dist/ \ --include /dists/$dist/contrib/ \ --include /dists/$dist/main/ \ --include /dists/$dist/non-free/ " DIST_EXCLUDE="${DIST_EXCLUDE}\ --exclude /dists/$dist/* " done #sync index files rsync --progress -av \ --include 'Packages.gz' \ --include 'Sources.gz' \ $DIST_INCLUDE \ --include '/dists/' \ --exclude '/*' \ --exclude '/dists/*' \ $DIST_EXCLUDE \ --exclude 'i18n' \ --exclude 'installer-amd64' \ --exclude 'installer-i386' \ --exclude 'installer-armel' \ --exclude 'installer-arm64' \ --exclude 'installer-armhf' \ --exclude 'installer-ppc64el' \ --exclude 'Release' \ --exclude '*.bz2' \ $EXCLUDE \ "$FROM/" "$TO/" rm -rf "$RUNDIR"/"$SYNC_FILES" find "$TO/dists/" -name 'Packages.gz' -exec zgrep 'Filename: ' {} + | awk '{print $2}' >"$RUNDIR"/"$SYNC_FILES" find "$TO/dists/" -name 'Sources.gz' -exec zcat {} + | awk '/Package:/{dir="";delete files;next};/Directory:/{dir=$2;next};/Files:/{pass=1;next}; pass && /^ / {files[NR]=$NF}; length(files) && dir && / /{for(i in files) print dir"/"files[i];delete files}; /^[^ ]/{pass=0;next};' >>"$RUNDIR"/"$SYNC_FILES" #first stage rsync --progress -v --recursive --times --links --hard-links \ --files-from="$RUNDIR"/"$SYNC_FILES" \ "$FROM/" "$TO/" #second stage rsync --progress -v --recursive --times --links --hard-links \ $DIST_INCLUDE \ --exclude '/dists/*' \ $EXCLUDE \ --exclude '/pool/' \ "$FROM/" "$TO/" |
更多 debian-archive
源,见: http://www.debian.org/distrib/archive
Debian
系统启动非常耗时,每次启动都要等待1分30秒的任务超时才能启动,屏幕显示“A start job is running for /dev/disk/by-uuid/...a71b-4040-9b53-e92525f6803e
”,如下图: