背景:上周日凌晨,监控面板突然飘红——“电信 487 G、联通 0 G、移动 0 G”,典型的 UDP 反射扫段。客户刚把源站迁到“群联 AI 云防护”高防 IP,结果同段相邻地址一起被黑洞,业务再次停摆。下文记录了我们从 02:43 到 03:21 的 38 分钟里,真正敲过的命令与踩过的坑,全部可照搬。


一分钟定位:到底谁在“裸泳”

# 看交换机端口,发现整个 /24 一起被黑洞
snmpwalk -v2c -c public 10.0.0.1 1.3.6.1.2.1.2.2.1.10 | grep -i 203.0.113
# 把回包 IP 全部抓出来,看是否还有“漏网之鱼”
tcpdump -i any -nn -c 10000 'net 203.0.113.0/24 and tcp[tcpflags]==0x12' \
  | awk '{print $3}' | cut -d. -f1-4 | sort -u > live-ip.txt

只要 live-ip.txt 里出现自家源站,就说明它还“对外说话”——立即关机或切走。


两分钟止血:让同段“失声”

# 临时黑洞整个 /24,把流量逼到云防护 Anycast
ip route add blackhole 203.0.113.0/24

命令下发 15 秒,机房 SNMP 曲线直接归零,黑洞解除。


三分钟换“出生点”

  1. 在控制台再买一张不同 C 段的“高防弹性 IP”(103.56.72.0/24 段),勾选“加入群联 AI 清洗中心”。
  2. 把源站快照迁到新区,内网保留 10 地址,仅通过云防护隧道回源。
# 阿里云 CLI 一键创建
aliyun ecs AllocateEipAddress \
  --RegionId cn-shanghai \
  --ISP BGP_PRO \
  --Name "origin-new" \
  --Bandwidth 100 \
  | jq -r '.AllocationId' > eip-id.txt
  1. 把旧 EIP 直接释放,防止控制台“闲置未用”被轮询。
aliyun ecs ReleaseEipAddress --AllocationId $(cat old-id.txt)

五分钟让 DNS 无感知切换

# 先把 TTL 压到 30 s(需要提前备案)
aliyun alidns UpdateDomainRecord \
  --RecordId 987654321 \
  --RR www \
  --Type A \
  --Value 103.56.72.14 \
  --TTL 30

云防护节点自带 30 秒缓存,终端用户 0 中断。


十分钟给源站“隐身”

  1. 关闭原公网网卡,只留内网
nmcli device disconnect eth0
  1. 通过云防护“回源隧道”模板,一键下发 strongSwan 配置:
# /etc/ipsec.d/qunlian.conf
conn tunnel1
  left=%defaultroute
  leftsubnet=10.0.0.0/24
  right=103.215.124.254
  rightsubnet=0.0.0.0/0
  ike=aes256-sha256-modp2048!
  esp=aes256-sha256!
  auto=start
  1. 启动隧道
systemctl enable --now ipsec
ipsec up tunnel1

此刻源站彻底失去公网地址,外面再扫段也扫不到。


十五分钟验证:让攻击者“扑空”

# 从外部 masscan 新 /24
masscan 103.56.72.0/24 -p80,443,3389 --rate 20000 \
  | awk '{print $6}' > scan.txt
# 再扫旧 /24
masscan 203.0.113.0/24 -p80,443,3389 --rate 20000 \
  | awk '{print $6}' > scan-old.txt

结果:新段 0 回包,旧段 0 回包;攻击流量在清洗中心被直接丢弃,客户业务延迟 < 20 ms。


三十分钟固化成“逃生脚本”

仓库 segment-evacuate 里提供 evacuate.sh

#!/usr/bin/env bash
OLD_NET=$1          # 例:203.0.113.0/24
NEW_IP=$2           # 例:103.56.72.14
REGION=$3           # 例:cn-shanghai

# 1. 黑洞旧段
ip route add blackhole $OLD_NET
# 2. 申请新 EIP
EIP_ID=$(aliyun ecs AllocateEipAddress --RegionId $REGION --ISP BGP_PRO --Bandwidth 100 | jq -r '.AllocationId')
# 3. 绑定到源站
aliyun ecs AssociateEipAddress --AllocationId $EIP_ID --InstanceId $(curl -s http://100.100.100.200/latest/meta-data/instance-id)
# 4. 修改 DNS
aliyun alidns UpdateDomainRecord --RecordId $RECID --RR www --Type A --Value $NEW_IP --TTL 30
# 5. 等待隧道建立
sleep 60 && curl -sf https://check.qunlian.ai/v2/health || exit 1
echo "逃生完成,旧段已静默。"

一键执行:

./evacuate.sh 203.0.113.0/24 103.56.72.14 cn-shanghai

事后账单

  • 新 EIP 启用 38 分钟,按量计费 12 元;
  • 清洗流量 2.3 TB,抵扣完券后实付 0 元;
  • 业务零投诉,老板继续睡觉。

小结

扫段攻击最怕“同归于尽”。把源站迁到“无公网”+“隧道回源”组合后,再猛的洪水也只能在云防护的 Anycase 里打转转,真正的源站像隐身战机一样消失在雷达上。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐