重新调整服务器的网络架构

之前只有一台上海的服务器所以问题没这么多。现在加了两台美国的服务器,所以是时候优化一下服务器的网络架构了。

每个服务器都有各自的优缺点:上海的服务器配置高延迟低但是没备案,美国的一台配置中等但是网络链接特别慢,另一台配置不怎么好但联通性很理想。之前服务器都是分离开的,我打算把他们互相连起来。

我现在有的服务:Bitwarden(上海)、Uptime Kuma(美国B)、Wordpress(美国 A)、Jenkins(美国 A)、游戏服务器(自家)、Mumble(上海)、fsfans.club(美国 A)。我打算在美国 B 服务器上架设反向代理顺便充当防火墙。同时其它两台服务器会装 OpenBSD 反向代理用 Debian,这样可以用 Valutwarden。

在反向代理服务器上我打算试试 Caddy V2,安装很简单:

$ sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
$ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
$ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee $ /etc/apt/sources.list.d/caddy-stable.list
$ sudo apt update
$ sudo apt install caddy

然后发现 Caddy 使用起来*非常简单*,打开一个带虚拟主机的反向代理只需要:

ci.hackflow.org {
    reverse_proxy localhost:8080
}

看上去很简洁对吧?那让我们设置 HTTPS。。。好吧,不需要设置,Caddy 会自动从 Let’s Encrypt 获取证书。很贴心的功能。

搞定了 Jenkins 的反向代理,开始设置 WordPress 的代理。在 OpenBSD httpd 上把域名换成一个别人不知道的,然后修改 Caddyfile:

hackflow.org {
	reverse_proxy https://icanttellyouthis.hackflow.org {
		transport http {
			tls_insecure_skip_verify
		}
	}
}

重载后,Wordpress 工作正常。反向代理先到这里,我还想把 Vaultwarden 迁到代理服务器上。Vaultwarden 的部署会使用 docker:

 # docker run -d --name vaultwarden -v /vw-data/:/data/ -p 8000:80 vaultwarden/server:latest

把之前打包的 Vaultwarden 数据解压到 /vw-data 然后重启 docker 容器。Caddyfile 里面再加三行就搞定了。然后三下五除二,Uptime Kuma 也迁移完了。Done.

用(大概)最可靠的办法连接无屏主机

最近调试网络设备老是导致我连不上我的小主机,通过局域网 ssh 连接说实话挺不靠谱的。

我的小主机是个 D525 工控机,上面有一堆 COM 口。正好我电脑上也有一个 COM 口,所以用串口终端就很可靠了。想法很好,就是中间有点坑。但这个坑可以简单地规避,那就是买 rs232 交叉线

在网络中也有交叉线的概念,最早的网线也分直通线和交叉线。直通线顾名思义就是不同脚直接接在一起,而交叉线就是数据发送和数据接收接在一起。所以,人们就说电脑和网络设备接直通线、电脑和电脑接交叉线。

为什么现在买网线的时候不告诉你他是直通还是交叉的呢?因为它们都是直通的。有千兆以太网了以后,网卡厂商研发出了 Auto-MDIX 技术,即网卡自动判断介质类型和是否需要反转数据输入输出。现在这项技术在大多数千兆网卡中都有。

回到 COM 口,它是相当底层的。根据维基百科,旧电脑的串口由 CPU 处理,现代电脑的串口由 UART 电路处理。所以它远远没有网卡那样智能,不存在 Auto-MDIX 之类的功能。

好巧不巧,我买的是直通线。因为是设备和设备之间连接,所以需要手动把 TXD 和 RXD 翻转过来。方法是把线从中间剪短暴露出九根不同颜色线的线头,使用万用表的通断档在两截线的其中一截测试。(你的万用表的探针可能伸不进去,这个时候需要一节回形针)观察你的的串口接口,上面每个孔都应该写了数字,需要找到的是 2、3 孔对应的线。我最后测试的结果是白和橙分别对应2和3。(不同的线颜色不一定相同)

RS232串口线接线方法示意图(转自绿联)
RS232串口线接线方法示意图(转自绿联)

把它们俩交叉连接,其它颜色原样连接就没问题了。在封上之前可以先用万用表在两接头处测量通断。

确认无误后就可以连到电脑上了。在终端所在的电脑这样配置:systemctl enable serial-getty@ttyS? 然后重启或者启动服务即可。

在另一台电脑上可以使用 screen 连接到终端:screen /dev/ttyS? 115200。按回车如果没反应则可能因为波特率不对,可以换到 9600 试试或者按下 C-a C-b 发送。如果再不行就需要修改/lib/systemd/system/serial-getty@.dervice文件了。把里面的 --keep-baud xxxxxxx 替换成想要的波特率(比如 115200)如果再不行呢?检查一下串口线和串口对应的 tty 编号吧。