阻止来自子网中特定主机的 ARP 请求(或广播消息,如果可能)

阻止来自子网中特定主机的 ARP 请求(或广播消息,如果可能)

我的 ISP 提供用户名和密码进行身份验证,并且还注册客户端的 MAC 地址进行身份验证。

我担心有人在我不使用时滥用我的连接。用户名很容易猜到(客户端无法更改用户名,只能更改密码),如果有人找到 MAC 地址和密码,他们就可以使用我的连接。

现在,ISP 不使用私有 VLAN,因此 MAC 地址很容易获取。来自我子网内主机的简单 ARP 广播请求将泄露我的 MAC,而且我不依赖密码,因为身份验证页面不使用 HTTPS。因此,我的密码以纯文本形式发送。

在这种情况下,我想要阻止/删除/拒绝来自子网内除网关之外的任何主机的 ARP 请求(或任何广播请求)。

我看过这个问题和这个问题但 OP 试图阻止所有 ARP 请求。当然,这是一个坏主意,因为这样我就无法从网关获得任何互联网流量。我只想阻止来自我子网中任何随机主机的 ARP 请求(如果可能的话,任何广播请求),但只允许来自我的网关的广播/ARP。

我在无线路由器中使用 OpenWrt。因此,我认为 Linux 解决方案可行,如果可能的话,也请提供 Windows 解决方案。

答案1

我在 Linux 设备上通过两种方式实现了此要求。我仍在寻找在 Windows 设备上实现此要求的方法。

  1. 通过为我的网关输入静态 ARP 条目,然后禁用 ARP。
  2. 使用arptable

第一种方法

ip neighbor add 172.xx.xxx.1 lladdr 84:xx:xx:xx:xx:80 nud permanent dev eth0

上述命令需要ip-fullOpenWrt 系统上的软件包。eth0是我的 WAN 接口。如果网关已经有条目,请使用:

ip neighbor replace 172.xx.xxx.1 lladdr 84:xx:xx:xx:xx:80 nud permanent dev eth0

现在禁用ARP。使用任意一个命令

ip link set dev eth0 arp off
ifconfig eth0 -arp

要稍后重新启用,请使用:

ip link set dev eth0 arp on
ifconfig eth0 arp

第二种方法

这个正在使用ARP 表包。首先,我允许网关。然后,我还允许 LAN(br-lan接口)中的 ARP,最后阻止所有其他 ARP

arptables -A INPUT -i eth0 -s 172.xx.xxx.1 --source-mac ac:xx:xx:xx:xx:xx -j ACCEPT
arptables -A INPUT -i br-lan -j ACCEPT
arptables -P INPUT DROP

您应该根据自己的要求修改 arptables 规则。上述规则还会阻止您 ping eth0 主机,因为它们的 ARP 响应也将被阻止。您可以添加另一条规则“arptables -A INPUT -i eth0 --destination-mac e4:xx:xx:xx:xx:xx -j ACCEPT”,其中 e4:xx:xx:xx:xx:xx 是您的 eth0 MAC。这将允许所有单播 ARP 数据包(包括发送到您设备的 ARP 响应)。

相关内容