科大移动线路故障

2017年4月7日 0:00 起,我校移动线路出现故障,LUG旗下多项服务受到影响:

  • 科大开源镜像站(临时解析至教育网线路)
  • LUG首页(同上)
  • GitLab(同上)
  • 反向代理(临时解析至教育网线路,所有线路访问变慢)
  • 科大博客(临时解析至电信线路)
  • 防污染DNS(移动线路不可用;电信、教育网线路解析变慢)
  • LUG VPN(临时解析至教育网线路;访问国外网站速度变慢)
  • Light(同上)

给您带来的不便,我们深表歉意。


update 02:34  移动线路恢复

更换DNS服务使用的IP地址库

由于一些历史原因,LUG自建DNS服务使用过多个版本的IP地址库,但IP地址库的准确性均不高。这导致部分用户解析结果不够精确(如电信用户解析到移动IP),影响使用体验。

我们通过分析BGP/ASN数据得到一个全新的地址库,大幅提升了IP数据库的准确性。目前LUG DNS服务已经应用新的IP数据库。在此感谢boj师兄的建议~

代码已开源:china-operator-ip


涉及到的服务包括但不限于:

  • 科大开源镜像站
  • 科大博客
  • 代码托管平台
  • 轻量级网络加速服务
  • 虚拟专用网络相关服务和站点
  • 反向代理服务
  • FTP服务

LUG的大部分网络服务拥有三条线路:

  • 中国移动(默认线路)
  • 中国电信
  • 教育网

如果您遇到解析结果与所在运营商不符的情况,请与我们联系

科大电信出口遭到攻击

2016年8月26日 17:45 科大电信出口遭受DDOS攻击,目前出口丢包率较高。

公网访问以下服务的电信接入点,将变得不稳定:

  • 开源镜像站
  • 权威DNS
  • LUG主页
  • LUG FTP
  • 防污染DNS
  • GitLab
  • 科大博客
  • 反向代理
  • LUG BBS
  • FreeShell(端口映射)

请用户暂时切换至教育网接入点或移动接入点。

P.S. 校内用户不受影响

update 2016.08.26 18:29:26: jameszhang联系电信封掉了受攻击的IP,服务恢复正常。总故障时间44分钟。

VPN服务器多进程负载均衡方案

应boj大大的要求,将此次负载均衡的技术细节记录下来。本文供维护人员参考,请大家多多拍砖。

由于OpenVPN在处理数据包的校验、加解密、封装时都需要大量CPU资源,OpenVPN不支持多线程处理,导致服务器的CPU利用率率长期保持在30%以下(4核心服务器)。为了提升服务器CPU的利用率,增强数据处理能力、提升VPN总带宽,为服务器添加了4个独立的OpenVPN工作进程,使用ipvsadm做udp负载均衡。

1. 创建4个OpenVPN配置文件:/etc/openvpn/server-worker-{1..4}.conf(绑定10001~10004端口),并修改相应的路由表配置文件。

2. 启动4个工作线程
       service openvpn start server-worker-{1..4}

3. 设置ipvsadm超时参数:
       ipvsadm --set 0 0 35
三个参数代表:TCP sessions, TCP sessions after receiving a FIN packet, UDP packets 的超时时间;0表示不修改当前参数。

4. 绑定需要负载均衡的端口(以202.141.160.95:1194为例,其余类似):
       ipvsadm -A -u 202.141.160.95:1194 -s rr
其中 rr 表示采用轮询(Round Robin)策略。

5. 添加后端
       ipvsadm -a -u 202.141.160.95:1194 -r 202.141.160.95:10001 -m
类似的,可以添加端口号为10002~10004的后端。

其中 -m 表示采用地址伪装(masquerading)的方式访问后端。因为要保证从A网卡来的数据包仍然从A网卡返回,因此不能使用gatewaying和ipip的方式。(但masquerading效率相对较低)

到此,负载均衡已经部署完成。


经过观察,负载均衡的效果并不理想,依然存在某进程CPU占用率100%,而其他几个核心空闲的情况。以下是优化方式:

一、采用最小连接(Least-Connection)策略替换轮询(Round Robin)策略

由于用户可能随机断开连接,而轮询策略并不会感知这一因素,导致每个后端的连接数有一定差距。(注:使用ipvsadm -L命令可以查看分配到每个后端的连接数)

将连接策略改为Least-Connection:
       ipvsadm -E -u 202.141.160.95:1194 -s lc

P.S. 修改策略不会导致原有连接中断。

二、添加多个后端

由于每个用户的带宽使用情况并不一样,当有多个大流量用户被分配到同一个进程时,就会出现单线程CPU100%,其余空闲的情况。

假设有4个工作进程,160个用户,2个大流量用户,这两个大流量用户“撞车”的概率为:0.245。

假设有16个工作进程,其余条件不变,则撞车概率概率为 0.014。

为了减弱这类大流量用户“撞车”的影响,可以适当多添加一些工作进程。当前创建了16个工作进程,CPU利用率最高达到为83%(为什么不是100%呢?)。

以上

LUG 网络服务3月9日网络中断说明

由于 全校范围的网络故障,3 月 9 日下午 17:00 ~ 18:00 网络时断时续,3 月 10 日凌晨 0:00 ~ 6:00 大约每半小时断网一次。

昨天的故障和 3 月 5 日持续 45 分钟的故障,原因估计是 近代物理楼某接口发送大量 ARP 包导致核心交换机 CPU 过载,换句话说,就是核心交换机被拒绝服务攻击了。

现代交换机通常是使用 ASIC(专用芯片)或 FPGA 来做绝大部分数据包的转发,只有少数控制包(如 ARP、STP 包)要交给交换机 CPU 做处理,交换机的 CPU 通常计算能力非常有限。例如 MAC 地址学习功能一般是由 CPU 进行的,首先所有 ARP 包被发到 CPU,CPU 把 MAC 地址和物理端口的映射关系写入到 ASIC 或 FPGA 中的二层转发表。如果交换机收到大量 ARP 包,又没有在入站端口对 ARP 包进行限速,就会导致交换机 CPU 忙不过来。

非常抱歉近几天的网络故障给您带来的不便。同时强烈谴责(有意或无意)进行网络攻击的人,对全校师生造成了这么大的麻烦!