I have two routers, one is in my hometown (using China Mobile's network), and one is in my home (using China Unicom's network). Both these routers are using PPPoE for internet connection, and both are behind NAT so do not have independ IPv4 address.
I want to route all the traffic in my home router to my hometown router, why I want this is because China Mobile has better international speed. I want to achieve the effect just like all these routers are in my home and I connect the seond router (home router) to the main router's (hometown router) lan port.
But the main problem is that the router in my hometown is behind NAT.
I think you can use an OpenVPN server/client configuration. OpenVPN server on hometown router and client on your home. If both routers runs Lede this is pretty easy and there are very good documentation on how to do this.
But the problem is that they don't have independ IPv4 address, after the PPPoE connection is setup, an IP (changed from time to time) like 100.XX.XX.XX will be assigned. This is a shared NAT IP, and normally can not be used for OpenVPN connection, which is diffenet from those IPs on the VPS server (running OpenVPN server) that have no issue to connect .
If you really only have RFC 1918 (10.0.0.0/8, 172.16.0.0/12 or 192.168.0.0) addresses at your disposal at both of your locations, without even a routable IPv6 address (as in dual-stack lite), you're pretty much out of options as you won't be able to directly connect your routers to each other. The only potential way out of this would be to get a middle-man with a fixed address, like a root- or vserver with VPN enabled and a public IP, which then provides the virtual transfer subnet to both clients (with private IPs) could use to connect each other. But you can't get around the requirements that at least one of your VPN participants needs to be reachable from the outside.
Yes, for TCP connection, I think the server must have an private IP. And ipv6 is almost unavailabe in China.
So I hope the connect can be established using UDP (with the UDP hole punching), like what Skype do. I have a VPS, which may be used to let the peers find each other, and then they communicate to each other directly.
The solution at the moment, maybe Zerotier, wireguard, softether VPN.