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 根据 MAC 地址过滤流量 解释得很好,但还没有找到解决方案。