DNS 설정으로 google api 및 colab-notebook 사용 하기
Last updated
Last updated
private 환경의 방화벽 정책은 기본적으로 egress 0.0.0.0/0 으로 외부로 나가는 트래픽이 제한 되어 있을 것이다.
이 경우 public 한 외부 도메인을 호출을 하기 위해서는
api 에 대한 ip 대역을 해줘야 하거나 fqdn 으로 도메인 기반 방화벽으로 예외 처리를 해야 한다.
일단 egress를 전부 다 막고(egress 0.0.0.0/0 거부 ) 노트북 런타임을 생성 해봤다.
User network error detected for the NotebookRuntime '481923'.
Please verify that the VPC allows outbound traffic to notebook domains [*aiplatform.googleapis.com,
*.aiplatform-notebook.cloud.google.com] and try again.
에러 메세지가 발생하며 생성이 되지 않는다.
colab을 호출하는 URL은 도메인 기반으로 되어 있다 따라서 *.aiplatform.googleapis.com 도메인만 방화벽에 등록을 해주면 되긴 하는데 아쉽게도 GCP의 방화벽은 fqdn 규칙만 허용 하고(astrik) 도메인을 지원하지 않는다.
위의 공식 문서를 보면 DNS 작업을 진행 해야 한다고 나와 있다. 이것을 조금 더 풀이해보자면 아래와 같은 그림으로 표현 할 수 있을 것이다.
DNS 작업을 진행 하면 아래 ping test와 같은 결과가 나온다.
DNS 작업 이전 ping test
kimutae5@kth-pri-1:~$ ping 1.aiplatform-notebook.cloud.google.com
PING www3.l.google.com (142.250.206.238) 56(84) bytes of data.
DNS 작업 이후 ping test
kimutae5@kth-pri-1:~$ ping 1.aiplatform-notebook.cloud.google.com
PING private.aiplatform-notebook.cloud.google.com (199.36.153.6) 56(84) bytes of data.
핵심은 다음과 같다. DNS 작업전에는 142.250.206.238 처럼 다양한 IP대역으로 호출을 하여 방화벽 등록 IP를 특정 짓기 어려웠다면
작업 이후에는 아래의 3개 endpoint(URL)의 IP를
*.aiplatform.googleapis.com
*.aiplatform-notebook.googleusercontent.com
*.aiplatform-notebook.cloud.google.com
아래의 4개의 IP로만 제한 하는 것이다.
199.36.153.4
199.36.153.5
199.36.153.6
199.36.153.7
이제 IP가 특정 되었으니 해당 IP를 방화벽에 등록 하면 된다.
[참고]a - z 까지 문자를 순차로 대입하는 스크립트
for x in $(echo {a..z}) ;do ping $x.aiplatform-notebook.cloud.google.com -c 1 |grep PING ; done ;
이 글은 멀티도메인(*astrik도메인) 등록이 안되는 방화벽의 문제를 DNS로 해소 하는 방법이다. 기초 지식으로 방화벽과 dns는 OSI7 layer에서 어디에 위치 하였는지 아는 것이 중요하며 방화벽과 DNS의 작동 방식 설정방법(cname , a record )등에 대한 사전 지식이 요구 된다.