You may be able to do it, my concern would be "route confusion".  We have that 
situation with OpenVPN and a different VPN offering the same subnet to a 
Windows client (two entries to the same subnet via different paths in Windows' 
routing table) and it's not working.  I have also tried having two clients to 
the same OpenVPN server providing the same routes and have found that "the last 
will be first" - the OpenVPN status log showed the latter connections replacing 
the former connection's routes.  In that case the second system was a backup 
without full access to its local subnets with the result being predictably 
undesirable.


-----Original Message-----
From: Alex K <rightkickt...@gmail.com>
To: Calvin Zachman <calvin.zach...@ibm.com>
Cc: openvpn users list (openvpn-users@lists.sourceforge.net) 
<openvpn-users@lists.sourceforge.net>
Sent: Fri, Jun 26, 2020 3:52 pm
Subject: Re: [Openvpn-users] Multiple VPN clients exposing the same remote 
subnet



On Fri, Jun 19, 2020, 01:35 Calvin Zachman <calvin.zach...@ibm.com> wrote:

Hi openvpn-users, Is it possible for multiple VPN clients on the same LAN to 
expose the same remote subnets to other connected clients?? I would like to run 
2 VPN client instances on the same LAN exposing the same subnets (same iroutes) 
for some level of redundancy/high-availability. I am aware that one can run 
multiple VPN servers for redundancy and list them as separate `<remote>`s in 
the client config. I am interested in similar redundancy for VPN clients. I am 
running OpenVPN inside Kubernetes. The VPN server runs in multitenant 
environment along side Kubernetes Control-Plane/Master components on Subnet A 
while the VPN client(s) runs on Subnet B (10.X.X.X/26). I would like to provide 
redundant access to Subnet B in the event that my VPN client instance fails. I 
am using the `--client-to-client` configuration option to allow the clients 
running in the Kubernetes Master to route traffic to the `worker` client 
running on Subnet B. The client-config-directory defines the following iroutes 
for the `worker` client:   10.95.14.64/26   - Worker/VM Subnet
172.30.0.0/16     - K8s Pod CIDR
172.21.0.0/16     - K8s Service CIDR
I tried starting up 2 VPN clients on 10.95.14.64/26 hoping to achieve an 
"active"/"passive" setup, but after observing how OpenVPN Server updates its 
internal routing table I am not so sure we can achieve redundancy with multiple 
VPN client replicas exposing the same subnets (Pod/Service/Worker CIDRs) 
connected to the VPN server. The clients can both be connected, but the server 
only maintains routes for one of them, meaning if the "active" goes down then 
there are no internal routes so that we can quickly begin using the "backup" 
connected replica. I tried giving each replica its own CN when connecting, 
hoping it could keep duplicate routes if clients did not have duplicate CN. IN 
CLUSTER: $ kubectl get pods -n kube-system -o wide | grep vpn
vpn-client-1                       1/1     Running   0          61s     
172.30.43.2     10.95.14.80   <none>           <none>
vpn-client-2                         1/1     Running   0          62s     
172.30.105.65   10.95.14.77   <none>           <none> FROM OPENVPN SERVER:
 /etc/openvpn/ccd # ps -a
PID   USER     TIME  COMMAND
    1 root      0:05 {openvpn_start.s} /bin/bash /etc/openvpn/openvpn_start.sh
   72 nobody    1:27 openvpn --config /etc/openvpn/openvpn.conf 
--client-config-dir /etc/openvpn/ccd /etc/openvpn/ccd # ls
worker1  worker2
/etc/openvpn/ccd # cat worker1
iroute 172.30.0.0 255.255.0.0
iroute 172.21.0.0 255.255.0.0
iroute 10.95.14.64 255.255.255.192
 /etc/openvpn/ccd # cat worker2
iroute 172.30.0.0 255.255.0.0
iroute 172.21.0.0 255.255.0.0
iroute 10.95.14.64 255.255.255.192
The VPN server's client list shows two clients have connected to the VPN 
server: OpenVPN CLIENT LIST
Updated,Tue Jun 16 14:19:27 2020
Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
worker1,172.18.137.0:11887,8154,8479,Tue Jun 16 13:59:35 2020
worker2,172.18.137.0:32826,803828,415606,Tue Jun 16 13:59:36 2020 however 
OpenVPN server's routing table only contains routes for 172.30.0.0/16, 
172.21.0.0/16, and 10.95.14.64/26 for the most recently connected client: 
ROUTING TABLE
Virtual Address,Common Name,Real Address,Last Ref
10.95.14.64/26,worker2,172.18.137.0:32826,Tue Jun 16 13:59:36 2020
172.30.0.0/16,worker2,172.18.137.0:32826,Tue Jun 16 13:59:36 2020
172.21.0.0/16,worker2,172.18.137.0:32826,Tue Jun 16 13:59:36 2020 
172.21.202.193C,worker2,172.18.137.0:32826,Tue Jun 16 14:19:25 2020
172.30.54.2C,worker2,172.18.137.0:32826,Tue Jun 16 14:18:58 2020
192.168.255.22,worker2,172.18.137.0:32826,Tue Jun 16 13:59:36 2020 
192.168.255.18,worker1,172.18.137.0:11887,Tue Jun 16 13:59:35 2020
It seems to me OpenVPN just doesn't support multiple clients with the same 
iroutes. The only other thing I can think of presently would be to have some 
kind of communication akin to keepalived/heartbeats between the client replicas 
so that the second replica can initiate a connection to the VPN server only 
when the first replica stops responding. Is there any other supported way to 
achieve HA client setup like this via configuration?
You can definitely setup a simple pacemaker cluster with openvpn as a running 
resource. The setup will include identical client nodes in active/passive mode 
and will provide the needed redundancy without any other trick from server 
side. If you like a network approach I would investigate options with dynamic 
routing through ospf.


Thanks,
Calvin    '--client-to-client' enables Master VPN client to address workload 
running on Subnet B via the VPN. Would love to be able to run a second VPN 
client replica on Subnet B          |_master_vpn_client_|        
|_vpn_server_|-------/------------------------------------/------               
                 Subnet A                      |_worker vpn client 1_|      
|_worker_vpn_client_2_|------/-----------------------------------/---------------------
                Subnet B -10.95.14.64/26      
_______________________________________________
Openvpn-users mailing list
Openvpn-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-users

_______________________________________________
Openvpn-users mailing list
Openvpn-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-users
_______________________________________________
Openvpn-users mailing list
Openvpn-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-users

Reply via email to