본문 바로가기

지식/Network

iptables 에서 table의 종류

테이블의 종류에는 기본적으로 filter, nat, mangle이 있으며 이외 다름 테이블은 별도로 생성

하거나 삭제할 수 없으며 그럴 필요도 없다. 즉, 3개의 테이블 안에서 모든 처리를 하는 것이다.

그러나 table의 하위 개념인 chain은 별도로 생성하거나 또는 삭제하는 것이 가능하다. 만약

특정 table을 지정하려면 -t 또는 --table 이라는 옵션을 사용하면 되는데, 별도로 지정하지 않

을 때는 기본적으로 filter 테이블로 인식된다

1. filter 테이블

방화벽의 주된 테이블로서 특정 룰에 따라서 패킷을 걸러내거나 통과시키는 역할을 한다.

filter 테이블에는 기본적으로 3개의 chain이 있는데, INPUT, FORWARD, OUTPUT이 그것이

다.  여기서 INPUT은 외부에서 방화벽 자체로 향하는 패킷에 대한 필터링을 담당며,FORWAR

D
는 방화벽 자체가 아닌 방화벽을 통과하여 방화벽이 보호하는 다른 서버 등으로 향하는 패킷

에 대한 필터링, OUTPUT은 방화벽에서 나가는 패킷에 대한 필터링을 담당한다.

즉, 한 대의 리눅스 서버 자체 내에서 웹 서비스 등 일반 서비스와 함께 패킷 필터링을 제공하고

자 할 경우 FORWARD는 사용하지 않고, INPUT과 OUTPUT chain만 사용하면 될 것이다.

반대 로 리눅스를 전용 방화벽 장비로 설정하여 스위치나 서버의 앞단에 설치함으로써 리눅스

서버 내부의 Window 서버나 다른 유닉스 계열 서버 등을 보호하고자 할 경우에는 FORWARD
chain을 사용하여 내부의 서버들에 대한 패킷 필터링 정책을 설정하면 될 것이다. 물론 이러한

경우에도 방화벽 자체에 대한 필터링도 설정하여야 하는데, 이 때에는 INPUT chain을 사용하

여야 한다.

2. nat 테이블

nat테이블은 패킷을 필터링하거나 패킷으 ttl등 특성을 변환하는 기능은 없으며 단지 방화벽으

로 향하는 패킷을 방화벽이 보호하는 내부 네트워크의 다른 주소로 포워딩 하거나 방화벽 내부

네트워크에서 방화벽을 통해 외부 네트워크로 나갈 때 다른 ip주소로 변환시켜 주는 역할을 한

다.
        nat에서는 POSTROUTING과  PREROUTING chain이 주로 사용된다.

POSTROUTING은 Source NAT(SNAT)타겟과 매칭되어 내부 네트워크에서 방화벽을 통해 외

부로 나갈 때 사용되며, PREROUTING은 Destination NAT(DNAT)타겟과 매칭되어 주로 외

부에서 방화벽 내부 서버로 향하는 패킷을 방화벽이 보호하는 내부서버로 포워딩 할 때 사용

된다.

즉, POSTROUTING은 사무실 등에서 사설ip를 사용하면서 하나의 공인 ip로 인터넷을 공유하

고자 할 때 즉 공유기의 용도로 사용할 수 있고, PREROUTING은 사설 ip로 서버를 운영하면서

외부로 서비스를 하고자 할 때 사용된다.

3. mangle 테이블

자주 사용되지는 않지만 패킷의 TTL이나 TOS 값을 변경할 때 사용된다. mangle테이블은

PREROUTINGOUTPUT chain으로 이루어져 있는데, PREROUTING에서는 라우팅 경로가

결정되기 전에 방화벽으로 들어오는 패킷에 대해 변경하고, OUTPUT chain에서는 내부에서

생성된 패킷이 방화벽을 통해 나갈 때 변경한다