Freeshell 修复访问校外网络

早先 Freeshell 节点上配置的 NAT 是写死的 IPv4 地址,因此与 blog 服务器之间的 OpenVPN 连接断开重连之后,IP 地址一改变,NAT 就不能工作了。因此前些天重启 blog 上的 OpenVPN 服务后 Freeshell 的外网连接就一直不可用。

现在改成了 MASQUERADE 模式,不论 IP 地址怎么变,NAT 都能工作。初步测试各 freeshell 节点的外网连接恢复。

BTW,LUG VPN IPv4 出国会自动选择合适的路线。大家可以用 curl -4 -vv googleblog.blogspot.com 测试。注意,IPv6 可能被 connection reset。对某些不存在的站点,DNS 是错误的,请手动设置 8.8.8.8 作为 DNS。

lug.ustc.edu.cn 临时切换到 blog 服务器

由于 lug 服务器发生严重故障,且这几天是十一假期,无法进入机房修复,我们把 lug.ustc.edu.cn 的 DNS 临时切换到 blog 服务器。原来的 LUG 服务器可以通过 ftp.lug.ustc.edu.cn 访问。

目前 lug.ustc.edu.cn 只提供 wiki 服务,即 LUG 主页运行正常。ServMon 监控服务也已经转移。未恢复的服务包括:

  • LUG FTP
  • LUG TimeMachine
  • Ganglia 服务监控 status.lug.ustc.edu.cn

上述服务需要等 lug 服务器恢复,非常抱歉。LUG 服务器上的一些其他服务,包括 {php,roundup}.lug.ustc.edu.cn 均无法使用。

Blog 服务器添加移动线路

重启成功,所有服务自动启动,服务中断时间在2分钟以内。

blog.ustc.edu.cn 和 freeshell.ustc.edu.cn 都添加了 202.141.176.99 这个移动线路的IP。目前设置电信线路、教育网解析到原来的 202.141.160.99 电信IP,其余(包括但不限于移动、联通、国外)解析到新加的移动IP。预计 blog 在国外的访问速度将有明显改善。

Blog 服务器还储备了 202.141.176.112 和 202.141.176.113 两个移动IP,可用于其他不共享 SSL 证书的站点。

blog 服务器重启公告

网络中心 jameszhang 给 blog.ustc.edu.cn 服务器(虚拟机)添加了几个移动线路的IP,需要重启才能看到。因此今天我们将对 blog 服务器进行重启。受影响的服务包括:

  • blog.ustc.edu.cn 全站
  • freeshell.ustc.edu.cn 控制面板
  • LUG VPN
  • freeshell 虚拟机的校外网络连接
  • archive.lug.ustc.edu.cn 邮件列表存档

lug.ustc.edu.cn 故障通告

前几天有同学不慎写错了 sudoers,导致 lug.ustc.edu.cn 服务器无法 sudo。这个问题尚未解决,今天就发现 php-fpm 服务不知什么时候挂掉了,导致 lug.ustc.edu.cn 无法访问。status.lug.ustc.edu.cn 由于是用 PHP 做 Web 界面,也挂掉了。我们就 LUG 主页挂掉带来的不便谨致歉意。

USTC Blog 近几天的 502 Bad Gateway

近几天 blog.ustc.edu.cn 频繁发生 502 Bad Gateway 故障。之前多次发生的内存溢出(OOM Kill)是由于 php-fpm worker 内存泄漏。开始以为是有攻击者频繁访问那个特殊 URL 导致的,但事实上我频繁访问其他的 URL,也能观察到内存泄漏。频繁访问 phpinfo 没有检测到内存泄漏,因此怀疑是数据库连接部分捣的鬼。

临时解决方案是,在 php-fpm.conf 里设置了 pm.max_requests = 500,即每个 worker 处理 500 个请求后就自动退出,respawn 新的 worker,这样内存泄漏的数量就是可控的。

今天又发生了 502 Bad Gateway,不过从 status.lug.ustc.edu.cn 上看到的各项系统指标都比较正常。但 php-fpm master 所监听的 socket 就是不接受连接。

为了应对这种古怪的情况,我们添加了 cron 脚本,每分钟检查 USTC Blog 首页和一个用户 blog 首页的可用性,发现错误就立即重启 php-sandbox 服务,如果还没有恢复就再重启 mysql 和 php-sandbox 服务。希望这个自动重启服务的程序能在关键时刻起作用,缩短服务中断时间。

Freeshell 9月19日的 IPv6 故障

9月19日23时许至9月20日上午9时许,freeshell 的 IPv6 地址无法访问,IPv4 正常。原因是晚上机房管理员将学生机房电源关掉了(非服务器所在的主控室),而有一台路由器放在学生机房内,所以导致了断网。我们已经将网线连接方式更改,将重要的路由器放在主控室里,防止再有人关掉机房的电源。

我们还修复了长久以来 6 号节点无法使用 IPv6 的问题,因为连接 IPv6 子网的 eth1 网线头松了。更换一根网线后正常了。

GitLab SSH 无 key 时不再提示输入密码

之前 git clone git@gitlab.lug.ustc.edu.cn:namespace/project.git 的时候,如果没设置好 SSH key,会提示输入密码,很多用户对此感到迷惑。现在在 sshd_config 中加了下面两行,会直接提示访问被拒绝。

Match User git
PasswordAuthentication no

Tips:GitLab 的代码仓库支持 SSH 和 HTTPS 两种访问方式:

  1. SSH 访问,需要用 ssh-keygen 生成密钥,把公钥(id_rsa.pub)添加到 GitLab 个人管理区域的 public key。
  2. HTTPS 访问,每次连接服务器都要输入用户名(注册邮箱)和密码。可以作为在公用电脑上的临时访问方式。

Blog 502 Bad Gateway 恢复

9月20日17时许,USTC Blog 发生了 502 Bad Gateway 故障。现已恢复。我们对此次故障对您带来的不便深表歉意。

已经确认此问题与前几天发生的故障原因相同,是恶意攻击引发的 OOM Kill。攻击从 14:50 左右开始,一直持续到现在。15:37 引发了第一轮 OOM Kill,于 15:53 造成第一次服务中断,不过很快被自动恢复;16:55 造成第二次服务中断,且未能自动恢复。由于报警机制在上次故障后尚未恢复,直到 20 时许问题才被发现。

USTC Freeshell 走进新时代

USTC freeshell

虽然有些标题党,我们还是高兴地宣布 USTC Freeshell 升级了:

  • 每人可以注册多个虚拟机
  • 支持三级域名
  • 修复在线管理功能,支持在线重置密码

Multiple Shells

一个 freeshell 做多种事情,不符合隔离的原则。今天,每个科大邮箱都可以注册至多5个 freeshell。不同的 freeshell 可以设置不同的密码,登录时会默认进入密码匹配的 freeshell 管理界面,也可以随时切换到其他的 freeshell(如下图)。

freeshell-select

Subdomain

blog.ustc.edu.cn 支持三级域名,freeshell 今天起也可以了。每个 freeshell 都可以设置一个三级域名作为 HTTP Proxy,这样在 freeshell 上建的小站就能摆上台面了~

freeshell-admin-2

喜欢折腾的同学可能会发现,不存在的域名是公益 404 页面,让我们一起为他们祈福。

Start / Shutdown / Reboot / Reset Password

很抱歉地跟大家说,自从上次 Freeshell 控制节点与运算节点间 API 升级后,下面这几个 Start / Shutdown / Reboot 按钮就一直是坏的,我也没发现。这次不仅修好了已有的 bug,还在用户体验上做了些许改进(Processing 提示,邮件提醒)。

freeshell-admin-1

更重要的是,Freeshell 增加了千呼万唤的重置 root 密码功能。重置后的 root 密码会通过邮件发送。如果邮件被丢进了垃圾箱,请把 noreply@blog.ustc.edu.cn 加入联系人。

Let The Source Be With You

Freeshell 的代码是开源的,注册登录 USTC GitLab 即可:https://gitgeek.net/boj/freeshell

LUG 网络服务将使用 freeshell 作为 testbed,freeshell 也会在今后的 LUG 活动中持续推广。Enjoy freeshell at freeshell.ustc.edu.cn, 欢迎报 bug!