La majoria d’errors d’AWS Site-to-Site VPN són errors d’adreces, i es cometen abans que es mogui cap paquet. Les adreces externes del túnel arriben als parells IPsec, les internes formen l’enllaç d’encaminament entre ells, i els prefixos protegits són per a què serveix aquest enllaç. Copieu un rol en un altre i el túnel s’aixeca mentre no s’encamina res. Aquesta és la seqüència llegeix-comprova-configura que faig servir en una passarel·la de client BGP, amb els valors presos de la configuració del dispositiu baixada, no de la memòria.

Tres rols d’adreça, un túnel

Les adreces externes són públiques i pertanyen als parells IPsec: una per túnel al costat d’AWS, i la identitat accessible de la passarel·la de client al vostre costat, ajustada a qualsevol disposició de NAT que tingueu realment. Les adreces internes són privades i pertanyen a l’enllaç lògic, que AWS documenta com un /30 extret de 169.254.0.0/16. Els prefixos protegits són les xarxes VPC, locals o de trànsit que encamineu i anuncieu per aquest enllaç.

Assignar un prefix LAN com a adreça de la interfície del túnel és la versió clàssica d’aquest error. La interfície sembla configurada, la LAN no s’anuncia i el costat oposat no té cap ruta per a ella. El túnel pot fins i tot passar el seu propi ping intern mentre cada nom d’aplicació esgota el temps. La referència d’opcions del túnel llista les restriccions del CIDR intern, inclòs el rang d’adreces del qual ha de provenir.

Llegiu els valors de la configuració baixada

Baixeu la configuració per al vostre model de dispositiu concret des de la connexió i tracteu la seva taula d’adreces com a font de veritat. La consola mostra els mateixos valors per túnel: IP externa, CIDR intern i l’adreça del parell BGP al costat d’AWS. Els dos túnels són objectes separats amb punts finals externs separats i /30 interns separats, encara que tots dos portin les mateixes xarxes protegides.

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]'

Si el fitxer baixat i la consola en directe no coincideixen, el fitxer és obsolet. Torneu a baixar-lo en lloc d’editar adreces a mà, perquè una discrepància entre la parella interna i el veí configurat del parell és una fallada silenciosa de BGP.

Construïu l’enllaç amb l’adreça correcta

En una passarel·la Linux el túnel és una interfície VTI o XFRM, i el /30 intern va en aquesta interfície. Dos túnels volen dir dues interfícies i dos veïns BGP, un per punt final d’AWS. La convenció que AWS imprimeix a la configuració del dispositiu baixada posa la passarel·la privada virtual a la primera adreça de cada /30 intern i la vostra passarel·la de client a la segona, així que preneu l’adreça més alta i feu parella amb la més baixa. Aquí no cal cap adreça LAN.

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

Si el fitxer del vostre model de dispositiu imprimeix la parella oposada, feu servir els seus números i manteniu la regla: l’adreça de la interfície és vostra, l’adreça del parell és d’AWS. Fer-ho al revés produeix un túnel que mai arriba a Established, perquè el veí que heu configurat és l’adreça que la vostra pròpia interfície ja té.

Mantingueu la marca i la clau VTI alineades amb el que el dimoni IKE fa servir per lligar una SA filla a la interfície, o el trànsit arriba al túnel sense cap interfície on aterrar. Comproveu l’MTU contra el camí i contra els propis paràmetres del dimoni IKE en lloc de copiar un número d’un altre lloc.

Verifiqueu BGP abans de verificar les rutes

Que IPsec s’aixequi demostra que els parells acorden una associació de seguretat i res més. La sessió BGP és una negociació a part sobre l’enllaç intern, així que llegiu l’estat del veí i els comptadors de prefixos, i compareu-los amb el que volíeu anunciar.

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'

L’estat Established amb zero prefixos rebuts és un problema de política o d’anunci, no del túnel. Repetiu tota la comprovació al segon túnel; un primer túnel que funciona us diu que les adreces són plausibles, no que el segon túnel estigui configurat.

Seguiu un paquet encaminat i atureu-vos

Un cop la sessió porta els prefixos, proveu la ruta en tots dos sentits des de la passarel·la: adreça d’origen, salt següent i la política de seguretat que permet el trànsit. Una sessió BGP pot estar activa mentre el prefix concret que necessita la vostra aplicació està filtrat, resumit o apuntat a la interfície equivocada.

Reachability Analyzer és l’eina del costat d’AWS que pren un origen, una destinació i un camí, i informa quin component d’una configuració compatible l’ha bloquejat. Feu-la servir per provar el camí de la VPC a l’adreça de la vostra passarel·la de client, no des d’un amfitrió d’aplicació. Analitza la configuració i no envia cap paquet per un tallafoc local, així que manteniu el seu veredicte separat dels vostres comptadors d’interfície i captures de paquets.

Enregistreu la parella externa, el /30 intern i els prefixos anunciats de cada túnel en una sola taula. Aquesta taula és el que fa revisable el canvi següent.

Articles relacionats