프로필사진
NCP에서 VPC Peering 구축하기

2023. 6. 10. 17:27🔴 ETC/Network

300x250

VPC Peering 란? (VPC 간 사설 통신망 Peering) 

"인터넷 통신을 거치지 않고 비공인 IP를 통해서 내부 네트워크로 다른 VPC와 통신하도록 하는 기술"
즉, 2개 이상의 VPC를 연결하고 싶을 때 사용할 수 있다.
공인 IP를 통해 통신이 가능하지만 보안과 안정성을 위해서 사설 통신망을 구축한다.

NCP의 VPC Peering 서비스는 아래와 같은 특징이 있다 :
- 동일 리전에서만 가능
- 단방향 통신만 가능 ➡️ 양방향 통신을 위해서는 요청 VPC & 수락 VPC를 맞바꾸어 2개의 VPC Peering을 생성해야 함
- VPC Peering은 전이적 관계로 연결되지 않음
- Peering된 VPC를 통해 다른 VPC나 외부 네트워크로 통신할 수 없음

 

3개 VPC 생성하여 VPC Peering으로 연결해보자

1. VPC 3개 생성

메뉴 : Networking > VPC > VPC Management

VPC 이름 CIDR 블록
vpc-a 10.0.0.0/16
vpc-b 10.100.0.0/16
vpc-c 10.200.0.0/16

VPC를 생성하면 해당 VPC에 연결된 디폴트 route table 2개(public, private)가 생성이 된다.
private route table은 LOCAL route이 붙어있고, public route table은 LOCAL, IGW route이 붙어있다.

또한 VPC에 디폴트 Network ACL, ACG가 자동 생성된다.
이 2개 모두 보안그룹인데 제어하는 범위가 다르다 :
- Network ACL : 서브넷의 인바운드/아웃바운드 트레픽 제어

- ACG : 서버의 인바운드/아웃바운드 트레픽 제어

 

2. Subnet 3개 생성 

메뉴 : Networking > VPC > Subnet Management

3개의 VPC안에 각 1개의 Subnet을 생성했다.
3개 Subnet 모두 Internet Gateway를 Public으로 선택하여 Public Subnet으로 생성하였다.

VPC Subnet 이름 IP 주소 범위
vpc-a pub-sub-a 10.0.0.0/20
vpc-b pub-sub-b 10.100.0.0/20
vpc-c pub-sub-c 10.200.0.0/20

 

3. VPC Peering 생성

메뉴 : Networking > VPC > VPC Peering

양방향으로 VPC를 연결해줘야 하기 때문에 vpc-a ➡️ vpc-b, vpc b ➡️ vpc-a 이런식으로 각 VPC에 2개의 VPC Peering을 만들어줘야 한다. 3개의 VPC를 서로 연결해야하기 때문에 총 6개의 VPC Peering을 만들어주었다.

- vpc-a : vpc-b, vpc-c 연결
- vpc-b : vpc-a, vpc-c 연결
- vpc-c : vpc-a, vpc-b 연결

같은 계정 내의 VPC를 연결하는 것이기 때문에 자동으로 수락이 되어 생성 후 바로 목록에 표시된다.

 

4. Route Table 설정

메뉴 : Networking > VPC > Route Table

public 서브넷을 사용할 것이기 때문에 public-route-table에서 VPC-Peering Route을 설정해주었다.

vpc-a-default-public-route-table 기준으로 설명하자면,
Target Type에서 VPCPEERING을 선택하면
해당 route table에 연관된 VPC(vpc-a)에 생성된 VPC Peering 목록이 Target Name에 표시된다.

이 2개의 VPC Peering에 알맞은 Destination으로 Route을 추가해줘야 한다.

우리가 앞서 VPC를 생성할때 설정했던 CIDR블록은 이러하다 :

VPC 이름 CIDR 블록
vpc-a 10.0.0.0/16
vpc-b 10.100.0.0/16
vpc-c 10.200.0.0/16

vpc-a는 vpc-b, vpc-c 두개와 연결되어 있다.
따라서 vpc-a에 들어온 트래픽의 목적지가 '10.100.0.0/16'일때는 vpc-b로, '10.200.0.0/16'일 때는 vpc-c로 보내야 한다.

이런식으로 나머지 두 개의 VPC의 Route Table에도 VPCPEERING Route를 추가한다.

 

5. ACG 설정

VPC내의 VM에서 다른 VPC내의 VM에 통신을 할 것이기 때문에 ACG를 설정해줘야 한다.
기본적으로 Inbound에 TCP, 0.0.0.0/0, 22포트가 설정되어있기 때문에 ssh접속이 가능하지만
나는 ping을 하기 위해서 상대방 vpc에 대해 ICMP를 설정해주었다.

ACG VPC Peering을 위한 설정 추가 설정
vpc-a ACG ICMP, 10.100.0.0/16 (vpc-b)
ICMP, 10.200.0.0/16 (vpc-c)
TCP, 본인 ip, 22
ICMP, 본인 ip
vpc-b ACG ICMP, 10.0.0.0/16 (vpc-a)
ICMP, 10.200.0.0/16 (vpc-c)
 
vpc-c ACG ICMP, 10.0.0.0/16 (vpc-a)
ICMP, 10.100.0.0/16 (vpc-b)
 

로컬에서 vpc-a에 ssh로 접속할 예정이기 때문에 본인 ip에 대한 내용도 vpc-a에 추가로 설정해 주었다.

 

7. vm 연결

- 서버 이미지 : ubuntu
- 서버 스펙 : s2-g2-s50(vCPU 2EA, Memory 8GB, [SSD]Disk 50GB)
각 vpc 내 public 서브넷 안에 vm을 생성해주고, 공인 IP도 함께 연결해주었다.

최종적으로 VPC Peering된 모습 :

통신해보기 (ping)

1) 로컬 ➡️ vpc-a

로컬에서 vpc-a의 public IP에 접속이 잘 되는것을 확인할 수 있다.

2) vpc-a ➡️ vpc-b

vpc-b의 private IP로 ping!

3) vpc-a ➡️ vpc-c

vpc-a의 private IP로 ping!

4) 당연히 반대 방향으로도 ping 가능하다


+ Peering된 VPC에 대한 네트워크 성능테스트도 해봤다 :

2023.06.10 - [🔴 WEB지식/Network] - iperf3을 사용하여 연결된 VPC간 네트워크 성능 테스트 (feat.NCP VPC Peering)

 

iperf3을 사용하여 연결된 VPC간 네트워크 성능 테스트 (feat.NCP VPC Peering)

iperf 란? 서버 & 클라라이언트 간 네트워크 속도를 테스트 할 수 있는 툴이다. 네트워크 처리량을 측정할 수 있으며 옵션을 주어 TCP, UDP 모두 테스트가 가능하다. 아래와 같이 다양한 옵션들이 있

kkangdda.tistory.com

300x250