通过桥接接口进行通信

通过桥接接口进行通信

我想要与一个微型 Linux 设备上的特殊 IP 地址进行通信,该设备具有两个用于网桥的以太网接口。

桥梁设置如下:

# Delete bridge if it exists
ip link delete $BRIDGE_IF type bridge

# Prepare device-facing interface
ip link set dev $DEVICE_IF down
ip address flush dev $DEVICE_IF
ip address add 0.0.0.0 dev $DEVICE_IF
ip link set dev $DEVICE_IF up

# Prepare network-facing interface
ip link set dev $NETWORK_IF down
ip address flush dev $NETWORK_IF
ip address add 0.0.0.0 dev $NETWORK_IF
ip link set dev $NETWORK_IF up

# Create bridge and add interfances
ip link add name $BRIDGE_IF type bridge
ip link set dev $BRIDGE_IF up
ip link set dev $DEVICE_IF master $BRIDGE_IF
ip link set dev $NETWORK_IF master $BRIDGE_IF

# Add IPv4 address to bridge interface
ip -4 address add $BRIDGE_IPV4 dev $BRIDGE_IF

# Make sure forwarding is enabled.
sysctl -w net.ipv4.ip_forward=1

我有一个透明桥,但我想与$SPECIAL_IP设备通信。它没有更多的以太网接口,并且需要使用所连接设备的 IP 地址(我可以通过套接字读取可靠地获取该地址$DEVICE_IF)。

因此,基本上,我需要使用一个不会干扰通过网桥进行的其他通信的 IP 地址来建立 TCP/IP 通信。我尝试了无数次 iptables、ebtables 和设置路由,但都无济于事。而且我认为无数次重读一些在线文档不会有帮助(例如,http://ebtables.netfilter.org/br_fw_ia/br_fw_ia.html#section7)。

编辑:添加图表

Mini Linux 设备图

编辑:添加推理/背景

我需要为许多(数千个)我们无法更改的旧式以太网设备添加一些功能(即无法或不允许更新软件或固件)。“迷你 Linux 设备”提供防火墙功能,但也需要自己发送和接收通信以提供所有附加功能。旧式设备所在的许多网络(约 65%)无法添加足够的新 IP 地址(出于“原因”也没有足够的新 MAC 地址),以允许所有旧式设备添加“迷你 Linux 设备”。这是因为 (1) 超过 50% 的 XXX.XXX.XXX.0/24 被使用,并且 (2) 一些上游控制系统中的许多 IP 地址和/或 MAC 地址是“硬编码”的。这些“愚蠢的”网络(IP 和 MAC)限制是出于遗留原因(想想 1990 年代的 SCADA 网络);因此,我正在尝试制作只需要使用它正在增强的设备的 IP 和 MAC 的“迷你 Linux 设备”。所以我创建了一座桥,并且可以添加 iptables 防火墙,这比什么都没有要好,但是为了添加额外的功能,“迷你 Linux 设备”需要能够自行通信。

注 1:我们可以保证,这些 IP 地址($SPECIAL_IP多个)是旧设备永远不会、也不应该直接通信的 IP 地址,而且它们大部分(但并非全部)位于私有地址空间之外。

笔记2:如果有完全不同的方法可以实现这一点,我会洗耳恭听,但我仍然想知道这是否可能。

有谁知道如何做到这一点?

答案1

您不需要桥接接口。当多个接口连接到同一网络时,使用桥接接口。您的情况不同。

从桥中移除 DEVICE_IF。

将 DEVICE 网络的 IP 地址分配给 DEVICE_IF。确保可以 ping 通该设备。

此外,您不需要为桥接接口分配 0.0.0.0。

相关内容