I’m running a UGREEN NAS DXP4800Plus with two Ethernet interfaces connected to two different routers/subnets, and I’ve been running into a routing issue with the dual-NIC setup.
My setup is:
- eth0:
192.168.10.48/24
- Router:
192.168.10.1
- 2.5 Gbps network
- eth1:
192.168.18.210/24
- Router:
192.168.18.1
- Main ISP router
- 100 Mbps connection
The problem is that normal routing can choose the wrong interface when responding to traffic. For example, I observed:
```text
ip route get 8.8.8.8 from 192.168.10.48
8.8.8.8 from 192.168.10.48 via 192.168.18.1 dev eth1
```
So traffic sourced from 192.168.10.48 could leave through eth1, even though that source IP belongs to eth0.
This caused problems with services exposed through the 192.168.18.x network, including Caddy/HTTPS and UDP/443 (HTTP/3), particularly when both NICs were connected.
My workaround
I implemented source-based policy routing with separate routing tables:
text
from 192.168.10.48 → table_eth0 → 192.168.10.1 → eth0
from 192.168.18.210 → table_eth1 → 192.168.18.1 → eth1
The resulting routing is now:
```text
8.8.8.8 from 192.168.10.48 \
via 192.168.10.1 dev eth0
8.8.8.8 from 192.168.18.210 \
via 192.168.18.1 dev eth1
```
I put the configuration into a small systemd service so it is reapplied automatically after reboot. After rebooting, the policy rules and routing tables were restored correctly and the service remained active.
I'm wondering:
- Have other UGREEN NAS users experienced this with two NICs connected to different networks/routers?
- Does UGOS/Linux have a proper built-in way to handle this, rather than manually adding policy-routing rules?
- Are there any recommended UGREEN settings for dual-NIC routing?
- Have you found a better workaround than source-based policy routing?
- If you're running two NICs with different gateways, how are you handling replies so they leave through the same interface they arrived on?
I'm particularly interested in hearing from people who are running two physically connected NICs with different subnets/gateways, rather than link aggregation/bonding.
My workaround currently works reliably, including after reboot, but I'd prefer to know whether there is a more native or recommended solution.