Enumerar las direcciones IP del servidor de la verificación de tiempo de actividad

En este documento, se muestra cómo obtener una lista de las direcciones IP que usan los servidores de verificación de tiempo de actividad y cómo puedes identificar el tráfico de los servidores de verificación de tiempo de actividad en tus registros.

Mostrar lista de direcciones IP

Cuando verificas un servicio que está detrás de un firewall, puedes configurar el firewall de tu servicio para que acepte el tráfico del conjunto actual de direcciones IP que se usan en la verificación de tiempo de actividad. Para obtener estas direcciones IP, sigue estas instrucciones:

Console

  1. En el panel de navegación de la consola de Google Cloud, selecciona Monitoring y, luego,  Verificaciones de tiempo de actividad:

    Ve a Verificaciones de tiempo de actividad

  2. En el menú Verificaciones de tiempo de actividad, haz clic en Descargar. Se descarga un archivo uptime-source-ips.txt que contiene las direcciones IP.

gcloud

Ejecuta el comando gcloud monitoring uptime list-ips:

gcloud monitoring uptime list-ips

El método muestra la siguiente información para cada dirección IP:

  • La dirección IP, no un rango, en formato IPv4 o IPv6.
  • La región: USA, EUROPE, SOUTH_AMERICA o ASIA_PACIFIC.
  • Es la ubicación dentro de la región.

API

Llama al método uptimeCheckIps.list de la API de Monitoring.

El método muestra la siguiente información para cada dirección IP:

  • La región: USA, EUROPE, SOUTH_AMERICA o ASIA_PACIFIC.
  • Una ubicación más específica dentro de la región.
  • La dirección IP, no un rango, en formato IPv4 o IPv6.

C#

Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

public static object ListUptimeCheckIps()
{
    var client = UptimeCheckServiceClient.Create();
    var ips = client.ListUptimeCheckIps(new ListUptimeCheckIpsRequest());
    foreach (UptimeCheckIp ip in ips)
    {
        Console.WriteLine("{0,20} {1}", ip.IpAddress, ip.Location);
    }
    return 0;
}

Java

Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

private static void listUptimeCheckIps() throws IOException {
  try (UptimeCheckServiceClient client = UptimeCheckServiceClient.create()) {
    ListUptimeCheckIpsPagedResponse response =
        client.listUptimeCheckIps(ListUptimeCheckIpsRequest.newBuilder().build());
    for (UptimeCheckIp config : response.iterateAll()) {
      System.out.println(config.getRegion() + " - " + config.getIpAddress());
    }
  } catch (Exception e) {
    usage("Exception listing uptime IPs: " + e.toString());
    throw e;
  }
}

Go

Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.


// listIPs is an example of listing uptime check IPs.
func listIPs(w io.Writer) error {
	ctx := context.Background()
	client, err := monitoring.NewUptimeCheckClient(ctx)
	if err != nil {
		return fmt.Errorf("NewUptimeCheckClient: %w", err)
	}
	defer client.Close()
	req := &monitoringpb.ListUptimeCheckIpsRequest{}
	it := client.ListUptimeCheckIps(ctx, req)
	for {
		config, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return fmt.Errorf("ListUptimeCheckIps: %w", err)
		}
		fmt.Fprintln(w, config)
	}
	fmt.Fprintln(w, "Done listing uptime check IPs")
	return nil
}

Node.js

Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

// Imports the Google Cloud client library
const monitoring = require('@google-cloud/monitoring');

// Creates a client
const client = new monitoring.UptimeCheckServiceClient();

// List uptime check IPs
const [uptimeCheckIps] = await client.listUptimeCheckIps();
uptimeCheckIps.forEach(uptimeCheckIp => {
  console.log(
    uptimeCheckIp.region,
    uptimeCheckIp.location,
    uptimeCheckIp.ipAddress
  );
});

PHP

Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

use Google\Cloud\Monitoring\V3\Client\UptimeCheckServiceClient;
use Google\Cloud\Monitoring\V3\ListUptimeCheckIpsRequest;

/**
 * Example:
 * ```
 * list_uptime_check_ips($projectId);
 * ```
 */
function list_uptime_check_ips(string $projectId): void
{
    $uptimeCheckClient = new UptimeCheckServiceClient([
        'projectId' => $projectId,
    ]);
    $listUptimeCheckIpsRequest = new ListUptimeCheckIpsRequest();

    $pages = $uptimeCheckClient->listUptimeCheckIps($listUptimeCheckIpsRequest);

    foreach ($pages->iteratePages() as $page) {
        $ips = $page->getResponseObject()->getUptimeCheckIps();
        foreach ($ips as $ip) {
            printf(
                'ip address: %s, region: %s, location: %s' . PHP_EOL,
                $ip->getIpAddress(),
                $ip->getRegion(),
                $ip->getLocation()
            );
        }
    }
}

Python

Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

def list_uptime_check_ips() -> pagers.ListUptimeCheckIpsPager:
    """Gets all locations and IP addresses used by uptime check servers

    Returns:
        A list of locations and IP addresses of uptime check servers.
        Iterating over this object will yield results and resolve additional pages automatically.
    """
    client = monitoring_v3.UptimeCheckServiceClient()
    ips = client.list_uptime_check_ips(request={})
    print(
        tabulate.tabulate(
            [(ip.region, ip.location, ip.ip_address) for ip in ips],
            ("region", "location", "ip_address"),
        )
    )
    return ips

Ruby

Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

def list_ips
  require "google/cloud/monitoring"
  client = Google::Cloud::Monitoring.uptime_check_service

  # Iterate over all results.
  client.list_uptime_check_ips({}).each do |element|
    puts "#{element.location} #{element.ip_address}"
  end
end

Las verificaciones de tiempo de actividad pueden provenir de cualquiera de las direcciones IP, aunque solo se usa una dirección de cada ubicación geográfica para cada intervalo de tiempo. Las ubicaciones geográficas se enumeran en el panel de verificaciones de tiempo de actividad, como se muestra en la sección anterior. También puedes usar servicios gratuitos basados en la Web para identificar las ubicaciones registradas de las direcciones IP que descargaste.

Identifica el tráfico de la verificación de tiempo de actividad en los registros

Puedes identificar solicitudes de los servidores de verificación de tiempo de actividad mediante la siguiente información en los registros de solicitud de tu servicio:

  • ip: El campo ip contiene una de las direcciones que usan los servidores de verificación de tiempo de actividad. Para obtener información sobre cómo enumerar todas las direcciones IP, consulta Cómo enumerar direcciones IP.
  • User-Agent: El valor del encabezado User-Agent es siempre el siguiente:

    GoogleStackdriverMonitoring-UptimeChecks(https://cloud.google.com/monitoring)
    

    Especificar un encabezado personalizado User-Agent genera un error de validación de formato y evita que se guarde la configuración de verificación.

¿Qué sigue?