임베디드 관련 카테고리/네이버 클라우드 플랫폼(NCP)

네이버 클라우드 VPC 서버 구축 및 Init Script 테스트

CBJH 2024. 11. 28.
728x90
반응형

이번 글에서는 **네이버 클라우드 플랫폼(Naver Cloud Platform, NCP)**을 활용해 VPC 서버를 생성하고, Init Script를 사용해 서버 공인 IP에 접속 시 특정 문구가 출력되는 과정을 다룹니다.

이 글의 주요 목표는 다음과 같습니다:

  1. VPC 서버 생성 및 네트워크 설정 방법 이해
  2. Init Script를 설정하고 결과를 확인하기

1. 네이버 클라우드 플랫폼 VPC 설정 시작하기

1.1 네이버 클라우드 플랫폼 접속

  1. 네이버 클라우드 플랫폼에 접속합니다.
  2. 네이버 아이디로 로그인 후, 왼쪽 메뉴에서 "Service"를 선택합니다.
  3. Networking > VPC로 이동합니다.




2. VPC와 서브넷 생성

2.1 VPC 생성

  1. VPC 메뉴에서 "VPC 생성" 클릭
    • VPC 이름: 생성할 VPC의 이름을 입력합니다. (예: test-vpc)
    • IP 주소 범위(CIDR):
      • VPC 내부에서 사용할 네트워크 범위를 정의합니다.
      • 기본값 10.0.0.0/16을 사용하거나 필요에 따라 변경하세요.(글 하단에 자세한 설명 첨부)
    • 유형:
      • 기본적으로 일반 VPC를 선택합니다.
    • 저장 후 새 VPC가 생성됩니다.


2.2 서브넷 생성

  1. 서브넷 생성 화면 이동:
    • VPC를 선택한 후, "서브넷 생성" 버튼을 클릭합니다.
  2. 서브넷 설정 항목:
    • 서브넷 이름: PublicSubnet으로 설정 (예: test-public-subnet).
    • IP 주소 범위(CIDR): 10.0.1.0/24와 같이 적절한 범위를 설정합니다.
    • 가용 영역(Availability Zone):
      • 서버가 배치될 물리적 데이터 센터를 선택합니다. (예: KR-1, KRS-1 )
    • Network ACL:
      • 네트워크 접근 제어 규칙을 지정합니다. 기본값으로 둡니다.
    • Internet Gateway 전용 여부:
      • Internet Gateway 전용 여부에서 "Y"를 선택하면 public이고, "N"를 선택하면 private이 됩니다.
    • 용도:
      • 일반으로 설정합니다.

 


 

 

3. 서버 생성 및 Init Script 설정

 

3.1 Init Script 설정

Init Script는 서버 생성 시 초기화를 자동으로 실행합니다.

  1. Init Script 생성 방법:
    • Server > Init Script 메뉴로 이동.
    • "Script 생성" 클릭 후 아래 내용을 입력합니다.
    • Init Script는 서버 생성시에 한 번 실행되므로 나중에 수정하고 서버를 재시작해도 반영이 안됩니다. 신중이 작성해주세요.
  2. Init Script 예제:
#!/bin/bash

# Update and upgrade without prompts
export DEBIAN_FRONTEND=noninteractive
sudo apt update -y
sudo apt upgrade -y

# Install Apache2
sudo apt install -y apache2

# Start and enable Apache2 service
sudo systemctl start apache2
sudo systemctl enable apache2

# Create a test index.html file
echo "<html><h1>Welcome to Test NCP Server!</h1></html>" | sudo tee /var/www/html/index.html

# Check Apache2 service status
sudo systemctl status apache2

3.2 서버 생성

  1. 서버 생성 화면 이동:
    • Server > 서버 메뉴로 이동한 후, "서버 생성" 버튼 클릭.
  2. 서버 설정 항목:
    • 이미지 타입: 일반적으로 " OS"를 선택합니다. (Application : os와 함께 특정 app을 함께 서버에 설치해줌, DBMS os와 함께 특정 DMBS를 함께 서버에 설치해줌)
    • OS 이미지 타입: Ubuntu 20.04 또는 CentOS 7 중 하나를 선택합니다.
    • 서버 타입: 테스트용이므로 standard를 선택한다.
  3. 인증키 설정:
    • 서버 생성 시 사용할 pem 키 파일을 생성하거나 기존 키를 선택합니다. 
    • 키 생성 예시 (이름 : test-nc-pem-key)
    • 키 파일은 한 번만 다운로드 가능하므로 반드시 백업해 두세요.
    • MobaXterm이나 Putty같은 원격 프로그램으로 SSH 접속할 경우 필요합니다.
  4. 네트워크 접근 설정:
    • 퍼블릭 서브넷 선택: 이전에 생성한 PublicSubnet을 선택합니다.
    • 퍼블릭 IP 할당: "자동 할당" 옵션을 선택해 공인 IP를 부여합니다.


3.3 보안 그룹 설정

  1. Server > ACG 메뉴로 이동해 보안 그룹 생성:
    • 기본 보안 그룹 이름: test-vpc-default-acg
    • ACG 설정을 클릭해서 수정합니다.
  2. 인바운드 규칙 추가:
    • SSH(포트 22):
      • 역할: 로컬 PC에서 서버에 접속하기 위해 필요.
      • 소스: 0.0.0.0/0 (모든 IP 허용).
    • HTTP(포트 80):
      • 역할: 브라우저로 공인 IP에 접속해 Init Script 설정 결과를 확인.
    • RTSP(포트 554):
      • 역할: TX2에서 서버로 RTSP 스트림을 송출.
      • 저는 이후에TX2와 Gstream 통신을 위해 설정했으나 안해도 무방합니다.
    • HTTPS(포트 443):
      • 역할: HTTPS 요청 처리.
    • 설정 후 저장합니다.
  3. 아웃바운드 규칙:
    • 기본적으로 모든 트래픽을 허용하므로 별도의 설정이 필요하지 않습니다.


4. Init Script 테스트

4.1 브라우저에서 테스트

  1. 서버 생성 완료 후 공인 IP를 확인합니다.
    • 예: http://211.188.80.93/
  2. 브라우저에서 서버의 공인 IP를 입력합니다.
  3. 결과 확인:
    • 정상적으로 설정되었다면, "Welcome to My NCP Server!"라는 문구가 출력됩니다.


 

5. MobaXterm을 통한 SSH 접속

  1. MobaXterm 설정:
    • Session > SSH를 선택.
    • Remote Host: 서버의 공인 IP 입력 (예: 211.188.84.169).
    • Port: 22.
    • Use private key: 서버 생성 시 다운로드한 pem 키 파일을 선택.
  2. SSH 접속:
    • Username: Ubuntu 서버의 계정은 ncloud
    • 비밀번호는 Server에서 관리자 비밀번호를 확인합니다.
    • 접속 후 명령어 실행으로 서버 상태 확인 가능.
  3. Ubuntu 서버 계정 및 비밀번호 확인 방법

1. 경로 : VPC > Server > Server

   해당 페이지에서 서버이름 및 서버 공인IP 확인 

2. 생성한 서버에 체크박스 선택 후 [서버 관리 및 설정 변경] 클릭하여  '관리자 비밀번호 확인'을 선택합니다.

 

 

 

3. 패키지 생성 시 다운로드 된 Pem Key 파일을 등록하면 관리자 이름(ID) 및 비밀번호 확인이 가능합니다.

 


6. 추가 설정 (다음 목표)

다음 글에서는 GStreamer를 설치하고, TX2에서 서버로 RTSP 스트림을 송출하며, 이를 로컬 PC에서 확인하는 과정을 다룰 예정입니다.


 

7. 네이버 클라우드 서버 구축 전 알아둘 기본 개념

CIDR 블록과 서브넷

  • CIDR(Classless Inter-Domain Routing): 네트워크의 IP 주소 범위를 정의하는 방식입니다.
    • 예: 10.0.0.0/16은 네트워크의 첫 16비트를 네트워크 주소로, 나머지 16비트를 호스트 주소로 사용함을 의미합니다.
    • 서브넷은 CIDR 블록을 나누어 더 작은 네트워크 단위를 생성한 것입니다. 예를 들어, 10.0.1.0/24는 256개의 IP 주소를 포함한 서브넷을 나타냅니다.1. CIDR 블록의 구성
      • 네트워크 주소: IP 주소의 앞부분으로 네트워크 범위를 나타냅니다.
      • 슬래시(/) 뒤 숫자: 서브넷 마스크를 나타내며, 네트워크와 호스트 주소를 구분합니다.
      예시: 10.0.0.0/16
      • 10.0.0.0: 네트워크 주소 (이 범위 내의 IP를 네트워크에서 사용).
      • /16: 네트워크 부분이 16비트라는 뜻.

      2. 슬래시(/) 뒤 숫자의 의미
      • 16비트는 네트워크에 사용 → 고정된 네트워크 주소.
      • 나머지 16비트는 호스트 주소에 사용 → 해당 네트워크에서 사용할 수 있는 IP 주소의 수 결정.
      네트워크 비트와 호스트 수 계산CIDR네트워크 비트호스트 비트사용 가능한 IP 수IP 범위
      /8 8 24 16,777,216 10.0.0.0 - 10.255.255.255
      /16 16 16 65,536 10.0.0.0 - 10.0.255.255
      /24 24 8 256 10.0.0.0 - 10.0.0.255
      /28 28 4 16 10.0.0.0 - 10.0.0.15
      • 사용 가능한 IP 수 = 2^(호스트 비트 수) - 2
        • 2개는 네트워크 주소와 브로드캐스트 주소로 예약되기 때문에 실제 사용 가능한 IP는 줄어듭니다.

      3. 네이버 클라우드에서 설정 가능한 IP 주소 범위 예시3.1 작은 네트워크 구성 (테스트용)
      • CIDR: 10.0.1.0/24
        • 사용 가능한 IP: 254개 (작은 규모의 테스트 서버에 적합).
        • 범위: 10.0.1.0 ~ 10.0.1.255.
      3.2 중간 네트워크 구성 (일반적인 회사 환경)
      • CIDR: 10.0.0.0/16
        • 사용 가능한 IP: 65,534개 (회사 네트워크나 대규모 클라우드 구성에 적합).
        • 범위: 10.0.0.0 ~ 10.0.255.255.
      3.3 큰 네트워크 구성 (특수 대규모 환경)
      • CIDR: 10.0.0.0/8
        • 사용 가능한 IP: 16,777,214개 (매우 큰 네트워크 환경에 적합).
        • 범위: 10.0.0.0 ~ 10.255.255.255.

      4. 슬래시 숫자를 기반으로 서브넷 나누기
      • 예: 10.0.0.0/16을 나누기
      • /16 네트워크를 /24로 나누면, 각각 256개의 IP를 가진 서브넷이 생성됩니다:
        • 10.0.0.0/24 (256개 IP)
        • 10.0.1.0/24 (256개 IP)
        • 10.0.2.0/24 (256개 IP)
    • CIDR 블록을 기반으로 더 작은 네트워크(서브넷)로 나눌 수도 있습니다.
    • 기본값인 10.0.0.0/16 외에도 원하는 범위를 설정할 수 있습니다. 네트워크 규모에 따라 적절한 범위를 선택하세요.
    • 슬래시(/) 뒤 숫자는 네트워크 비트를 나타내며, 남은 비트는 호스트 주소에 사용됩니다. IPv4 주소는 총 32비트이므로, /16이라면:
    • CIDR 블록은 다음과 같이 구성됩니다:

인바운드 vs 아웃바운드 규칙

  • 인바운드 규칙: 서버로 들어오는 트래픽을 제어합니다. 예를 들어, SSH(포트 22) 또는 RTSP(포트 554) 접속을 허용하는 설정입니다.
  • 아웃바운드 규칙: 서버에서 나가는 트래픽을 제어합니다. 기본적으로 아웃바운드는 모든 트래픽이 허용됩니다.

하이퍼바이저 종류

  • 네이버 클라우드에서는 다양한 하이퍼바이저를 기반으로 서버를 제공합니다.
    • XEN, RHV: 안정적이고 전통적인 하이퍼바이저.
    • KVM: 고성능과 유연성을 제공하며, 최신 기술을 지원.
    • g1, g2 서버는 XEN/RHV 기반, g3 서버는 KVM 기반으로 동작합니다.

댓글