I'm trying to set up a fully redundant OpenVPN tunnel, with two routers on each side.
All the tutorials I saw (such as http://dev.vyatta4people.org/highly-available-openvpn-connection-between-two-offices/) mention a site-to-site
setting, which doesn't seem to work with OpenVPN on a Linux server (which seems to always require a server and a client).
How can I achieve a similar setup using Linux servers?
I know it doesn't immediately answer your question, but I'd go for ipsec for site-to-site VPNs. I've been running it between Linux endpoints in production for over a decade, and it's never let me down.
In my experience, it deals much better with temporary failures in the sites' internet connections, lacking as it does any view of one end being a server and the other end being the one to bring the connection up and down; instead, both ends are peers, and either can initiate, terminate, and re-key connections as it sees fit.
It also deals much better with the geometry issue when you add a third site.
That option is a configuration option, that the vyatta distribution added. It seems to correspond directly to p2p mode in OpenVPN native configuration language.
Just use the following in your OpenVPN configuration file: