App Engine 서비스의 아웃바운드 IP 주소

URL 가져오기, Socket, Mail API와 같은 아웃바운드 서비스는 대규모 IP 주소 풀을 사용합니다. 이러한 풀의 IP 주소 범위는 계속 변합니다. 실제로, 동일한 애플리케이션에서 연달아 실행된 2개의 API 호출은 서로 다른 2개의 IP 주소에서 시작된 것처럼 보일 것입니다.

App Engine이 아웃바운드 트래픽에 사용하는 현재 IP 주소 범위를 찾으려면 다음을 수행합니다.

  1. 명령어 셸에 다음 명령어를 입력합니다.
    nslookup -q=TXT _cloud-netblocks.googleusercontent.com 8.8.8.8

    응답에 App Engine의 모든 현재 _cloud-netblocks가 포함됩니다. 예를 들면 다음과 같습니다.

    Non-authoritative answer:
    _cloud-netblocks.googleusercontent.com  text = "v=spf1 include:_cloud-netblocks1.googleusercontent.com include:_cloud-netblocks2.googleusercontent.com include:_cloud-netblocks3.googleusercontent.com include:_cloud-netblocks4.googleusercontent.com include:_cloud-netblocks5.googleusercontent.com ?all"

    이러한 결과는 정적이지 않습니다. 명령어를 입력하면 넷블록이 위 예시보다 더 많거나 적게 표시될 수 있습니다.

  2. 응답에 나열된 블록마다 다음 쿼리를 입력합니다.
    nslookup -q=TXT netblock-name 8.8.8.8

    예를 들어 이전 쿼리가 넷블록을 5개 반환하면 다음과 같은 쿼리 5개를 만들 수 있습니다.

    nslookup -q=TXT _cloud-netblocks1.googleusercontent.com 8.8.8.8
    nslookup -q=TXT _cloud-netblocks2.googleusercontent.com 8.8.8.8
    nslookup -q=TXT _cloud-netblocks3.googleusercontent.com 8.8.8.8
    nslookup -q=TXT _cloud-netblocks4.googleusercontent.com 8.8.8.8
    nslookup -q=TXT _cloud-netblocks5.googleusercontent.com 8.8.8.8

특정 넷블록의 각 쿼리는 App Engine 발신 트래픽에 사용할 수 있는 IP 범위를 반환합니다. 예를 들어 위 _cloud-netblocks1 쿼리는 다음을 반환할 수 있습니다.

Non-authoritative answer:
_cloud-netblocks1.googleusercontent.com text = "v=spf1 include:_cloud-netblocks6.googleusercontent.com include:_cloud-netblocks7.googleusercontent.com ip6:2600:1900::/35 ip4:8.34.208.0/20 ip4:8.35.192.0/21 ip4:8.35.200.0/23 ip4:23.236.48.0/20 ip4:23.251.128.0/19 ip4:34.64.0.0/11 ip4:34.96.0.0/14 ?all"

이 예시에서는 App Engine 트래픽에 8.34.208.0/208.35.192.0/21 IP 범위를 사용할 수 있음을 알 수 있습니다. 추가 넷블록에 대한 다른 쿼리는 추가 IP 범위를 반환할 수 있습니다.

고정 IP 주소 필터링은 안전하고 효과적인 보호 방법으로 간주되지 않는다는 점에 유의하세요. 예를 들어 공격자는 사용자의 애플리케이션과 동일한 IP 주소 범위를 공유할 수 있는 악성 App Engine 앱을 만들 수 있습니다. 이 방법 대신 OAuthCerts를 사용하는 심층 방어 방식을 사용하는 것이 좋습니다.