Hi. I took a look at your network configuration. First thing that jumps out is that you’re routing the 3 subnets via 10.147.18.1, however you have no machines with that address in your ZeroTier network. Instead of 10.147.18.1, use the ZeroTier IP address of the one that is to be doing the routing to the physical LAN
The “Router” in the documentation is any machine on your ZeroTier network you chose to be the router. It does not have to be at X.X.X.1. And you have no machine on your ZeroTier network with 10.147.xx.1, so naturally the routes have nowhere to go.
It sounds like something isn’t configured quite correctly on your router in this case. Make sure the interface names you’re using match what’s available on your machine. Most modern Linux systems don’t use ethX anymore, and it looks more like enp5s0. These interface names may not be the same on every machine. ZeroTier adapter names are unique per network on Linux as well, so the one given in the example won’t be the same on your machine.
You can try using tcpdump on your router to see what’s happening to the packets and see that they’re flowing. Beyond that, I can’t see any errors from here
What is the output of sysctl net.ipv4.ip_forward? If it is 0, then the kernel doesn’t have IP forwarding enabled and routing won’t work.
You can turn it on immediately with sudo sysctl -w net.ipv4.ip_forward=1. You’ll likely want to persist this between reboots, you’ll also need to either add, or uncomment the line net.ipv4.ip_forward = 1 in /etc/sysctl.conf.
All looks good from here, then. Could be that the app you’re using on iPhone doesn’t like pinging over a VPN connection, or that your Windows firewall is blocking pings (assuming you’re trying to ping the Windows machine), but it’s hard to say from here. Everything you’ve written seems correct.
While it may be possible to use Windows as a router, I have no idea how to configure that.