티스토리 뷰

OpenStack

[OpenStack]Cloud에서 알아야 할 Network 이야기

나리 짱!!! naleejang 2013. 3. 1. 21:39

클라우드 컴퓨팅이라고 하는 오픈소스 프로젝트인 "오픈스택(openstack)을 하다보면 네트워크 개념을 빼 놓을래야 빼 놓을수가 없다. 늘 항상 따라 나오는 개념이 바로 Network이다. 난 클라우드 컴퓨팅을 하면서, 늘 Network가 어려웠다. 그래서, 오늘은 그중에서도 Network Range에 대한 이야기를 써 보려고 한다. 다른 사람들도 나와 같은 어려움을 겪고 있을 것이기 때문에,... 하지만, 그 누구도 이런것 쯤은 다 알고 있는 개념이라고 생각을 하고 있고, 그 누구도 물어보지도 않고, 가르쳐주지도 않는다. 그래서, 오늘 터득하게 된 이 개념을 다른 사람들과 공유하고자 한다. 물론 내가 올린 글에 틀린 부분도 있을수 있겠지만 말이다.


오픈스택에서 네트워크를 설정하는 방법은 두가지가 있다. 

하나는 Nova-network을 사용해서 설정하는 방법, 또 다른 하나는 Quantum을 이용해서 설정하는 방법이다. 

이때 등장하는 용어 중에 Fixed IP Range와 Floating IP Range가 있다. 


Fixed IP Range

Virtual Instance를 생성할 때 할당해 주는 사설 IP 범위. 이 IP는 호스트 내부에서만 통신이 가능하다.


Floating IP Range 

Virtual Instance를 외부에서 접속할 수 있도록 할당해 주는 공인 IP 범위.



IP의 범위는 크게 다음과 같은 세가지 클래스로 구분이 된다.

 클래스 명

클래스 범위 

서브넷 마스크 

 서브넷마스크 Bit 수

호스트 Bit수 

사용가능 호스트 수 

 A Class

1.0.0.0 ~ 126.0.0.0 

255.0.0.0 

 8 Bit

24 Bit 

약 1,600 만개 

 B Class

127.0.0.0 ~ 191.0.0.0 

255.255.0.0 

 16 Bit

16 Bit 

약 65,000 개 

 C Class

192.0.0.0 ~ 223.0.0.0 

255.255.255.0 

 24 Bit

8 Bit 

 254 개


대표적으로 오픈스택을 설치할때 메뉴얼에 가장 많이 등장하는 Fixed Range 범위는 10.0.4.0/20,  10.0.0.0/24  이다. 

예제의 IP는 A Class에 해당되지만, 뒤에 나오는 /20은 서브네마스크 Bit 수를 의미하므로 B Class를 좀더 세분화했다고 할 수 있다. 


10.0.4.0 이라는 IP를 이진수로 표현하면 아래와 같다. 그런데 서브넷 마스크로 20 bit를 사용한다고 했으니 앞에서 부터 20 bit를 1로 채우면 그게 바로 서브네 마스크가 되는 것이다.


0000 1010 . 0000 0000 . 0000 0100 . 0000 0000  Network IP (10.0.4.0)

1111 1111 . 1111 1111 . 1111 0000 . 0000 0000  Subnet Mask (255.255.240.0)

-----------------------------------------  (And 연산)

0000 1010 . 0000 0000 . 0000 0000 . 0000 0000  Subnet (10.0.0.0)


여기서 사용되는 10.0.4.0의 서브넷 마스크는 255.255.240.0 이 되며, 서브넷은 10.0.0.0 이 된다. 

그리고, 호스트 IP 범위는 10.0.4.1 ~ 10.0.255.254 까지가 되는 것이다. 10.0.255.255는 왜 빼는거지? 10.0.255.255는 브로드캐스트용 주소라고 한다~!! 그렇게 되면 사용가능한 Network Size는 4,094 개가 되는 것이다.


그럼 이번에는 10.0.0.0/24 도 한번 더 해 볼까? /24는 서브넷 마스크 Bit수니까


0000 1010 . 0000 0000 . 0000 0000 . 0000 0000  Network IP (10.0.0.0)

1111 1111 . 1111 1111 . 1111 1111 . 0000 0000  Subnet Mask (255.255.255.0)

----------------------------------------- (And 연산)

0000 1010 . 0000 0000 . 0000 0000 . 0000 0000  Subnet (10.0.0.0)


10.0.0.0/24 의 네트워크 IP는 10.0.0.0 이고, 서브넷 마스크는 255.255.255.0, 서브넷은 10.0.0.0 이다.

이때 사용 가능한 호스트 IP 범위는 10.0.0.1 ~ 10.0.0.254 가 되며, 호스트 수는 254개이다.



이와 같은 공식을 거치면 우리가 할당해 주기 위한 Floating IP Range도 계산할 수 있다. 어렵게만 생각했던 네트워크 범위 할당 알고나니 별 것이 아니였다. 이젠 알고 쓰자~!!! ^^ 

댓글
  • 프로필사진 Favicon of http://ujuc.kr BlogIcon 사진우주 저기서 10.0.0.1도 빠지지 않나요?? 1번은 대부분이 게이트웨이로 들어가던데... 2013.03.04 11:02
  • 프로필사진 Favicon of https://naleejang.tistory.com BlogIcon 나리 짱!!! naleejang 그런데 요즘은 IP가 모잘라서 그것도 다 쓴다고 하더라구요... 2013.03.04 22:28 신고
  • 프로필사진 openstacl 어려워 ㅠㅠ 문의 좀 드려봅니다.
    ㅠㅠㅋ;; 오픈스택 처음해보는데요..
    공인IP(고정IP)를 오픈스택에서 바로 설정하고
    외부에서 바로 접속할려면 어떻게 해야할까요?;;;
    2014.04.09 20:15
  • 프로필사진 Favicon of https://naleejang.tistory.com BlogIcon 나리 짱!!! naleejang 오픈스택에서 생성하는 VM 인스턴스에는 사설IP(Fixed IP)가 할당됩니다. 그리고, 외부에서 해당 인스턴스에 접속하기 위해 공인IP(Floating IP)를 할당을 해 주시면 됩니다. 그러면 외부에서 해당 인스턴스로 접근이 가능합니다.

    VM 자체에 직접 공인 IP를 할당하실 수는 없습니다.
    2014.04.10 08:51 신고
  • 프로필사진 openstacl 어려워 답변감사합니다. ㅠㅠㅋ;;
    추가 문의 드립니다.
    floating ip를 공인IP로 주면 외부에서 그 IP치면 바로 접근이 가능한건가요?;;
    오픈스택 웹페이지에서 설정을 어떻게 해주면 될까요?;;;ㅠㅠㅋ

    만약에 외부에서 접속하는 아이피가 211.xxx.xxx.xxx이고 linux서버도 211대라면 opstack에 instance 아이피는 10.대이고 172.대 유동IP로 연결되어있다면 이런 경우에는 외부에서 접속하려면 어떻게 해야하나요?

    vnc(http://211.~~~/?token=???)로 접속은 해보니되는거 같은데 직접 instance에 접속하는 법을 모르겠습니다. instance에 웹서비스를 올렸다면 접속 방법같은게 궁금해서요 ;;;
    2014.04.10 13:22
  • 프로필사진 초보 c클래스 끝 4비트와 마지막 d클래스 8비트까지 쓸 수있으니
    10.0.4.1~10.0.255.254가 아니라 10.0.0.1~10.0.15.254까지겠죠?
    2015.01.23 17:16
  • 프로필사진 Favicon of https://naleejang.tistory.com BlogIcon 나리 짱!!! naleejang 제가 숫자와 별로 친하지 않아서요 ㅠㅠ
    담에 시간날 때 다시 한번 더 계산해 봐야겠네요.
    2015.01.23 19:21 신고
  • 프로필사진 csg floating IP range는 어떻게 계산하는 것인지 궁금합니다............. 2015.05.10 00:17
  • 프로필사진 오리뎅이 0000 1010 . 0000 0000 . 0000 0100 . 0000 0000 Network IP (10.0.4.0)

    1111 1111 . 1111 1111 . 1111 1100 . 0000 0000 Subnet Mask (255.255.252.0)

    10.0.4.0 에서 4가 의미가 있으려면, 10.0.4.0/20이 아니라, 10.0.4.0/22 가 되어야 할 것 같습니다.

    10.0.4.0/20의 네트워크는 10.0.0.0이 되고, 초보님 말씀하신것처럼 Host 범위는 10.0.0.1 ~ 10.0.15.254 입니다.

    10.0.4.0/22의 네트워크는 10.0.4.0이 되고, Host 범위는 10.0.4.1 ~ 10.0.7.254 입니다.

    무엇인가 잘못된 부분이 있는데, 그게 뭔지 좀 더 openstack에 대해서 공부해 보면 알 수 있겠네요.


    2017.07.18 08:25
  • 프로필사진 naleejang 제가 숫자와 별로 안 친해서요..
    아무 제가 제대로 계산하지 못해서 그런것일수도 있겠네요.
    2017.07.22 21:46
  • 프로필사진 오리뎅이 Floating IP Range

    Virtual Instance를 외부에서 접속할 수 있도록 할당해 주는 공인 IP 범위.

    이 설명 부분에서 "공인 IP 범위"라는 부분때문에 좀 혼동이 되었었습니다. 10.xxx.xxx.xxx 나, 192.168.xxx.xxx는 둘 모두 사설 IP 대역인데요, Class에서는 둘 중 하나를 Fixed IP로 다른 하나를 Floating IP로 사용해서 설명을 하고 있거든요. 둘 다 사설 IP인데, 여기 설명에서 "공인 IP 범위"라고 해서 좀 혼동이 되었었습니다.

    Floating IP Range로 "공인 IP 범위"의 IP를 설정해 줄 수도 있고, 님이 강좌에서 예로 드신 것처럼 "사설 IP 범위"의 IP를 설정해 줄 수도 있네요. 단, "공인 IP 범위"의 IP를 설정해 주었을 경우에는 Public Internet 망에서도 접속이 가능한 것이고, "사설 IP 범위"의 IP를 Floating IP로 할당한 경우는 Public Internet 망에서는 접속이 불가능하고, Instance 외부 네트워크(사설 IP 네트워크이지만 다른 네트워크)에서 접속이 가능하네요.

    예를 들어 동일 사업자의 Data Center를 가정할때, Data Center의 각 장비들은 모두 사설 IP 네트워크를 할당해서 내부에서 서로간 통신이 가능한데요. 이럴때, VM instance에 Floating IP로 "사설 IP 대역"의 IP를 할당할 경우, Internet 에서 Access는 안되지만, Data Center의 다른 장비에서 instance로 access는 가능하게 되는 것이네요.
    2017.07.18 11:04
  • 프로필사진 naleejang 네. 맞습니다. 정확하게 이해를 하셨네요.

    Floating IP 대역은 외부에서 인스턴스에 접근하기 위한 IP대역을 말합니다.

    그래서, 통신사에서 할당받은 공인IP 대역이 될수도 있고, 내부에서만 사용하는 인트라넷 대역의 IP 범위가 될 수도 있습니다.
    2017.07.22 21:44
  • 프로필사진 캐슬링 지금 무슨 예기들을 하시고 계시거죠?? 아. 이해 못하는 나는 뭘까. ㅠㅠ 2진수/논리게이트는 아는데.. 이해 못함 2021.05.03 16:22
댓글쓰기 폼