[GCP] Google Cloud에서 Custom VPC 인프라 구성하기(subnet, router, NAT)

NewNewDaddy·2024년 12월 9일
0

GCP

목록 보기
3/3
post-thumbnail

0. INTRO

  • VPC(Virtual Private Cloud)는 클라우드에서 사용자가 가상 네트워크 환경을 설정하고 관리할 수 있도록 해주는 서비스로 논리적으로 격리된 네트워크 환경을 사용자의 편의에 맞게 설정할 수 있다.
  • 이번 글에서는 Google Cloud에 기본적으로 생성되어있는 Default VPC가 아닌, 사용자 지정 새로운 VPC를 생성하여 그 안에 추가적인 네트워크 인프라들을 배치해보는 실습을 진행해 볼 것이다.
  • 구체적인 실습 인프라 아키텍처 및 생성될 리소스들은 아래와 같다.
    • Custom VPC
    • Private Subnet, Public Subnet
    • Cloud Router
    • Cloud Nat
    • VM in Private Subnet
    • VM in Public Subnet
  • 위의 아키텍처대로 인프라들을 구성하고 Public Subnet에 있는 인스턴스를 통해 Private Subnet에 있는 인스턴스에 SSH로 접근을 하여, 해당 인스턴스가 NAT를 통해 인터넷과 통신이 가능한지 확인해 볼 것이다.

1. VPC 기본 인프라 구성

  • VPC networks > + Create VPC Network 탭을 클릭하여 새로운 VPC 생성 설정으로 들어간다.

  • VPC 이름 설정 후 아래와 같이 private subnet과 public subnet을 생성해준다. 이 때 private subnet에 대해서만 Private Google Access 설정을 On으로 선택한다.

  • Firewall rules의 경우도 기본적으로 설정되어 있는 규칙 중 icmp 네트워크를 허용하는 my-custom-vpc-allow-icmp과 ssh를 허용하는 my-custom-vpc-allow-ssh 이렇게 두 가지 규칙을 적용한 후 VPC를 생성한다.

2. 각 서브넷에 서버 생성

  • 위에서 생성한 커스텀 VPC의 public subnet과 private subnet에 각각 서버를 한 대 씩 생성한다.

1) VM in Public Subnet

  • Networking > Network interfaces 메뉴에서 Network를 my-custom-vpc로 선택하고, subnet 역시 public-subnet으로 선택해준다. 또, 외부에서 접근이 가능해야 하기 때문에 External IPv4 addressEphemeral로 선택한다.

2) VM in Private Subnet

  • Networking > Network interfaces 메뉴에서 Network를 my-custom-vpc로 선택하고, subnet은 private-subnet으로 선택해준다. 이 서브넷에 위치한 서버는 외부에서 접근이 필요 없기 때문에 내부IP만 있으면 된다. 따라서 External IPv4 addressNone으로 선택한다.

3. 서버 접속

  • Private Subnet에 있는 서버(private-vm)는 외부에서 접속이 불가능하기 때문에 같은 VPC의 Public Subnet에 위치한 서버(public-vm)를 통로로 활용하여 접속을 할 수 있다. 따라서 Public Subnet에 있는 서버는 Bastion Host로서의 역할을 할 수 있다.

1) public-vm에 접속 후 ssh key 생성

  • UI의 우측에 보이는 SSH 버튼을 눌러 콘솔에서 간단하게 서버 접속이 가능하다.

  • ssh-keygen 명령어를 입력하여 새로운 ssh 키페어를 생성하고, cat 명령어를 통해 공개키를 확인한다.

    ssh-keygen
    cat /home/hyunsoo/.ssh/id_rsa.pub

2) private-vm에 ssh key 정보 추가

  • 위에서 생성한 ssh key를 통해 private-vm에 접속할 것이기 때문에 private-vm 인스턴스에 공개키 정보를 등록해준다.
  • private-vm을 클릭하고 Edit > Security and access > SSH Keys > + ADD ITEM 을 눌러 위에서 확인한 공개키 내용을 붙여넣어 준 후 수정을 완료한다.

3) private-vm에 ssh로 접속

  • ssh key 등록이 완료되었으면 이제 public-vm에서 private-vm으로 ssh 접속이 가능하다.

    ssh [hostname]@[private-vm 내부IP]
    ssh hyunsoo@10.0.0.3


4) 외부 통신 테스트

  • 현재 private-vm은 외부로 통신할 수 있는 통로가 없는 상태이기 때문에 해당 서버 터미널에 접속 후 curl이나 apt-get update 등 인터넷과 통신이 필요한 명령어를 치면 무한 대기상태에 빠지는 것을 볼 수 있다.
  • 이를 해결하기 위해서는 NAT Gateway를 생성하여 private subnet에 있는 서버가 외부와 통신할 수 있는 통로를 만들어주어야 한다.

4. NAT Gateway 생성 후 접속

1) NAT 및 Router 생성

-Cloud NAT 서비스 선택 후 새로운 NAT 생성 탭으로 들어간다.

  • 커스텀 VPC를 선택하고, NAT 생성을 위해서는 Cloud Router를 새롭게 생성해주어야 하기 때문에 추가적으로 생성해준다.

  • Cloud NAT mapping 옵션에서 source subnetsCustom으로 선택해준 후 서브넷을 private-subnet으로 선택하고 NAT를 생성해준다.

2) 인터넷 통신 테스트

  • 이제 private subnet에 NAT Gateway가 생겼으므로 private-vm이 외부 인터넷과 통신할 수 있는 통로가 뚫렸다. 그렇기 때문에 sudo apt-get update 명령어를 입력해보면 private-vm의 신호가 Router를 거쳐 NAT Gateway를 통해 외부 인터넷까지 닿기 때문에 이전과는 다르게 작업이 잘 수행되는 것을 확인할 수 있다.

❗❗ NAT는 일반적인 서버 1대를 빌리는 것과 비슷하게 과금이 되기 때문에 테스트가 끝난 이후에는 반드시 삭제해주어야 한다.

5. 참고 자료

profile
데이터 엔지니어의 작업공간 / #PYTHON #CLOUD #SPARK #AWS #GCP #NCLOUD

0개의 댓글