CloudFlare y Real IP

He estado intentando que las IPs reales aparezcan en Discourse sin mucho éxito. He añadido el archivo yml de Cloudflare a mi configuración y he validado que discourse.conf dentro del contenedor tiene las líneas correctas:

set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 104.24.0.0/14;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2a06:98c0::/29;
set_real_ip_from 2c0f:f248::/32;
real_ip_header CF-Connecting-IP;

También he validado que $http_cf_connecting_ip tiene la IP correcta en los registros, pero por alguna razón $remote_addr no se está configurando correctamente. ¿Alguien más se ha encontrado con esto?

¿Quizás usar la plantilla de Cloudflare?

Añade

  - "templates/cloudflare.template.yml"

a tu app.yml donde están las otras plantillas.

1 me gusta

¡Gracias por la respuesta! Estoy usando la plantilla de Cloudflare. Después de investigar más, parece que no está funcionando porque todas las remote_addr que llegan a Nginx son direcciones de Docker. Estoy tratando de diagnosticar por qué es así.

¿También estás utilizando un servidor proxy inverso local? Si es así, necesitarás agregar esa dirección a tu configuración de set_real_ip (¿y tal vez el proxy inverso se encargue de las cosas de Cloudflare?).

No estoy ejecutando intencionalmente un proxy inverso, pero he especificado una IP específica para exponer puertos en mi app.yml.

exponer:
  - "xxx.xxx.xxx.xxx:80:80"    # http
  - "xxx.xxx.xxx.xxx:443:443"  # https

No lo sé. ¿Quizás necesites incluir algunas IPs de Docker?

¿La IP que muestra Discourse es una IP de Docker?

2 Me gusta

¿Seguiste la instalación estándar? Esto normalmente funciona directamente con la plantilla.

2 Me gusta

¡Gracias a ambos por la ayuda! Resultó que Immunify360 en nuestro VPS se estaba inyectando como un proxy antes del contenedor. Agregar la IP de Docker a set_real_ip_from solucionó temporalmente el problema mientras investigo cómo deshabilitar Immunify.

1 me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.