Saltar al contenido
Inteligencia IP

Detecta iCloud Private Relay y Cloudflare WARP, y déjalos pasar

Detecta iCloud Private Relay con la lista de salidas de 285.091 filas de Apple y consultas en vivo a la API, entiende por qué Cloudflare WARP no tiene lista pública y deja pasar a los usuarios de relay.

PorEquipo de GeoIPHubPublicadoTiempo de lectura23 min de lectura
Relay abstracto de dos saltos con un haz de luz que atraviesa dos esferas, que representa el tráfico de iCloud Private Relay y Cloudflare WARP

Descargamos la lista de Apple a las 09:40 UTC del 12 de octubre de 2026. Contenía 285.091 prefijos, 41.734 IPv4 y 243.357 IPv6, de 235 códigos de país. Dentro del 104.28.0.0/16 de Cloudflare, 19.723 de las 65.536 direcciones están en ella. Las otras 45.813 no, así que una regla escrita contra ese bloque, o contra toda la red de Cloudflare, no puede distinguir a un usuario de Private Relay de cualquier otra cosa enrutada por ahí.

A continuación analizamos el archivo de Apple y ofrecemos un comparador en Python probado para IPv4 e IPv6. Explicamos lo que se puede y no se puede saber sobre WARP, y mostramos consultas reales de direcciones de relay, incluidos dos casos en los que nuestra propia geolocalización discrepa de la de Apple. El artículo termina con una tabla de políticas. Para el conjunto más amplio de señales de anonimizadores, empieza por cómo funciona la detección de VPN y proxies.

Una larga cinta de celdas luminosas con una celda ampliada, que representa la comparación de una IP con la lista de salidas de Apple
Apple publica todos los prefijos de salida de su relay, así que es posible una coincidencia exacta.

Cómo detectar iCloud Private Relay: compara con la propia lista de Apple

Apple publica todos los prefijos de salida de Private Relay en un único CSV, así que una coincidencia exacta te indica que una IP es una salida de relay. La guía de Apple para operadores de redes y servidores remite a los servidores a esa lista, o a una marca del proveedor:

"Tu servidor puede reconocer el tráfico de Private Relay usando la lista anterior de direcciones IP de Private Relay o comprobando cómo lo clasifica tu proveedor de base de datos de geo IP."

La misma página nombra los campos que hay que buscar: "Otros campos relevantes pueden incluir: 'is_relay', 'is_hosting', 'privacy_service' o 'privacy_proxy'." Dicho de otro modo, Apple espera que uses su lista o un campo como el que devuelve nuestra API.

La lista, además, está limpia de una forma en que la mayoría de las listas de IP no lo están. La visión general de Private Relay de diciembre de 2021 de Apple afirma que las direcciones IP del relay "no se usan ni se comparten para ningún otro fin que prestar el servicio Private Relay". Así que una coincidencia exacta no tiene daños colaterales. El tráfico de nadie más sale desde esas direcciones.

Qué contiene el CSV de salidas de Apple

El archivo está en https://mask-api.icloud.com/egress-ip-ranges.csv. Lo descargamos y analizamos cada fila con el módulo ipaddress de Python.

MedidaValor (descargado el 12-10-2026, 09:40 UTC)
Filas (prefijos)285.091
Prefijos IPv441.734
Prefijos IPv6243.357
Direcciones IPv4 cubiertas105.647
Códigos de país distintos235
Columnas5: prefijo, país, región, ciudad y un campo final vacío
Tamaño del archivo12.047.231 bytes
Prefijos solapadosNinguno

Cada fila es una línea de geofeed. Estas son dos filas reales del archivo:

GeoIPHub API
172.224.226.0/27,GB,GB-EN,London, 104.28.46.99/32,ZM,,Lusaka,

La segunda fila tiene la región vacía, así que tu parser tiene que aceptar campos en blanco. Una trampa al contar: wc -l imprime 285.090, uno menos, porque el archivo no termina en salto de línea. Cuenta las filas analizadas.

Consultar el archivo periódicamente es barato. El servidor devolvió un ETag, "6acc40fb-b7d37f", y respondió a nuestra petición condicional con 304 Not Modified. Apple no dice con qué frecuencia actualiza la lista, así que no lo vamos a adivinar. Elige un calendario de actualización que te convenga.

Por qué no basta una regla por ASN o por /16

Las salidas del relay comparten redes con otro tráfico. En 104.28.0.0/16, 19.723 de 65.536 direcciones están en la lista de Apple, y el resto no. La visión general de Apple dice que el segundo relay "lo operan socios externos que son algunas de las mayores redes de distribución de contenidos (CDN) del mundo". Los tres relays que muestreamos están en dos de ellas, Cloudflare (AS13335) y Akamai (AS36183).

Bloquear AS13335 afecta a mucho más que a los usuarios de relay. Ponerlo en la lista de permitidos deja pasar mucho más que relays. La coincidencia por prefijo es la herramienta precisa, y puedes comprobar si cualquier IP es VPN o relay para ver cómo se clasifica una dirección concreta.

Por qué una IP de relay no es una IP de VPN

Private Relay oculta la IP del usuario al sitio, pero lo mantiene en su región real, solo cubre parte del tráfico y está limitado a dispositivos Apple validados con cuentas de pago. Por eso no debería puntuarse como una VPN.

El diseño reparte el conocimiento entre dos relays gestionados por empresas distintas. Apple gestiona el primero, que ve la dirección del usuario pero no el sitio. Un socio gestiona el segundo, que ve el sitio pero no al usuario. La página de Apple para operadores dice que, de este modo, ninguna parte, Apple incluida, puede ver los detalles de la navegación de un usuario.

SaltoVe la IP del usuarioVe qué sitio
iPhone, iPad o Mac del usuarioSíSí
Primer relay (Apple)SíNo
Segundo relay (una red socia, p. ej. Cloudflare o Akamai)NoSí
Tu servidorNo, solo la IP del relayEs el sitio

Cuatro frases de la página de Apple para operadores cambian cómo deberías tratar estas direcciones:

  • Alcance. "Private Relay protege la navegación web de los usuarios en Safari, las consultas de resolución DNS y el tráfico http no seguro de las apps." Una IP de relay no implica una sesión de Safari. Una app que hace peticiones http sin cifrar llega de la misma forma.
  • Región. "Private Relay conserva la región en la que está el usuario, así que tu servidor puede fiarse de la región asignada a la dirección IP que ve." La visión general de 2021 añade que "no permite a los usuarios presentarse como si se conectaran desde otro país o región".
  • Validación. "Todas las conexiones que usan Private Relay validan que el cliente es un iPhone, iPad o Mac y que el cliente tiene una suscripción válida a iCloud+."
  • Estabilidad. "La dirección IP del relay se mantendrá estable durante una sesión de navegación mientras el usuario interactúa con tu sitio web."

Una VPN permite al usuario elegir cualquier país y cubre todo el dispositivo. Cloudflare es franca sobre su propio producto. "Técnicamente, WARP es una VPN", escribió cuando lanzó WARP. Volvemos a WARP más abajo.

Una trampa práctica: algunas salidas del relay están en centros de datos, así que pueden activarse las marcas de hosting. Nuestra consulta de 172.224.226.1, un relay de la lista de Apple, devuelve is_hosting: true. Esa es la razón por la que los relays aparecen como IP de centros de datos, y por la que un bloqueo general del hosting atrapa a clientes de Apple.

Comparar una IP con la lista de Apple en Python

Carga el CSV en rangos enteros ordenados, una lista por versión de IP, y busca en ellos con búsqueda binaria. Actualiza con una petición condicional y conserva la última copia buena si una descarga falla o parece incorrecta.

Este es el script exacto que ejecutamos el 12 de octubre de 2026, con Python 3.9.6. Solo usa la biblioteca estándar.

GeoIPHub API
"""Match an IP against Apple's iCloud Private Relay egress list. Standard library only.""" import bisect, csv, ipaddress, os, tempfile, time, urllib.error, urllib.request URL = "https://mask-api.icloud.com/egress-ip-ranges.csv" CSV_PATH, ETAG_PATH, MIN_ROWS = "egress.csv", "egress.etag", 100_000 def load(path): """Parse the CSV into one sorted range list per IP version, then validate it.""" ranges = {4: [], 6: []} with open(path, newline="") as f: for row in csv.reader(f): if len(row) != 5: raise ValueError(f"bad row: {row}") net = ipaddress.ip_network(row[0], strict=False) ranges[net.version].append((int(net.network_address), int(net.broadcast_address), *row[:4])) index = {} for version, rs in ranges.items(): rs.sort() if any(b[0] <= a[1] for a, b in zip(rs, rs[1:])): raise ValueError(f"overlapping IPv{version} prefixes") index[version] = ([r[0] for r in rs], rs) return index, len(ranges[4]) + len(ranges[6]) def refresh(index=None, rows=0): """Fetch a new copy only if it changed. On any failure, keep serving the last good one.""" headers = {} if index and os.path.exists(ETAG_PATH): headers["If-None-Match"] = open(ETAG_PATH).read().strip() fd, tmp = tempfile.mkstemp(dir=".", suffix=".part") os.close(fd) try: with urllib.request.urlopen(urllib.request.Request(URL, headers=headers), timeout=60) as resp: with open(tmp, "wb") as out: out.write(resp.read()) etag = resp.headers.get("ETag", "") new_index, new_rows = load(tmp) if new_rows < max(MIN_ROWS, 0.9 * rows): raise ValueError(f"only {new_rows} rows, keeping the old file") os.replace(tmp, CSV_PATH) # atomic swap with open(ETAG_PATH, "w") as f: f.write(etag) print(f"downloaded new list: {new_rows:,} prefixes") return new_index, new_rows except urllib.error.HTTPError as e: print("not modified, keeping current list" if e.code == 304 else f"refresh failed: {e}") except Exception as e: print(f"refresh failed: {e}") finally: if os.path.exists(tmp): os.remove(tmp) return index, rows def match(index, ip): """Return Apple's row for a relay egress IP, or None.""" try: addr = ipaddress.ip_address(ip.strip()) except (ValueError, AttributeError): return None if addr.version == 6 and addr.ipv4_mapped: addr = addr.ipv4_mapped # ::ffff:104.28.46.99 becomes 104.28.46.99 starts, rs = index[addr.version] n = int(addr) i = bisect.bisect_right(starts, n) - 1 if i >= 0 and n <= rs[i][1]: return dict(zip(("prefix", "country", "region", "city"), rs[i][2:])) return None if __name__ == "__main__": t0 = time.time() index, rows = load(CSV_PATH) if os.path.exists(CSV_PATH) else (None, 0) index, rows = refresh(index, rows) print(f"{rows:,} prefixes ready in {time.time() - t0:.1f}s") for ip in ["104.28.46.99", "172.224.226.1", "2a02:26f7:c880::1", "::ffff:104.28.28.41", "162.159.192.1", "102.129.235.17", "not-an-ip"]: print(f"{ip:22} {match(index, ip)}")

La primera ejecución, a las 09:41 UTC, descargó el archivo e imprimió:

GeoIPHub API
downloaded new list: 285,091 prefixes 285,091 prefixes ready in 12.8s 104.28.46.99 {'prefix': '104.28.46.99/32', 'country': 'ZM', 'region': '', 'city': 'Lusaka'} 172.224.226.1 {'prefix': '172.224.226.0/27', 'country': 'GB', 'region': 'GB-EN', 'city': 'London'} 2a02:26f7:c880::1 {'prefix': '2a02:26f7:c880::/54', 'country': 'GB', 'region': 'GB-EN', 'city': 'London'} ::ffff:104.28.28.41 {'prefix': '104.28.28.41/32', 'country': 'AU', 'region': 'AU-SA', 'city': 'Adelaide'} 162.159.192.1 None 102.129.235.17 None not-an-ip None

162.159.192.1 es una dirección de conexión de WARP y 102.129.235.17 es un servidor VPN comercial, así que ninguna debería coincidir, y ninguna coincidió. También probamos los caminos de fallo:

  • Archivo sin cambios. La segunda ejecución envió el ETag guardado, recibió un 304 e imprimió "not modified, keeping current list". Cargar e indexar el archivo local tardó 4,3 segundos, así que construye el índice una sola vez al arrancar, no en cada petición.
  • Descarga defectuosa. Apuntamos URL a una ruta que no existe (el servidor de Apple respondió 400). Por separado, subimos el número mínimo de filas por encima del real. En ambos casos el script registró el fallo, borró su archivo temporal y siguió respondiendo con la copia anterior.
  • Direcciones mapeadas. ::ffff:104.28.28.41 coincidió con su fila IPv4. Los servidores de doble pila suelen registrar los clientes IPv4 de esa forma.

Como el archivo no tiene prefijos solapados, basta con una búsqueda binaria por consulta. El cargador rechaza cualquier archivo futuro que tenga solapamientos, y en ese caso la actualización recurre a la última copia buena.

Cómo detectar Cloudflare WARP, y por qué no hay lista

No puedes comparar WARP con una lista pública, porque Cloudflare no la publica. WARP solo puede identificarlo un proveedor que etiquete los rangos que conoce, o el propio dispositivo del usuario.

La documentación de políticas de salida de Cloudflare lo dice claramente: "Cloudflare no publica los rangos de IP de salida del Cloudflare One Client." Los "rangos de IP de WARP" que circulan en los hilos de los foros son otra cosa. La guía de firewall de Cloudflare dice de 162.159.192.0/24: "Esta IP la usa el cliente WARP de consumo (1.1.1.1 con WARP) y no es necesaria para los servicios Zero Trust." Ahí es donde se conecta la app WARP. Tu servidor web nunca ve esas direcciones como IP de clientes.

¿Recibe el sitio la dirección real del usuario por otra vía? No en la navegación normal. Las preguntas frecuentes de WARP de Cloudflare dicen: "1.1.1.1 + WARP sustituye tu dirección IP original por una IP de Cloudflare que representa de forma coherente y precisa tu ubicación aproximada. Esto ocurre tanto si el sitio está en la red de Cloudflare como si no."

Las mismas preguntas frecuentes documentan dos fugas. "WARP no hace de proxy del tráfico WebRTC." Y: "Si concedes a un sitio web acceso a tu micrófono o tu cámara, el tráfico se saltará WARP y tu dirección IP original será visible."

En el propio dispositivo, https://www.cloudflare.com/cdn-cgi/trace imprime un campo warp=. En nuestra máquina, que no usa WARP, mostraba warp=off. Solo lo ve la persona que abre esa página, así que ayuda a un equipo de soporte que depura la conexión de un cliente. No sirve de nada a un servidor que puntúa a un visitante.

Nuestra API devuelve relay_provider: "Cloudflare WARP" para los rangos de conexión de WARP publicados por Cloudflare. Una consulta de 162.159.192.1 devolvió is_relay: true, relay_provider: "Cloudflare WARP", is_hosting: true e is_anycast: true, con una puntuación de 24 y allow. Esa es la dirección a la que se conectan las apps WARP, no una que tu servidor vaya a ver como visitante.

Qué devuelve nuestra API para direcciones de Cloudflare que no están en la lista de Apple

Las direcciones de salida de la red de privacidad de Cloudflare que no están en la lista de Apple vuelven con la etiqueta "Cloudflare", mientras que los rangos de conexión de WARP publicados por Cloudflare vuelven como "Cloudflare WARP". Este es el caso de 104.28.210.10. Está en el mismo /16 que dos de nuestros relays de Apple, pero no figura en la lista de Apple. Es una copia recortada de nuestra consulta a las 09:40 UTC del 12 de octubre de 2026, con los valores sin editar:

GeoIPHub API
{ "ip": "104.28.210.10", "asn": { "asn": 13335, "org": "CLOUDFLARENET - Cloudflare, Inc.", "user_type": "consumer_privacy_network" }, "geo": { "country_code": "CA", "city": "Toronto" }, "detection": { "is_vpn": false, "is_hosting": false, "is_relay": true, "is_anonymous": false, "relay_provider": "Cloudflare" }, "scoring": { "fraud_score": 9, "recommended_action": "allow", "detection_methods": ["relay_ip"] } }
IP¿En la lista de Apple?relay_providerOtros camposPuntuación, acción, métodos
104.28.210.10NoCloudflareAS13335, consumer_privacy_network, is_vpn false, is_hosting false9, allow, relay_ip
104.28.28.41Sí (AU, Adelaida)iCloud Private RelayAS13335, consumer_privacy_network9, allow, relay_ip
162.159.192.1No (dirección de conexión de WARP)Cloudflare WARPis_hosting true, is_anycast true24, allow, datacenter_ip + no_ptr_datacenter + relay_ip
102.129.235.17 (VPN, para comparar)Nononeis_vpn true, is_anonymous true92, block, known_vpn_server + openvpn_open + ipsec_open

Interpreta "Cloudflare" como "una dirección de salida de privacidad para consumidores de Cloudflare no atribuida a Apple". No significa un usuario de WARP confirmado, y no afirmamos que lo sea. Nuestra referencia de la API solo enumera hoy dos valores de relay_provider, "iCloud Private Relay" y "Cloudflare WARP", así que este tercer valor no está documentado por ahora. Hemos pedido al equipo de backend que lo documente.

Lo útil está en las dos primeras filas. Dentro de un mismo /16 de Cloudflare, la coincidencia exacta con el CSV separa el relay de Apple (104.28.28.41) de otras salidas de privacidad de Cloudflare (104.28.210.10). Nuestra etiqueta coincide con la lista de Apple en ambos casos. Las dos puntúan 9 y allow, así que tu política es la misma en cualquier caso. La fila de la VPN tampoco tiene nombre de proveedor: nuestros sondeos la detectaron, pero no está en ninguna lista de proveedores que tengamos, que es por qué una VPN puede quedarse sin nombre.

Private Relay y WARP lado a lado

PreguntaiCloud Private RelayCloudflare WARP
Quién lo gestionaApple, con redes socias para el segundo relayCloudflare
Quién puede usarloSuscriptores de iCloud+ en un iPhone, iPad o Mac validadoCualquiera que instale la app gratuita 1.1.1.1
Qué cubreSafari, consultas DNS, tráfico http no seguro de las appsEl tráfico del dispositivo, salvo WebRTC y los sitios con acceso a la cámara o al micrófono
Lista pública de salidasSí, el CSV de AppleNo
UbicaciónSe conserva la región; ciudad aproximada por defecto, más amplia si el usuario lo eligeUna IP de Cloudflare que representa la ubicación aproximada del usuario
Cómo lo identifica un servidorCoincidencia exacta con el CSV de Apple, o la marca de relay de un proveedorSolo la etiqueta de un proveedor

Ambos pueden estar en AS13335, así que la red por sí sola no separa a ninguno.

Qué devuelven nuestras consultas para IP de relay

En nuestras consultas, las direcciones de Private Relay vuelven como relays, no como anónimas ni como VPN, y quedan en allow salvo que haya otras evidencias. Seguimos 104.28.46.99 de principio a fin. La fila de Apple dice Zambia, Lusaka. Esta es la petición, tal como la enviarías con una clave:

GeoIPHub API
curl https://api.geoiphub.com/v1/lookup/104.28.46.99 \ -H "x-api-key: YOUR_API_KEY"

La ejecutamos sin clave a las 09:40 UTC del 12 de octubre de 2026, algo que la API permite para un uso ligero. Esta es una copia recortada de la respuesta, con los valores sin editar:

GeoIPHub API
{ "ip": "104.28.46.99", "asn": { "asn": 13335, "org": "CLOUDFLARENET - Cloudflare, Inc.", "asn_type": "unknown", "user_type": "consumer_privacy_network" }, "geo": { "country_code": "AO", "region": "Luanda", "city": "Luanda", "geo_confidence": 0.8 }, "detection": { "is_proxy": false, "is_vpn": false, "is_tor": false, "is_hosting": false, "is_relay": true, "is_anonymous": false, "anonymity_level": "medium", "relay_provider": "iCloud Private Relay" }, "scoring": { "fraud_score": 9, "recommended_action": "allow", "detection_methods": ["relay_ip"] } }

El relay tiene nombre, is_vpn e is_anonymous son false, y scoring.detection_methods muestra la única señal que se activó: relay_ip. La puntuación es 9, así que la acción es allow. La geolocalización dice Angola, algo que contradice la fila de Apple; lo tratamos en la siguiente sección. La decisión para esta dirección es permitirla, limitar su tasa como dirección compartida y tomar su ubicación de la fila de Apple.

Estos son los otros relays junto a una VPN real:

IPFila de AppleNuestro resultado del 12-10-2026
172.224.226.1GB, GB-EN, LondresAS36183 Akamai, asn_type hosting; is_relay true, iCloud Private Relay, is_hosting true; puntuación 24, allow; datacenter_ip, no_ptr_datacenter, relay_ip; geo GB, Londres
104.28.28.41AU, AU-SA, AdelaidaAS13335; is_relay true, iCloud Private Relay; puntuación 9, allow; relay_ip; geo AU, Sídney, 0,8
102.129.235.17 (VPN)No está en la listaAS834 IPXO; is_vpn true, is_anonymous true; puntuación 92, block; known_vpn_server, openvpn_open, ipsec_open

La marca de relay no reduce la puntuación. La aumenta. En 104.28.46.99, relay_ip es la única entrada de detection_methods, así que explica toda la puntuación de 9. 172.224.226.1 puntúa 24 porque también se activaron dos señales de centro de datos, lo que la deja a un punto del límite de allow, que es 25. Así que los relays quedan en allow salvo que haya otras evidencias. Si algo más cuenta en contra de la dirección, como una entrada en una lista de abuso, la puntuación sube y la acción puede pasar a review. La página sobre cómo se construye la puntuación enumera las señales.

La API etiqueta el relay. El CSV de Apple es tu comprobación independiente, y el comparador de arriba la ejecuta sin depender de nosotros. Puntuar un relay como si fuera una VPN es el caso clásico de los falsos positivos en la detección de VPN.

Por qué los usuarios de Private Relay muestran una ciudad incorrecta, también en nuestros datos

Una IP de relay solo garantiza la región del usuario y, por defecto, una ciudad aproximada. La única ubicación fiable para una IP de relay es la propia fila de Apple, y nuestra base de datos no siempre coincide con ella.

La página de Apple para operadores dice que la IP del relay "representa con precisión, por defecto, la ubicación aproximada del cliente a nivel de ciudad". Los usuarios pueden ampliarla. La Guía del usuario del iPhone actual de Apple enumera dos opciones de Ubicación de la dirección IP: "Mantener ubicación general" y "Usar país y zona horaria". La visión general de 2021 las describe. La primera elige direcciones que "corresponden aproximadamente a un área a nivel de ciudad coherente con el lugar desde el que el usuario se está conectando realmente". La segunda elige direcciones "en un área más amplia, más regional", y "todas las direcciones IP del relay seguirán correspondiendo al país y la zona horaria originales del usuario".

Comparamos nuestra geolocalización con las filas de Apple para los tres relays:

IPFila de AppleNuestra geolocalización¿Coinciden?
104.28.46.99ZM, LusakaAO, Luanda (geo_confidence 0,8)No, país distinto
104.28.28.41AU, AU-SA, AdelaidaAU, Sídney (geo_confidence 0,8)País sí, ciudad no
172.224.226.1GB, GB-EN, LondresGB, LondresSí

Dos de las tres discrepan. Zambia frente a Angola es un error a nivel de país, del tipo que hace saltar una regla de licencias o de sanciones. Adelaida frente a Sídney acierta el país y falla la ciudad. Tres IP no son un benchmark, pero bastan para fijar una regla: para las IP de relay, toma la ubicación de la fila de Apple, no de ninguna base de datos de geolocalización, incluida la nuestra. Decide por país o región y trata la ciudad como una pista. Hemos comunicado ambas discrepancias a nuestro equipo de backend.

¿Deberías bloquear Private Relay o WARP? Déjalos pasar y puntúa la sesión

No. Apple valida a todos los clientes del relay y dice que las reglas antifraude basadas en IP "podrían necesitar ajustes", así que permite el tráfico de Private Relay, limita su tasa como si fuera una dirección compartida de operador y refuerza la verificación solo cuando otras evidencias apunten a un riesgo.

La página de Apple para operadores es directa en ambos puntos:

"La detección de fraude tradicional que se basa en direcciones IP podría necesitar ajustes para garantizar que los usuarios legítimos no se vean afectados."

"Considera tratar estas direcciones como direcciones de NAT a nivel de operador o direcciones IP empresariales de mayor tamaño para tener mejor en cuenta este tipo de tráfico, ya que a muchos usuarios de Private Relay se les puede asignar una misma dirección IP de relay."

Apple también ofrece una alternativa a la página de desafío. Señala que "las mitigaciones habituales incluyen CAPTCHAs o bloquear el tráfico por completo", y dice que "todos los dispositivos Apple con iOS 16, iPadOS 16 o macOS Monterey y versiones posteriores admiten Private Access Tokens", que permiten a un servidor comprobar que se trata de un dispositivo legítimo sin identificar al usuario.

¿Pueden los defraudadores usar relays? Pueden, pero Private Relay necesita un dispositivo Apple y una cuenta de pago de iCloud+. Apple dice que la validación "está diseñada para garantizar que solo los dispositivos Apple válidos y las cuentas en regla puedan usar Private Relay". Eso lo convierte en una forma cara de crear cuentas en masa. WARP es una app gratuita, así que da un poco más de peso a tus otras señales en las sesiones de WARP, no un bloqueo. Los problemas más difíciles de ocultación de IP están en otra parte, como los proxies móviles.

Un detalle para tu limitador de tasa: el consejo de Apple sobre el NAT a nivel de operador se refiere a cómo tratas la dirección, no a una marca. Nuestro threat.is_cgnat fue false en las tres consultas de relay. Basa el tratamiento de direcciones compartidas en is_relay o en la coincidencia con el CSV. Para comprobar una dirección de tus propios logs, pégala en la herramienta gratuita de consulta de IP.

Lo que vesAcciónPor qué
IP en el CSV de Apple o is_relay true, sin otras evidencias de riesgoPermitir; limitar la tasa por cuenta o por sesión, no por IPApple valida el dispositivo y la cuenta, y muchos usuarios comparten una misma IP de relay
IP de relay o de WARP más una señal de riesgo en la cuenta (cuenta nueva, país de pago fuera de la región de la IP, velocidad de registros)Reforzar la verificación: un Private Access Token donde se admita; si no, 2FA o una comprobación por email, no un muro de CAPTCHALa IP no aporta evidencias; la señal de la cuenta sí
IP de relay que además cae en review, por ejemplo porque está en una lista de abusoRevisarEsa evidencia se refiere a la dirección, no al relay
IP etiquetada como WARPPermitir y puntuar la sesiónEs gratuito y habitual; oculta al usuario pero no demuestra intención
Reglas de ubicación (licencias, impuestos) sobre tráfico de relayDecidir por país o región según la fila de Apple, nunca por ciudadApple conserva la región; la ciudad es aproximada o más amplia según el ajuste

Tres comprobaciones para hacer en tus propios logs esta semana:

  • Cuenta los usuarios de relay que has rechazado. Cruza los registros, inicios de sesión y rechazos de los últimos 30 días con el CSV de Apple usando el comparador de arriba. ¿A cuántos usuarios de relay han rechazado o desafiado tus reglas?
  • Busca bloqueos por ASN y por hosting. Busca en tus reglas AS13335, AS36183 o is_hosting. 172.224.226.1 es un relay con is_hosting: true, así que un bloqueo del hosting afecta a usuarios de relay.
  • Revisa los límites por IP y las geovallas por ciudad. Apple aconseja tratar las IP de relay como NAT a nivel de operador, así que un límite por IP pensado para un hogar frenará a muchos usuarios, y una geovalla a nivel de ciudad fallará con una ubicación aproximada.

Preguntas frecuentes

¿Cómo sé si iCloud Private Relay está activado?

En un iPhone, abre Ajustes, toca tu nombre, luego iCloud y después Private Relay. Como operador de un sitio no puedes ver el ajuste, solo la IP: si coincide con la lista de salidas de Apple, esa petición llegó a través de Private Relay.

¿iCloud Private Relay es una VPN?

No. Solo cubre Safari, el DNS y el tráfico http no seguro de las apps, mantiene al usuario en su propio país y región, y está limitado a dispositivos Apple validados con iCloud+.

¿Cloudflare WARP oculta tu dirección IP?

Sí. Cloudflare afirma que WARP sustituye la IP original por una IP de Cloudflare tanto si el sitio está en Cloudflare como si no, salvo en el tráfico WebRTC y en los sitios a los que se concede acceso a la cámara o al micrófono.

¿Dónde está la lista de direcciones IP de iCloud Private Relay?

Apple la publica en mask-api.icloud.com/egress-ip-ranges.csv. El 12 de octubre de 2026 contenía 285.091 prefijos IPv4 e IPv6 de 235 códigos de país.

¿Puede un sitio web ver la IP real detrás de Private Relay?

Por diseño, no. El sitio solo ve la IP del relay, y solo el primer relay de Apple ve la dirección propia del usuario.

¿Debería bloquear iCloud Private Relay?

No. Apple indica que puede ser necesario ajustar las reglas antifraude basadas en IP para los usuarios de relay. Permítelo, limita su tasa como si fuera NAT a nivel de operador y refuerza la verificación solo ante otras señales de riesgo.

Escrito por

Equipo de GeoIPHub

El equipo detrás de la API de GeoIPHub

Escrito por el equipo de GeoIPHub, las personas que crean la API de inteligencia IP de GeoIPHub y su escáner. Los borradores se preparan con ayuda de IA y el equipo los edita; los ejemplos de la API son consultas reales contra la API en producción, salvo que se indique que son ilustrativos.

Comparte este artículo
Más artículos

Artículos relacionados