AWS Client VPN കണക്റ്റ് ചെയ്തു പക്ഷേ ഇന്റർനെറ്റ് ഇല്ല: റൂട്ട് പരിശോധന
AWS Client VPN കണക്റ്റ് ചെയ്തിട്ടും ഇന്റർനെറ്റ് ആക്സസ് ഇല്ലേ? ക്ലയന്റ് റൂട്ടുകൾ, എൻഡ്പോയിന്റ് അനുമതി, സബ്നെറ്റ് എഗ്രെസ്, DNS എന്നീ ക്രമത്തിൽ പരിശോധിക്കുക.
നിങ്ങൾ AWS Client VPN എൻഡ്പോയിന്റുമായി കണക്റ്റ് ചെയ്തിരിക്കുന്നു, സ്വകാര്യ സബ്നെറ്റ് മറുപടി നൽകുന്നു, എന്നിട്ടും ഓരോ പൊതു പേജും സമയപരിധിയിൽ അവസാനിക്കുന്നു. ഈ കോമ്പിനേഷൻ പ്രശ്നത്തെ നിയന്ത്രിത വശത്തെ മൂന്ന് ഒബ്ജക്റ്റുകളിൽ ഒന്നിലേക്ക് ചുരുക്കുന്നു: ക്ലയന്റ് ഇൻസ്റ്റാൾ ചെയ്യുന്ന റൂട്ട്, എൻഡ്പോയിന്റിന്റെ റൂട്ടും അതിന്റെ അനുമതി നിയമവും, അല്ലെങ്കിൽ ബന്ധപ്പെട്ട സബ്നെറ്റിന്റെ അടുത്ത ഹോപ്പ്. ക്ലയന്റിൽ നിന്ന് ഓരോ പരാജയവും വ്യത്യസ്തമായി കാണുന്നതിനാൽ ഞാൻ അവ ഈ ക്രമത്തിൽ പരിശോധിക്കുന്നു. ഈ ഗൈഡ് VPC-യുമായി ബന്ധിപ്പിച്ച നിയന്ത്രിത എൻഡ്പോയിന്റിനെ ഉൾക്കൊള്ളുന്നു, EC2 ഇൻസ്റ്റൻസിലെ OpenVPN സെർവറിനെയും Cloud WAN അല്ലെങ്കിൽ Transit Gateway ബന്ധത്തെയും ഉൾക്കൊള്ളുന്നില്ല.
ക്ലയന്റ് യഥാർത്ഥത്തിൽ എന്താണ് റൂട്ട് ചെയ്യുന്നത് എന്നതിൽ നിന്ന് തുടങ്ങുക
കണക്റ്റ് ചെയ്ത അവസ്ഥ TLS സെഷനും ക്ലയന്റിന് CIDR അനുവദിച്ചതും തെളിയിക്കുന്നു, അതിൽ കൂടുതലൊന്നുമില്ല. ടണൽ ഓണായിരിക്കുമ്പോൾ ഒരു പൊതു വിലാസം എങ്ങോട്ട് പോകുമെന്ന് ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തോട് ചോദിക്കുക. Linux-ൽ ip route get 1.1.1.1 ടണൽ ഇന്റർഫേസ് പേര് നൽകണം; macOS-ൽ netstat -rn -f inet | head -5 ഡിഫോൾട്ട് എൻട്രി കാണിക്കുന്നു; Windows-ൽ Find-NetRoute -RemoteIPAddress 1.1.1.1 തിരഞ്ഞെടുത്ത ഇന്റർഫേസും അടുത്ത ഹോപ്പും പ്രിന്റ് ചെയ്യുന്നു.
തുടർന്ന് സ്പ്ലിറ്റ്-ടണൽ ഫ്ലാഗ് വായിക്കുക, കാരണം എൻഡ്പോയിന്റ് പ്രസിദ്ധീകരിച്ച റൂട്ടുകൾ മാത്രമാണോ ക്ലയന്റ് ടണലിലേക്ക് അയക്കുന്ന ലക്ഷ്യസ്ഥാനങ്ങൾ എന്ന് അത് തീരുമാനിക്കുന്നു:
aws ec2 describe-client-vpn-endpoints \
--client-vpn-endpoint-ids cvpn-endpoint-0123456789abcdef0 \
--query 'ClientVpnEndpoints[0].SplitTunnel'എപ്പോൾ SplitTunnel true ആണെങ്കിൽ, ഒരു പൊതു ലക്ഷ്യസ്ഥാനം ടണൽ ഉപയോഗിക്കുന്നത് എൻഡ്പോയിന്റ് അതിനെ ഉൾക്കൊള്ളുന്ന റൂട്ട് പ്രസിദ്ധീകരിക്കുമ്പോൾ മാത്രമാണ്, അതിനാൽ കാണാത്ത 0.0.0.0/0 ആ ട്രാഫിക് ലോക്കൽ ഇന്റർഫേസിൽ വിടുന്നു. അത് false ആണെങ്കിൽ, ക്ലയന്റ് ട്രാഫിക് പിടിക്കുന്നു, പക്ഷേ എൻഡ്പോയിന്റ് ഇപ്പോഴും അത് റൂട്ട് ചെയ്ത് അനുമതി നൽകണം; അല്ലെങ്കിൽ പാക്കറ്റുകൾ ടണലിൽ പ്രവേശിച്ച് അവിടെ നിൽക്കുന്നു. രണ്ട് ക്രമീകരണങ്ങളിൽ ഒന്ന് മാറ്റിയ ശേഷം ക്ലയന്റ് വീണ്ടും കണക്റ്റ് ചെയ്യുക, കാരണം റൂട്ടുകളും DNS സെർവറുകളും കണക്ഷൻ സമയത്താണ് നൽകുന്നത്, പ്രവർത്തിക്കുന്ന ക്ലയന്റിന് പഴയ സെറ്റ് നിലനിർത്താം.
എൻഡ്പോയിന്റ് റൂട്ടും അനുമതി നിയമവും വെവ്വേറെ വായിക്കുക
ഇവ രണ്ട് ഒബ്ജക്റ്റുകളാണ്, ഒന്ന് സൃഷ്ടിക്കുന്നത് മറ്റൊന്നിനെ സൃഷ്ടിക്കുന്നില്ല. എൻഡ്പോയിന്റ് റൂട്ടുകൾ ലിസ്റ്റ് ചെയ്ത് ലക്ഷ്യം ബന്ധപ്പെട്ട സബ്നെറ്റ് ആയ ഡിഫോൾട്ട് റൂട്ട് തിരയുക:
aws ec2 describe-client-vpn-routes \
--client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0ഓരോ റൂട്ടിനും കൃത്യം ഒരു ലക്ഷ്യ സബ്നെറ്റ് ഉണ്ട്, അതിനാൽ മൂന്ന് അസോസിയേഷനുകൾക്ക് ഓരോന്നിനും യോജിക്കുന്ന ഡിഫോൾട്ട് റൂട്ട് ആവശ്യമാണ്. AWS ഈ കവറേജ് ആവശ്യകത രേഖപ്പെടുത്തുന്നു, വിടവിന്റെ പ്രായോഗിക ലക്ഷണം ഒരു സബ്നെറ്റിൽ നിന്ന് ജോലി ചെയ്ത് മറ്റൊന്നിൽ നിന്ന് കുടുങ്ങുന്ന ഉപയോക്താവാണ്, അത് കാണാത്ത റൂട്ടിന് പകരം ഇടയ്ക്കിടെയുള്ള തകരാറായി വായിക്കപ്പെടുന്നു. ഔദ്യോഗിക Client VPN സാഹചര്യ രേഖകൾ ഈ റൂട്ടുകൾ ഉൾപ്പെടുന്ന പൊതു സബ്നെറ്റ് ക്രമീകരണം വിവരിക്കുന്നു.
അനുമതിയാണ് രണ്ടാമത്തെ ഒബ്ജക്റ്റ്. പൊതു ലക്ഷ്യസ്ഥാനം ഒരു നിയമവും ഉൾക്കൊള്ളുന്നില്ലെങ്കിൽ, ടണൽ പാക്കറ്റ് കൊണ്ടുപോകുന്നു, സേവനം അത് വലിച്ചെറിയുന്നു, അതിനാൽ സ്വകാര്യ റിസോഴ്സുകൾ പ്രവർത്തിക്കുന്നു, ഇന്റർനെറ്റ് മാത്രം പ്രവർത്തിക്കുന്നില്ല:
aws ec2 describe-client-vpn-authorization-rules \
--client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0VPC CIDR-നുള്ള ഒരു നിയമം 0.0.0.0/0 നെക്കുറിച്ച് ഒന്നും പറയുന്നില്ല. പൂർണ്ണ ടണലിനുള്ള കാണാത്ത ഭാഗങ്ങൾ ചേർക്കുക എന്നത് ഓരോ ബന്ധപ്പെട്ട സബ്നെറ്റിനും ഒരു റൂട്ടും പിന്നീട് ഓഡിറ്റ് ചെയ്യാവുന്ന ഒരു അനുമതി നിയമവും ചേർക്കുന്നു:
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 എൻഡ്പോയിന്റിന്റെ ഓരോ ക്ലയന്റിനും ലക്ഷ്യസ്ഥാനം നൽകുന്നു, അതിനാൽ ടണൽ പൂർണ്ണമായിരിക്കേണ്ട കാലത്തോളം മാത്രം അത് സൂക്ഷിക്കുക; ബന്ധിപ്പിക്കാൻ ഗ്രൂപ്പുകൾ ഉണ്ടെങ്കിൽ ഡയറക്ടറി ഗ്രൂപ്പിലേക്ക് ബന്ധിച്ച നിയമം മികച്ചതാണ്.
പാക്കറ്റ് ബന്ധപ്പെട്ട സബ്നെറ്റിൽ നിന്ന് പുറത്തേക്ക് പിന്തുടരുക
എൻഡ്പോയിന്റ് റൂട്ട്, AWS ആ പാക്കറ്റ് ആ സബ്നെറ്റിന് നൽകുന്നു എന്ന് തീരുമാനിക്കുന്നു. അതിന് ശേഷമുള്ള അടുത്ത ഹോപ്പ് അത് തീരുമാനിക്കുന്നില്ല, അത് സബ്നെറ്റിന്റെ സ്വന്തം VPC റൂട്ട് പട്ടികയിൽ ജീവിക്കുന്നു:
aws ec2 describe-route-tables \
--filters Name=association.subnet-id,Values=subnet-0a1b2c3d4e5f67890 \
--query 'RouteTables[].Routes[?DestinationCidrBlock==`0.0.0.0/0`]'ഉപയോഗയോഗ്യമായ ഡിഫോൾട്ട് റൂട്ട് പൊതു സബ്നെറ്റിന് ഇന്റർനെറ്റ് ഗേറ്റ്വേയിലേക്കോ സ്വകാര്യത്തിന് NAT ഗേറ്റ്വേയിലേക്കോ ചൂണ്ടുന്നു, blackhole അവസ്ഥ എന്നാൽ ലക്ഷ്യം ഇല്ലാതാക്കി, പാത ഇപ്പോൾ നിശബ്ദമായി മരിക്കുന്നു. ഇവ എൻഡ്പോയിന്റിന്റെ റൂട്ട് ലിസ്റ്റിൽ നിന്ന് വ്യത്യസ്ത പട്ടികകളാണ്, ഒന്ന് അറ്റകുറ്റപ്പണി ചെയ്യുന്നത് മറ്റൊന്നിനെ ചെയ്യുന്നില്ല.
ഈ ഹോപ്പിൽ രണ്ട് ഫിൽട്ടറുകൾ ഉണ്ട്. ലക്ഷ്യ നെറ്റ്വർക്ക് അസോസിയേഷനിൽ പ്രയോഗിച്ച സെക്യൂരിറ്റി ഗ്രൂപ്പ് പൊതു ലക്ഷ്യസ്ഥാനത്തേക്കുള്ള ഔട്ട്ബൗണ്ട് ട്രാഫിക്കിന് അനുമതി നൽകണം, ബാധകമായ ഏത് നെറ്റ്വർക്ക് ACL-ഉം അഭ്യർത്ഥനയ്ക്കും എഫെമറൽ പോർട്ടുകളിലെ മടക്ക ട്രാഫിക്കിനും അനുമതി നൽകണം. നിയന്ത്രണാത്മക അസോസിയേഷൻ സെക്യൂരിറ്റി ഗ്രൂപ്പ് സ്വകാര്യ ആക്സസ് പ്രവർത്തിച്ച് പൊതു ആക്സസ് പ്രവർത്തിക്കാതിരിക്കാനുള്ള സാധാരണ കാരണമാണ്.
മൂന്നും ഒരുമിച്ച് മാറ്റുന്നതിന് പകരം ലക്ഷണത്തിൽ നിന്ന് ആദ്യ പാളി തിരഞ്ഞെടുക്കുക:
| What you observe | Layer to check first |
|---|---|
| No tunnel interface for a public IP | Client route or split-tunnel flag |
| Tunnel interface chosen, request times out | Endpoint route and authorization rule |
| Endpoint route present, still times out | Subnet route table, association security group |
| Named host fails, numeric address works | DNS servers and their own authorization |
DNS പരാജയത്തെ മരിച്ച റൂട്ടിൽ നിന്ന് വേർതിരിക്കുക
പേര് വിശകലനം ഫോർവേഡിംഗിൽ നിന്ന് വ്യത്യസ്തമായി പരാജയപ്പെടുന്നു, പൂർണ്ണ ടണൽ ഈ വ്യത്യാസത്തെ പ്രധാനമാക്കുന്നു, കാരണം തള്ളിയ റിസോൾവറിലേക്ക് ഇപ്പോൾ ടണലിലൂടെ എത്തുന്നു. എൻഡ്പോയിന്റ് VPC DNS സെർവറുകൾ വ്യക്തമാക്കിയാൽ, അവയുടെ വിലാസങ്ങൾക്ക് മറ്റേതൊരു ലക്ഷ്യസ്ഥാനത്തെയും പോലെ റൂട്ട് കവറേജും അനുമതിയും ആവശ്യമാണ്. ഏത് പരാജയമാണെന്ന് കാണാൻ റിസോൾവറിനോട് നേരിട്ട് ചോദിക്കുക: dig +short example.com @10.0.0.2, അല്ലെങ്കിൽ nslookup example.com 10.0.0.2 Windows-ൽ.
സംഖ്യാത്മക URL മറുപടി നൽകി പേരുള്ള URL മറുപടി നൽകാത്തപ്പോൾ, ഡിഫോൾട്ട് റൂട്ട് എഡിറ്റ് ചെയ്യുന്നത് നിർത്തി DNS-ൽ ജോലി ചെയ്യുക. IP വിലാസത്തിലേക്കുള്ള അഭ്യർത്ഥന പേരുള്ള വെർച്വൽ ഹോസ്റ്റിനെയും അതിന്റെ സർട്ടിഫിക്കറ്റിനെയും കുറിച്ച് ഒന്നും തെളിയിക്കുന്നില്ല, അതിനാൽ അന്തിമ പരിശോധനയിൽ ഒരു പേരുള്ള പരീക്ഷണം സൂക്ഷിക്കുക.
സമയം സഹായിക്കുന്നു. കുറച്ച് സെക്കൻഡിനുള്ളിൽ മറുപടി ലഭിക്കാത്ത TCP കണക്ഷൻ റൂട്ടിംഗിലേക്കോ ഫിൽട്ടറിലേക്കോ ചൂണ്ടുന്നു, പേര് തിരയലിനുള്ളിൽ തൂങ്ങിക്കിടക്കുന്ന അഭ്യർത്ഥന റിസോൾവറിലേക്ക് ചൂണ്ടുന്നു. റിസോൾവർ എത്താനാകാത്തപ്പോൾ ഡിഫോൾട്ട് റൂട്ട് മാറ്റുന്നത് സാധാരണയായി ഒരു പരാജയത്തെ രണ്ടാക്കി മാറ്റുന്നു.
വൃത്തിയായി പിന്നോട്ട് മാറ്റുക, തുടർന്ന് എഗ്രെസ് പാത പരിശോധിക്കുക
രണ്ട് ഒബ്ജക്റ്റുകളും കൂട്ടിച്ചേർക്കുന്നതായിരുന്നു, അതിനാൽ പിന്നോട്ട് മാറ്റുന്നത് അറ്റകുറ്റപ്പണിയല്ല, ഇല്ലാതാക്കലാണ്:
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വീണ്ടും കണക്റ്റ് ചെയ്ത് ഏത് പാതയിലൂടെയാണ് ട്രാഫിക് പുറത്തുപോകുന്നതെന്ന് ഉറപ്പാക്കുക. നിരീക്ഷിച്ച പൊതു വിലാസം NAT ഗേറ്റ്വേയുടെ ഇലാസ്റ്റിക് IP വിലാസവുമായോ ഉപയോഗിക്കാൻ ഉദ്ദേശിച്ച ഇന്റർനെറ്റ് ഗേറ്റ്വേയുമായോ താരതമ്യം ചെയ്യുക, അതേ സെഷനിൽ സ്വകാര്യ റിസോഴ്സ് ഇപ്പോഴും മറുപടി നൽകുന്നുണ്ടെന്ന് പരിശോധിക്കുക.
ചെറിയ ഒരു ലിസ്റ്റോടെ അവസാനിപ്പിക്കുക, അവസാന ഇനത്തെ ഡോക്യുമെന്റേഷനല്ല, മാറ്റത്തിന്റെ ഭാഗമായി കണക്കാക്കുക:
- ഓരോ ബന്ധപ്പെട്ട സബ്നെറ്റിനും ഒരു
0.0.0.0/0എൻഡ്പോയിന്റ് റൂട്ട്. - നിങ്ങൾ സേവനം നൽകാൻ ആഗ്രഹിക്കുന്ന ക്ലയന്റുകൾക്ക്
0.0.0.0/0ഉൾക്കൊള്ളുന്ന അനുമതി നിയമം. - ഓരോ ബന്ധപ്പെട്ട സബ്നെറ്റിലും blackhole അല്ലാത്ത VPC ഡിഫോൾട്ട് റൂട്ട്.
- അസോസിയേഷൻ സെക്യൂരിറ്റി ഗ്രൂപ്പിന്റെ എഗ്രെസ്, കൂടെ ACL മടക്ക ട്രാഫിക്.
- റിസോൾവർ വിലാസങ്ങൾ റൂട്ട് ചെയ്ത് അനുമതി നൽകി, പേരുള്ള അഭ്യർത്ഥനയിലൂടെ പരിശോധിച്ചു.
- റൂട്ടിനും നിയമത്തിനും രേഖപ്പെടുത്തിയ റോൾബാക്ക്.
ഒരു പരിധി കുറിപ്പ്: ഇത് IPv4 പാതയാണ്. ഡ്യുവൽ-സ്റ്റാക്ക് ക്ലയന്റ് ഇതിനകം ഉള്ള IPv6 കണക്റ്റിവിറ്റി നിലനിർത്തുന്നു, അതിനാൽ IPv6 ഡിഫോൾട്ട് റൂട്ട് ഇതിന്റെ പാർശ്വഫലമല്ല, സ്വന്തം അനുമതിയുള്ള വേറിട്ട തീരുമാനമാണ്.