net.ipv4.conf.all.log_martians=1仅开启内核对火星包的基础日志记录,输出源ip、目标ip、接口和时间戳等原始异常信息,不提取端口、ttl、tcp选项等指纹级字段;需配合rp_filter、tcpdump和wireshark等工具才能实现深度来源分析。

Linux 通过 sysctl 配置内核记录畸形数据包(如火星包)日志,核心是启用 net.ipv4.conf.all.log_martians=1,但它只记录基础异常事件,不生成“指纹”或协议级细节。要真正捕获和分析可疑流量,需组合配置与辅助工具。
启用火星包基础日志记录
该参数让内核在收到明显违背路由常识的 IP 包(例如私网源地址出现在公网接口上)时,向内核日志写入告警。
- 临时开启:
sudo sysctl -w net.ipv4.conf.all.log_martians=1 - 永久生效:在
/etc/sysctl.d/99-martian.conf中写入net.ipv4.conf.all.log_martians = 1,然后运行sudo sysctl --system - 验证是否生效:
sysctl net.ipv4.conf.all.log_martians应返回1
确保日志可见并避免被限速丢弃
默认 syslog 可能因速率限制(rate limit)而丢弃大量 martian 日志,需调整 rsyslog 行为:
- 检查当前日志:
sudo journalctl -k -g martian -n 50或sudo grep martian /var/log/messages - 若日志稀疏或缺失,编辑
/etc/rsyslog.conf,添加两行(位置靠前):$SystemLogRateLimitInterval 300$SystemLogRateLimitBurst 5000 - 重启服务:
sudo systemctl restart rsyslog
配合反向路径过滤提升检测准确性
仅开 log_martians 容易漏报或误报;启用严格反向路径校验可显著增强识别能力:
- 设置:
echo 'net.ipv4.conf.all.rp_filter = 1' | sudo tee /etc/sysctl.d/99-rpfilter.conf - 执行
sudo sysctl --system加载 - 注意:
rp_filter=1要求网络拓扑对称,多宿主或多路径环境慎用;可先试rp_filter=2(宽松模式)
补充原始包捕获用于深度分析
内核日志只含源IP、目标IP、接口名和时间戳——没有端口、TTL、TCP选项等关键特征。需主动抓包关联:
- 发现高频触发 martian 的源 IP 后,立即抓取:
sudo tcpdump -i eth0 src host 192.168.10.22 -w martian-22.pcap -c 200 - 用 Wireshark 打开 pcap 文件,观察:
• IP TTL 值(常见设备默认值不同)
• TCP Window Size 和选项(如 Timestamp、SACK)
• IP ID 递增模式或分片行为 - 若该 IP 来自本机(如容器或 misconfigured service),可用
ss -tulpn | grep :端口或lsof -i@192.168.10.22定位进程











