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 是构建安全网络环境的重要工具之一。

相关推荐
妖怪喜欢风21 小时前
connecthomeip/matter 专栏文章汇总
linux·matter
wefg121 小时前
【Linux】网络高级 IO
linux·运维·服务器
码云骑士21 小时前
为何VMware上云之路充满挑战?
运维·服务器·php
kebidaixu21 小时前
VSCode 安装和使用 Claude Code 完整指南
linux
朗晴21 小时前
Linux开机重置密码时做了什么?
linux·运维·服务器
某林21221 小时前
Isaac Lab (v2.3.2) Docker 本地化部署与底层排障全解析
运维·docker·容器·架构·iassc
烟雨江南aabb21 小时前
Docker第四弹:Dockerfile
linux·运维·docker
坤昱1 天前
cfs调度类深入解刨——EAS科普篇
linux·cfs·linux内核调度·cfs调度类深入解刨·cfs调度类·eas·cfs调度器eas特性
itinymeng1 天前
在Alibaba Cloud Linux 4 LTS 64位 中安装htop
linux·运维·服务器