Enkelt sätt att sätta upp VPN i molnkluster?

Jag har ett ganska vanligt fall som plågar mig alldeles för ofta. Jag behöver ett sätt att ansluta till resurser i privata subnät, en VPN eller någon form av ersättning. De flesta av mina system är värda 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 tillfredsställer mig, men det gör i stort sett sitt jobb och det är billigt (t3.nano spotmaskin kostar mig runt 2 dollar per månad, vilket gör det väldigt attraktivt jämfört med AWS VPN som kostar 0,10 dollar per timme per endpoint).

Just nu letar jag efter något containeriserat som jag kan köra inom ECS eller EKS-kluster och behandla det som en tillståndsbevarande applikation. Varför? För att jag älskar tanken på att ha en enda Terraform-modul som enkelt startar VPN:et. Det vore fantastiskt om det stödde IPSec eller PPTP.

Så frågan är: vad använder ni? Har ni liknande bekymmer?

Kolla på VyOS. Den är gratis (upstream-version) och har alla funktioner du behöver. Jag tror att du kan använda VyOS som en statlös app eftersom den bara använder en konfiguration för allt.

Jag använder den personligen i produktion i HA-läge med VRRP och det fungerar utmärkt.

Jag har gått igenom allt från openvpn-baserade lösningar: frontat kluster med den på dedikerade ec2-instanser, kör den i tillstånd inom klustret, OpenVPN Access, pritunl, och AWS VPN. Jag närmar mig långsamt att, när det är möjligt, inte besvära mig med VPN alls. Oauth + gemensamma TLS-certifikat hanterar nästan alla mina känsliga ändpunkter. Där det är möjligt använder jag port-forwarding (från kubefwd), för att undvika att ha ett offentligt in/ut-objekt i första hand. Ja, det låter klumpigt (och det är det), men det är hyfsat säkert, mycket billigt, och lätt att implementera. Nackdelen är att det inte riktigt skalar bra.

Som ett separat ämne, jag gillar inte att behöva jonglera flera VPN-lösningar. Jag har gjort VPC-peering och jag tycker att det är irriterande, särskilt om man måste peera över plattformar. KISS-lösningen för mig var att helt enkelt automatisera hård- kodning av rutter i OpenVPN/split tunnel-läge. Den största nackdelen är att du inte kan uppdatera OVPN-rutter dynamiskt, eftersom de pushas av servern vid inloggning. Du kan helt mitigera detta genom att köra full-tunnel, men då sänds allt trafik genom VPN:et, vilket kan bli kostsamt. Slutligen, jag tittade noga på IPSEC-lösningar, men bestämde att de inte passade. Om jag minns rätt var implementationen på icke-Windows-värdar ansedd vara svår, även om jag inte minns detaljerna (det var för ungefär fem år sedan jag tittade på det). OpenVPN är en robust, open source, och aktivt utvecklad lösning, med både UDP och TCP. Den har sina brister, men de är inte hemska när man blivit bekant med dem. Lycka till!

Är det något fel med AWS klient VPN-endpoint? Det är openvpn, inbyggt i AWS, skapar bara ett slutpunkt i ditt VPC, lätt som en plätt. De hade ett fel med de genererade konfigurationerna, men det är åtgärdat. Jag är på väg att rulla ut det till min organisation med ett per miljö, integrerat med AWS SSO, men du kan bara använda gemensamma auth-certifikat om du har få användare.