What kind of device is 192.168.1.1? Does it support ZeroTier? If not, does it support static routing.
There seems to b a couple issues with your current logic, but I might just not have enough information to fully understand your topology.
1. Added routes from 172.29.0.0/16 via 192.168.1.1 (the gateway on my LAN).
I’m assuming this is in the ZeroTier Manage Routes section. Your ZeroTier network has no idea what 192.168.1.1 is, so this route won’t be useful for devices in your ZeroTier network. You want to tell devices on your ZeroTier network how to get to you 192.168.1.0/24. So the route in there should be something along the lines of: “192.168.1.0/24 via <some ZT IP that knows how to get to 192.168.1.0/24>”. If the device that has 192.168.1.1 supports ZeroTier, this will be easy. You just need the 192.168.1.0/24 route as a managed route and you’re good.
2. Attempted to route through my Windows machine (192.168.1.5) by forwarding port 9993.
This is ultimately unnecessary. When you’re talking on port 9993, this is part of the underlay of the network (ZT refers to this as VL1). Everything you’re trying to do is part of the overlay (ZT refers to this as VL2). Any time you try to access a webpage, or ping, or print to a network server via a ZT device, that is overlay traffic.
Getting your ZT network to know how to get to 192.168.1.0/24 is very easy; it’s as simple as the managed route I mentioned previously. Getting your LAN devices to understand how to get to your ZT devices is the harder part. If you can put ZT on your 192.168.1.1 device, then you don’t really need to do anything special. I’ll assume for this next part that you’re not able to do that.
For this your 192.168.1.1 device needs to support static routing. On that device, you’ll need to put a static route to 172.29.0.0/16 with a next hop of 192.168.1.5 (or whatever device you ultimately use to interconnect your LAN and ZT). In your managed routes, you’d have 192.168.1.0/24 via <the ZT IP on that 192.168.1.5 device>. For this, your path would be LAN Host → 192.168.1.1 → 192.168.1.5 → Remote ZT Device.
If that 192.168.1.1 device does not support either ZT or static routing, you can replace it with a device that does, and it’ll make your deployment easier
If you don’t want to purchase a new router, then you can solve this by bridging everything. For this, you’ll need to make your ZT network also within that 192.168.1.0/24 range, and bridging your ZT network, and the interface of the device where you’re hosting ZT. This can be on something like Windows, Ubuntu, or something else entirely (more on that in a little bit). For this, you will have to look at what the DHCP Scope on your 192.168.1.1 device is issuing. Most DHCP severs will assign an upper and lower limit of IPs that it will issue out. This is to leave room for static IPs if needed. You’d need to assign IPs to your ZT nodes from those reserved for static IPs. So your DHCP Server might issue .50-200 or something. So you can assign from .10-40 or something.
You mentioned Windows and Ubuntu, but there’s free network appliances that are purpose built for routing between subnets. You may want to consider those as well. Some options would be VyOS, OpenWRT, pfSense…just to name a few
Hope all of that made sense.