Stein 오픈스택 클라우드 분석(3) - 외부&내부 네트워크, 서브넷, 라우터 생성

blog post 

 

이전 포스트에서 오픈스택의 초기 네트워크 인터페이스 아키텍처를 살펴보았다면, 이번 포스팅에서는 가상의 네트워크와 서브넷, 라우터 등을 생성해 보겠습니다. 

 

 

 

1. 네트워크 구축 시나리오

 

 

아직 인스턴스를 생성하지 않았지만, 추후에 인스턴스가 인터넷 접속이 필요한 경우를 위해 클라우드에서도 별도의 외부망을 생성하여 물리망과 연결해야 합니다. 이 네트워크는 오픈스택 토폴로지로 볼 때 하나의 가상 네트워크로 표현되지만(아래 그림에서 External_Net), 사실은 실제 물리 네트워크와 같은 대역의 네트워크를 의미합니다. (아래 그림에서 파란색 영역을 나타냅니다. 물론 이 부분은 관리자 별로 사내 네트워크와 어떻게 연동하여 구성하는가에 따라 달라질 수 있습니다만, 본 포스팅에서는 가장 기본적인 구성으로 진행한다는 점을 참고하시길 바랍니다)

 

 

외부망 ip 구성

 

 

위의 구성을 바탕으로 아래와 같은 시나리오를 구성해보고 진행하도록 하겠습니다.

 

  • External_Net: 물리망과 직접 연결된 네트워크. admin 계정이 관리하며, New_Project의 일반 사용자는 네트워크 토폴로지에서 볼 수 없음.
  • Router1: 외부망과 내부망 사이에서 라우팅 기능을 수행하는 가상 라우터. New_Project에서 생성되며 admin프로젝트에서는 볼 수 없음.

* 참고

위 그림에서 라우터 인터페이스의 ip가 192.168.0.100으로 되어있지만, 아래 진행 과정에서 dhcp 통해서 192.168.0.159로 할당되었네요. (그림을 우선 만들다보니 ip를 생각 못했네요) 같은 인터페이스라는 점 참고하시기 바랍니다. ip만 다릅니다.

 

 

 

2. 외부 네트워크와 서브넷 생성

 

 

우선 다음과 같이 admin 계정으로 로그인 후 메뉴-> 관리-> 네트워크-> 네트워크에서 "네트워크 생성"을 클릭합니다.

 

아래와 같이 항목들을 지정해 줍니다.

 

 

  • 이름: 네트워크 이름
  • 프로젝트: admin
  • 공급자 네트워크 유형: Flat
  • 물리적인 네트워크: physnet1
  • 외부 네트워크 항목에 체크

 

여기에서 공급자 네트워크 유형과 물리 네트워크는 앞서 Neutron 서비스 구축 후 테넌트를 구성하는 과정에서 설정한 정보입니다. 인스턴스의 트래픽을 외부로 전송하기 위해 physnet1을 사용하기로 설정했습니다. physnet1은 현재 네트워크 노드의 "br-eth1" 인터페이스에 매핑되어 있습니다. 이 부분은 해당 포스트를 참고하시기 바랍니다. [바로가기]

 

다음으로 서브넷 정보를 입력합니다.

 

 

여기에서는 말 그대로 서브넷 정보를 입력하면 됩니다. 물론 물리망과 연결되어야 하므로 물리 네트워크의 범위 내에서 서브넷팅을 진행해야 합니다. 저의 경우, 마스크 비트를 26으로 하여 192.168.0.128~191.168.191 의 범위로 서브네팅하였습니다.

 

특히 여기에서 게이트웨이 ip는 실제 물리망의 게이트웨이 주소를 입력해야 한다는 점에 유의하시기 바랍니다.

 

그 다음 페이지에서는 DHCP 및 Pool 할당, DNS 네임 서버 등이 나오는데, 필수 입력 부분은 아닙니다. 다만 서브네팅 범위 내에서 포트에 ip를 자동으로 할당하기 위해서는 pool을 설정해야 합니다. 저는 다음과 같이 설정했습니다.

 

 

 

생성버튼을 클릭하고 메뉴-> 프로젝트-> 네트워크-> 네트워크 토폴로지로 이동해 보겠습니다. 다음과 같이 외부망이 생성된 것을 확인할 수 있습니다.

 

 

그럼 잠시 이제 user1로 로그인해 보겠습니다.

 

마찬가지로 메뉴-> 프로젝트-> 네트워크-> 네트워크 토폴로지로 이동해보겠습니다. user1에서도 다음과 같이 외부망이 보이는 것을 확인할 수 있습니다.

 

 

뭔가 이상하지 않나요? 분명 External_Net은 프로젝트를 admin으로 지정했는데 다른 프로젝트인 New_Project에서 관리자 권한도 없는 user1의 화면에 보입니다.

 

앞서 저는 시나리오에서 "New_Project의 일반 사용자는 토폴로지에서 볼 수 없음" 이라고 정의했는데 토폴로지에서 보입니다. 사실 이 부분은 admin의 RBAC 기능을 통해 제어할 수 있습니다.

 

 

 

 



 RBAC은 Role Based Access Control의 약자 입니다. 한글로 풀어보면 "역할 기반 접근 제어" 정도로 해석할 수 있는데, 말 그대로 사용자의 권한에 따라 시스템 접근을 통제하는 방법을 의미합니다. 오픈스택이 대표적인 RBAC 기반의 시스템입니다.

 

다시 본론으로 돌아와서, RBAC을 조절하기 위해 다시 admin 계정으로 로그인해 보겠습니다.

 

로그인 후 메뉴-> 관리-> 네트워크-> RBAC 정책에서 아래와 같이 External_Net 의 정책 편집을 클릭하여 대상 프로젝트를 admin으로 설정해 봅니다. 이제 External_Net은 admin만 접근하고 제어할 수 있습니다.

 

다시 user1로 로그인하여 네트워크 토폴로지를 살펴보면 External_Net 네트워크가 안보이는 것을 확인할 수 있습니다. (물론 admin 계정의 토폴로지에서는 여전히 볼 수 있습니다.)

 


 

3. 가상 라우터 생성

 

 

이제 오픈스택에서 지원하는 가상의 라우터를 생성해 보도록 하겠습니다. 가상 라우터는 서로 다른 네트워크 간 트래픽을 라우팅 하는 기능을 제공합니다. 라우터는 member 역할의 일반 사용자도 생성할 수 있지만, admin으로 생성해 보도록 하겠습니다.

 

우선 admin으로 로그인 한 상태에서 메뉴-> 인증-> 프로젝트로 이동하여 New_Project의 "멤버관리"를 클릭 후 "프로젝트 멤버" 탭에서 admin을 관리자로 추가해 줍니다. (물론 user1에게 admin계정을 부여하여 진행할 수도 있지만, 그러면 너무 많은 권한이 일반 사용자에게 부여되므로 저는 기존 admin을 프로젝트에 추가시켰습니다)

 

 

 

그러면 이제 다음과 같이 대시보드 상단 메뉴에서 프로젝트를 선택할 수 있습니다. New_Project로 이동해 봅니다.

 

 

다음으로 메뉴-> 프로젝트-> 네트워크-> 라우터로 이동하여 "라우터 생성"을 클릭합니다. 이름을 입력하고 생성하면 Router1이 생성 됩니다.

 

이제 "Router1" 생성되었고 오른편에 "게이트웨이 설정"을 볼 수 있습니다. 이를 클릭해보면 외부 네트워크로 기존에 생성한 External_Net을 볼 수 있습니다. 

 

 제출을 클릭하면 게이트웨이가 추가되었음을 볼 수 있습니다. 이제 "Router1" 을 클릭해보면 제가 사전에 External 네트워크를 서브네팅 하는 과정에서 Pool로 지정한 범위 내에서 임의의 ip가 할당된 것을 확인할 수 있습니다.

 

 마지막으로 네트워크 토폴로지를 확인해 보겠습니다. admin과 user1의 계정으로 각각 로그인하여 비교해보면 admin의 경우 External_Net 네트워크까지 확인할 수 있지만, user1의 경우 라우터만 보이는 것을 확인할 수 있습니다.

 

 

 

이처럼 실제 오픈스택을 서비스화 하는 과정에서 프로젝트를 나누고 일반 사용자에게 특정 네트워크 관리 권한을 제어하고자 할 때 RBAC을 활용하면 유용합니다.

 

 

 

 

4. 내부 네트워크 생성

 

 

이번에는 내부 네트워크를 생성해 보겠습니다. 내부망은 user1로 생성해 보도록 하겠습니다. 

아래와 같이 메뉴-> 프로젝트-> 네트워크-> 네트워크로 이동 후 "네트워크 생성"을 클릭합니다.

이름을 입력 후 서브넷 정보를 입력합니다.

 

 

마찬가지로 Pool 할당 정보도 입력해 줍니다.

 

 

 

 이제 프라이빗 네트워크를 생성했습니다. 다음으로 라우터에 Internal_Net의 인터페이스를 연결해주면 됩니다.

메뉴-> 프로젝트-> 네트워크-> 라우터로 이동하여 "Router1"을 클릭 후 "인터페이스" 탭으로 이동합니다. "인터페이스 추가"를 클릭 후 아래와 같이 방금 생성한 Internal_Net을 선택하고 제출을 클릭합니다.

 

 

최종적으로 admin계정에서 네트워크 토폴로지로 확인해보면 다음과 같이 라우터에 내외부 네트워크의 인터페이스가 1개씩 추가된 것을 볼 수 있습니다.

 

 

 여기까지 네트워크 및 라우터 구성을 마쳤습니다. 관리자와 사용자를 나누어 진행하다 보니 내용이 길어졌습니다. 실제 시스템에서 어떻게 동작하는지 분석하는 과정까지 함께 다루려 했으나 내용이 길어져서 분석은 다음 포스팅에서 진행하도록 하겠습니다.

 

TAGS.

Comments