
本文按步骤分段说明在日本机房部署高防场景时,如何在主机与网络设备上完成路由调整与流量镜像设置,包含常见位置、命令示例、注意事项与校验方法,便于快速落地与排错。
当遭受大流量攻击或需要将流量发送到清洗设备时,需要在边界路由或服务器侧做流量分流与复制。典型场景包括:DDoS 流量清洗、流量采样分析、异常流量溯源与应用性能诊断。通过合理的路由和镜像策略,可以把恶意流量引流到清洗机或备份链路而不影响正常业务。
配置可在不同层面生效:物理交换机(L2 SPAN/ERSPAN)、路由器/防火墙(BGP/静态黑洞与策略路由)、虚拟交换机与宿主机(Linux 桥接、iptables、tc)、以及应用层代理。通常建议优先在承载链路的上游(ISP/机房交换)做大流量拦截,服务器侧做细粒度采集与镜像。
常见实现有:交换机端口镜像(SPAN)、ERSPAN 将流量封装后送到远端 collector、服务器侧使用 ifb+tc 限制和镜像、以及通过 sFlow/NetFlow 导出采样统计。云平台或机房控制面板通常提供接入点;若无权限可在 Linux 上用 ip link/ip rule、tc mirred 或 nftables 实现镜像与转发。
基本思路:1)建立策略路由,将被标记的流量发往清洗出口;2)用 iptables/nftables 做流量分类并打标(MARK);3)配置 ip rule/ip route 表,将 MARK 对应的路由表下一跳指向清洗设备。例如:
示例命令(示意):
ip route add blackhole 203.0.113.0/24 via 10.0.0.1 dev eth0
iptables -t mangle -A PREROUTING -s 0/0 -m limit --limit 1000/second -j MARK --set-mark 1
ip rule add fwmark 1 table 100
ip route add default via 10.0.0.1 table 100
在无物理交换可控时,可用 ifb+tc 将 ingress 流量重定向到虚拟设备并镜像到目标接口:
ip link add ifb0 type ifb; ip link set ifb0 up
tc qdisc add dev eth0 ingress
tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 action mirred egress mirror dev ifb0
tc qdisc add dev ifb0 root handle 1: prio
然后把 ifb0 的流量通过 VXLAN/ERSPAN 或 GRE 隧道发往清洗器。也可在 tc 中配合 policer/sgred 实现采样,避免复制全部流量带来带宽压力。
镜像会额外占用带宽与 CPU,复制海量流量到清洗器会引起链路拥塞或丢包;在公网传输镜像流量还可能触犯合规或隐私规定。设计时应做好采样、限速、黑洞策略以避免影响正常业务,并与机房/运营商确认清洗链路带宽和费用。
验证手段:在源端用 tcpdump/tshark 抓包确认规则匹配;在 ifb/镜像目标用 tcpdump 查看是否接收到复制包;使用 tc -s qdisc、ip -s link、ethtool -S 查询丢包与统计;通过 netstat -rn 与 ip rule show 校验路由表;最后用业务打点或压力测试生成流量,确认清洗回传后业务可达且延迟在可接受范围内。