I am trying to use a Raspberry Pi 4 B running OpenWrt 24.10.0, r28427-6df0e3d02a
as a wireless bridge between my primary router (not running OpenWRT) and a few wired-only devices, since I am not able to run a direct wired connection between the router and the network switch. The intended use case is that devices on either side of the bridge be on the same subnet, and all the routing, DHCP, etc. is handled by the primary router/AP.
The network topology looks something like this:
ISP Modem <-Cat5-> Primary Router/AP <-Wifi AC-> Pi <-Cat5-> Gigabit switch <-Cat5-> Client device.
I set up a Relayd bridge between the wired and wireless interfaces of the Pi, following the docs: https://openwrt.org/docs/guide-user/network/wifi/relay_configuration. The wireless radio on the Pi is placed in Client only mode, it is not also acting as a second AP.
I am experiencing similar problems to this older thread, where packets are occasionally dropped by the Relayd bridge: Relayd dropping packets - launching tcpdump solves the issue
As far as I can tell, either all the packets are being forwarded correctly, or all packets are being dropped, and this cuts back and forth seemingly at random. As an example, a ping from a client PC:
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=17.1 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=116 time=35.1 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=116 time=26.8 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=116 time=36.6 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=116 time=17.8 ms
64 bytes from 8.8.8.8: icmp_seq=6 ttl=116 time=28.6 ms
64 bytes from 8.8.8.8: icmp_seq=7 ttl=116 time=16.0 ms
64 bytes from 8.8.8.8: icmp_seq=8 ttl=116 time=14.2 ms
64 bytes from 8.8.8.8: icmp_seq=9 ttl=116 time=14.9 ms
64 bytes from 8.8.8.8: icmp_seq=10 ttl=116 time=21.0 ms
64 bytes from 8.8.8.8: icmp_seq=11 ttl=116 time=14.5 ms
64 bytes from 8.8.8.8: icmp_seq=12 ttl=116 time=15.7 ms
64 bytes from 8.8.8.8: icmp_seq=13 ttl=116 time=14.9 ms
64 bytes from 8.8.8.8: icmp_seq=14 ttl=116 time=17.0 ms
64 bytes from 8.8.8.8: icmp_seq=33 ttl=116 time=1013 ms
64 bytes from 8.8.8.8: icmp_seq=34 ttl=116 time=14.9 ms
64 bytes from 8.8.8.8: icmp_seq=35 ttl=116 time=17.9 ms
64 bytes from 8.8.8.8: icmp_seq=36 ttl=116 time=16.7 ms
^C
--- 8.8.8.8 ping statistics ---
36 packets transmitted, 18 received, 50% packet loss, time 35466ms
rtt min/avg/max/mdev = 14.204/75.138/1012.845/227.529 ms
However, there is never any packet loss when performing these pings from the Pi itself (either in LuCi or when connected via SSH). As in the previous thread, launching tcpdump on the wireless interface or putting it into promiscuous mode was able to resolve the problem. However, for reasons that are unclear to me, this has stopped working, and now turning on promiscuous mode causes me to no longer be able to ping anything over the wireless interface, browse the network, etc.
Coinciding with this change to the promiscuous mode fix is a change in how the Pi is mounted, going from an enclosed case to being mounted on a piece of acrylic. I have tried restoring the settings from a backup taken before this change was made, which has not made any difference.
Does anyone have any ideas of what to try, how to configure Relayd, etc.? I am just about at my wits' end here.