You need to enable JavaScript to run this app.
文档中心
全球加速

全球加速

复制全文
下载 pdf
最佳实践
基础型加速器挂载边缘计算 ECS 的路由配置指南
复制全文
下载 pdf
基础型加速器挂载边缘计算 ECS 的路由配置指南

本文面向已经把 GA 基础型加速器挂到边缘计算 ECS 上的运维人员,聚焦 ECS 内部 Linux 路由配置。文中给出两类典型场景(虚机默认走本地公网 vs 默认走 GA 出公网)的命令、参数含义、跨重启持久化脚本以及验证与回滚方法,帮助您在多网卡边缘 ECS 上精确控制出向/回程流量路径。

背景信息

在“GA 基础型加速器 + 跨域带宽 CRB + 边缘计算 ECS”的组合方案中,加速器和跨域带宽的开通、加速 IP 挂载等步骤在控制台完成,方案落地的最后一步落在 ECS 内部:Linux 系统路由决定了 GA 入向流量的回包路径,以及虚机主动访问公网时的出口选择。

边缘计算 ECS 通常具备两张网卡(eth0 为 VPC 内网卡,eth1 为本地公网卡),因此存在两条候选出公网路径:

  • 通过 eth1 直接走本地公网出口。
  • 通过 eth0 经 VPC 子网网关,最终经由 GA/跨域带宽承载出公网。

不同业务对“客户端如何接入”和“虚机如何出公网”的诉求不同。本文将 国内→海外游戏加速 — 三层加速 + 香港代理中转 和 国内→海外游戏加速 — 三层加速 + 国内就近接入 两个实践中的路由配置部分统一整理为两个典型场景:

  • 场景一:虚机默认出向路由走本地公网,客户端走 GA 访问接入
  • 场景二:虚机默认走 GA 出公网,客户端通过虚机公网 IP 接入

场景对比

alt

  • 整体链路由四类资源构成:客户端、GA 基础型加速器、跨域带宽 CRB、边缘计算 ECS。
  • 用户侧业务程序部署在边缘虚机上,客户端根据业务形态选择访问 GA 加速 IP 或虚机公网 IP;虚机侧通过系统路由决定回包和出公网路径。

两种场景在 GA 控制台侧的资源创建步骤完全一致,差异只在 ECS 内部路由,请先根据下表做出选择。

对比维度场景一:默认走本地公网场景二:默认走 GA 出公网
客户端接入地址GA 加速 IPECS 虚机公网 IP
虚机主动出公网默认路径本地公网出口(eth1)不变改走 eth0 至 VPC 子网网关,经 GA/跨域链路
路由改造方式增加策略路由(ip rule + 独立路由表 table 100)修改系统默认路由(ip route change default)
默认路由是否被替换否是
运维风险低,原默认路由保留高,需提前确认管理入口与回滚方式
典型用途客户端加速接入,虚机保留本地出口访问外部依赖虚机作为业务代理/透明代理,统一走 GA 跨境出口

决策指引:

  • 只希望入向客户端流量走 GA 加速,虚机自身访问公网(下载依赖、拉取镜像、访问第三方 API)仍希望保留本地公网出口 → 选场景一。
  • 希望虚机主动出公网的流量也一并经由 GA/跨境专线承载,客户端不走 GA 加速 IP 而直接访问虚机公网 IP → 选场景二。
  • 更复杂的混合需求,可以以场景一为基础,再通过程序侧 bind 特定网卡 IP 精细化控制单条连接的出口(见下文提示)。

说明

无论哪种场景,ECS 内的程序都可以通过主动 bind eth0 或 eth1 上的私网/公网 IP 来决定该连接的出公网流量是否走 GA 跨境。这提供了在同一台虚机上并存两种出口的灵活性。

注意

本文介绍的路由配置只是实验环境下的参考配置,在生产环境中可能需要根据操作系统版本和业务逻辑进行适当调整。

场景一:虚机默认走本地公网,客户端走 GA 接入

适用场景

  • 客户端接入需要 GA 加速(客户端配置 GA 加速 IP 作为访问地址)。
  • 虚机主动访问公网不希望改变默认出口,保留本地公网出口的稳定性和已有连通性。
  • 希望仅对来自 VPC 子网的流量指定独立路由表,做到“入向流量精细化调度、出向默认路径不动”。

配置命令

以 root 或 sudo 权限执行以下命令:

ip rule add from {VPC子网} lookup 100
ip route add default dev eth0 via {VPC子网网关} table 100

命令语义:

  • 第一条 ip rule 添加一条策略路由规则:来源地址属于 VPC 子网网段的流量,查表 100。
  • 第二条 ip route 在路由表 100 中写入默认路由,出接口 eth0、下一跳为 VPC 子网网关。

由此,来自 VPC 子网(即 GA 转发进来的入向流量)按预期通过 eth0 回包;虚机主 main 路由表未被触碰,主动出公网仍走本地公网。

参数说明

参数说明示例
{VPC子网}ECS 所在 VPC 子网的 CIDR10.0.0.0/24
{VPC子网网关}VPC 子网网关,取子网第一个 IP10.0.0.1
table 100自定义路由表编号,与 ip rule 中的 lookup 100 保持一致;如与现有路由表冲突可改为其他未占用编号100

说明

场景一的核心是“只对指定来源流量走策略路由”。虚机原有默认路由不被替换,因此虚机主动出公网仍走本地公网。

路由持久化

直接执行 ip rule / ip route add 只在当前内核会话内生效,实例重启后规则会丢失。以下脚本会自动从 eth0 提取 IP 与掩码、推导 VPC 子网和网关(网关取网段第一个 IP),并把生效命令写入 /etc/rc.local 实现开机自动加载。使用 root 权限执行:

#!/bin/bash
rc_local=/etc/rc.local
table_id=100
ETH=eth0

ip=$(ip addr show $ETH | awk '$1=="inet"{print $2}' | head -n1)
ip_part=${ip%/*}
mask_part=${ip#*/}

IFS='.' read -r i1 i2 i3 i4 <<< "$ip_part"
ip_int=$(( (i1 << 24) | (i2 << 16) | (i3 << 8) | i4 ))

mask_bits=$(( 0xFFFFFFFF << (32 - mask_part) ))
network_int=$(( ip_int & mask_bits ))

netgw_int=$(( network_int + 1 ))

netgw=$(printf "%d.%d.%d.%d\n" \
  $(( (netgw_int >> 24) & 0xFF )) \
  $(( (netgw_int >> 16) & 0xFF )) \
  $(( (netgw_int >> 8) & 0xFF )) \
  $(( netgw_int & 0xFF )))

network=$(printf "%d.%d.%d.%d/%d\n" \
  $(( (network_int >> 24) & 0xFF )) \
  $(( (network_int >> 16) & 0xFF )) \
  $(( (network_int >> 8) & 0xFF )) \
  $(( network_int & 0xFF )) \
  $mask_part)

cat >$rc_local <<EOF
#!/bin/bash
ip rule add from $network lookup $table_id
ip route add default dev eth0 via $netgw table $table_id
exit 0
EOF

chmod +x $rc_local

执行完毕后,可通过 cat /etc/rc.local 检查生成的内容是否符合预期,并确认 rc.local 已有可执行权限。

场景二:虚机默认走 GA,客户端走虚机公网 IP

适用场景

  • 客户端接入地址不走 GA 加速 IP,而是直接访问 ECS 虚机公网 IP。
  • 希望虚机默认出向流量通过 GA/跨域链路承载,例如把虚机当作业务代理或透明代理出口。
  • 业务侧对“所有出公网流量都走同一条跨境专线”有明确诉求,愿意接受修改默认路由的运维风险。

配置命令

以 root 或 sudo 权限执行:

ip route change default dev eth0 via {VPC子网网关}

命令语义:将系统 main 路由表中的默认路由改为经 eth0 至 VPC 子网网关,从而把所有未匹配到具体路由的流量都推向 GA/跨域链路。

参数说明

参数说明示例
{VPC子网网关}VPC 子网网关,取子网第一个 IP10.0.0.1

注意

该命令会直接替换系统默认路由,影响虚机所有默认出公网流量。执行前请务必确认以下事项,避免误改后失去对虚机的运维访问:

  • SSH 管理入口:确认您当前的 SSH 会话是否来自 VPC 内跳板机或走 eth0 的链路;如果 SSH 依赖本地公网 IP 直连(即 eth1),需先补充针对源 IP 的策略路由或保留一条明细路由,防止会话断开。
  • 业务端口:确认业务对外暴露的公网端口在虚机公网 IP(eth1)上是否仍需可达;若客户端已切到虚机公网 IP,回包路径也需要走 eth1,必要时结合策略路由处理入向流量。
  • 防火墙 / 安全组:确认 GA 加速 IP 段、VPC 子网网关、跨域链路所需的目标 IP 未被安全组或 iptables 拦截。
  • 回滚方式:提前记录改动前的默认路由(ip route show default),并准备好回滚命令 ip route change default dev eth1 via <本地公网网关>,以及通过 VPC 跳板机、控制台 VNC 登录的兜底方案。

路由持久化

修改默认路由的动作也需要在实例重启后自动重放。以下按操作系统分别提供脚本,均以 root 权限执行。

CentOS

写入 /etc/sysconfig/network-scripts/route-eth0,让 network 服务在 eth0 up 时应用默认路由:

#!/bin/bash
route_file=/etc/sysconfig/network-scripts/route-eth0

ETH=eth0

ip=$(ip addr show $ETH | awk '$1=="inet"{print $2}' | head -n1)
ip_part=${ip%/*}
mask_part=${ip#*/}

IFS='.' read -r i1 i2 i3 i4 <<< "$ip_part"
ip_int=$(( (i1 << 24) | (i2 << 16) | (i3 << 8) | i4 ))

mask_bits=$(( 0xFFFFFFFF << (32 - mask_part) ))
network_int=$(( ip_int & mask_bits ))

netgw_int=$(( network_int + 1 ))

netgw=$(printf "%d.%d.%d.%d\n" \
  $(( (netgw_int >> 24) & 0xFF )) \
  $(( (netgw_int >> 16) & 0xFF )) \
  $(( (netgw_int >> 8) & 0xFF )) \
  $(( netgw_int & 0xFF )))

cat >$route_file <<EOF
default dev eth0 via $netgw
EOF

Debian / Ubuntu

写入 /etc/network/if-up.d/route-to-ga,让 ifupdown 在网卡 up 事件中触发默认路由修改:

#!/bin/bash
route_file=/etc/network/if-up.d/route-to-ga

ETH=eth0

ip=$(ip addr show $ETH | awk '$1=="inet"{print $2}' | head -n1)
ip_part=${ip%/*}
mask_part=${ip#*/}

IFS='.' read -r i1 i2 i3 i4 <<< "$ip_part"
ip_int=$(( (i1 << 24) | (i2 << 16) | (i3 << 8) | i4 ))

mask_bits=$(( 0xFFFFFFFF << (32 - mask_part) ))
network_int=$(( ip_int & mask_bits ))

netgw_int=$(( network_int + 1 ))

netgw=$(printf "%d.%d.%d.%d\n" \
  $(( (netgw_int >> 24) & 0xFF )) \
  $(( (netgw_int >> 16) & 0xFF )) \
  $(( (netgw_int >> 8) & 0xFF )) \
  $(( netgw_int & 0xFF )))

cat >$route_file <<EOF
#!/bin/bash
ip route change default dev "$ETH" via "$netgw"

exit 0
EOF

chmod +x $route_file

验证与回滚

验证配置

配置生效后,建议按以下命令自检,确认路由与规则符合预期。

  • 查看主路由表默认路由:

    ip route show default
    
    • 场景一预期:默认路由仍指向 eth1(本地公网卡),未被修改。
    • 场景二预期:默认路由指向 eth0 与 VPC 子网网关。
  • 查看策略路由规则:

    ip rule show
    

    场景一下应能看到形如 from 10.0.0.0/24 lookup 100 的自定义规则。

  • 查看自定义路由表内容:

    ip route show table 100
    

    场景一下应能看到 default via <VPC子网网关> dev eth0。

  • 端到端连通性验证:

    • 场景一:客户端使用 GA 加速 IP 访问业务端口,虚机侧使用 curl ifconfig.me 观察出公网 IP,应为本地公网 IP。
    • 场景二:客户端使用虚机公网 IP 访问业务端口;虚机侧 curl ifconfig.me 应显示为 GA 出口 IP。

回滚

若配置后出现连通性问题,可按对应场景快速回滚。

  • 场景一回滚:删除策略路由规则和自定义路由表条目即可,主路由表未受影响。

    ip rule del from {VPC子网} lookup 100
    ip route del default dev eth0 via {VPC子网网关} table 100
    

    如果已经写入 /etc/rc.local,需要同步清空或删除持久化脚本内容,防止重启后再次生效。

  • 场景二回滚:将默认路由改回本地公网出口。

    ip route change default dev eth1 via <本地公网网关>
    

    同时删除或修改 /etc/sysconfig/network-scripts/route-eth0(CentOS)或 /etc/network/if-up.d/route-to-ga(Debian/Ubuntu),避免下次重启自动重放。

说明

若在场景二下已经因误改默认路由丢失 SSH 访问,可通过火山引擎控制台的 VNC 登录进入实例,或经由 VPC 内跳板机走内网 eth0 登录,再执行回滚命令。

最近更新时间:2026.08.19 17:45:18
这个页面对您有帮助吗?
有用
有用
无用
无用