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

相关推荐
智能运维指南5 分钟前
代码管理软件如何融入 DevOps 工具链?全链路联通的 5 个关键点
运维·devops·信创适配·嘉为蓝鲸
充电zcx19 分钟前
Linux:4:开发工具详解
linux·运维·服务器
gongfeng30004 小时前
福州企业级AI自动化获客解决方案品牌梳理与适用场景分析
运维·人工智能·自动化·g-claw ai员工
码农客栈4 小时前
linux 交叉编译tslib
linux
鱼月半5 小时前
两台电脑直连网络不通怎么办?
linux·网络协议
光电笑映6 小时前
网络通信基础:从协议分层到 Socket 编程预备
linux·运维·服务器·网络
酸菜。6 小时前
dw_apb_gpio总结
linux
wunaiqiezixin6 小时前
MIT 6.S081 file system 实验篇(lab9):Large files (moderate)
linux·unix·os·xv6·mit6.s081
GeW6 小时前
RHCE 考试通过率提升:核心考点、实验环境与排错技巧
linux
微小冷6 小时前
用Mermaid画时序图
运维·流程图·时序图·mermaid·生命线