非法来源地址是什么
有一批地址不应该出现在公网路由中:私有段、回环段、链路本地段、保留段以及尚未分配的段。行业里把这类地址统称为空路由地址,意思是它们不该被转发。内核把它们视作不可能的来源,收到这类源地址的报文会直接丢弃并在日志里留下记录。
两端各有一道门
防护分两层:主机侧做来源合理性校验,内核会检查报文的来源地址是否有对应的反向路径,不符合就丢弃;网络边界侧做前缀过滤,把明显不该出现的来源地址挡在外面。两层配合才能在不大幅增加成本的前提下显著提高抗伪造能力。
基本信息
| 常见空路由前缀 | 全零段、回环段、链路本地段、组播段、保留段、私有段 |
|---|---|
| 主机侧机制 | 来源合理性校验,内核日志会记录异常来源 |
| 网络侧机制 | 边界前缀过滤列表 |
| 作用 | 防止源地址伪造与扫描探测 |
典型使用场景
- 抗伪造加固:在对外接口的入方向过滤空路由来源,抑制伪造源地址的流量
- 排查丢包:局域网内在地址转换之前看到私有源被丢弃属于预期,不要把上游过滤当故障
- 日志分析:主机日志里出现异常来源记录时,先判断是链路配置问题还是真的伪造流量
- 隧道环境调优:隧道与多出口场景下严格校验会误丢合法回包,需要按接口调整策略
- 多宿主设计:多出口主机在严格校验下容易出现回包路径不一致,规划阶段就要考虑
- 合规检查:边界设备的过滤列表是否覆盖常见空路由前缀,是安全基线的一部分
观察异常来源与校验开关
观察异常来源与校验开关
dmesg | grep -i 'martian source' | tail -5
# 内核记录的不可能来源,通常伴随丢弃
sysctl net.ipv4.conf.all.rp_filter
# 1 为严格校验,2 为松散校验,0 为关闭
sysctl net.ipv4.conf.eth0.rp_filter
# 按接口分别设置,隧道接口往往需要单独调整常见空路由前缀
| 前缀 | 原因 | 是否可出现在公网 |
|---|---|---|
| 0.0.0.0/8 | 本网络专用 | 否 |
| 127.0.0.0/8 | 回环专用 | 否 |
| 169.254.0.0/16 | 链路本地 | 否 |
| 224.0.0.0/4 | 组播使用 | 否(作为源更是不可能) |
| 240.0.0.0/4 | 保留未分配 | 否 |
| 私有三段 | 内网专用 | 否 |
地址转换前侧看到私有来源被丢弃属于预期行为:上游已经做了空路由过滤。判断时先看过滤器位置,再决定是否需要调整策略,不要一上来就改主机参数。
隧道与多宿主场景下贸然开启严格校验,会出现合法回包被丢弃、表现为间歇性丢包;调整前先按接口确认,并评估放宽校验带来的安全影响。