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