Eliza Sorensen 的访谈
Eliza Sorensen 的访谈
NOTE:
- 原文来自于 Eliza Sorensen
- 我 HOST 的版本在 Eliza Sorensen
你是谁,你做什么工作
我是 Eliza Sorensen 或其他任何地方的 @zemmiph0bia。我是澳大利亚墨尔本市的一名基础设施和安全工程师,也是创建了性工作友好社交空间 Switter.at 和现代广告平台 Tryst.link 的 Assembly Four 的共同创始人。
您使用什么硬件
看来这些天我一直在移动,所以我严重依赖我的 X1 Carbon, Google Pixel 3 XL, Audio Technica ATH-AR5BT headphones,powerpack(很大的背包?),笔记本和 Lamy(凌美,一种笔)Safari。
当我在办公桌前时,可以使用两台 Dell 27 英寸显示器,一个 Ducky One 机械键盘(樱桃棕色轴)和一个Logitech G700 鼠标。
您用什么软件
我只想在台式机上使用 Linux,我的操作系统是Ubuntu,我的 shell 是 zsh,我用 ProtonVPN 连接,我用 Firefox (上网)冲浪,我用 1Password 保存密码,我用 Spotify 听音乐,我用 Toggl 管理时间、用 Clubhouse 管理任务,用 vim 写作,用 Sublime Text 3 写代码,使用 Zeal 保留我的文档。
您的理想设置是什么
我对当前设置非常满意,但是我不介意回到带有樱桃蓝色轴的键盘……但是我不想赶走我的伴侣。
How to enable BBR in OpenVZ
缘起
以前有个贪便宜(一年 5 刀)而入手但目前在吃灰中的小鸡,当然是 OpenVZ,网络条件很差,用起来很鸡肋,后来看到 Google 的 BBR 也有能用在 OpenVZ 的案例,于是也想尝试下,看是否能将其起死回生。
一个从 Phabricator 中抓出任务生成周报的东西
缘起
自然是我司每周都要完成的周报。
背景
我司重度依赖“不存在网站”:Facebook 开源出来的项目:Phabricator,我们的每项工作也来自于其中的 Maniphest(不知道是什么语言,不像英语,反正应该就是 task 的意思),每周的工作周报里提到的事情如果有 task 的(一般都有),都还要附上其 task id。
同时,Phabricator 目前的运营公司: Phacility 同时也放出了一套 php 的类似于 SDK 的东西:libphutil,所以我就开始尝试着用 php 来撸一个自动生成、发布周报的东西。
about Pha_WR_SRE
Pha_WR_SRE,
不许说项目名称起的很雷人。:(
这个东西怎么做的就不说了,这里主要说下大概实现了哪些功能。
输出的信息
输出的信息分三种:“completed”、”ongoing” 和 “other”,分别对应着“已完成”、“未完成”和“其他”。
输出的目标
已实现的是四种:
- Console
- OneNote
- Evernote
- Phabircator’s Phame
第一种就不用说了,如果在控制台运行,运行结果会被直接输出到控制台的;
第二种也简单,OneNote 支持用 Email 的方式发布 Note,不过需要先在 OneNote 里设置下发邮件的地址白名单(具体见 README 文件);
第三种跟 OneNote 差不多,不过 Evernote 需要一定级别的帐号才支持这种功能,而且他的目标 email 地址是隐藏的,需要自己去找,而且不建议让别人知道;
第四种是我自己想的,反正 Phabricator 也支持 blog 功能(Phame),不过这个需要先在 Phabricator 中新建一个 blog 获得其的 phid 并配置在 config.ini 中;
macOS
对于用 macOS 的用户,这里还有个特殊的新功能:可以直接设置定时运行这个任务。具体方法就是把项目里那个 .plist.example 文件稍稍修改下(也可以不修改),改名去掉“.example”,放到 ~/Library/LaunchAgents 目录下,然后可以用命令:
1 | # load .plist file if U have not change it's name |
分享一些自己DIY的Tasker的profile
缘起
about Tasker
早先通过 Google Opinion Rewards 做调查挣了小几美刀,于是就购买了 Google Play Store 下的第一个收费软件:Tasker。但后来由于种种原因,Tasker 一直没有真正用起来(我最看重的几个功能都实现的不好)。
about IFTTT
一直在用 IFTTT 的一个功能:每日抓取 NASA 的图回来做 Android 手机的 Wallpaper,但最近同时用两个 Android 手机,不希望两个手机同时一样的 Wallpaper,但这个需求如果用 IFTTT 来做只能每台 Android 手机用单独的账号来实现,这个实现显然太丑陋了。
最终方案
Tasker 官方其实有一个放出来的 profile,是来抓 reddit 的图的,但那是几年前的东西了,现在几乎没法用,但作为例子,这个 profile 处理这种问题的思路是可以借鉴的。于是我就修改了下这个 profile,实现了抓 reddit.com/r/wallpaper 和 reddit.com/r/pic 以及 NASA iotd(Image of the Day) 的功能。
about tasker_profile
上面提到的这个 profile,我放到了 github 下面了,这里远期还会放一些 Tasker 可用的、实现了一些实用好玩儿功能的 profile,但是暂时,就这么一个 profile,叫“Wallpaper”,意思是更系统 Wallpaper 相关的一个 profile。使用起来也不难,README.md 里都有提到。
写在最后
如果我辛苦折腾的这个东西真能帮上你的忙,请帮我给项目点赞吧,谢谢!
在Ubuntu16.04上部署Zabbix-proxy3.4的流水账
WHY
这里的为什么不是说为什么要装 zabbix-proxy 的问题,而是说为什么要写这篇文章。
为什么要写这篇文章呢?答案很简单,官方文档太碎了,东一榔头西一棒子,一个简单实际直接的问题:怎样在 ubuntu 上安装部署 zabbix-proxy,翻官方文档得翻四五篇文档,而且这四五篇文档中还有很多干扰信息,需要仔细分辨,否则会对部署造成负面影响。
所以,就有了这篇“流水账”。
HOWTO
INSTALLATION
1 | # 安装 zabbix 官方的 ubuntu 16.04(版本号 xenial) 的软件仓 |
1 | # 用 root 身份连入 mysql 数据库系统并进入交互式模式 |
1 | # 创建 zabbix-proxy 系统所用数据库:zabbix |
1 | # 安装一些 zabbix-proxy 系统可能会需要 |
CONFIGURATION
1 | # 修改 zabbix proxy 的设置文件 |
1 | # 修改 zabbix agent 的配置文件 |
1 | # 最后,将几个服务设为自启动 |
从apt-get出抓取binary-i386/Packages.gz失败的错误说开去
起因
服务器上用 apt-mirror 来拉取某些软件官方的 apt 仓并本地建仓,用于本地服务器的软件安装和更新,这个大概也是众多运维工程师曾经做过的事情吧。
今天我在某一台服务器上做 apt-get update 时出错了,系统报 “http://xxx.xx.xx.xx/xxxxxxxxxxxxxxxxxxx/binary-i386/Packages.gz” 抓取失败。xxx.xx.xx.xx 是我自己建的 apt 仓,用来服务于内部服务器的,xxxxxxxxxxxxxxxxxxx 正是自建仓的路径,这下面当然没有 binary-i386 目录,因为服务器都是 x86_64 架构的,应该使用的是目录 binary-amd64 才对。
环境介绍
出错的服务器的操作系统是:Ubuntu 16.04.5 LTS (GNU/Linux 4.15.0-13-generic x86_64)
- apt 的配置文件里没有关于 i386 的设置
- source 里也没有关于 i386 的设置
原因简介
Ubuntu 的 amd64 系统中,i386 是作为额外的体系结构被支持的。证据如下:
1 | dpkg --print-architecture;dpkg --print-foreign-architectures |
会输出“amd64”和”i386”。
所以 apt 缺省是希望 apt 仓也同时能提供 i386 的软件包。而我用 apt-mirror 建仓时,没有指定同步抓取 i386 的软件包,故而当服务器来抓取 i386 相关数据时会出错(因为的确没有哇)。
解决方法
知道原因了以后解决起来相对就简单了,在 apt-mirror 的配置文件 /etc/apt/mirror.list 中将想要同步抓取的软件多写一行,用 deb-i386 替换 deb,然后再跑下
1 | apt-mirror |
就会同时同步 i386 的软件包下来,这样客户端 apt-get 时就不会有错了。
进阶阅读
可以让 x86_64 系统架构的服务器仅安装 amd64 的软件吗?这样 apt-get 时也不会去抓群 i386 相关的东西了,这样的话也可以避免上面的错误。
回答是:当然可以!
首先,干掉系统现有的所有 i386 的软件包1
apt-get purge ".*:i386"
接着,将 i386 从支持的体系结构里删掉1
dpkg --remove-architecture i386
这样也可以达到目的!
一次powerdns上某个zone传输失败的问题的解决过程
缘起
我司用 PowerDNS 来维护域名,某天否然发现有纪录在 PowerDNS 已经更新了,但是客户端查询解析结果却迟迟没有更新。
排查问题
请求传输数据的一端
在用做 dns 查询用的服务器上(也是 PowerDNS),执行:
1 | pdns_control reload; |
然后在 log 里看到有错误输出:
Unable to AXFR zone ‘in-addr.arpa’ from remote ‘1.1.1.1’ (resolver): Remote nameserver closed TCP connection
(1.1.1.1 是主 DNS 服务器)
看了些文档,说有可能是数据文件太大导致传输失败,于是有直接测试了一下传输 zone:
1 | dig in-addr.arpa @1.1.1.1 AXFR; |
结果发现还是未能得到整个 zone 的数据,于是怀疑服务器端可能有问题。
在传输数据的一端
在主 DNS 服务器上(这里应该是 1.1.1.1),查看 log,发现有报错误:
Exception: All data was not consumed
TCP Connection Thread died because of STL error: All data was not consumed
仔细看了下文档,说有可能是待传输的 zone 的数据文件有问题,于是我又做了下检测:
1 | pdnsutil check-zone in-addr.arpa; |
发现一堆的数据(解析纪录)显然有问题,都备份好,然后删除之。
然后一一回头测试,这回都正常了。
问题根源
肯定是大家瞎改反向解析(in-addr.arpa)的数据记录导致的。
Nginx 下启用 HSTS
What is HSTS
HTTP Strict Transport Security (HSTS) is a web security policy mechanism which helps to protect websites against protocol downgrade attacks and cookie hijacking. It allows web servers to declare that web browsers (or other complying user agents) should only interact with it using secure HTTPS connections,[1] and never via the insecure HTTP protocol. HSTS is an IETF standards track protocol and is specified in RFC 6797.
The HSTS Policy is communicated by the server to the user agent via an HTTPS response header field named “Strict-Transport-Security”.[2] HSTS Policy specifies a period of time during which the user agent should only access the server in a secure fashion.[3]
以上来自于维基百科
大概意思是说 HSTS 是一个 web 安全策略装置,用于保护 web 站点免受协议降级攻击和 cookie 劫持。