分类 我的文档 下的文章

将iOS系统中wifi和蜂窝数据的DNS都设置为阿里的DoH,防止DNS污染。
使用Safari浏览器访问栗子站,点击下面按钮添加描述文件后,在设置-通用-描述文件中进行安装即可
[button color="success" url="https://ndc.nsoc.tech:8043/dns/alibaba-https.mobileconfig" outline="" target="_self"]点击切换到阿里DoH[/button]
QQ截图20220605144647.jpg

【注意】本文只是通过阿里DoH的描述文件,提供一种iOS使用DoH的一种简单的配置示例,可以在一定程度上减少DNS污染。阿里DNS也无法保证100%污染,建议还是用ADGH等自建服务(建议得有dnsserver分流和fallback机制才能同时保障稳定和快速)进行去污染。

由于家里的电子设备比较多,对设备统一管理和状态监测是一个需要认真对待的问题,之前找了很多方案但是始终不满意,最后选择搭建了一个企业级分布式监控系统Zabbix,用python推送监控信息到企业微信,像下图这样,可以及时知道哪台主机有问题
QQ截图20210901202538.jpg
同时也能从专业角度对家里内网的每个主机资产和web资产性能进行监测,输出周期报表和数据图
QQ截图20210901203118.jpg
简单说下操作步骤:
Zabbix搭建一般分为4个部分:1.后端服务器;2.前端服务器;3.数据库服务器;4.客户端Agent。
因为服务器“性能有限”,所以我们就用Docker来进行部署好了。另外就家里用,也不用部署agent啥的
162d5912-1e06-460b-a938-870ac16b5070.jpg
第一步,安装Docker……这部分就略了
第二步,为Docker配置一个Bridge网络,这里我对Docker命令不熟悉,所以直接装了个Portainer,用图形界面管理Docker

docker run -d  -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v /home/docker:/data  --name webui portainer/portainer

创建好了portainer后,登录跳到Networks > Add network创建一个网络,模式选桥接,剩下参数随便写
QQ截图20210901203728.jpg
然后我们找个地方大的地方放数据库,就放在home目录下好了
创建个数据库,扔到刚才创建的docker网络里,自定义一个IP,注意格式要定义成utf8

docker run --name mysql --network zabbix --ip 172.20.0.124 -e MYSQL_ROOT_PASSWORD=你的数据库root密码 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -d mysql/mysql-server --character-set-server=utf8 --collation-server=utf8_bin

然后docker exec命令进到数据库,新建一个用户带一个库,用于给zabbix用

mysql -u root -p
create database zabbix;
CREATE USER zabbixuser IDENTIFIED BY '数据库用户密码';
grant all on zabbix.* to 'zabbixuser'@'%';
ALTER USER zabbixuser IDENTIFIED WITH mysql_native_password BY '数据库用户密码';
FLUSH PRIVILEGES;

退了数据库,我们开始部署zabbix后端,一行命令就搞定
注意要自定义一个IP,映射10051端口,用link参数把这个容器和数据库容器连起来,然后在命令后面填好数据库地址、用户名、密码。

docker run --name zabbix-server --network zabbix --ip 172.20.0.122 -p 10051:10051 --link mysql:mysql -e DB_SERVER_HOST="mysql" -e MYSQL_USER="zabbixuser" -e MYSQL_PASSWORD="数据库密码" -d zabbix/zabbix-server-mysql

后端部署好了之后我们部署前端,注意不要忘了自定义IP,映射8080端口,link参数连接数据库和后端,serverhost直接填刚才后端的docker名字就可以了

docker run --name zabbix-web --network zabbix --ip 172.20.0.123 -p 18080:8080 --link mysql:mysql --link zabbix-server:zabbix-server -e DB_SERVER_HOST="mysql" -e MYSQL_USER="zabbixuser" -e MYSQL_PASSWORD="数据库密码" -e ZBX_SERVER_HOST="zabbix-server" -e PHP_TZ="Asia/Shanghai" -d zabbix/zabbix-web-nginx-mysql

然后别忘了把这四个Restart policies都改成Always或者Unless Stoped,不然重启服务器之后容器自己起不来
然后输入zabbix-web的8080端口映射出来的地址,默认用户名admin密码zabbix就可以登录了
QQ截图20210901204931.jpg
然后到设置里把界面调成中文的
QQ截图20210901205134.jpg
然后修改下用户名和密码,不要用默认的密码,也不要用默认的用户名
QQ截图20210901205216.jpg
界面那个字体有时候对中文支持不太好,需要在后台替换一下,在宿主机上敲下面这个命令可以直接找到服务器的字体文件夹映射

find / -name DejaVuSans.ttf

找到这个文件夹,把windows系统里面的楷体simkai.ttf替换进去,这个文件直接随便找个电脑用everything一搜就有了
QQ截图20210901205446.jpg
用同样的方法找到defines.inc.php,把前端默认字体文件改成simkai
QQ截图20210901205752.jpg
这就部署好了。

我们添加一个站点的监测,配置-主机-创建主机-web监测-创建web场景
QQ截图20210901210034.jpg
步骤-添加
QQ截图20210901210042.jpg
名称-url-添加
QQ截图20210901210136.jpg
然后配置个触发器,配置-主机-触发器-创建触发器
QQ截图20210901210258.jpg
添加一个表达式,比如说我们要在站点访问超过2秒时告警,添加-Response time
QQ截图20210901210420.jpg
结果写2s
QQ截图20210901210507.jpg
触发器创建完成后,我们加个Action,也就是触发告警后要做什么,就是邮件和微信通知了
加Action之前,先添加下企业微信和邮箱的登录方式,管理-报警媒介类型
先配置告警邮箱,具体怎么搭建企业邮箱申请域名备案解析MX,比较简单百度都有,此处略
QQ截图20210901210728.jpg
然后配置企业微信通知,首先企业微信找个群右键添加机器人,复制webhook地址
QQ截图20210901211019.jpg
在宿主机用find命令找到alertscripts文件夹,放个脚本,脚本内容修改为你自己的

find / -name alertscripts

脚本内容:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
 
headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "这里改成你创建的机器人的Webhook"   
 
def msg(text):
    json_text= {
     "msgtype": "text",
        "text": {
            "content": text,
            "mentioned_mobile_list":["这里写你企微手机号,机器人发告警时会艾特你"]     
        },
    }
    print requests.post(api_url,json.dumps(json_text),headers=headers).content
 
if __name__ == '__main__':
    text = sys.argv[1]
    msg(text)

然后回到zabbix,报警媒介类型-创建媒体类型-企业微信告警,填写脚本名称
QQ截图20210901211210.jpg
然后添加Action,配置-动作-创建动作,把刚才触发器选上
QQ截图20210901211358.jpg
然后翻到页签2操作,配置操作细节,告警时候发送给谁,怎么发,消息格式是啥,都要填好
QQ截图20210901211426.jpg
我简单写了个告警邮件模板供参考

告警邮件主题:【栗子云】栗子网盘访问异常!
消息:告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警信息: {TRIGGER.NAME}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
告警恢复邮件主题:【栗子云】栗子网盘恢复访问
消息:告警信息: {TRIGGER.NAME}
当前状态:{TRIGGER.STATUS},感觉好像已经恢复了
恢复时间:{EVENT.DATE} {EVENT.TIME}

配置好了Action之后,理论上就等着告警就行了,但是有个问题
docker版的前后端,是alpine linux,不带python,刚才传的python脚本运行会报错
所以我们需要docker exec到docker里面,手动安装python环境
然后这个docker默认的/bin/bash还不是root的,需要从宿主机提下权限,23f是docker编号,用docker ps命令可以查看

docker exec -it -u root 23f sh

更新下软件源

apk update

安装python3,pip3,request,运行脚本报错,于是这里改为安装python2和对应pip

apk add python2

安装pip

wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
python get-pip.py

安装requests模块

pip install requests

然后再回到zabbix测试脚本,发现报了个错/usr/bin/python^M: 解释器错误
^M很好判断,就是刚才直接把windows下写的文档复制到linux了,zabbix后端在执行时会用./命令执行,而不是python命令执行,./命令会概率出现兼容性问题,一行命令修改下异常隐藏字符,解决

sed -i 's/^M//g' wechat.py

然后再测试就可以正常收到告警了。

QQ截图20210901212716.jpg
发现告警时间好像不大对,还需要重新登录前后端的后台,调下时区

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

这样,zabbix就基本部署完成了,里面还有好多好玩的功能可以折腾的,比如可以在家里停电时候给你发短信提醒你交话费啥的,或者有人在非工作时间动了你公司的电脑,立刻微信通知你啥的,用这个程序都可以简单地实现。
周末再继续鼓捣。有问题随时留言。

阿里云的收费证书太贵了,然后免费的只能申请20个单域名证书,都不够家里内网Nginx用的。
QQ截图20210815143407.jpg
泛域名证书一年卖1700…………想钱想疯了真是
于是我花了5分钟时间上网查了下解决方案,还真有
AlphaSSL泛域名证书的一年装token,网上才25块钱
记录一下申请步骤:
首先随便在网上买个AlphaSSL泛域名SSL证书的token
QQ截图20210815143800.jpg
然后去zoho申请个域名邮箱
https://www.zoho.com/mail/
QQ截图20210815144640.jpg
然后填写邮箱信息后,系统提示配置DNS
QQ截图20210815144903.jpg
打开阿里云,配置MX记录和TXT记录用于验证域名、收发邮件和加密
QQ截图20210815145128.jpg
然后在zoho新建一个邮箱admin@域名,用QQ邮箱发一条邮件看看能不能收到
QQ截图20210815145330.jpg
邮箱测试没问题后,随便百度一个CSR在线生成网站,申请一个CSR
https://csr.chinassl.net/generator-csr.html
填写的时候注意邮箱写admin@域名,其他随意
QQ截图20210815142100.jpg
CSR申请后会给你一个CERTIFICATE REQUEST和KEY文件
然后提交Token和CERTIFICATE REQUEST申请证书
QQ截图20210815145622.jpg
申请提交后会给刚才配置的zoho邮箱发邮件
QQ截图20210815145928.jpg
点击邮件中的激活链接,会让你确认信息
QQ截图20210815141908.jpg
确认后稍微等一会
QQ截图20210815141920.jpg
会收到证书的邮件
QQ截图20210815150318.jpg
然后把证书和刚才做CSR时候给你的私钥文件转换为你喜欢的格式放在web服务器上
//补充,此处需用https://www.myssl.cn/tools/downloadchain.html 工具生成下中间证书,加到证书中间
QQ截图20210815150410.jpg
重启web服务,可以看到泛域名SSL证书生效了
QQ截图20210815142521.jpg

比如说在阿里云搭建一个带有邮件通知功能的服务端,但是阿里云将常用的邮件发送25端口封禁了,使用SMTP发送邮件会报错。
解决问题的方法很简单,将邮箱发送邮件的SMTP端口配置为587+SSL,如图所示。
QQ截图20210801153323.jpg
测试下,就可以正常使用aliyun主机发送邮件了。

这次用的是Aliyun_ECS_2U8G5M_Ubuntu20_04环境
第一步,配置基础环境

首先安装JRE和JDK基础环境
apt install openjdk-8-jre-headless
apt install openjdk-8-jdk-headless

第二步,安装Confluence软件

cd /home
下载confluence安装包
wget https://product-downloads.atlassian.com/software/confluence/downloads/atlassian-confluence-7.12.3-x64.bin
给个执行权限
chmod +x atlassian-confluence-7.12.3-x64.bin
运行
./atlassian-confluence-7.12.3-x64.bin
在阿里云ECS上的安全组放行http端口即可访问
浏览器访问http端口,点击安装,记录机器码
结束进程
/etc/init.d/confluence stop

第三步,配置数据库

进到mysql
mysql -u root -p
搞个数据库
create database confluence character set UTF8;
搞个新用户
CREATE USER confluenceuser IDENTIFIED BY '密码';
ALTER USER confluenceuser IDENTIFIED WITH mysql_native_password BY '密码';
使用 utf8 作为默认字符集
alter database confluence  default character set = utf8;
使用utf8_bin数据库排序规则
alter database confluence default collate utf8_bin;
配置允许创建存储函数
set global log_bin_trust_function_creators = 1;
生效数据库
FLUSH PRIVILEGES;
退出mysql
exit
结束mysql
service mysql stop
exit
编辑数据库配置
vim /etc/my.cnf
改[mysqld]下
修改接受数据包的大小
max_allowed_packet = 34M
修改InnoDB存储引擎日志文件大小
innodb_log_file_size = 256M
加一行设置默认隔离级别
transaction-isolation = READ-COMMITTED
保存:wq
启动mysql
service mysql start
Confluence不带mysql驱动,打个mysql驱动扔到webinf目录
网上找个mysql-connector-java-8.0.25.jar
https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-8.0.25.zip
扔到Confluence安装目录/atlassian/confluence/confluence/WEB-INF/lib/

第四步,那啥

把Confluence安装目录/atlassian/confluence/confluence/WEB-INF/lib/下的atlassian-extras-decoder-v2-3.4.1.jar拷贝出来,做一些小修改再拷贝回去(此处很简单不赘述)

第五步,初始化Confluence

输入命令启动confluence,登录web界面输入激活码并连接数据库进行初始化,按照配置向导进行配置
/etc/init.d/confluence start

第六步,配置https

首先阿里云申请个域名,配置域名解析,申请https证书,下载tomcat证书,上传到云主机上
(不要上传到confluence安装路径,否则升级时候会被删掉)
然后编辑tomcat配置文件,取消https配置的注释
vim/opt/atlassian/confluence/conf/server.xml
keystorePass填写证书密码,keystoreFile填写证书路径
(不要编辑server.xml中除配置外其他注释内容,系统检查会被认为是配置文件错误)
保存文件
:wq
重启confluence服务
/etc/init.d/confluence stop
/etc/init.d/confluence start
在阿里云ECS上的安全组放行https端口即可通过https访问

最后打开confluence登录,进行健康检查,完美。
QQ截图20210716125006.png
非常简单。