Bloqueig geogràfic de CloudFront darrere d'una VPN: diagnostica la sortida
La vora decideix segons l'adreça que veu, i una sortida compartida canvia alhora el país i la reputació. Proveu cada control per separat abans de rotar els nodes de sortida.
Una restricció geogràfica és una decisió sobre una adreça IP, i una VPN canvia quina adreça veu el servei. Aquesta sola frase explica la majoria d'informes confusos que arriben a la cua de suport: «el lloc funciona a casa i falla al túnel» i «el lloc funciona al túnel però ningú més de l'oficina pot carregar-lo» són el mateix mecanisme produint resultats oposats. Aquest manual recorre el diagnòstic en l'ordre que descarta causes, començant pel que la vora us va dir realment. La mateixa adreça de sortida pot superar un control i fallar el següent, perquè cada control avalua una propietat diferent d'aquella adreça.
Llegiu el 403 abans de canviar res
Un bloqueig geogràfic i un bloqueig de WAF arriben tots dos com a 403, i es corregeixen en llocs diferents. Captureu les capçaleres de resposta i la primera línia del cos, perquè CloudFront inclou una capçalera de memòria cau i una cadena de motiu que us diuen quina capa ha respost:
curl -sS -o /tmp/body.txt -D /tmp/headers.txt https://d111111abcdef8.cloudfront.net/
grep -i "x-cache\|via" /tmp/headers.txt
head -c 300 /tmp/body.txt
Quan la mateixa distribució va bloquejar la petició per geografia, el cos porta un missatge que anomena la restricció de país. Quan l'ha bloquejada una regla de WAF, el cos sol ser una pàgina genèrica de prohibit i l'identificador de petició de la distribució a les capçaleres és el que porteu als registres de WAF. Equivocar-ho us envia a la llista de països permesos per un problema de regla basada en taxes, que és un dia de feina que no pot reeixir.
Pas 1: confirmeu quina adreça veu la distribució
Pregunteu a la xarxa què veu el món exterior, des del mateix equip i la mateixa ruta que fa servir el navegador que falla. curl -s https://checkip.amazonaws.com retorna l'adreça pública del sol·licitant, que per a un client VPN és la sortida i no la connexió domèstica del subscriptor:
curl -s https://checkip.amazonaws.com
nslookup d111111abcdef8.cloudfront.net
Si aquella adreça pertany a la sortida del vostre proveïdor en un altre país, la decisió geogràfica ja s'ha pres i res del client la canviarà. Escriviu l'adreça al tiquet abans de tocar cap paràmetre, perquè és l'únic fet de l'informe en què vosaltres i el servei coincidiu.
Pas 2: separeu el país de la reputació
CloudFront resol la ubicació de l'espectador a partir d'una base de dades GeoIP de tercers basada en l'adreça d'origen de la petició, i la correspondència és aproximada i regional, no una fixació precisa. Quan la ubicació no es pot determinar, el valor per defecte documentat és servir el contingut. Així doncs hi ha tres estats possibles: la sortida s'assigna a un país bloquejat, a un país permès, o la base de dades no té opinió i la petició continua.
Un usuari en un país bloquejat pot semblar que és en un de permès si el proveïdor hi té una sortida, i un usuari en un país permès pot ser bloquejat perquè la sortida està registrada en un altre lloc. Cap dels dos resultats demostra que la restricció estigui trencada. Tots dos són la restricció funcionant sobre l'adreça que se li ha donat, tal com descriu la documentació de restriccions geogràfiques de CloudFront.
La reputació és el segon eix i sobreviu al túnel. El grup de regles gestionades d'IP anònimes d'AWS WAF està fet per bloquejar peticions de VPN, proxys, nodes de Tor i proveïdors d'allotjament, així que una petició que passa la comprovació de país encara pot ser rebutjada pel que és l'adreça, no per on és. Si el bloqueig va començar quan vau moure el túnel a un allotjament al núvol, aquesta és probablement la capa.
Pas 3: comproveu el comportament de la quota
Les sortides compartides fallen d'una tercera manera. Els límits de taxa per IP i els comptes de sessions tracten una adreça com un client, i una sortida de consumidor porta molts subscriptors alhora, així que un patró de peticions insignificant des d'una connexió domèstica sembla automatització des de la sortida. El símptoma és una limitació o un bloqueig temporal que s'esborra sol, no un missatge d'error geogràfic.
Una distribució també pot comptar sessions per adreça deliberadament, per exemple amb una funció Lambda@Edge que escriu a DynamoDB. Això no identifica la persona darrere la sortida, però fa que una adreça es comporti com un client, que sovint és la intenció real. Registreu les adreces diferents darrere una queixa abans d'ajustar cap llindar, perquè un NAT corporatiu davant de dues-centes taules sembla exactament una sortida ocupada des de fora. Espereu falsos positius de NAT corporatiu, una xarxa universitària o una llar gran que tots presenten una sola adreça.
Mireu les peticions mostrejades del WAF i les mètriques de regles basades en taxes abans de culpar la geografia. Una regla que s'activa amb el volum de peticions de la sortida deixa una signatura clara, i també us diu si la correcció és un ajust de límit o un camí de sortida diferent.
Què canviar, i en quin ordre
Primer decidiu per a què serveix el control. Mantenir un catàleg regional, limitar l'abús i fer complir un contracte són tres objectius diferents, i només el primer s'aborda amb una llista de països. Si l'objectiu és el control d'abús, la sortida és la unitat d'identitat equivocada, i cap quantitat de llistes permeses farà fiable una adreça compartida.
Si realment cal una adreça estable per a una llista permesa, una sortida dedicada o estàtica ajuda perquè l'adreça es pot registrar i no rota. No fa que l'adreça sigui residencial, ni canvia el país que una base de dades GeoIP li assigna. Rotar sortides fins que una funcioni és un canvi temporal de reputació, no una solució per a la política.
Després escriviu el resultat amb els termes que va fer servir el sol·licitant: aquesta adreça està bloquejada per país, per reputació o per taxa, i aquest és el control que canviarà. Qualsevol cosa més vaga convida el mateix tiquet la setmana vinent amb una sortida diferent.