Att nå en förvaltad databas via VPN misslyckas oftast av en anledning som ingen skrev i runbooken: tunneln slutar vid kanten av ditt nätverk, medan tjänsten aldrig har legat på din sida av den. Ruttabellen ser korrekt ut, tunneln rapporterar att den är uppe, och anslutningen får timeout ändå. Gå igenom de fyra kontrollerna nedan i ordning och stanna vid den första där villkoret för godkänt inte är uppfyllt, eftersom varje kontroll därefter förutsätter att de föregående godkändes.

Kontroll ett: var bor slutpunkten egentligen?

En VPN-gateway förbinder två nätverk där du styr adresseringen. En förvaltad tjänst drivs bakom leverantörens egen ytterdörr, och den dörren har en av tre former beroende på produkten. Om du inte vet vilken form du har att göra med hjälper inget ruttarbete, eftersom felet kanske inte alls är ett ruttfel.

ShapeWhat it meansPass condition
Software on your VMOrdinary subnet addressingRoute and security group permit the client
Attached to your VPCPrivate, but only inside that VPCEndpoint associated, source allowed, route present
Provider-hosted, public endpointOptional private link, not private by defaultA private endpoint exists and DNS points at it

De flesta bortkastade eftermiddagarna kommer av att hoppa över den här klassificeringen och gå rakt till ruttabellen. En leverantörshostad tjänst med offentlig slutpunkt ligger inte bakom din tunnel vad diagrammet än säger, och en VPC-ansluten kommer aldrig att dyka upp i ett offentligt DNS-svar.

Kontroll två: en VPC-ansluten tjänst som ElastiCache

Cacheminnen av det slaget adresseras inne i din egen VPC och har ingen internetvänd lyssnare alls. En klient-VPN som slutar i samma VPC kan nå dem, men bara när tre villkor sammanfaller. Cacheminnets slutpunkt måste vara kopplad till subnät som din tunnel ser, dess säkerhetsgrupp måste tillåta adressen som dina klienter kommer från, och klientsidan behöver en rutt som täcker cachens subnät.

Det vanliga misstaget är att anta att en anslutning någonstans i närheten räknas. Att koppla VPN:en till en annan VPC, eller att luta sig enbart mot peering, utökar inte cachens säkerhetsgrupp eller dess subnäts ruttabell till dina klienter. När den befintliga tunneln slutar någon annanstans är en jump host eller en VPN-server placerad inne i den VPC:n den vanliga reservlösningen. Den reservlösningen är en kringgång och inte en design, och den bör märkas som sådan i runbooken.

Kontroll tre: en PaaS-slutpunkt med offentligt namn

Azure Database for PostgreSQL presenterar ett offentligt servernamn. Det ger dig ingen privat adress som du kan fästa i en hosts-fil och rutta genom en gateway. Tjänsteslutpunkter för virtuella nätverk begränsar vilka subnät som får nå en resurs; de auktoriserar inte en lokal klient som kommer över en VPN.

Att få privat åtkomst innebär att införa en privat slutpunkt eller en design för privat länk och sedan lägga till en privat DNS-zon så att det offentliga namnet svarar med den slutpunkten i stället för med internet. En VPN kombinerad med en tjänsteslutpunktsregel är en annan arkitektur som bara ser likadan ut i ett diagram. App Service följer samma logik från motsatt håll: VNet-integrering låter appen göra utgående anrop in i ett VNet, och den skapar inte en inkommande privat väg från din tunnel. Inkommande privat åtkomst kräver därför en privat slutpunkt, en App Service Environment eller en gateway framför appen, och vilka av dem du kan använda beror på planen.

Kontroll fyra: produkter med egen ytterdörr

Firebase Hosting kan inte kopplas till en Cloud VPN, eftersom hostinglagret är en global front och inte något inne i ett projekts VPC. Det dokumenterade alternativet är att bygga den kontrollerade ingången själv, med en proxyinstans eller en lastbalanserare som stöds av en hink. Hur som helst slutar webbplatsen vara en ren hostingprodukt och blir infrastruktur som du nu driftar. Den byteshandeln är värd att namnge innan någon lovar att tunneln kommer att täcka den.

Private API Gateway ligger närmare VPC-tjänstesidan: en interface-VPC-slutpunkt publicerar ett värdnamn vars svar är privata adresser, och trafik från dina lokaler kommer över tunneln eller en dedikerad sammankoppling. Slutpunkten måste vara kopplad till API:et, och certifikatet plus värdnamnet måste matcha den anpassade domän som anroparen använder.

Google Cloud VPN-tunnlar binder till peer-IP-adresser, inte till namn. DNS-vidarebefordran konfigureras separat, och därför kan en tunnel vara helt frisk medan uppslag i den avlägsna privata zonen fortfarande misslyckas.

Lokalisera sedan gränsen

Kör samma anslutning från en VM inne i VPC:n. När den lyckas där och misslyckas från VPN-klienten ligger gapet mellan klientens väg och tjänstens slutpunkt: en rutt, en säkerhetsgrupp, en slutpunktsprincip eller ett namn. När båda försöken misslyckas kan ingenting i det nätverket nå tjänsten, och VPN:en var aldrig hindret.

getent hosts db.internal.example
nc -vz db.internal.example 5432

Gör namnuppslaget och portkontrollen var för sig, eftersom de misslyckas av olika skäl och paret berättar vilken halva av vägen som är bruten. Ett namn som löses till en offentlig adress berättar att den privata DNS-zonen inte är i spel.

Relaterade artiklar