Jag har en ganska vanlig situation som hemsöker mig allt för ofta. Jag behöver ett sätt att ansluta till resurser i privata subnät, en VPN eller någon sorts substitut. De flesta av mina system är hostade i AWS och de är ganska små, därför är de ganska billiga.
Just nu använder jag EC2 Spot Machine automatiserat med Ansible och Packer som kör OpenVPN Server vilket inte riktigt tillfredsställer mig, men det mesta av jobbet blir gjort och det är billigt (t3.nano spot maskin kostar mig ungefär 2 dollar per månad, vilket är mycket tilldragande jämfört med AWS VPN som kostar 0,10 dollar per timme per slutpunkt).
Just nu letar jag efter något containeriserat som jag kan köra inom ECS eller EKS kluster och behandla det som en tillståndsbaserad applikation. Varför? För att jag älskar tanken på att ha en enda Terraform-modul som kan starta VPN:et likt det är. Det skulle vara fantastiskt om det stödde IPSec eller PPTP.
Så frågan: Vad använder ni? Har ni liknande bekymmer?
Kolla VyOS. Det är gratis (upstream-version) och har alla funktioner du behöver. Jag tror att du kan använda VyOS som en stateless app eftersom den bara använder en konfiguration för allt.
Jag använder det personligen i produktion i HA-läge med VRRP och det fungerar utmärkt.
Jag har provat allt från openvpn-baserade lösningar: frontning av kluster med det på dedikerade ec2-instanser, att köra det tillståndsfullt inuti klustret, OpenVPN Access, pritunl, och AWS VPN. Jag börjar sakta närma mig att, när det är möjligt, inte använda VPN alls. OAuth + mutual TLS-certifikat hanterar nästan alla mina känsliga slutpunkter. Där det är möjligt använder jag port-forwarding (från kubefwd) för att slippa köra ett offentligt ingress-objekt från början. Ja, det låter klumpigt (och det är det), men det är hyfsat säkert, billigt och lågbördig att implementera. Nackdelen är att det inte riktigt kan skala.
Är det något fel med AWS klient VPN-endpoint? Det är openvpn, inbyggt i AWS, skapar bara en endpoint i ditt VPC enkelt. De hade ett fel med de genererade konfigurationerna, men det är fixat. På väg att rulla ut det till min organisation med ett per miljö, integrerat i vår AWS SSO, men du kan bara använda mutual auth certifikat om du bara har några få användare.
Jag vill veta vilka problem du har med OpenVPN. Det är vad vi använder, men vi är knappast ett superutvecklat företag på devops-sidan, så jag undrar om vi kan få problem längre fram med det (vi funderar på att byta nu om möjligt).
Jag använder openvpn i ett par olika projekt. Mitt största problem var installationen, så jag skrev initialt ett ansible-spelbok för att starta en t2-server och installera openvpn från grunden.
Om du som människa bara behöver ansluta, kan du använda Systems Manager för att ansluta till en ec2-instans i ditt VPC via AWS-konsolen.
Fördelen med att använda Systems Manager är att din ec2-instans inte behöver tillåta ingress från internet. Den behöver till och med inte ha en offentlig IP-adress. All autentisering sker via IAM, så du behöver inte hantera SSH-nycklar. Du kan också konfigurera gränser för sessioner och granska vem som loggade in med Systems Manager.
Jag använder WireGuard på jobbet. Det är riktigt lätt att sätta upp, och jag använder till och med GitHub - vx3r/wg-gen-web: Simple Web based configuration generator for WireGuard i en dockeriserad installation för att få ett UI/REST API jag kan använda för att skapa nyckelfiler. Jag är övergripande nöjd med detta upplägg.
Körde du VyOS i en behållare i Kubernetes? I så fall, några problem att ansluta till det som VPN-slutpunkt? Jag har sett tal om att köra en VPN i en behållare, men jag skulle tro att det skulle vara instabilt. Söker åsikter från mer erfarna personer.
Jag menar, kostnaden? 73 dollar per månad per VPC är galet, för samma belopp får jag EKS Kontrollplan. Med klusterkostnad runt 150 dollar är det inte den bästa affären att betala över 70 dollar för VPN som används två gånger om dagen
Du kan alltid starta och stoppa den med terraform vid behov? Det tar ungefär 10 minuter att starta den, så om du optimerar så kan något mer anpassat som du kan stänga av vara mer meningsfullt.