In the one situation where I need this, I used to do it with OpenVPN. Though I have since switched to using Wireguard, which I find to be much easier to set up. There are just way fewer configuration options with Wireguard.
Also Wireguard allows for some interesting topologies. Since there is no inherent concept of server and client, but rather everyone is a peer, you can invert some of the principles of, for example, OpenVPN, if you desire. Typically you would have a server maintaining connections to multiple clients, with one client only connecting to one server at the same time. But with Wireguard, I believe (although I have not tested this specifically) you can have a “client” (e.g. road warrior) connect to both sites (and therefore networks) directly as needed, without having to elect one of the sites as the main site (“server” in OpenVPN terms) through which all traffic has to go.