无法通过网桥从 Tap 接口转发 DHCP 数据包

问题描述

我正在尝试通过 Tap 接口将来自用户空间应用程序的数据包转发到物理以太网端口。我已经设置了 tap 接口并将其连接到网桥和以太网端口,并将它们都设置为 master。用户空间应用程序有自己的 TCP/IP 堆栈和以太网驱动程序。

用户空间应用程序正在尝试运行 DHCP,我可以看到 DHCP 数据包到达网桥没有任何问题,但是,没有数据包从以太网接口传出。我还看到网桥中通过以太网接口接收到的数据包,这样就可以了。 我已经尝试将接口和桥都设置为混杂模式,但没有任何区别。我还将网桥转发时间设置为零,但没有帮助。

有没有人知道什么可以阻止数据包从网桥到以太网接口?接口和网桥上的链接也已启动。

# ip -s link show dev eth1:
2: eth1: <broADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc mq master asim-br0 state UP mode DEFAULT group default qlen 1000
    link/ether 10:7b:44:91:3e:c9 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    1170034    9380     0       0       0       4218    
    TX: bytes  packets  errors  dropped carrier collsns 
    115628     498      0       0       0       0       

498 数据包计数永远不会改变。

# ip -s link show dev test-br0
1351: asim-br0: <broADCAST,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 10:7b:44:91:3e:c9 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    364721     2962     0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    43980      178      0       0       0       0      

RX 数据包计数增加,但 TX 数据包计数保持不变。

# brctl showstp test-br0
test-br0
 bridge id              8000.107b44913ec9
 designated root        8000.107b44913ec9
 root port                 0                    path cost                  0
 max age                  20.00                 bridge max age            20.00
 hello time                2.00                 bridge hello time          2.00
 forward delay             0.00                 bridge forward delay       0.00
 ageing time             300.00
 hello timer               0.00                 tcn timer                  0.00
 topology change timer     0.00                 gc timer                 166.34
 flags


testnic0 (1)
 port id                8001                    state                forwarding
 designated root        8000.107b44913ec9       path cost                100
 designated bridge      8000.107b44913ec9       message age timer          0.00
 designated port        8001                    forward delay timer        0.00
 designated cost           0                    hold timer                 0.00
 flags

testnic1 (2)
 port id                8002                    state                  disabled
 designated root        8000.107b44913ec9       path cost                100
 designated bridge      8000.107b44913ec9       message age timer          0.00
 designated port        8002                    forward delay timer        0.00
 designated cost           0                    hold timer                 0.00
 flags

testnic2 (3)
 port id                8003                    state                  disabled
 designated root        8000.107b44913ec9       path cost                100
 designated bridge      8000.107b44913ec9       message age timer          0.00
 designated port        8003                    forward delay timer        0.00
 designated cost           0                    hold timer                 0.00
 flags

testnic3 (4)
 port id                8004                    state                  disabled
 designated root        8000.107b44913ec9       path cost                100
 designated bridge      8000.107b44913ec9       message age timer          0.00
 designated port        8004                    forward delay timer        0.00
 designated cost           0                    hold timer                 0.00
 flags

eth1 (5)
 port id                8005                    state                forwarding
 designated root        8000.107b44913ec9       path cost                  4
 designated bridge      8000.107b44913ec9       message age timer          0.00
 designated port        8005                    forward delay timer        0.00
 designated cost           0                    hold timer                 0.00
 flags

这是桥设置:

# brctl show
bridge name     bridge id               STP enabled     interfaces
test-br0                8000.107b44913ec9       no              testnic0
                                                        testnic1
                                                        testnic2
                                                        testnic3
                                                        eth1
br0             8000.107b4491a2ec       no              eth0
docker0         8000.024291d41878       no

请注意,我还关闭了所有卸载功能

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)