我们想要mybridge
在我们的板上创建桥接器 ( )eth0
和eth1
接口。该板运行 Linux 2.6.34.9。
以下是命令:
brctl addbr mybridge
ifconfig eth1 0.0.0.0
ifconfig eth0 0.0.0.0
brctl addif mybridge eth1
brctl addif mybridge eth0
ifconfig mybridge up
PC-----ETH1-----mybridge-----ETH0
当我们从 PC 上 ping 开发板时,我们能够接收数据包eth1
(eth1
rx 计数器增加),但它们不会被传输到mybridge
,因为 rx 计数器mybridge
没有增加。在网上进行了一些搜索后,我们发现它
mybridge
已经启动,但没有进入运行模式。除非进入运行模式,否则桥将无法工作。
谁能告诉我们为什么mybridge
没有进入 RUNNING 状态?
/ # ifconfig
eth0 Link encap:Ethernet HWaddr BC:9A:78:56:34:12
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
eth1 Link encap:Ethernet HWaddr 00:E0:0C:BC:E0:00
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:101 errors:0 dropped:0 overruns:0 frame:0
TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7200 (7.0 KiB) TX bytes:126 (126.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
mybridge Link encap:Ethernet HWaddr 00:E0:0C:BC:E0:00
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
任何形式的输入都会有很大的帮助。
答案1
您无法 ping 通该板,因为该板没有 IP 地址。目前尚不清楚您到底在这里做什么。
数据包不会通过板上的网桥,因为板上的 eth0 上没有任何东西。如果将设备插入 eth0 并对其执行 ping 操作,您应该会看到数据包通过网桥。
eth0 的数据包计数器不增加可能有两个原因:
1) 网桥的运行方式有点像交换机,因为它会跟踪网桥每个端口后面的设备的 MAC 地址。如果运行该命令brctl showmacs mybridge
,您可以看到网桥已发现的设备的 MAC 地址以及它们位于哪个端口。
如果将设备插入 eth0 并尝试对它执行 ping 操作,则 ping 主机将首先广播 ARP 请求,以发现具有要 ping 操作的 IP 地址的主机的 MAC 地址。当该主机响应 ARP 请求时,网桥将看到具有该 MAC 地址的主机位于网桥的 eth0 后面。但是,我希望看到 ARP 广播针对接口进行计数,因此虽然 eth0 上的数据包/字节计数较低,但它应该不为零。
2) eth0 上没有插入任何东西,因此它没有载体。在未插入的接口上发送数据包是没有意义的。您可以使用“ip link”命令查看这一点(该ip
命令已弃用该ifconfig
命令 - 您可以使用 来查看接口计数器ip -s link
)。您将看到NO-CARRIER
针对 eth0 的情况。
答案2
我遇到了同样的问题,但我通过在每个 eth config 中指定 HDADDR 参数解决了它。因此,您需要使用 ifconfig -a 命令找出接口 mac 地址,然后编辑 /etc/sysconfig/network-scripts/ifcfg-ethX 中的每个接口配置文件,并为每个接口卡指定确切的 mac 地址。当您有多个物理接口卡时,redhat 还建议指定接口 HDADDR。
" HWADDR=MAC-address 其中 MAC-address 是以太网设备的硬件地址,格式为 AA:BB:CC:DD:EE:FF。该伪指令必须在包含多个 NIC 的机器中使用,以确保接口无论每个 NIC 模块的配置加载顺序如何,都会分配正确的设备名称。该指令不应与 MACADDR 结合使用。