通过 MAC 过滤流量 - nftables

通过 MAC 过滤流量 - nftables

TL:DR:我正在用树莓派构建一个网络分接头,它必须保留隐身。我有一座桥(br0)之间的交换机接口(eth0)和工作站(eth1)。

以下是我构建它的方式(欢迎任何建议):

# Create a bridge with the name br0
ip link add "$BRIDGE_INT" type bridge 
# Add the eth0 interface to the bridge
ip link set "$WORKSTATION_INT" master "$BRIDGE_INT" 
# Add the eth1 interface to the bridge
ip link set "$SWITCH_INT" master "$BRIDGE_INT" 

完成此过程后,我插入网线,可以看到我的eth0正在通过多种协议泄露其 MAC 地址。

我测试过的内容

nft add table inet filter
nft add chain inet filter output { type filter hook output priority 0 \; }
nft add rule inet filter output ether saddr "$SWITCH_MAC" drop

其仍然在 eth0 DHCP -> ARP -> MDNS 上泄漏。

然后我决定设置一个 DHCP 静态地址。经过多次尝试,我找到了正确的配置(欢迎任何建议):

/etc/network/interfaces
auto eth0
    iface eth0 inet manual
    address 192.168.0.10
    netmask 255.255.255.0
    gateway 192.168.0.254

/etc/dhcpcd.conf
interface eth0
    static ip_address=192.168.0.10/24
    static routers=192.168.0.1
    static domain_name_servers=192.168.0.1 8.8.8.8

此配置不会向网络查询 dhcp。但 ARP -> MDNS 仍然泄漏。

由于该项目旨在提高适应性,我认为最好的解决方案是放弃所有具有 SWITCH_MAC 的东西。但这并不能阻止流量流出。

我注意到的是,我的规则正确地丢弃了我故意发送的带有 SWITCH_MAC 的数据包,但并没有丢弃操作系统发出的数据包。

结论 即使测试流量被丢弃,操作系统也会泄漏不必要的流量。我怀疑我的问题与此类似:使用 nftables 根据 MA​​C 地址过滤流量 解释得很好,但还没有找到解决方案。

相关内容