792 字
4 分钟
内核参数:ARP
以下是关于 Linux 内核中 ARP 相关参数的详细说明。
1. arp_ignore - ARP 响应控制
控制内核如何响应 接收到的 ARP 请求 。
| 值 | 行为描述 |
|---|---|
| 0 (默认) | 响应所有本地接口的 ARP 请求(即使目标 IP 不在当前接口) |
| 1 | 仅当目标 IP 是 接收接口配置的 IP 时才响应 |
| 2 | 在 “1” 基础上,还要求源 IP 与目标 IP 在同一子网 |
| 3 | 响应主机所有接口的 ARP,但需源 IP 和目标 IP 在同一子网 |
| 4-7 | 保留值,行为类似 “1” |
| 8 | 不响应任何 ARP 请求 |
✅ 典型用例 :在 Docker 中设置
arp_ignore=1可防止容器通过错误接口响应 ARP
2. arp_announce - ARP 通告控制
控制 发送 ARP 请求 时使用的源 IP。
| 值 | 行为描述 |
|---|---|
| 0 (默认) | 可使用任何本地 IP 作为源 IP |
| 1 | 优先选择与目标 IP 在同一子网的本地 IP |
| 2 | 强制 使用与目标接口直接关联的 IP |
✅ 典型用例 :设置
arp_announce=2可避免 ARP 缓存污染
3. arp_filter - ARP 源验证
控制是否进行 ARP 源 IP 验证 。
| 值 | 行为描述 |
|---|---|
| 0 (默认) | 不验证入站 ARP 包的源 IP |
| 1 | 严格检查源 IP,确保与接收接口匹配 |
✅ 典型用例 :
arp_filter=1+rp_filter=1可构建强 ARP 防御
其他重要 ARP 内核参数
除上述参数外,还有这些关键参数:
📌 proxy_arp - 代理 ARP
| 值 | 行为 |
|---|---|
| 0 | 禁用代理 ARP |
| 1 | 允许接口响应其他主机的 ARP 请求 |
echo 1 > /proc/sys/net/ipv4/conf/docker0/proxy_arp📌 arp_notify - 主动通告
| 值 | 行为 |
|---|---|
| 0 | 禁用主动 ARP 通告 |
| 1 | 当接口状态变化时自动发送免费 ARP |
📌 app_solicit - ARP 守护进程探测
# 当 ARP 缓存未命中时,尝试询问用户空间守护进程的次数echo 3 > /proc/sys/net/ipv4/neigh/docker0/app_solicit📌 locktime - ARP 记录锁定
# ARP 记录在缓存中的最短保留时间(毫秒)echo 1000 > /proc/sys/net/ipv4/neigh/docker0/locktime📌 base_reachable_time - 记录有效期
# 成功接收 ARP 响应后记录的有效时间(毫秒)echo 30000 > /proc/sys/net/ipv4/neigh/docker0/base_reachable_time 特殊接口参数
这些参数可针对特定接口设置(如 docker0, eth0):
🔧 mcast_solicit - 多播请求次数
# ARP 解析失败时发送多播请求的次数echo 5 > /proc/sys/net/ipv4/neigh/docker0/mcast_solicit🔧 ucast_solicit - 单播探测次数
# 当 ARP 表中有旧记录时尝试单播探测的次数echo 3 > /proc/sys/net/ipv4/neigh/docker0/ucast_solicit🔧 gc_thresh - ARP 垃圾回收
# ARP 缓存表的最大条目数echo 16384 > /proc/sys/net/ipv4/neigh/docker0/gc_thresh3 综合应用示例
在 Docker 桥接网络上实现 ARP 隔离:
# 进入容器网络命名空间sudo nsenter -t $(docker inspect -f '{{.State.Pid}}' <容器ID>) -n bash
# 设置容器接口的 ARP 策略echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/eth0/arp_announceecho 1 > /proc/sys/net/ipv4/conf/eth0/rp_filter # 启用反向路径验证 参数关联表
| 参数 | 影响方向 | 防御能力 |
|---|---|---|
arp_ignore=1 | 入站 | 🛡️ 防 ARP 欺骗 |
arp_announce=2 | 出站 | 🛡️ 防 ARP 缓存投毒 |
arp_filter=1 | 双向 | 🛡️ 防 IP 地址伪造 |
proxy_arp=0 | 入站 | 🔇 禁用不安全代理 |
⚠️ 注意 :过度限制可能导致网络中断,建议在测试环境验证后再应用