업타임 체크 서버 IP 주소 나열

이 문서에서는 업타임 체크 서버에 사용되는 IP 주소 목록을 가져오는 방법과 로그에서 업타임 체크 서버의 트래픽을 식별하는 방법을 보여줍니다.

IP 주소 나열

방화벽 뒤에 있는 서비스를 확인하는 경우, 업타임 확인에 사용되는 현재 IP 주소 집합에서 전송되는 트래픽을 허용하도록 서비스 방화벽을 구성할 수 있습니다. 이러한 IP 주소를 가져오려면 다음 지침을 따릅니다.

Console

  1. Google Cloud 콘솔에서  업타임 체크 페이지로 이동합니다.

    업타임 체크로 이동

    검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Monitoring인 결과를 선택합니다.

  2. 업타임 체크 메뉴에서 다운로드를 클릭합니다. uptime-source-ips.txt 파일이 다운로드되고 IP 주소가 포함됩니다.

gcloud

gcloud monitoring uptime list-ips 명령어를 실행합니다.

gcloud monitoring uptime list-ips

메소드가 각 IP 주소에 대해 다음 정보를 반환합니다.

  • IPv4 또는 IPv6 형식의 IP 주소(범위 아님).
  • 지역: USA, EUROPE, SOUTH_AMERICA 또는 ASIA_PACIFIC.
  • 리전 내 위치

API

Monitoring API의 uptimeCheckIps.list 메서드를 호출합니다.

메소드가 각 IP 주소에 대해 다음 정보를 반환합니다.

  • 지역: USA, EUROPE, SOUTH_AMERICA 또는 ASIA_PACIFIC.
  • 지역 내에서 보다 구체적인 위치.
  • IPv4 또는 IPv6 형식의 IP 주소(범위 아님).

C#

Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

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

Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

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

Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.


// 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

Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

// 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

Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

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

Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

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

Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

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

업타임 체크는 모든 IP 주소에서 가져올 수 있지만, 각 시간 간격에 각 지리적 위치의 주소가 하나만 사용됩니다. 지리적 위치는 이전 섹션과 같이 업타임 체크 대시보드에 나열됩니다. 또한 무료 웹 기반 서비스를 사용해서 다운로드한 IP 주소의 등록 위치를 식별할 수 있습니다.

로그에서 업타임 체크 트래픽 식별

서비스의 요청 로그에서 다음 정보를 확인하여 업타임 확인 서버의 요청을 식별할 수 있습니다.

  • ip: ip 필드에는 업타임 체크 서버에 사용되는 주소 중 하나가 포함됩니다. 모든 IP 주소를 나열하는 방법은 IP 주소 나열을 참조하세요.
  • 사용자 에이전트: User-Agent 헤더 값은 항상 다음과 같습니다.

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

    User-Agent 커스텀 헤더를 지정하면 양식 유효성 검사 오류가 발생하고 확인 구성을 저장할 수 없습니다.

다음 단계