본문 바로가기
리눅스

iptables 기본

by 김으껀 2025. 2. 28.

iptables는 

간단히 말해서 리눅스 내부에서 패킷을 제어하는 도구이다.

  • 제어 규칙을 정의하는 기본 단위를 Chain
  • 기본 테이블로 filter(방화벽), nat(IP주소 매스커레이드), mangle이 있으며, 필요에 따라 추가 혹은 삭제가 가능
    • filter: 기본 테이블로 방화벽 관련 작업이 이루어짐
    • *nat: 방화벽을 통해 내부 네트워크로 들어가거나 외부 네트워크로 나갈 때 주소를 변환하는 역할
      • SNAT: Source IP 주소 변경 ex) 마스커레이딩
      • DNAT: Destination IP 주소 변경 ex) Port Forwarding
    • mangle: TTL, TOS(Type of Service, 패킷 우선순위) 변경 같은 특수 규칙을 적용하기 위해 사용
    • raw: 연결 추적(Connection Tracking) 기능을 자세히 설정이나 연결 추적 제외 시 사용

NAT: 사설(Private) IP를 공인(Public) IP로 변경에 필요한 주소 변환 서비스

  • NAT는 다수의 주소 변환 정보에 대해 IP 주소와 Port 번호로 구성된 NAT Forwarding Table을 보관하고 있고 이에 맞게 주소 변환 서비스를 제공
  • NAT Table → 내부 네트워크에 위치한 호스트들의 사설 IP와 포트 번호에 대한 정보를 가지고 있음
  • NAT Table → 외부로 나갈 때의 동일한 공인 IP와 각기 다른 포트 번호를 가지고 있음
  • NAT Table → 목적지 주소의 공인 IP와 서비스에 사용된 동일한 서비스 포트 번호를 가지고 있음
  • 공인 IP는 같으나 포트 번호를 다르게 할당하여 각각의 호스트를 구분

 

 

명령어

$ iptables [-t table] [action] [chain] [matches] [-j target] 형식으로 사용

 

Action 옵션

  • -A: 새로운 정책 추가
  • -I: 위치를 선택하여 정책을 삽입
  • -D: 정책을 삭제
  • -R: 정책을 교체
  • -P: 기본 정책 설정
  • -L: 정책 목록 확인
  • -F: 체인으로부터 모든 정책 삭제

chain: iptables의 제어 규칙을 정의하는 기본 단위

  • INPUT: 호스트 향한 모든 패킷
  • OUTPUT: 호스트에서 발생하는 모든 패킷
  • FORWARD: 호스트가 목적지가 아닌 모든 패킷
  • PREROUTING: 패킷이 리눅스 서버에 전달되기 전 규칙을 정의
  • POSTROUTING: 리눅스 서버에서 나가는 규칙을 정의

matches: 출발지와 목적지를 매칭해주는 방법

  • -s: 출발지 매칭, 도메인, IP 주소, 넷마스크 값을 이용하여 표기
  • -d: 목적지 매칭, 도메인, 넷마스크 값을 이용하여 표기
  • -p: 프로토콜과 매칭, TCP, UDP, ICMP와 같은 이름을 사용
  • -i: 입력 인터페이스와 매칭
  • -o: 출력 인터페이스와 매칭
  • -j: 매치되는 패킷을 어떻게 처리할지 지정
  • -f: 분절된 패킷
  • --sport: 패킷의 발신 포트 번호를 명시
  • --dport: 패킷의 도착 포트 번호를 명시

-j target

  • ACCEPT: 패킷을 허용
  • DROP: 패킷을 버림
  • REJECT: 패킷을 버리고 이와 동시에 적절한 응답 패킷을 전송
  • LOG: 패킷을 syslog에 기록
  • RETURN: 호출 체인 내에서 패킷 처리를 계속합니다.

기본적인 명령어

 

명령어는 iptables --help로 확인 할 수 있으니 사용하면서 필요한 명령어를 찾아보자

 

 

※ 현재 iptables rule을 저장하고 vi 편집기와 같은 것으로 편집 한 후 restore 해서 수정하는 것도 방법이다.

iptables-save > iptables.todaydate

vi iptables.todaydate

iptables-restore < /etc/iptables/rules.v4

 

 

iptables 명령어는 잘 알아두면 유용하게 사용되니 숙지하는 것이 중요..

'리눅스' 카테고리의 다른 글

Ubuntu 패키지  (0) 2023.04.29
리눅스 프로세스 관리  (1) 2023.04.29
리눅스 파일 관리  (0) 2023.04.29
Ubuntu 사용자 관리  (0) 2023.04.29
Ubuntu VM 접속 기본 설정  (0) 2023.04.29

댓글