Mystery solved!
It was my OpenWRT's firewall blocking 'invalid packets'.
Despite seeing several replies to/from each host, I guess some others weren't coming through because of that rule. Evidently, it couldn't keep track of replies that come in one way and take another way out--asymmetrical routing--and flagged them as invalid and then dropped them. Once I turned off that rule, it all worked.
Interestingly, if I set policy based routing rules telling OPN to use an interface's gateway to reply through where the initial message it saw came from, OPN just replies with a bunch of TCP RST, ACK through the gateway. I suspect that it's because it was designed for forwarding messages and not really replying.
As expected, if I manually put a static route for my PC on OPN towards a gateway it has for an unshared vlan (with respect to my PC), then it uses that gateway which works for connecting to the IP of the unshared VLAN, but then OPN's directly connected interface IP that shares a VLAN with my PC doesn't work for my PC.
Combinations of in/out reply-to/gateway on interface and floating rules did not work.
I learned that all interface IPs share the same routing table so will output on each other's links even if its to reply with any of its IPs that are assigned to different VLANs.
Still, for curiosity, I wonder if there's a way to force an interface to use a different routing table; that way, I could get such a setup to work despite its practicality.
For now, I'm satisfied, and will move on to see if I can transition all of my rules from OpenWRT to OPN smoothly and without having to do a reset--only committing saved changes on the physically further device (OPN) and then the closer one (OpenWRT).
It was my OpenWRT's firewall blocking 'invalid packets'.
Despite seeing several replies to/from each host, I guess some others weren't coming through because of that rule. Evidently, it couldn't keep track of replies that come in one way and take another way out--asymmetrical routing--and flagged them as invalid and then dropped them. Once I turned off that rule, it all worked.
Interestingly, if I set policy based routing rules telling OPN to use an interface's gateway to reply through where the initial message it saw came from, OPN just replies with a bunch of TCP RST, ACK through the gateway. I suspect that it's because it was designed for forwarding messages and not really replying.
As expected, if I manually put a static route for my PC on OPN towards a gateway it has for an unshared vlan (with respect to my PC), then it uses that gateway which works for connecting to the IP of the unshared VLAN, but then OPN's directly connected interface IP that shares a VLAN with my PC doesn't work for my PC.
Combinations of in/out reply-to/gateway on interface and floating rules did not work.
I learned that all interface IPs share the same routing table so will output on each other's links even if its to reply with any of its IPs that are assigned to different VLANs.
Still, for curiosity, I wonder if there's a way to force an interface to use a different routing table; that way, I could get such a setup to work despite its practicality.
For now, I'm satisfied, and will move on to see if I can transition all of my rules from OpenWRT to OPN smoothly and without having to do a reset--only committing saved changes on the physically further device (OPN) and then the closer one (OpenWRT).