AWS Client VPN yhdistetty, mutta ei internetyhteyttä: reittien tarkistus
AWS Client VPN yhdistetty ilman internetyhteyttä? Tarkista asiakkaan reitit, päätepisteen valtuutus, aliverkon ulostulo ja DNS tässä järjestyksessä.
Olet yhdistetty AWS Client VPN -päätepisteeseen, yksityinen aliverkko vastaa, ja silti jokainen julkinen sivu päättyy aikakatkaisuun. Tämä yhdistelmä rajaa ongelman yhteen kolmesta hallitun puolen objektista: reitti, jonka asiakas asentaa, päätepisteen reitti yhdessä sen valtuutussäännön kanssa, tai liitetyn aliverkon seuraava hyppy. Tarkistan ne tässä järjestyksessä, koska jokainen vika näyttää asiakkaan puolelta erilaiselta. Tämä opas kattaa VPC:hen liitetyn hallitun päätepisteen, ei EC2-instanssin OpenVPN-palvelinta eikä Cloud WAN- tai Transit Gateway -liitosta.
Aloita siitä, mitä asiakas todella reitittää
Yhdistetty tila todistaa TLS-istunnon ja asiakkaalle annetun CIDR:n, ei mitään muuta. Kysy käyttöjärjestelmältä, minne julkinen osoite menisi tunnelin ollessa päällä. Linuxissa ip route get 1.1.1.1 pitäisi nimetä tunnelin liitäntä; macOS:ssa netstat -rn -f inet | head -5 näyttää oletusmerkinnän; Windowsissa Find-NetRoute -RemoteIPAddress 1.1.1.1 tulostaa valitun liitännän ja seuraavan hypyn.
Lue sitten split-tunnel-lippu, koska se ratkaisee, ovatko päätepisteen julkaisemat reitit ainoat kohteet, jotka asiakas lähettää tunneliin:
aws ec2 describe-client-vpn-endpoints \
--client-vpn-endpoint-ids cvpn-endpoint-0123456789abcdef0 \
--query 'ClientVpnEndpoints[0].SplitTunnel'Kun SplitTunnel on true, julkinen kohde käyttää tunnelia vain, kun päätepiste julkaisee sen kattavan reitin, joten puuttuva 0.0.0.0/0 jättää kyseisen liikenteen paikalliselle liitännälle. Kun se on false, asiakas kaappaa liikenteen, mutta päätepisteen on silti reititettävä ja valtuutettava se; muuten paketit menevät tunneliin ja pysähtyvät sinne. Yhdistä asiakas uudelleen kummankin asetuksen muuttamisen jälkeen, koska reitit ja DNS-palvelimet toimitetaan yhdistämishetkellä ja käynnissä oleva asiakas voi pitää vanhan joukkonsa.
Lue päätepisteen reitti ja valtuutussääntö erikseen
Ne ovat kaksi objektia, eikä toisen luominen luo toista. Listaa päätepisteen reitit ja etsi oletusreitti, jonka kohde on liitetty aliverkko:
aws ec2 describe-client-vpn-routes \
--client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0Jokaisella reitillä on täsmälleen yksi kohdealiverkko, joten kolme liitosta tarvitsevat kullekin vastaavan oletusreitin. AWS dokumentoi tämän kattavuusvaatimuksen, ja aukon käytännön oire on käyttäjä, joka työskentelee yhdestä aliverkosta ja jumittuu toisesta, mikä luetaan ajoittaiseksi viaksi puuttuvan reitin sijaan. Virallinen Client VPN -skenaarion dokumentaatio kuvaa julkisen aliverkon järjestelyn, johon nämä reitit kuuluvat.
Valtuutus on toinen objekti. Kun mikään sääntö ei kata julkista kohdetta, tunneli kuljettaa paketin ja palvelu hylkää sen, joten yksityiset resurssit toimivat edelleen, mutta internet ei:
aws ec2 describe-client-vpn-authorization-rules \
--client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0VPC:n CIDR:iä koskeva sääntö ei kerro mitään 0.0.0.0/0. Puuttuvien osien lisääminen täyteen tunneliin tarkoittaa yhtä reittiä jokaista liitettyä aliverkkoa kohden sekä valtuutussäännön, jota voit tarkastella myöhemmin:
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 myöntää kohteen jokaiselle päätepisteen asiakkaalle, joten pidä se vain niin kauan kuin tunnelin on tarkoitus olla täysi; hakemistoryhmään sidottu sääntö on parempi, kun sinulla on ryhmiä sidottavaksi.
Seuraa pakettia liitetystä aliverkosta ulos
Päätepisteen reitti ratkaisee, että AWS luovuttaa paketin kyseiselle aliverkolle. Se ei ratkaise seuraavaa hyppyä sen jälkeen, joka asuu aliverkon omassa VPC-reititystaulussa:
aws ec2 describe-route-tables \
--filters Name=association.subnet-id,Values=subnet-0a1b2c3d4e5f67890 \
--query 'RouteTables[].Routes[?DestinationCidrBlock==`0.0.0.0/0`]'Käyttökelpoinen oletusreitti osoittaa internet-yhdyskäytävään julkiselle aliverkolle tai NAT-yhdyskäytävään yksityiselle, ja tila blackhole tarkoittaa, että kohde on poistettu ja polku kuolee nyt hiljaa. Nämä ovat eri tauluja kuin päätepisteen reittiluettelo, eikä toisen korjaaminen korjaa toista.
Tällä hypyllä istuu kaksi suodatinta. Kohdeverkon liitokseen sovellettu suojausryhmä saa sallia lähtevän liikenteen julkista kohdetta kohti, ja mahdollisen verkon ACL:n on sallittava pyyntö ja paluuliikenne efemeerisillä porteilla. Rajoittava liitoksen suojausryhmä on yleinen syy siihen, että yksityinen pääsy toimii mutta julkinen ei.
Valitse ensimmäinen kerros oireen perusteella sen sijaan, että muutat kaikkia kolmea kerralla:
| 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 |
Erota DNS-vika kuolleesta reitistä
Nimien selvitys epäonnistuu eri tavalla kuin edelleenlähetys, ja täysi tunneli tekee erosta merkittävän, koska työnnetty resolveri saavutetaan nyt tunnelin kautta. Jos päätepiste määrittää VPC:n DNS-palvelimet, niiden osoitteet tarvitsevat reittikattavuuden ja valtuutuksen kuten mikä tahansa muu kohde. Kysy resolverilta suoraan, mikä vika sinulla on: dig +short example.com @10.0.0.2, tai nslookup example.com 10.0.0.2 Windowsissa.
Kun numeerinen URL vastaa ja nimetty ei, lopeta oletusreitin muokkaaminen ja työstä DNS:ää. Pyyntö IP-osoitteeseen ei todista mitään nimetylle virtuaalipalvelimelle ja sen varmenteelle, joten pidä yksi nimetty testi lopputarkistuksessa.
Ajoitus auttaa. TCP-yhteys, joka ei saa vastausta muutamassa sekunnissa, viittaa reititykseen tai suodattimeen, kun taas nimihaussa roikkuva pyyntö viittaa resolveriin. Oletusreitin muuttaminen resolverin ollessa tavoittamaton muuttaa yleensä yhden vian kahdeksi.
Peru muutokset siististi ja tarkista sitten ulostulopolku
Molemmat objektit olivat lisääviä, joten peruutus on poistamista, ei korjaamista:
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-allYhdistä uudelleen ja vahvista, mitä kautta liikenne lähtee. Vertaa havaittua julkista osoitetta NAT-yhdyskäytävän elastiseen IP-osoitteeseen tai internet-yhdyskäytävään, jota aioit käyttää, ja tarkista, että yksityinen resurssi vastaa edelleen samassa istunnossa.
Lopeta lyhyeen luetteloon ja käsittele viimeistä kohtaa osana muutosta, ei dokumentaationa:
- Yksi
0.0.0.0/0päätepisteen reitti jokaista liitettyä aliverkkoa kohden. - Valtuutussääntö, joka kattaa
0.0.0.0/0niille asiakkaille, joita haluat palvella. - VPC:n oletusreitti, joka ei ole blackhole-tilassa, jokaisessa liitetyssä aliverkossa.
- Liitoksen suojausryhmän ulostulo sekä ACL:n paluuliikenne.
- Resolverin osoitteet reititetty ja valtuutettu, vahvistettu nimetyllä pyynnöllä.
- Tallennettu peruutus reitille ja säännölle.
Yksi laajuushuomio: tämä on IPv4-polku. Kaksoispino-asiakas säilyttää sen IPv6-yhteyden, joka sillä jo on, joten IPv6-oletusreitti on erillinen päätös omalla valtuutuksellaan eikä tämän sivutuote.