안녕하세요. HYEN입니다.
어제, Azure Route Table을 사용하여 경로를 라우팅하는 테스트를 진행해 보았는데요.
네트워크도 어려운데 Route Table에 UDR을 정의해서 원하는 대로 통신이 되게 하려고 하다보니 이래저래 시행착오를 많이 겪었습니다. 🤯
그래서 까먹지 않도록 정리해 보고자 합니다.
테스트 내용을 정리하기 전 먼저 Azure Route Table에 대한 개념과 Azure의 라우팅 로직에 대해 알아보도록 하겠습니다.
Contents
1. Azure의 가상 네트워크 트래픽 라우팅 로직
1.1 기본 경로
먼저 Azure에서 Azure, 온프레미스, 인터넷 등으로 트래픽을 라우팅하는 로직에 대해 알아보겠습니다.
Azure는 기본적으로 가상 네트워크 내 각 서브넷에 대한 경로 테이블을 자동으로 생성하고 생성한 경로 테이블에 시스템 기본 경로를 자동으로 추가합니다.
시스템 기본 경로를 추가로 만들거나 시스템 경로를 제거할 수는 없기 때문에 시스템 경로를 재정의 하기 위해서는 사용자 지정 경로 (UDR; User-defined Routes)을 사용해야 합니다.
가상 네트워크가 생성될 때마다 각 서브넷에 대해 하기와 같은 기본 시스템 경로가 자동으로 생성됩니다.
위 테이블 중 다음 홉 유형(Next hop type)에 대해 좀 더 알아보겠습니다.
- Vitual network (가상 네트워크)
- 가상 네트워크의 주소 공간에 대한 트래픽을 라우팅 하기 위한 기본 경로입니다.
- 가상 네트워크가 여러 개 있다면 여러 개의 가상 네트워크에 대한 개별 경로가 생성됩니다.
- Azure는 서브넷 주소 범위에 대한 기본 경로는 생성하지 않습니다.
- 한 가상 네트워크 내에 있는 서브넷 간의 트래픽은 자동으로 라우팅 됩니다.
- 서브넷 중 일부만 경로 테이블과 연결되어도 기본 시스템 경로의 주소 접두사(Address prefixes)는 가상 네트워크의 대역으로 지정됩니다.
- 가상 네트워크의 주소 공간에 대한 트래픽을 라우팅 하기 위한 기본 경로입니다.
실제로 UDR과 snet-vm(10.100.0.0/29)과 snet-pe(10.100.0.8/29)라는 이름의 서브넷을 연결한 후 유효 경로를 확인해 보겠습니다.
([경로 테이블] > [도움말] > [유효 경로] 탭에서 확인이 가능합니다.)
상기 테이블과 같이 서브넷이 2개가 있지만 실제 경로 테이블에는 가상 네트워크의 대역인 (10.100.0.0/28)만 확인되는 것을 알 수 있습니다.
- 인터넷
- 주소 접두사로 지정된 트래픽을 인터넷으로 라우팅 합니다.
- 시스템 기본 경로에는 0.0.0.0/0이 지정되어 있습니다. 따라서 Azure의 기본 경로를 재정의하지 않는 한, 가상 네트워크 주소 범위에 지정되지 않은 주소에 대한 트래픽은 인터넷으로 라우팅 됩니다.
- 만약, 대상 주소가 Azure 서비스 중 하나라면 Azure는 트래픽을 인터넷으로 라우팅 하지 않고 Azure의 백본 네트워크를 통해 트래픽을 해당 서비스로 직접 라우팅 하게 됩니다.
- 따라서 Azure 서비스 간 트래픽은 인터넷을 거치지 않습니다.
- 주소 접두사로 지정된 트래픽을 인터넷으로 라우팅 합니다.
- 없음
- 다음 홉이 "없음"인 트래픽의 경우 서브넷 밖으로 라우팅 되지 않고 삭제됩니다.
- Azure에서는 하기 주소 접두사에 대한 기본 경로를 자동으로 생성합니다.
- 10.0.0.0/8, 172.16.0.0/12 및 192.168.0.0/16: RFC 1918에서 프라이빗용으로 예약되어 있습니다.
- 100.64.0.0/10: RFC 6598에서 예약되어 있습니다.
- 10.0.0.0/8, 172.16.0.0/12 및 192.168.0.0/16: RFC 1918에서 프라이빗용으로 예약되어 있습니다.
- 만약, 상기 주소 범위 중 하나를 할당하면 Azure는 자동으로 다음 홉 유형을 "없음"에서 "가상 네트워크"로 변경합니다.
- 다음 홉이 "없음"인 트래픽의 경우 서브넷 밖으로 라우팅 되지 않고 삭제됩니다.
예를 들어, 10.0.0.0/8라는 주소에 대해서 Azure는 자동으로 시스템 기본 경로를 생성하고 다음 홉 유형을 "없음"으로 생성합니다.
이때, 사용자가 10.100.0.0/28라는 가상 네트워크를 생성하게 되면 Azure는 이 주소 대역에 대해서는 다음 홉 유형을 "가상 네트워크"로 변경합니다.
상기 스크린샷에서 보실 수 있듯이 10.100.0.0/28은 10.0.0.0/8에 속합니다.
그러나 해당 가상 네트워크의 서브넷이 [경로 테이블]에 연결되어 있기 때문에 10.100.0.0/28 대역에 대해서는 다음 홉 유형이 "없음"이 아닌 "가상 네트워크"가 되게 됩니다.
1.2 선택적 기본 경로
다음은 선택적 기본 경로에 대해 알아보겠습니다.
Azure는 1.1에서 언급한 기본 경로 외에 특정 기능을 사용할 때만 추가되는 선택적 기본 경로를 제공하고 있습니다.
선택적 기본 경로에서도 위의 테이블 중 다음 홉 유형(Next hop type)에 대해 좀 더 알아보도록 하겠습니다.
- VNet 피어링
- 두 가상 네트워크 간 가상 네트워크 피어링이 구성되어 있는 경우 해당 경로가 추가됩니다.
실제로 vnet-hyein-01(10.50.0.0/28)이라는 이름의 가상 네트워크와 vnet-hyein-02(10.100.0.0/28)라는 이름의 가상 네트워크 간 가상 네트워크 피어링을 구성해 보겠습니다.
그 후 경로 테이블에서 [유효 경로]를 다시 확인합니다.
이전과는 다르게 다음 홉 유형을 VNet 피어링으로 가지는 경로가 추가되었습니다.
주소 접두사는 vnet-hyein-01이라는 이름의 가상 네트워크의 주소 대역인 10.50.0.0/28로 지정되어 있음을 알 수 있습니다.
- 가상 네트워크 게이트웨이
- 가상 네트워크 게이트웨이가 가상 네트워크에 추가되면 생성되는 경로입니다.
- 온프레미스에 대해 BGP로 광고된 대역이나 로컬 네트워크 게이트웨이에 구성된 접두사에 대한 경로가 주소 접두사로 지정됩니다.
- 온프레미스 대역에 대해 가장 큰 주소 범위로 온프레미스에 대한 경로를 구성하는 것이 권장됩니다. (Azure 가상 네트워크 게이트웨이에 전파할 수 있는 경로의 수에 제한이 있기 때문)
- 가상 네트워크 게이트웨이가 가상 네트워크에 추가되면 생성되는 경로입니다.
- VirtualNetworkServiceEndpoint
- 특정 Azure 서비스에 대한 서비스 엔드포인트를 활성화할 경우 Azure는 특정 서비스에 대한 공용 IP 주소를 경로 테이블에 추가하게 됩니다.
- 서비스 엔드포인트는 가상 네트워크 내의 개별 서브넷에서 사용하기 때문에 서비스 엔드포인트가 활성화된 서브넷에 대한 주소 접두사가 경로로 지정됩니다.
- Azure 서비스의 공용 IP 주소는 주기적으로 변경되지만 Azure가 이러한 주소를 관리하기 때문에 주소가 변경될 경우 경로 테이블의 주소도 자동으로 업데이트됩니다.
- 특정 Azure 서비스에 대한 서비스 엔드포인트를 활성화할 경우 Azure는 특정 서비스에 대한 공용 IP 주소를 경로 테이블에 추가하게 됩니다.
1.3 사용자 정의 경로
앞서 Azure의 시스템 기본 경로는 추가나 삭제가 불가하다는 것을 말씀드렸는데요.
사용자 정의 경로를 통해 기본 시스템 경로를 재정의하거나 경로를 추가하는 것이 가능합니다.
하나의 경로 테이블에는 여러 개의 서브넷을 연결할 수 있습니다.
그러나 하나의 서브넷에는 여러 개의 경로 테이블을 연결할 수는 없습니다.
만약 서브넷의 기본 경로와 사용자 정의 경로가 충돌하는 경우 사용자 정의 경로가 우선순위를 가집니다.
지금부터는 사용자 정의 경로를 생성할 때 지정할 수 있는 다음 홉 유형에 대해 확인해 보겠습니다.
하기 스크린샷에서 볼 수 있듯이 사용자 정의 경로에 대한 다음 홉으로 지정할 수 있는 형식은 총 5개입니다.
- 가상 어플라이언스
- 방화벽 같은 네트워크 애플리케이션을 실행하는 가상 머신이나, Azure Firewall을 다음 홉으로 지정하고자 할 경우 사용할 수 있는 옵션입니다.
- 해당 옵션의 경우 IP 주소를 지정해 주어야 하며 IP 주소는 다음과 같습니다.
- 가상 머신의 private ip 주소 (NIC에 대한 IP 전달 사용 옵션 활성화 필요)
- Azure Internal Load Balancer의 private ip 주소
- Azure Firewall의 private ip 주소
- 가상 머신의 private ip 주소 (NIC에 대한 IP 전달 사용 옵션 활성화 필요)
- 주소 접두사를 0.0.0.0/0으로 지정한 후 가상 어플라이언스를 다음 홉으로 지정할 경우 모든 트래픽에 대해 가상 어플라이언스에서 allow/deny를 결정할 수 있도록 할 수 있습니다. ← 다음 글에서 할 테스트 중 일부입니다.
- 방화벽 같은 네트워크 애플리케이션을 실행하는 가상 머신이나, Azure Firewall을 다음 홉으로 지정하고자 할 경우 사용할 수 있는 옵션입니다.
- 가상 네트워크 게이트웨이
- 가상 네트워크 게이트웨이로 라우팅 되는 특정 주소 접두사로 향하는 트래픽을 원할 때 해당 옵션을 사용합니다.
- 가상 네트워크 게이트웨이 타입은 반드시 VPN으로 지정되어야 합니다. (ExpressRoute로 지정할 경우 사용자 지정 경로에 BGP를 반드시 사용해야 하기 때문입니다.)
- 가상 네트워크 게이트웨이로 라우팅 되는 특정 주소 접두사로 향하는 트래픽을 원할 때 해당 옵션을 사용합니다.
- 없음
- 지정된 주소 접두사로 향하는 트래픽을 삭제하기 위해 사용하는 옵션입니다.
- 가상 네트워크
- 가상 네트워크 내 시스템 기본 경로를 재정의하고자 할 경우 해당 옵션을 사용합니다.
- 인터넷
- 지정된 주소 접두사로 향하는 트래픽을 명시적으로 인터넷으로 라우팅 하기 위해 사용합니다.
- 공용 IP를 가지고 있는 Azure의 서비스로 향하는 트래픽을 Azure 백본 네트워크 내에 유지하려는 경우에도 사용합니다.
- 지정된 주소 접두사로 향하는 트래픽을 명시적으로 인터넷으로 라우팅 하기 위해 사용합니다.
추가적으로 사용자 정의 경로 생성 시 선택할 수 있는 대상 유형은 다음과 같습니다.
- IP 주소
- 서비스 태그
이렇게 오늘은 Azure의 라우팅 로직에 대해 세 가지로 나누어 알아보았는데요.
다음 글은 이러한 이해를 바탕으로 실제로 여러 가지 상황을 가정하여 테스트를 해보도록 하겠습니다!!
'TOPIC > Cloud' 카테고리의 다른 글
Azure Route Table 공부하기 (2) (0) | 2024.04.30 |
---|---|
프라이빗 엔드포인트 VS VNET 통합 (프라이빗 액세스) (0) | 2024.04.30 |
Azure Container Login 시 발생할 수 있는 에러 해결하기 (1) | 2024.04.26 |
Azure Private Subnet에 명시적으로 아웃바운드 연결하기 (0) | 2024.04.23 |
Azure Private Subnet과 Azure NAT Gateway란? (0) | 2024.04.23 |