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_ignore
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/eth0/rp_filter # 启用反向路径验证

​ 参数关联表 ​​#

参数影响方向防御能力
arp_ignore=1入站🛡️ 防 ARP 欺骗
arp_announce=2出站🛡️ 防 ARP 缓存投毒
arp_filter=1双向🛡️ 防 IP 地址伪造
proxy_arp=0入站🔇 禁用不安全代理

⚠️ ​​ 注意 ​​:过度限制可能导致网络中断,建议在测试环境验证后再应用