Jag har ett ganska vanligt fall som hemsöker mig alldeles för ofta. Jag behöver ett sätt att ansluta till resurser i privata subnät, en VPN eller något liknande. 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 automatiserad med Ansible och Packer som kör OpenVPN Server vilket inte riktigt tillfredsställer mig, men det gör jobbet och är billigt (t3.nano spot machine kostar mig runt 2 dollar per månad, vilket är mycket 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åndsfull applikation. Varför? För jag älskar idén att ha en enda Terraform-modul som enkelt kan dra igång VPN:n. 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. 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 använder en enda konfiguration för allt.
Jag använder det personligen i produktion i HA-läge med VRRP och det fungerar utmärkt.
Jag har prövat allt som är baserat på openvpn: frontat kluster med dedikerade ec2-instancer, körs det statfullt i klustret, OpenVPN Access, pritunl och AWS VPN. Jag närmar mig sakta ett tillstånd där jag, när det är möjligt, inte längre använder VPN. OAuth + ömsesidig TLS-certifikat hanterar nästan alla mina känsliga ändpunkter.
När det är möjligt använder jag port-forwarding (från kubefwd) för att undvika att ha en publik ingressobjekt från början. Visst, det låter klumpigt (och det är det), men det är relativt säkert, väldigt billigt och lätt att implementera. Nackdelen är att det inte skalar bra.
Som ett separat ämne ogillar jag att behöva joxa med flera VPN-lösningar. Jag har gjort VPC-peering och tycker att det är irriterande, särskilt om du måste peera mellan olika leverantörer. Den enklaste lösningen för mig var att automatisera hårdkodning av rutter i OpenVPN/split tunnel-läge. Den enda stora 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ätter du all trafik genom VPN:en, vilket kan leda till oväntade kostnader för bandbredd. Men i slutändan gör du ett avvägande mellan enkelhet, bekvämlighet, tillförlitlighet, säkerhet, kostnad osv.
Jag tittade hårt på IPSEC-lösningar, men bestämde att de inte passade för mig. Om jag minns rätt var implementationen på icke-Windows-hostar ansedd som svår, även om jag inte minns detaljerna (det var för fem år sedan jag såg på det). OpenVPN är en robust, öppen källkods- och aktivt utvecklad lösning, med både UDP- och TCP-flavor. Det har sina brister, men de är inte hemska när man blir bekant med dem. Lycka till!