Dir sidd mam Endpunkt vum AWS Client VPN verbonnen, de private Subnet äntwert, an trotzdeem lafe all ëffentlech Säiten an en Timeout. Dës Kombinatioun engt de Problem op eng vun dräi Objeten op der geréierter Säit an: d’Streck, déi de Client installéiert, d’Streck vum Endpunkt zesumme mat senger Autorisatiounsregel, oder den nächste Sprong vum associéierte Subnet. Ech kontrolléieren se an där Reihenfolg, well all Feeler vum Client aus anescht ausgesäit. Dëse Guide behandelt den geréierten Endpunkt, deen un eng VPC associéiert ass, net en OpenVPN-Server op enger EC2-Instanz an och net eng Cloud WAN- oder Transit Gateway-Verbindung.

Fänkt domat un, wat de Client tatsächlech routéiert

En verbonnenen Zoustand beweisegt d’TLS-Sessioun an d’CIDR-Zouweisung un de Client, méi net. Frot d’Betribssystem wou eng ëffentlech Adress géif higoen, wärend den Tunnel ugeet. Ënner Linux soll ip route get 1.1.1.1 d’Tunnelschnittstell nennen; ënner macOS weist netstat -rn -f inet | head -5 den Default-Antrag; ënner Windows dréckt Find-NetRoute -RemoteIPAddress 1.1.1.1 déi gewielten Schnittstell an den nächste Sprong.

Liest dann de Split-Tunnel-Fändel, well hien entscheet, ob déi publizéiert Strecke vum Endpunkt déi eenzeg Destinatiounen sinn, déi de Client an den Tunnel schéckt:

aws ec2 describe-client-vpn-endpoints \
  --client-vpn-endpoint-ids cvpn-endpoint-0123456789abcdef0 \
  --query 'ClientVpnEndpoints[0].SplitTunnel'

Wann SplitTunnel true ass, benotzt eng ëffentlech Destinatioun den Tunnel nëmmen, wann den Endpunkt eng Streck publizéiert, déi se deckt, also eng feelend 0.0.0.0/0 léisst där Verkéier op der lokaler Schnittstell. Wann en false ass, fänkt de Client de Verkéier of, awer den Endpunkt muss en nach ëmmer routéieren an autoriséieren; soss ginn d’Paketen an den Tunnel an halen do un. Verbannt de Client no Ännerung vun enger vun deenen zwou Astellungen nei, well d’Strecken an d’DNS-Server beim Verbännung geliwwert ginn an e lafende Client säi ale Set ka behalen.

Liest d’Streck vum Endpunkt an d’Autorisatiounsregel getrennt

Dat sinn zwee Objeten, an ee bauen heescht net deen aneren ze bauen. Lëscht d’Strecke vum Endpunkt op a sicht eng Default-Streck, där hiert Zil en associéierte Subnet ass:

aws ec2 describe-client-vpn-routes \
  --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0

All Streck huet genee een Zilsubnet, also brauchen dräi Associatiounen all Kéier eng passend Default-Streck. AWS dokumentéiert dës Deckungsufuerderung, an de praktesche Symptom vun enger Lück ass e Benotzer, dee vun engem Subnet schafft an aus engem aneren hänkt, wat als intermittéierende Feeler gelies gëtt an net als feilend Streck. Déi offiziell Client VPN-Szenariodokumentatioun beschreift d’ëffentlech Subnet-Uerdnung, zu där dës Strecke gehéieren.

D’Autorisatioun ass den zweeten Objet. Wann keng Regel déi ëffentlech Destinatioun deckt, dréit den Tunnel d’Paket an de Service verwërft et, also schaffe privat Ressourcen weider, den Internet awer net:

aws ec2 describe-client-vpn-authorization-rules \
  --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0

Eng Regel fir d’CIDR vun der VPC seet näischt iwwer 0.0.0.0/0. Déi feelend Deeler fir en kompletten Tunnel bäisetze bedeit eng Streck pro associéierte Subnet plus eng Autorisatiounsregel, déi Dir méi spéit kënnt auditréieren:

aws ec2 create-client-vpn-route \
  --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0 \
  --destination-cidr-block 0.0.0.0/0 \
  --target-vpc-subnet-id subnet-0a1b2c3d4e5f67890
aws ec2 create-client-vpn-authorization-rule \
  --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0 \
  --destination-cidr-block 0.0.0.0/0 \
  --access-all \
  --description "internet egress for full tunnel"

--access-all gëtt d’Destinatioun jedem Client vum Endpunkt, also behält se nëmmen, soulaang den Tunnel komplett soll sinn; eng Regel, déi un eng Verzeechnesgrupp gebonnen ass, ass besser, wann Dir Gruppen hutt fir ze bannen.

Verfollegt d’Paket aus dem associéierte Subnet eraus

D’Streck vum Endpunkt entscheet, datt AWS d’Paket deem Subnet gëtt. Se entscheet net den nächste Sprong duerno, deen an der eegener VPC-Routentabel vum Subnet läit:

aws ec2 describe-route-tables \
  --filters Name=association.subnet-id,Values=subnet-0a1b2c3d4e5f67890 \
  --query 'RouteTables[].Routes[?DestinationCidrBlock==`0.0.0.0/0`]'

Eng brauchbar Default-Streck weist op en Internet-Gateway fir en ëffentlech Subnet, oder op en NAT-Gateway fir en private, an e Statut blackhole bedeit, datt d’Zil geläscht gouf an de Wee elo stille stierft. Dat sinn aner Tabelle wéi d’Streckelëscht vum Endpunkt, an dat engt ze reparéieren reparéiert dat anert net.

Op dësem Sprong sëtzen zwee Filter. D’Sécherheetsgrupp, déi op d’Netzwierk-Associatioun vum Zil ugewannt gëtt, muss ausgängleche Verkéier a Richtung ëffentlech Destinatioun erlaben, an all uwännbar Netzwierk-ACL muss d’Ufro an de Réckverkéier op ephemeren Ports erlaben. Eng restriktiv Associatiouns-Sécherheetsgrupp ass e gemeinsame Grond, firwat private Zougang funktionéiert an ëffentlechen net.

Wielt déi éischt Schicht nom Symptom, amplaz all dräi op eemol ze änneren:

What you observeLayer to check first
No tunnel interface for a public IPClient route or split-tunnel flag
Tunnel interface chosen, request times outEndpoint route and authorization rule
Endpoint route present, still times outSubnet route table, association security group
Named host fails, numeric address worksDNS servers and their own authorization

Trennt den DNS-Feeler vun enger doudeger Streck

D’Nimmoplléisung feelt anescht wéi d’Viruleedung, an en kompletten Tunnel mécht den Ënnerscheed wichteg, well de gedréckte Resolver elo duerch den Tunnel erreecht gëtt. Wa den Endpunkt VPC-DNS-Server ugëtt, brauchen hir Adressen Streckendeckung an Autorisatioun wéi all aner Destinatioun. Frot de Resolver direkt, fir ze gesinn, wéi ee Feeler Dir hutt: dig +short example.com @10.0.0.2, oder nslookup example.com 10.0.0.2 ënner Windows.

Wa eng numeresch URL äntwert an eng genannter net, stoppt d’Default-Streck z’änneren a schafft um DNS. Eng Ufro un eng IP-Adress beweist näischt iwwer e genannten virtuelle Host an säin Zertifikat, also behält eng genannten Test an der Schlusskontroll.

D’Timing hëlleft. Eng TCP-Verbindung, déi bannent e puer Sekonnen keng Äntwert kritt, weist op Routing oder e Filter, wärend eng Ufro, déi an der Nimmssich hänke bleift, op de Resolver weist. D’Default-Streck z’änneren, wärend de Resolver net erreechbar ass, mécht dacks ee Feeler zu zwee.

Rollt propper zréck an iwwerpréift dann den Ausgangswee

Béid Objeten waren additiv, also ass d’Zréckrollen e Läschen an net eng Reparatur:

aws ec2 delete-client-vpn-route \
  --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0 \
  --destination-cidr-block 0.0.0.0/0 \
  --target-vpc-subnet-id subnet-0a1b2c3d4e5f67890
aws ec2 delete-client-vpn-authorization-rule \
  --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0 \
  --destination-cidr-block 0.0.0.0/0 \
  --access-all

Verbannt Iech nei an bestätegt, iwwer wéi ee Wee de Verkéier erausgeet. Vergläicht déi observéiert ëffentlech Adress mat der elastischer IP-Adress vum NAT-Gateway, oder mam Internet-Gateway, deen Dir wollt benotzen, a kontrolléiert, ob eng privat Ressource nach an der selwechter Sessioun äntwert.

Schluss mat enger kuerzer Lëscht, a behandelt de leschten Element als Deel vun der Ännerung an net als Dokumentatioun:

  • Eng 0.0.0.0/0 Endpunktstreck fir all associéierte Subnet.
  • Eng Autorisatiounsregel, déi 0.0.0.0/0 deckt, fir d’Clienten, déi Dir wëllt zerwéieren.
  • Eng VPC-Default-Streck, déi net am Statut blackhole ass, op all associéierte Subnet.
  • Den Ausgang vun der Associatiouns-Sécherheetsgrupp, plus ACL-Réckverkéier.
  • Resolver-Adressen geroutéiert an autoriséiert, mat enger genannter Ufro iwwerpréift.
  • En opgezeechente Zréckroll fir d’Streck an d’Regel.

Eng Notiz zum Ëmfang: dëst ass en IPv4-Wee. En Dual-Stack-Client behält déi IPv6-Konnektivitéit, déi en schon huet, also ass eng IPv6-Default-Streck eng eege Entscheedung mat hirer eegener Autorisatioun an net en Nieweneffekt vun dëser.

Ähnlech Artikelen