[Linux] IPTables 개념

하녕
|2023. 9. 21. 13:46
반응형

해당 패키지는 필요한 테이블을 선택하여 각 규칙을 정할 수 있는데, 클라우드 시스템에서는 가장 많이 사용되는 테이블은 NAT 입니다.

 

 

  • Iptables의 명령어 구조
    • iptables [ -t 테이블 ] [ 액션 ] [ 체인 ] [ 매치 ] [ -j 타겟 ]
    • ex
      1. ex 1) iptables -t nat -A PREROUTING -j DNAT -p tcp --dport 22222 --to-destination 172.27.0.208:22
        • 해석
          NAT 테이블을 사용하여 PREROUTING 정책을 추가한다(DNAT), 매치되는 22222포트를 사용하는 패킷은 DNAT로 처리하고 타겟은 172.27.0.208:22로 한다.
      2. ex 2) iptables -t nat -A POSTROUTING -j SNAT -o eth0 -d 172.27.0.0/24 --to-source 172.27.0.162
        • 해석
          NAT 테이블을 사용하여 POSTROUTING 정책을 추가한다(SNAT), eth0 인터페이스로 나가는 172.27.0.0/24의 모든 ip 대역은 172.27.0.162의 주소로 변환된다.

  • 테이블 : 사용할 테이블 기본은 filter
    1. filter : 방화벽
    2. nat : 주소 변환
    3. mangle : 패킷 데이터 변경 특수 규칙 OR 성능향상 TOS
    4. raw : 넷필터의 연결추적 하위시스템과 독립적 동작 규칙

  • 액션 : 정책의 변경 추가 삭제 등
    1. -A : APPEND 정책 추가
    2. -I : INSERT 정책 삽입
    3. -D : DELETE 정책 삭제
    4. -R : REPLACE 정책 교체
    5. -F : FLUSH 모든 정책 삭제
    6. -P : POLICY 기본 정책 설정
    7. -:L : LIST 정책 나열
  • 체인 : 정책의 대해 어떤 행동을 취할 것인가?
    1. INPUT : 호스트를 향한 모든 패킷 (입력)
    2. OUTPUT : 호스트에서 발생하는 모든 패킷 (출력)
    3. FORWARD : 호스트가 목적지가 아닌 패킷, 경유지 (라우터)
    4. PREROUTING : 외부 패킷의 목적지 변경 INPUT으로 가야할 패킷을 FORWARDING
    5. POSTROUTING : 패킷이 OUTPUT에서 ip , port를 변경

  • 매치 : 출발지, 목적지, 인터페이스 등 지정
    1. -s : 출발지 매칭, 도메인 IP 주소 ,넷마스크 값을 이용하여 표기 (--source, --src)
    2. -d : 목적지 매칭, 도메인 IP 주소, 넷마스크 값을 이용하여 표기 (--destination, --dst)
    3. -p : 프로토콜과 매칭 대소문자는 구분하지 않음 ( TCP, UDP, ICMP 등)
    4. -i : 입력 인터페이스와 매칭 ( --in-interface)
    5. -o : 출력 인터페이스와 매칭 (--out-interface)
    6. -j : 매치되는 패킷을 어떻게 처리할지 지정 (--jump)
  • 타겟 : 패킷이 규칙과 일치할 때 매치가 취하는 정책
    1. ACCEPT : 패킷 허용
    2. DROP : 패킷을 버림
    3. REJECT : 패킷을 버리고 응답 패킷 전송
    4. LOG : 패킷을 syslog에 기록
    5. SNAT --to [주소] : 소스 IP를 변환
    6. DNAT --to [주소] : 목적지 IP를 변환
    7. RETURN : 호출 체인 내에서 패킷 처리를 계속함

  • 참조
    nat 기능 사용 시, /etc/sysctl.conf에 net.ipv4.ip_forward=1 추가해야함

 

  • 자주 사용하는 명령어
    1. iptables -nL -t {테이블} : 테이블 조회 
    2. iptables -F -t {테이블} : 테이블 초기화
    3. iptables save > /etc/sysconfig/iptables : 정책 저장
    4. iptables -t {테이블} -L {정책} --line-numbers : 테이블의 정책을 번호로 출력
    5. iptables -t {테이블} -D {정책} 숫자 : 선택한 테이블의 정책 삭제
반응형

'Linux' 카테고리의 다른 글

AWS로 OpenVPN 간단하게 구축하기  (0) 2024.07.17
[Linux] Squid 프록시 설치  (0) 2023.09.21
CentOS 6 repolist  (0) 2023.09.20
CentOS 7 repolist  (0) 2023.09.20
OpenSSL 설치 및 업그레이드  (0) 2023.09.20