Useimmat AWS Site-to-Site VPN -virheet ovat osoitevirheitä, ja ne tehdään ennen kuin yksikään paketti liikkuu. Tunnelin ulko-osoitteet tavoittavat IPsec-kumppanit, sisäosoitteet muodostavat niiden välisen reitityslinkin, ja suojatut etuliitteet ovat se, mitä varten linkki on. Kopioi yksi rooli toiseen, niin tunneli nousee, vaikka mikään ei reitity. Tässä on lukemis-tarkistus-määritys-järjestys, jota käytän BGP-asiakasportilla, arvot on otettu ladatusta laitekokoonpanosta eikä muistista.

Kolme osoiteroolia, yksi tunneli

Ulko-osoitteet ovat julkisia ja kuuluvat IPsec-kumppaneille: yksi tunnelia kohden AWS:n puolella, ja asiakasportin tavoitettava identiteetti omalla puolellasi, sovitettuna siihen NAT-järjestelyyn, joka sinulla todella on. Sisäosoitteet ovat yksityisiä ja kuuluvat loogiselle linkille, jonka AWS dokumentoi /30:ksi, otettuna osoiteavaruudesta 169.254.0.0/16. Suojatut etuliitteet ovat ne VPC-, paikalliset tai transit-verkot, joita reitität ja mainostat kyseisen linkin kautta.

LAN-etuliitteen antaminen tunnelin liitännän osoitteeksi on tämän virheen klassinen muoto. Liitäntä näyttää määritetyltä, LANia ei mainosteta, eikä vastapuolella ole sille reittiä. Tunneli voi jopa läpäistä oman sisäisen pinginsä, kun taas jokainen sovellusnimi aikakatkaisee. Tunneliasetusten viite luettelee sisäisen CIDR:n rajoitukset, mukaan lukien osoitealueen, josta sen on tultava.

Lue arvot ladatusta kokoonpanosta

Lataa juuri oman laitemallisi kokoonpano yhteydestä ja pidä sen osoitetaulukkoa totuuden lähteenä. Konsoli näyttää samat arvot tunnelia kohden: ulkoinen IP, sisäinen CIDR ja BGP-kumppanin osoite AWS:n puolella. Kaksi tunnelia ovat erillisiä objekteja, joilla on erilliset ulkoiset päätepisteet ja erilliset sisäiset /30-verkot, vaikka molemmat kuljettavat samoja suojattuja verkkoja.

aws ec2 describe-vpn-connections --vpn-connection-ids vpn-0123456789abcdef0 \
  --query 'VpnConnections[0].Options.TunnelOptions[].[OutsideIpAddress,TunnelInsideCidr]'
aws ec2 describe-customer-gateways --customer-gateway-ids cgw-0123456789abcdef0 \
  --query 'CustomerGateways[0].[IpAddress,BgpAsn]'

Jos ladattu tiedosto ja live-konsoli ovat eri mieltä, tiedosto on vanhentunut. Lataa uudelleen sen sijaan, että muokkaisit osoitteita käsin, koska sisäisen parin ja kumppanin määritetyn naapurin välinen ero on hiljainen BGP-vika.

Rakenna linkki oikealla osoitteella

Linux-portilla tunneli on VTI- tai XFRM-liitäntä, ja sisäinen /30 laitetaan sille liitännälle. Kaksi tunnelia tarkoittaa kahta liitäntää ja kahta BGP-naapuria, yksi jokaista AWS-päätepistettä kohden. Käytäntö, jonka AWS tulostaa ladattuun laitekokoonpanoon, sijoittaa virtuaalisen yksityisen portin jokaisen sisäisen /30:n ensimmäiseen osoitteeseen ja asiakasporttisi toiseen, joten otat korkeamman osoitteen ja peerität matalamman kanssa. Mikään tässä ei tarvitse LAN-osoitetta.

ip tunnel add tun0 mode vti local 203.0.113.10 remote 18.230.1.1 key 42
ip addr add 169.254.10.2/30 dev tun0
ip link set tun0 up mtu 1400
ip tunnel add tun1 mode vti local 203.0.113.10 remote 18.230.2.1 key 43
ip addr add 169.254.10.6/30 dev tun1
ip link set tun1 up mtu 1400

Jos laitemallisi tiedosto tulostaa päinvastaisen parin, käytä sen numeroita ja pidä sääntö: liitännän osoite on sinun, kumppanin osoite kuuluu AWS:lle. Tämän tekeminen väärinpäin tuottaa tunnelin, joka ei koskaan saavuta Established-tilaa, koska määrittämäsi naapuri on osoite, joka omalla liitännälläsi jo on.

Pidä merkintä ja VTI-avain linjassa sen kanssa, mitä IKE-daemon käyttää lapsi-SA:n sitomiseen liitäntään, muuten liikenne saapuu tunneliin ilman liitäntää, johon laskeutua. Tarkista MTU polkua ja IKE-daemonin omia asetuksia vasten sen sijaan, että kopioisit numeron toiselta sivustolta.

Tarkista BGP ennen kuin tarkistat reitit

IPsecin nousu todistaa, että kumppanit sopivat tietoturvayhteydestä eikä muusta. BGP-istunto on erillinen neuvottelu sisäisen linkin yli, joten lue naapurin tila ja etuliitelaskurit ja vertaa niitä siihen, mitä aioit mainostaa.

ip -s addr show dev tun0
vtysh -c 'show bgp summary'
vtysh -c 'show bgp neighbors 169.254.10.1'
vtysh -c 'show ip bgp neighbors 169.254.10.1 advertised-routes'

Established-tila ja nolla vastaanotettua etuliitettä on käytäntö- tai mainostusongelma, ei tunneliongelma. Toista koko tarkistus toisella tunnelilla; toimiva ensimmäinen tunneli kertoo, että osoitteet ovat uskottavia, ei että toinen tunneli olisi ylipäätään määritetty.

Seuraa reititettyä pakettia ja lopeta sitten

Kun istunto kuljettaa etuliitteet, testaa reitti molempiin suuntiin portilta: lähdeosoite, seuraava hyppy ja tietoturvakäytäntö, joka sallii liikenteen. BGP-istunto voi olla ylhäällä, vaikka sovelluksesi tarvitsema tietty etuliite on suodatettu, tiivistetty pois tai osoittaa väärälle liitännälle.

Reachability Analyzer on AWS:n puolen työkalu, joka ottaa lähteen, kohteen ja polun ja kertoo, mikä komponentti tuetussa kokoonpanossa esti sen. Käytä sitä polun testaamiseen VPC:stä asiakasporttisi osoitteeseen, älä sovellusisännästä. Se analysoi kokoonpanoa eikä lähetä pakettia paikallisen palomuurin läpi, joten pidä sen tuomio erillään omista liitäntälaskureistasi ja pakettikaappauksistasi.

Kirjaa ulkopari, sisäinen /30 ja mainostetut etuliitteet jokaiselle tunnelille yhteen taulukkoon. Juuri se taulukko tekee seuraavasta muutoksesta arvioitavan.

Aiheeseen liittyvät artikkelit