Linux命令:arptables

arptables 命令

基本介绍

arptables 是 Linux 系统中用于配置 ARP(Address Resolution Protocol)数据包过滤规则的工具,是 netfilter 框架的一部分。它允许系统管理员设置规则来过滤、修改和记录 ARP 数据包,用于保护网络免受 ARP 欺骗攻击和其他 ARP 相关的安全威胁。

资料合集:https://pan.quark.cn/s/6fe3007c3e95https://pan.quark.cn/s/561de99256a5https://pan.quark.cn/s/985f55b13d94https://pan.quark.cn/s/d0fb20abd19a

语法

复制代码
arptables [-t table] [-A|-D|-I|-R|-L|-F|-Z|-N|-X|-P] [链名] [规则] [-j 动作]

表(Table)

arptables 主要支持两个表:

表名 功能 包含的链
filter ARP 数据包过滤(默认表) INPUT, OUTPUT, FORWARD
mangle ARP 数据包修改 INPUT, OUTPUT, FORWARD

链(Chain)

链是规则的容器,ARP 数据包按照链的顺序依次匹配规则:

  • INPUT:进入本地系统的 ARP 数据包
  • OUTPUT:从本地系统发出的 ARP 数据包
  • FORWARD:经过系统转发的 ARP 数据包

命令选项

链管理命令

  • -N <chain>:创建新链
  • -X [<chain>]:删除指定链(默认删除所有空用户定义链)
  • -P <chain> <policy>:设置链的默认策略(ACCEPT/DROP)
  • -E <old-chain> <new-chain>:重命名链

规则管理命令

  • -A <chain>:在链末尾追加规则
  • -I <chain> [num]:在链指定位置插入规则(默认开头)
  • -D <chain> [num]:删除链中指定位置的规则
  • -R <chain> <num>:替换链中指定位置的规则
  • -F [<chain>]:清空链中的所有规则(默认清空所有链)
  • -Z [<chain>]:重置链的计数器

查看命令

  • -L [<chain>]:列出链中的规则
  • -S [<chain>]:以 arptables-save 格式显示规则
  • -v:详细输出(配合 -L 使用)
  • -n:数字格式显示地址
  • -x:显示精确的计数器值

规则匹配选项

基本匹配
  • -p <protocol>:匹配协议(arp)
  • -s <source>:匹配源 MAC 地址
  • -d <destination>:匹配目标 MAC 地址
  • -i <interface>:匹配进入的网络接口
  • -o <interface>:匹配输出的网络接口
ARP 操作码匹配
  • --opcode <value>:匹配 ARP 操作码(1=请求, 2=响应)
ARP 协议地址匹配
  • --source-ip <ip>:匹配源 IP 地址
  • --destination-ip <ip>:匹配目标 IP 地址
  • --source-mac <mac>:匹配源 MAC 地址
  • --destination-mac <mac>:匹配目标 MAC 地址

目标动作(Jump)

动作 说明
ACCEPT 允许 ARP 数据包通过
DROP 丢弃 ARP 数据包
LOG 记录日志(继续匹配后续规则)
RETURN 返回调用链继续匹配
<user-chain> 跳转到用户定义链

使用示例

1. 查看当前规则

bash 复制代码
arptables -L                    # 查看 filter 表所有规则
arptables -L -v                 # 详细输出
arptables -L -n                 # 数字格式显示

2. 设置默认策略

bash 复制代码
arptables -P INPUT ACCEPT       # 允许所有进入的 ARP 数据包
arptables -P FORWARD DROP       # 拒绝所有转发的 ARP 数据包
arptables -P OUTPUT ACCEPT      # 允许所有出站 ARP 数据包

3. 拒绝特定 MAC 地址的 ARP 请求

bash 复制代码
arptables -A INPUT -s 00:11:22:33:44:55 -j DROP

4. 允许特定 IP-MAC 绑定

bash 复制代码
arptables -A INPUT -s 192.168.1.100 --source-mac 00:11:22:33:44:55 -j ACCEPT

5. 阻止 ARP 欺骗攻击

bash 复制代码
# 只允许已知的 IP-MAC 配对
arptables -P INPUT DROP
arptables -A INPUT -s 192.168.1.1 --source-mac 00:11:22:33:44:01 -j ACCEPT
arptables -A INPUT -s 192.168.1.2 --source-mac 00:11:22:33:44:02 -j ACCEPT

6. 允许特定接口的 ARP 流量

bash 复制代码
arptables -A INPUT -i eth0 -j ACCEPT

7. 记录 ARP 日志

bash 复制代码
arptables -A INPUT -j LOG --log-prefix "ARP: "

8. 删除规则

bash 复制代码
arptables -D INPUT 1            # 删除 INPUT 链的第一条规则

9. 清空所有规则

bash 复制代码
arptables -F                    # 清空 filter 表

10. 保存和恢复规则

bash 复制代码
arptables-save > /etc/arptables/rules   # 保存规则
arptables-restore < /etc/arptables/rules # 恢复规则

典型 ARP 防火墙配置示例

ARP 欺骗防护配置

bash 复制代码
# 设置默认策略为拒绝
arptables -P INPUT DROP
arptables -P OUTPUT DROP
arptables -P FORWARD DROP

# 允许回环接口
arptables -A INPUT -i lo -j ACCEPT
arptables -A OUTPUT -o lo -j ACCEPT

# 允许已知的 IP-MAC 配对
arptables -A INPUT -s 192.168.1.1 --source-mac 00:11:22:33:44:01 -j ACCEPT
arptables -A INPUT -s 192.168.1.2 --source-mac 00:11:22:33:44:02 -j ACCEPT
arptables -A INPUT -s 192.168.1.100 --source-mac 00:11:22:33:44:64 -j ACCEPT

# 允许响应我们发起的 ARP 请求
arptables -A INPUT --opcode 2 -j ACCEPT

# 允许我们发送 ARP 请求和响应
arptables -A OUTPUT --opcode 1 -j ACCEPT
arptables -A OUTPUT --opcode 2 -j ACCEPT

保存和恢复规则

Debian/Ubuntu

bash 复制代码
# 保存规则
arptables-save > /etc/arptables/rules

# 开机自动加载(需要安装 arptables-persistent 包)
apt-get install arptables-persistent

CentOS/RHEL

bash 复制代码
# 保存规则
arptables-save > /etc/sysconfig/arptables

# 开机自动加载
systemctl enable arptables

ARP 操作码说明

操作码 名称 说明
1 ARP Request ARP 请求(询问某个 IP 地址对应的 MAC 地址)
2 ARP Reply ARP 响应(告知某个 IP 地址对应的 MAC 地址)
3 RARP Request RARP 请求
4 RARP Reply RARP 响应

相关命令

  • iptables:IPv4 防火墙工具
  • ip6tables:IPv6 防火墙工具
  • ebtables:以太网桥接过滤工具
  • arp:查看和修改 ARP 缓存
  • ip:现代网络配置工具
  • arptables-save:保存 arptables 规则
  • arptables-restore:恢复 arptables 规则

注意事项

  1. 权限要求 :所有 arptables 命令需要 root 权限
  2. 规则顺序:规则按照添加顺序匹配,一旦匹配成功就执行相应动作
  3. 默认策略:建议将默认策略设置为 DROP,然后显式允许需要的 ARP 流量
  4. 规则持久化:重启后规则会丢失,需要保存到配置文件
  5. 内核模块 :确保加载了必要的内核模块(如 arptables_filter
  6. ARP 欺骗防护arptables 可以用于防止 ARP 欺骗,但需要配合静态 ARP 绑定使用

总结

arptables 是 Linux 系统中配置 ARP 数据包过滤规则的工具,主要用于保护网络免受 ARP 欺骗攻击。通过设置规则,可以过滤、记录和修改 ARP 数据包,确保只有合法的 ARP 流量能够通过网络。arptables 是构建安全网络环境的重要工具之一。

相关推荐
hoaxxcj2 小时前
多智能体把云可靠性工程自动化:NeurIPS 2025 的 STRATUS 比 SOTA 强 1.5 倍,还顺手定了条“安全规范“
运维·安全·自动化·大模型·ai论文·前沿解读
运维大师2 小时前
【K8S 运维实战】39-etcd脑裂故障复盘
运维·kubernetes·etcd
wsad05322 小时前
CentOS Stream 10 配置静态 IP 完整指南
linux·tcp/ip·centos
Ai拆代码的曹操2 小时前
K8s 实战:CrashLoopBackOff 状态下 kubectl logs 拿不到日志的三层排查方案
linux·docker·kubernetes
tedcloud1233 小时前
Kimi-K3 部署指南:大模型应用开发环境搭建实践
linux·运维·服务器·开源·音视频
深念Y3 小时前
ZTE_UZ901_NVRAM经验总结
linux·服务器·网络·嵌入式硬件·嵌入式·随身wifi
大模型丫丫3 小时前
GitHub Actions 自动化运维实战:从 CI/CD 到云端部署
运维·自动化·github
似水এ᭄往昔3 小时前
【Linux网络编程】--TCP_Socket
linux·网络·tcp/ip
wuminyu4 小时前
JUC包的AQS与JVM的ObjectMonitor机制对比分析
java·linux·c语言·jvm·c++
山海鲸可视化4 小时前
数字孪生技术:创新性破解城市高温难题
大数据·运维·数字孪生·数据可视化·可视化大屏