본문으로 건너뛰기
ZEKILO
개발/클라우드연재 · 오라클 클라우드 무료 서버 만들기 2편

오라클 무료 서버 안정화, 임시 IP의 정체와 UFW·Swap·타임존 설정

· 9분 읽기

1편에서 만든 무료 서버의 공인 IP가 임시 IP인 것을 확인하고, 예약 IP 전환 검토와 UFW 방화벽, Swap 4GB, KST 타임존까지 서버를 안정화한 기록입니다.

이 글에서 다루는 내용

  • 예약된 퍼블릭 IP 목록이 비어 있던 이유
  • 인스턴스 VNIC에서 공인 IP의 수명(임시) 확인하기
  • 임시 IP를 예약 IP로 바꾸는 구조와 선택 기준
  • UFW로 22·80·443 포트만 열어 방화벽 다시 세우기
  • Swap 4GB로 메모리 부족(OOM) 대비하기
  • 서버 시간대를 한국 시간(KST)으로 바꾸기

1편에서 Welcome to nginx!까지 띄우고 나니 그대로 두기가 찜찜했습니다. 접속 확인을 위해 iptables -F로 방화벽을 통째로 비워 둔 상태였고, 서버 IP도 오라클이 자동으로 붙여 준 것을 그대로 쓰고 있었기 때문입니다. 나중에 도메인을 연결할 계획이라, 이 IP가 바뀌지 않는 것인지부터 확인하고 싶었습니다.

그래서 이번에는 IP부터 확인하고, 방화벽과 메모리, 시간대까지 서버를 켜 두고 신경 쓰지 않아도 되는 상태로 만들기로 했습니다. 결과부터 말씀드리면 방화벽과 스왑, 시간대는 20분 만에 정리했지만, 고정 IP는 기존 번호를 유지한 채로 바꿀 수 없는 구조라 반납 직전에 멈췄습니다.

테스트 환경


01 예약된 퍼블릭 IP 목록이 비어 있던 이유

서버를 만들 때 오라클이 자동으로 붙여 주는 공인 IP는 임시 퍼블릭 IP(Ephemeral Public IP)입니다. 당장 쓰는 데는 문제가 없지만, 나중에 도메인을 연결하려면 이 IP가 영구 고정 IP인지 아닌지가 중요해집니다. 먼저 계정에 고정 IP로 예약된 주소가 있는지부터 찾아봤습니다.

콘솔 왼쪽 상단 메뉴(≡)를 누르고, 사이드바에서 네트워킹으로 들어갔습니다.

햄버거 메뉴를 연 상태. 컴퓨트 카테고리가 펼쳐져 있고 왼쪽 사이드바에 네트워킹 항목이 보인다

네트워킹 메뉴가 펼쳐지면 오른쪽 끝 IP 관리 아래에 예약된 퍼블릭 IP가 있습니다.

네트워킹 메뉴가 펼쳐진 상태. 오른쪽 끝 IP 관리 아래 예약된 퍼블릭 IP 항목

화면에 들어가 보니 목록에 항목이 없다는 안내만 표시됐습니다. 1편에서 분명히 공인 IP를 받아 SSH 접속까지 마쳤는데 목록이 비어 있었습니다. 지금 서버가 쓰는 IP가 예약된 IP가 아니라 임시 IP라서 이 목록에 나오지 않는 것이었습니다.

예약된 퍼블릭 IPv4 주소 화면. 목록이 비어 있고 위에 퍼블릭 IP 주소 예약 버튼이 있다

퍼블릭 IP 주소 예약 버튼을 누르면 새 고정 IP를 발급받는 입력창이 열립니다. 하지만 여기서 바로 만들면 지금 쓰는 IP와 무관한 새 IP가 하나 더 생기기 때문에, 일단 취소를 누르고 인스턴스 쪽에서 현재 IP 상태부터 확인하러 갔습니다.

퍼블릭 IP 주소 예약 폼. 이름과 컴파트먼트, IP 주소 소스 Oracle, 하단에 취소와 퍼블릭 IP 주소 예약 버튼


02 인스턴스의 VNIC에서 IP 수명 확인

컴퓨트 → 인스턴스로 가면 실행 중인 서버와 퍼블릭 IP가 보입니다. 여기서 1편의 궁금증 하나가 풀렸습니다. 1편 캡처의 인스턴스는 instance-20260810-1357이었는데, 실제로 실행 중인 것은 instance-20260810-2215이고 생성 시각은 8월 10일 14:02 UTC입니다. 스택 재시도가 06:02 UTC였으니, 그날 밤 11시쯤 다시 만들어서 성공한 것이었습니다. 이 캡처를 보고서야 알게 됐습니다.

컴퓨트 → 인스턴스 목록. instance-20260810-2215가 실행 중이고 A1.Flex 2 OCPU 12GB, 생성 2026년 8월 10일 14:02:17 UTC

목록에서 인스턴스 이름을 눌러 세부정보로 들어갔습니다. 일반 정보 아래 인스턴스 액세스에 퍼블릭 IP 주소가 보이지만, 이것만으로는 고정인지 임시인지 알 수 없습니다.

인스턴스 세부정보. 일반 정보에 AD-1, ap-tokyo-1, 온디맨드가 보이고 아래 인스턴스 액세스에 퍼블릭 IP 주소가 있다

자세한 네트워크 설정을 보기 위해 상단의 네트워킹 탭을 눌렀습니다. 기본 VNIC 정보와 프라이빗 IP(10.0.0.165), 서브넷이 표시됩니다.

인스턴스의 네트워킹 탭. 기본 VNIC의 퍼블릭 IPv4 주소, 프라이빗 IPv4 주소 10.0.0.165, 서브넷 subnet-20260810-2217

화면을 조금 더 내리면 연결된 VNIC 섹션이 나옵니다. instance-20260810-2215 기본 VNIC 링크를 눌러 VNIC 상세 화면으로 들어갔습니다.

네트워킹 탭 아래쪽 연결된 VNIC 목록. instance-20260810-2215 기본 VNIC 한 줄이 연결됨 상태

VNIC 상세 화면 오른쪽의 기본 IP 정보를 확인하자 의문이 풀렸습니다. 퍼블릭 IP 주소 옆에 ’임시’라는 표시가 붙어 있었습니다. 지정된 시각도 인스턴스 생성 시각과 같은 14:02:21 UTC였습니다. 1편 끝에서 어디서 왔는지 모르겠다고 적어 둔 공인 IP는, 인스턴스가 만들어지는 순간 자동으로 붙은 임시 IP였습니다.

VNIC 세부정보. 오른쪽 기본 IP 정보의 퍼블릭 IP 주소에 임시 표시가 붙어 있고 지정됨 시각이 2026년 8월 10일 14:02:21 UTC

왼쪽 IP 관리 탭으로 넘어가서 확인해도 IPv4 목록의 IP 수명이 임시로 표시됩니다.

VNIC의 IP 관리 탭. IPv4 주소 목록에 IP 수명이 임시로 표시

여기서 고정으로 바꿀 수 있는지 확인하려고 줄 맨 오른쪽 점 세 개 아이콘을 누르고 편집으로 들어갔습니다.

IPv4 주소 줄 오른쪽 점 세 개 메뉴가 열린 상태. 편집, 태그 관리, IPv4 주소 예약 항목


03 임시 IP는 번호 그대로 고정이 안 되는 구조

프라이빗 IP 주소 편집 창이 열렸지만, 퍼블릭 IP 유형에는 퍼블릭 IP 없음과 임시 퍼블릭 IP 두 가지만 있었습니다. 찾고 있던 예약된 퍼블릭 IP라는 항목은 어디에도 보이지 않았습니다.

프라이빗 IP 주소 편집 창. 퍼블릭 IP 유형에 퍼블릭 IP 없음과 임시 퍼블릭 IP 두 개만 있고 임시 퍼블릭 IP가 선택돼 있다

확인해 보니 오라클 정책이 그렇습니다. 이미 쓰고 있는 임시 IP를 번호 그대로 예약된 IP로 승격해 주는 기능 자체가 없습니다. 예약 IP를 붙이려면 먼저 퍼블릭 IP 없음을 골라 지금 IP를 반납하고, 편집 창을 다시 열어 그때 나타나는 예약된 퍼블릭 IP를 선택해 새 IP를 만들어 붙여야 합니다. 즉, IP 번호는 반드시 한 번 바뀝니다.

구분 임시 퍼블릭 IP (기본값) 예약된 퍼블릭 IP (고정 IP)
비용 무료 (기본 부여) 무료 (계정당 1개 무료 한도)
인스턴스 종료 시 IP 자동 회수 계정에 IP 주소 그대로 보존
기존 번호 유지 승격 불가 (반납 후 새로 발급) 신규 발급 후 인스턴스에 매핑
적합한 용도 단순 테스트, 단기 실습 도메인 연결, 상시 운영 서버

임시 IP에서 예약 IP로 가는 두 단계. 번호 그대로 승격하는 길은 없고 반납 뒤 새 예약 IP를 붙여야 한다 (개념도)

실제로 퍼블릭 IP 없음을 선택해 보니 임시 퍼블릭 IP의 지정을 해제한다는 주의 문구가 표시됐습니다.

주의

여기서 업데이트를 누르면 그 자리에서 현재 공인 IP가 해제되고 외부 접속도 바로 끊깁니다.

편집 창에서 퍼블릭 IP 없음을 고른 상태. 임시 퍼블릭 IP의 지정을 해제한다는 주의 문구와 하단의 취소, 업데이트 버튼

핵심 팁: 지금 바꿀지, 그대로 둘지

  • 아직 이 IP를 어디에도 등록하지 않았다면, 지금 반납하고 예약 IP를 새로 만드는 편이 낫습니다. 번호는 바뀌지만 그 뒤로는 인스턴스를 지웠다 다시 만들어도 IP를 계속 유지할 수 있고, 바뀐 IP로 SSH에 접속하면 됩니다.
  • 무료 한도는 공인 IPv4 1개이므로, 임시 IP를 반납하고 예약 IP 하나를 만드는 구조라면 한도 안입니다.
  • 이미 외부 서비스나 방화벽 어딘가에 현재 IP를 등록해 두었다면, 취소를 누르고 그대로 두는 수밖에 없습니다.

저는 업데이트 직전에 멈췄습니다. 캡처도 여기까지입니다. 어느 쪽으로 진행할지는 글 끝의 “마치며”에 적어 두었습니다.

콘솔에서 인스턴스를 중지했다가 시작하면 임시 IP가 바뀔 수 있다는 이야기를 블로그 후기에서 자주 봤습니다. 터미널에서 sudo reboot를 하는 것은 상관없다고 합니다. 그런데 오라클 공식 문서에는 임시 IP도 인스턴스를 종료하기 전까지는 유지된다고 나와 있어, 어느 쪽이 맞는지 아직 확실하지 않습니다. 직접 중지했다가 시작해서 확인해 보지는 못했습니다. IP가 바뀔 수 있어서 당분간 콘솔의 중지 버튼은 누르지 않기로 했습니다.


04 UFW로 방화벽 다시 세우기

1편에서 iptables -F로 규칙을 전부 비우고 netfilter-persistent save로 저장해 둔 상태였습니다. 접속 테스트용으로는 편했지만 방화벽이 없는 것과 마찬가지라 그대로 둘 수는 없었습니다. iptables 규칙을 직접 작성하는 것보다 UFW(Uncomplicated Firewall)가 익숙해서 UFW를 사용했습니다. 오라클 이미지의 기본 iptables 규칙은 1편에서 이미 비웠기 때문에 UFW 규칙과 충돌할 부분도 없었습니다.

주의: 22번 포트부터 열기

22번 포트를 먼저 열어 둔 뒤에 방화벽을 켜야 합니다. 순서를 반대로 하면 지금 연결된 SSH 세션이 바로 끊겨 서버에 접속하지 못할 수 있습니다.

# SSH, HTTP, HTTPS만 연다
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# 방화벽 켜기
sudo ufw enable

# 상태와 허용 포트 확인
sudo ufw status verbose

enable을 실행하면 기존 SSH 연결이 끊길 수 있다는 확인 질문이 나오는데, y를 눌러 진행했습니다. status verbose 결과에 Status: active와 22, 80, 443 포트의 ALLOW IN 줄이 보이면 완료입니다. 1편에서 오라클 보안 목록에 열어 둔 8080은 당장 띄울 서비스가 없어서 이번 UFW 규칙에는 넣지 않았습니다. 오라클 클라우드 방화벽(Ingress Rules)은 1편 그대로 두고, 서버 내부 방화벽만 정리한 셈입니다.


05 Swap 4GB로 OOM 대비

RAM이 12GB라 평소에는 넉넉하지만, 빌드를 돌리거나 트래픽이 몰리면 메모리 부족(OOM)으로 프로세스가 갑자기 종료될 수 있어 Swap을 4GB 만들어 두었습니다. 부트 볼륨 200GB 안에서 디스크 일부를 쓰는 것이라 추가 요금은 발생하지 않습니다.

# 4GB 스왑 파일 만들기
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile

# 스왑으로 지정하고 켜기
sudo mkswap /swapfile
sudo swapon /swapfile

# 재부팅 뒤에도 올라오게 fstab에 등록
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

# 확인
free -h

chmod 600은 다른 일반 사용자가 스왑 파일을 읽지 못하도록 권한을 제한하는 명령입니다. fstab에 한 줄 등록해 두어야 재부팅한 뒤에도 Swap이 자동으로 켜집니다. free -h를 실행해 Swap 줄에 4.0Gi가 보이면 완료입니다.


06 시간대를 한국 시간으로

서버의 기본 시간대는 UTC라서, 로그 시간과 cron 실행 시각이 한국 시간보다 9시간 늦게 기록됩니다. 로그를 볼 때마다 9시간을 더해서 계산하는 것이 번거로워 바로 바꿨습니다.

sudo timedatectl set-timezone Asia/Seoul
date

명령 실행 후 date 출력 끝에 KST가 붙어 나오면 완료입니다.


정리

  • 서버 생성 때 자동으로 붙는 공인 IP는 임시 IP라서, 예약된 퍼블릭 IP 목록에는 나타나지 않습니다.
  • 임시 IP를 번호 그대로 예약 IP로 승격하는 방법은 없습니다. 편집 창의 선택지는 두 개뿐이고, 예약 IP를 붙이려면 현재 IP를 먼저 해제해야 합니다. 메뉴 어딘가에 전환 버튼이 있을 것 같아 IP 관리 탭과 점 세 개 메뉴를 한참 찾아봤지만 없었습니다. 찾지 못한 것이 아니라 원래 그런 구조였습니다.
  • UFW로 22·80·443 포트만 열어 1편의 iptables -F 상태를 정리했습니다. 22번을 먼저 열고 enable 해야 합니다.
  • Swap 4GB를 만들고 fstab에 등록했으며, 시간대는 Asia/Seoul로 바꿨습니다.

마치며

임시 IP를 반납하고 새 예약 IP로 바꿀지는 아직 정하지 못했습니다. 도메인을 연결하는 글 전에는 결정해야 하는데, IP를 바꾸는 순간 SSH 접속 주소도 함께 바뀌기 때문에 그 글에서 한꺼번에 작업하는 쪽으로 기울어 있습니다. 콘솔에서 중지와 시작을 했을 때 임시 IP가 실제로 바뀌는지도 나중에 직접 확인해 볼 예정입니다.

UFW, free -h, date 세 장면은 캡처가 비어 있어서 터미널 화면을 다시 찍어 채울 예정입니다. 다음 글은 Docker 설치와 첫 웹 서비스 배포가 될 것 같습니다. 글 목록에 있던 2·3편 내용이 1편에 들어가서 시리즈 순서는 아직 정리하는 중입니다.

참고한 곳

  • #오라클클라우드
  • #OCI
  • #무료서버

연재 글 목록 · 오라클 클라우드 무료 서버 만들기

  1. 1편오라클 클라우드 무료 서버 구축 가이드: 가입부터 PAYG 전환, Ampere 인스턴스 생성까지
  2. 2편오라클 무료 서버 안정화, 임시 IP의 정체와 UFW·Swap·타임존 설정 (지금 읽는 글)
  3. 3편오라클 클라우드 무료 서버에 내 도메인 연결하기: DNS A 레코드, Nginx 리버스 프록시, Let's Encrypt 무료 HTTPS
  4. 4편오라클 클라우드 무료 서버에 Docker 올리기: Portainer 관리, Uptime Kuma 배포와 서브도메인 HTTPS 연결
블로그 글 더 보기