[트러블슈팅] EC2 재시동 후 iptable 맵핑 정보 사라지는 현상 해결

2024. 6. 16. 16:07·여러가지/오류

EC2 재시동 후 iptable 맵핑 정보 사라지는 현상 해결

개요

 AWS EC2 인스턴스에서 포트 80으로 들어오는 HTTP 요청을 포트 8080으로 리다이렉트하는 작업 중 발생한 문제와 그 해결 과정을 다룹니다. 또한, 인스턴스 재시작 후 iptables 규칙이 유지되도록 설정하는 방법을 포함합니다.

 

문제가 발생한 상황

포트 80으로 들어오는 HTTP 요청을 포트 8080에서 실행 중인 애플리케이션으로 리다이렉트하려는 설정 작업 중, EC2 인스턴스를 중지하고 다시 시작한 후 iptables 규칙이 사라지는 문제가 발생했습니다. 이로 인해 리다이렉션 설정이 유지되지 않았습니다.

 

문제의 원인

EC2 인스턴스를 중지하고 다시 시작하면 iptables의 규칙이 휘발성 메모리에 저장되기 때문에 사라집니다. 이는 리눅스 시스템에서 iptables 규칙이 기본적으로 휘발성 메모리에 저장되기 때문에 발생합니다.

 

해당 문제의 원인이 발생한 이유

AWS EC2 인스턴스를 재부팅하거나 중지/시작하면 메모리가 초기화되기 때문에, 메모리에 저장된 iptables 규칙이 모두 사라집니다. 이로 인해 인스턴스를 다시 시작할 때마다 iptables 규칙을 수동으로 다시 설정해야 하는 불편함이 발생합니다.

 

문제를 해결하기 위한 방법

iptables 규칙을 영구적으로 저장하여 인스턴스를 재부팅하거나 다시 시작해도 규칙이 유지되도록 설정합니다. Ubuntu 22.04를 사용하고 있으므로, iptables-persistent 패키지를 설치하여 이를 해결합니다.

 

1. 운영 체제 정보 확인

uname -a
cat /etc/os-release
lsb_release -a

운영 체제는 Ubuntu 22.04이며, 커널 버전은 6.5.0-1017-aws였습니다.

 

2. iptables 규칙 추가

포트 80으로 들어오는 요청을 포트 8080으로 리다이렉트하는 규칙을 추가합니다.

 

추가 전, 반드시 ip addr 명령어를 이용하여 현재 적용해야 할 네트워크 인터페이스 명을 확인합니다.  

저의 경우 당시, ens5 였습니다.

sudo iptables -t nat -A PREROUTING -i ens5 -p tcp --dport 80 -j REDIRECT --to-port 8080

 

3. iptables-persistent 패키지 설치

sudo apt-get update
sudo apt-get install iptables-persistent

설치 과정에서 규칙을 저장할지 묻는 메시지가 나타나면 'Yes'를 선택합니다.

 

4. 현재 iptables 규칙 저장

sudo netfilter-persistent save

또는

sudo sh -c "iptables-save > /etc/iptables/rules.v4"

5. 저장된 규칙 확인

cat /etc/iptables/rules.v4

 

결론

iptables 규칙을 영구적으로 저장하는 방법을 통해, EC2 인스턴스를 중지하고 다시 시작하더라도 포트 80에서 포트 8080으로의 리다이렉션 설정이 유지되도록 할 수 있었습니다. 이를 통해 서버가 재부팅되더라도 리다이렉션 설정이 안정적으로 유지됩니다.

 

느낀점

이번 작업을 통해 리눅스 서버 기동 이후 iptables와 같이 메모리에 설정 정보를 단순히 저장하고 디스크에 저장하지 않는 것들에 대해 알게 되었습니다. 이를 통해 중요한 설정 정보는 디스크에 영구적으로 저장하여 서버 재부팅 시에도 설정이 유지되도록 하는 것이 중요하다는 것을 깨달았습니다.

 

추가 정보: 디스크에 저장되지 않는 설정들

리눅스 서버에서 설정 정보가 휘발성 메모리에만 저장되는 몇 가지 다른 예는 다음과 같습니다:

  1. Routing Table:
    • 네트워크 라우팅 테이블은 ip route 명령어로 설정되며, 서버 재부팅 시 초기화됩니다. 영구적으로 유지하려면 설정 파일에 저장해야 합니다.
  2. Temporary File Systems (tmpfs):
    • /tmp와 같은 임시 파일 시스템은 메모리 기반 파일 시스템으로, 재부팅 시 모든 데이터가 사라집니다.
  3. Sysctl 설정:
    • sysctl을 통해 설정된 커널 매개변수는 재부팅 시 사라집니다. 이를 영구적으로 유지하려면 /etc/sysctl.conf 파일에 설정을 추가해야 합니다.
  4. Firewall Rules (firewalld):
    • firewalld를 사용하여 설정된 방화벽 규칙은 재부팅 시 사라질 수 있습니다. 영구적으로 유지하려면 firewalld의 설정 파일에 저장해야 합니다.
저작자표시 (새창열림)

'여러가지 > 오류' 카테고리의 다른 글

[트러블슈팅] 80포트 요청을 8080포트로 리다이렉션하기(feat. AWS)  (1) 2024.06.16
[트러블슈팅] Github Action을 이용한 CICD  (0) 2024.06.16
pyenv 실행 오류  (0) 2024.03.10
'여러가지/오류' 카테고리의 다른 글
  • [트러블슈팅] 80포트 요청을 8080포트로 리다이렉션하기(feat. AWS)
  • [트러블슈팅] Github Action을 이용한 CICD
  • pyenv 실행 오류
hyeseong-dev
hyeseong-dev
안녕하세요. 백엔드 개발자 이혜성입니다.
  • hyeseong-dev
    어제 오늘 그리고 내일
    hyeseong-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (283)
      • 여러가지 (108)
        • 알고리즘 & 자료구조 (73)
        • 오류 (4)
        • 이것저것 (29)
        • 일기 (1)
      • 프레임워크 (39)
        • 자바 스프링 (39)
        • React Native (0)
      • 프로그래밍 언어 (39)
        • 파이썬 (31)
        • 자바 (3)
        • 스프링부트 (5)
      • 컴퓨터 구조와 운영체제 (3)
      • DB (17)
        • SQL (0)
        • Redis (17)
      • 클라우드 컴퓨팅 (2)
        • 도커 (2)
        • AWS (0)
      • 스케쥴 (65)
        • 세미나 (0)
        • 수료 (0)
        • 스터디 (24)
        • 시험 (41)
      • 트러블슈팅 (1)
      • 자격증 (0)
        • 정보처리기사 (0)
      • 재태크 (0)
        • 암호화폐 (0)
        • 기타 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프로그래머스
    Python
    Spring WebFlux
    FastAPI
    취업리부트
    SAA
    celery
    RDS
    백준
    Redis
    #개발자포트폴리오 #개발자이력서 #개발자취업 #개발자취준 #코딩테스트 #항해99 #취리코 #취업리부트코스
    Docker-compose
    mybatis
    spring
    항해99
    WebFlux
    ecs
    java
    자바
    DP
    Spring Boot
    완전탐색
    reactor
    OOP
    시험
    그리디
    파이썬
    AWS
    docker
    EC2
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hyeseong-dev
[트러블슈팅] EC2 재시동 후 iptable 맵핑 정보 사라지는 현상 해결
상단으로

티스토리툴바