안녕하세요 오늘은 네이버 클라우드 플랫폼 이죠 NCP 에 대해서 적어 보려고 합니다.

최근 1년사이에 www.ncloud.com/ 에서도

네이버 클라우드 플랫폼의 최근 추가된 VPC 

VPC(Virtual Private Cloud) 가 출시 되며 기존에 있던 네이버 클라우드 플랫폼에 Classic 환경에서 사용하던

ACG(AccessControlGroup) 은 VM < - > VM 단위의 네트워크 룰을 적용하였다면 VPC가 출시되면서 Subnet 이라는 개념과 함께 Subnet < - > Subnet 의 네트워크 룰을 적용할수 있는 NACL 이 등장하게 되었습니다.

기본적으로  NACL 은 ACG와는 조금 다른 형태를 띄고 있기 때문에 이에 대해서 간단하게 적어 놓도록 하겠습니다.

 

NACL ( Network  Access Control List ) 

네이버 클라우드 플랫폼 환경에서 기존에 Classic에 경우는 ACG를 통하여서 VM 간의 차단룰을 적용했다면 NACL의 경우에는 Subnet 을 통한 차단룰을 적용합니다.  간단하게 설명된 곳이 있어 첨부합니다.

출처 : 코스콤 금융 클라우드 www.koscom.cloud/product/networking/vpc

서버의 접근 제어 서브넷의 접근 제어
허용 (Allow) 허용 및 거부 (Allow/Deny)
상태 저장
(규칙에 관계없이 반환 트래픽이 자동으로 허용됨)
상태 비저장
(반환 트래픽이 규칙에 의해 명시적으로 허용되어야 함)
ACG를 서버의 NIC에 적용 서브넷에 있는 모든 서버에 자동 적용됨

흔히 ACG는 Stateful NACL 은 Stateless라고 표현을 하기도 합니다.  ACG는 따로 포스 중이기 때문에 거기서 설명하도록 하겠습니다. 

NACL 을 적용해 보기 위해서는 일단 네이버클라우드플랫폼에서 VPC와 Subnet을 하나 만들어야합니다.

VPC 생성

Console 접속 후 VPC - VPC Management 에서 [ + VPC 생성 ] 을 클릭하여 아래와 같이 생성합니다.

기본적으로 특수 목적용 사설 IP대역은 위의 범위내에서 지정하도록 되어있기 때문에 저는 10.2.0.0/16 대역으로 지정하였습니다. 이부분에 대해서도 CIDR에 대한 설명이 필요하지만 해당 포스팅에선 따로 설명하지 않겠습니다.

생성이 완료되면 VPC내부에 VM 을 놓기 위한 Subnet을 생성합니다.

 

Subnet 생성 

VPC Management 바로 밑에 있는 Subnet Management 로 들어가서 [ + Subnet 생성 ] 을 선택합니다.

원하는 서브넷 이름을 정하고 방금 생성한 VPC를 선택하도록 합니다.

 

VM 생성

VM 생성은 이제 일반적인 서버 생성을 하신다고 보면되며 2개의 VM 이 생성되었다고 가정하겠습니다.

Send-Server( 10.2.1.55 )    

Recv-Server ( 10.2.1.77 )

 

NACL

NACL 은 기본적으로 VPC가 생성됨에 따라서 vpc-default-network-acl 이 하나 생성되며 아무런 룰도 존재하지않습니다.

NACL 의 Default 룰은 ALLOW 입니다. 그렇기 때문에 기본적인 서버를 생성시에는 ACG룰에 의하여 적용이 됩니다. (ACG는 Default DENY)

위와같이 NACL 의 경우 Default 가 "ALLOW" 이기 때문에 아무런 룰이 없어도 NACL 규칙에 위반되는 트래픽이 발생하지않습니다. 

 

해당 상황에서 

Send-Server( 10.2.1.55 )  ==== > Recv-Server ( 10.2.1.77 ) 에서 10.2.1.77 의 22번 포트차단시 단순하게는 

Case 1

   InBound 10.2.1.77  22 차단

Case 2

   OutBound 10.2.1.77 22 차단

 

2개의 케이스를 도출해낼수 있다고 생각 할수 있는데요  실제로 케이스 1번은 차단되지않습니다. 

처음에 잘못 생각 했던 부분이 Case 1번과 같이 룰을 지정해 놓게 되면

Send-Server 에서 -> Recv-Server 까지는 트래픽이 나가고 ( 인바운드만 차단이니까 ) 다시 들어올 때 10.2.1.77 의 22번 포트로 들어오겠지? 라는 생각에 당연히 막히겠지 라는 잘못된 생각을 가질수 있습니다.

 

간단하게 정리하면

 

NACL

-- inbound 포트 : 목적지 포트 ( VM 으로 들어오는 port )

-- outbound 포트 : 출발지 포트 ( VM 에서 나가는 port )

 

그럼 1번 케이스가 차단이 되어야 하지 않나? 라고 여기서고 생각한다면 OS에 특징을 봐야합니다. 네이버클라우드플랫폼에 있는 Centos 7.8 OS를 기준으로 하게되면  inbound 룰을 차단하게 되면  10.2.1.77 로는 일단 트래픽이 나가고 

다시 들어오는 IP 와 포트의 22을 차단하게 됩니다. 실제로 들어오는 IP는 10.2.1.77 이 들어옵니다. 하지만 Port는 랜덤하게 지정해줘서 들어오게 됩니다.  해당 포트 는 1024 ~ 65535 에서 랜덤으로 주게 되었으며 실제로 우리가 알고 있는 port의 범위는

 

0 ~ 1023 : well-known port번호 해당 영역의 port번호는 UNIX/LINUX에서 root 권한으로만 port를 열 수 있습니다. 예약영역이라고 보면 됩니다. 

1024 ~ 49151번: 등록된 포트 (registered port) 이 영역은 주로 서버 소켓으로 사용하는 영역입니다. 

49152 ~ 65535번 : 동적 포트(dynamic port) 이 영역은 client가 connect(2)시 또는 bind(2)없이 server socket을 생성했어 listen(2)할 경우에 자동으로 할당되는 영역입니다. server socket에서 자동할당하면, client에게 할당된 port번호를 알릴방법이 있어야하기 때문에 서버 소켓은 prot번호를 정합니다.

위와같은 영역이 정해져있습니다. 하지만 우리가 쓰고있는 VM들은 어느 범위 내에서 포트를 할당할시 알수가 있습니다.

바로 port_range 인데요 

네이버 클라우드 플랫폼의 VM인 Centos 7.8 을 기준으로 

vi /proc/sys/net/ipv4/ip_local_port_range

결과

32768   60999

 

해당 범위내에서 포트를 지정해서 다시 돌려주도록 되어있습니다. 제가 Express.js나 Java 서버든 장고를 사용하든 해당 OS설정으로 인해서 해당 포트의 범위를 돌려줍니다.

 

그래서 위의 상황에서 CASE는 아래와같이 변경되어야 합니다.

 

Send-Server( 10.2.1.55 )  ==== > Recv-Server ( 10.2.1.77 ) 에서 10.2.1.77 의 22번 포트 차단시 단순하게는

Case 1

   InBound 10.2.1.77  32768-60999 차단

Case 2

   OutBound 10.2.1.77 22 차단

 

이렇게 되면 1번 케이스에서 55서버는 77서버로 아웃바운드 트래픽을 정상적으로 나가고 77서버는 55서버에게 다시 돌려주기 위해서 10.2.1.77:(32768-60999) 포트를 돌려주게 되며 해당 룰은 차단되어있기 때문에 10.2.1.55 서버에서 NACL 에 의해 막히게 됩니다. 

 

간단하게 NACL 에 대해 살펴 보았습니다. 사실 위에 부분 말고는 처음 NACL 을 접하였을 때 특이사항은 없었던 것 같습니다.  잠깐 신경 안쓰다 보니 다시 잊혀져 가는거 같아서 포스팅을 해놓았습니다.  ㅎㅎ

 

 

감사합니다.

안녕하세요 오늘은 국내 클라우드 중 NBP (Naver Business Platform) 의 맛을 보기 위해서 회원 가입을 하고 접속

 

해보았습니다.

https://www.ncloud.com/intro/feature

 

NAVER CLOUD PLATFORM

cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification

www.ncloud.com

제가 생각 하기엔 국내 최고의 클라우드를 서비스 하는 곳이라고 생각되어집니다.

 

새로 가입을 하게 되면은 서비스를 이용하기 위해서 결제 수단을 등록 하게 되는데요

 

결제 수단등록 시 1 년간 Micro Server 를 무료로 사용하실수 있습니다.

https://www.ncloud.com/support/notice/all/387  // 마이크로 서버 공지 

 

NAVER CLOUD PLATFORM

cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification

www.ncloud.com

1년이 지나게되면은 유료 가격이 측정 되니 꼭 유의해주세요!!

1시간     19 원 

월         13,000원 

 

프리티어 1년 짜리 Micro Server 에 node.js를 세팅해보려고 합니다. 

 

좌측 상단에 Console 이라는 창을 눌러서 NBP Console 에 접속 한 다음에 

 

Server -> Server 에 들어가시게 되면

서버 생성이라는 화면을 볼수 있습니다. 

 

이 부분에서는 centos -7.3-64를 선택 할건데요  

 

서버 타입 : Micro

 

로 꼭 설정해주셔야 합니다. (하지만 돈 나가용!)

 

이후에 해야 하는 것들은

 

인증키 설정 (절대 잊어 버리시면 안됩니다.)

ACG(Access Control Group) 설정 

공인 IP 할당( Public IP )

 

사실 이부분은 제가 따로 작성할 필욘 없을 것 같습니다. 이미 NBP 공식 블로그에서 너무 자세히 설명이 되어있어서

https://blog.naver.com/n_cloudplatform/221030710983

 

[이렇게 사용하세요!] 네이버 클라우드 플랫폼으로 손쉽게 웹 서버(APM) 구축하기

​네이버 클라우드 플랫폼을 이용하여 나만의 웹페이지 만들기​​블로그, 카페, 티스토리 등 컨텐츠를 올...

blog.naver.com

그리고 위의 url에 없는 포트포워딩과 ACG 공인 IP 가이드 자료입니다.

http://docs.ncloud.com/ko/compute/compute-2-2-v2.html

 

설명서 - NAVER CLOUD PLATFORM

서버 접속 절차 서버 접속 절차는 3단계로 구성됩니다. 리눅스 서버 접속 윈도우 서버 접속 포트 포워딩이란? 네이버 클라우드 플랫폼에서 구매한 서버는 비공인 IP가 할당됩니다. 포트 포워딩은 인터넷을 통해 비공인 IP가 할당된 서버에 접속하기 위한 기능을 제공합니다. 서버 접속을 위한 공인 IP는 고객당 1개가 할당되며 직접 설정한 외부 포트번호로 서버를 구분합니다. 아래와 같이 외부 포트 번호로 1024와 1025를 설정하는 경우, 포트 번호와 연결된

docs.ncloud.com

여기까지 완료가 되면 이제 접속을 할수 있게 되는데요

 

Micro Server는 말그대로 정말 아무것도 없는 형태로 만들어집니다. 위의 작업이 다 되었다면 Putty 를 통해

 

접속 합니다.

유저 생성

useradd -m user명 (-m은 홈 디렉토리를 같이 생성하는 옵션입니다. test라면 /home/test 가 같이 생성되는)

passwd user명 (위의 생성한 유저의 패스워드를 설정 합니다.)

 

권한 설정

최초 실행시에는 sudoers 권한이 없기 때문에 관리자 권한이 필요하면 매번 root로 들어가야되는데 

sudoers를 설정해 놓으면 sudo를 통해 권한을 빌려와서 사용할수 있습니다. 그렇기 때문에 해당 권한을 설정해줍니다.

 

su user명 ( 계정변경 )

 

su root(루트 계정으로 변경)

 

cd /etc/ (etc 경로로 이동)

 

chmod u+x sudoers (열어서 수정하기 위한 권한 입력)

 

vi sudoers ( sudoers 열기 )

su user명 ( 계정변경 )

su root(루트 계정으로 변경)

cd /etc/ (etc 경로로 이동)

chmod u+x sudoers (열어서 수정하기 위한 권한 입력)

vi sudoers ( sudoers 열기 )

 

## Allow root to run any commands anywhere 밑에
계정명 ALL=(ALL) ALL  

 

** 만약에 못찾으신다면 vi로 여신 후  / 를 입력 후

 

입력 입력하여서 위치를 찾을수 있습니다. 저는 oqa라는 계정에 추가 하였는데요  위와같이 입력 후 


ESC + : wq!  ( 강제 저장 후 종료 )

 


chmod 440 sudoers (기본값 원복)

su 계정명 ( 계정이동 - root가 아닌 원래의 계정으로 이동 ) 

     -> 이제 sudoers가 있기 때문에 root의 권한을 빌릴수 있습니다.

 


sudo yum install -y yum-utils 
( 레포지토리 추가 )  

sudo yum-config-manager \ --add-repo \ https://docs.docker.com/engine/installation/linux/repo_files/centos/docker.repo
( docker stable 레포 추가) 

sudo yum makecache fast 
( update yum package index ) 

(CentOS 7) 
sudo yum -y install docker  

docker -v 
버전 확인 ( 1.13.1 build b2f74b2/) 

sudo service docker start 
( 도커 시작 ) 

sudo chkconfig docker on 
(부팅 시 자동실행)  

버전명 보는 법 cat /etc/*-release 

curl -fsSL https://get.docker.com/ | sudo sh 
도커 설치  


자 여기까지 Docker 설치까지 완료 되었습니다.

다음포스팅에서는 간단하게 Node.js 를 Docker를 통해서 설치 해보도록 하겠습니다.

 

+ Recent posts