Default
VPC가 아닌, 사용자 지정 새로운 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를 생성한다.
Networking > Network interfaces
메뉴에서 Network를 my-custom-vpc
로 선택하고, subnet 역시 public-subnet
으로 선택해준다. 또, 외부에서 접근이 가능해야 하기 때문에 External IPv4 address
를 Ephemeral
로 선택한다.Networking > Network interfaces
메뉴에서 Network를 my-custom-vpc
로 선택하고, subnet은 private-subnet
으로 선택해준다. 이 서브넷에 위치한 서버는 외부에서 접근이 필요 없기 때문에 내부IP만 있으면 된다. 따라서 External IPv4 address
를 None
으로 선택한다.private-vm
)는 외부에서 접속이 불가능하기 때문에 같은 VPC의 Public Subnet에 위치한 서버(public-vm
)를 통로로 활용하여 접속을 할 수 있다. 따라서 Public Subnet에 있는 서버는 Bastion Host로서의 역할을 할 수 있다.UI의 우측에 보이는 SSH
버튼을 눌러 콘솔에서 간단하게 서버 접속이 가능하다.
ssh-keygen
명령어를 입력하여 새로운 ssh 키페어를 생성하고, cat
명령어를 통해 공개키를 확인한다.
ssh-keygen
cat /home/hyunsoo/.ssh/id_rsa.pub
private-vm
에 접속할 것이기 때문에 private-vm
인스턴스에 공개키 정보를 등록해준다.private-vm
을 클릭하고 Edit > Security and access > SSH Keys > + ADD ITEM
을 눌러 위에서 확인한 공개키 내용을 붙여넣어 준 후 수정을 완료한다.ssh key 등록이 완료되었으면 이제 public-vm
에서 private-vm
으로 ssh 접속이 가능하다.
ssh [hostname]@[private-vm 내부IP]
ssh hyunsoo@10.0.0.3
private-vm
은 외부로 통신할 수 있는 통로가 없는 상태이기 때문에 해당 서버 터미널에 접속 후 curl
이나 apt-get update
등 인터넷과 통신이 필요한 명령어를 치면 무한 대기상태에 빠지는 것을 볼 수 있다.-Cloud NAT
서비스 선택 후 새로운 NAT 생성 탭으로 들어간다.
커스텀 VPC를 선택하고, NAT 생성을 위해서는 Cloud Router
를 새롭게 생성해주어야 하기 때문에 추가적으로 생성해준다.
Cloud NAT mapping 옵션에서 source subnets
를 Custom
으로 선택해준 후 서브넷을 private-subnet
으로 선택하고 NAT를 생성해준다.
private-vm
이 외부 인터넷과 통신할 수 있는 통로가 뚫렸다. 그렇기 때문에 sudo apt-get update
명령어를 입력해보면 private-vm
의 신호가 Router를 거쳐 NAT Gateway를 통해 외부 인터넷까지 닿기 때문에 이전과는 다르게 작업이 잘 수행되는 것을 확인할 수 있다.❗❗ NAT는 일반적인 서버 1대를 빌리는 것과 비슷하게 과금이 되기 때문에 테스트가 끝난 이후에는 반드시 삭제해주어야 한다.