家里 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服务器主从同步