강좌
클라우드/리눅스에 관한 강좌입니다.
해킹&보안 분류

패킷 이동 경로 및 table 종류

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

패킷 이동 경로 및 table 종류

 

 

 

chain은 패킷이 이동하는 경로라고 했는데, 그렇다면 패킷은 어떠한 경로를 통해 이동할까? 다음 그림에서와 같이 방화벽으로 향하는 패킷은 라우팅 경로에 따라 크게 두 갈래로 나뉘어진다.

 

 

 

 

, 방화벽 자체로 향하는 패킷인지 아니면 방화벽을 통과하여 방화벽이 보호하는 다른 서버를 향하는 패킷인지에 따라 패킷 경로가 아래 그림에서 좌측인지 우측으로 갈 것인지 갈라지게 되는 것이다.

 

 

 

 

, 서버 자체에 다른 응용 프로그램과 함께 방화벽을 탑재하여 운영할 경우 즉, 서버 한 대로 서비스도 하면서 동시에 방화벽도 가동할 경우에는 패킷이 좌측의 경로를 따르게 되고, 뒤에서 살펴볼 NATBridge 방화벽을 사용하여 패킷을 방화벽 내부의 서버로 포워딩 할 경우 즉, 마치 스위치처럼 리눅스 방화벽을 설치하고 그 밑단의 네트워크에 있는 서버들을 보호하고자 할 경우에는 우측의 경로를 따르게 된다.

 

 

 

 

그러나 이와 관계없이 mangle tablePREROUTING chain, nat tablePREROUTING chain, POSTROUTING chain은 공통적으로 거쳐 가는 것을 알 수 있다.

 

 

 

 

 

 

1d659de8a4553c571392b89a3b42f8fb_1679901281_637.png
 

 

[그림] 방화벽에서 패킷의 이동 경로

 

 

 

[테이블(table)의 종류]

 

 

앞에서 언급한대로 테이블(table)의 종류에는 기본적으로 filter, nat, mangle이 있으며 이외 다른 테이블은 별도로 생성하거나 삭제할 수 없으며 그럴 필요도 없다.

 

 

 

 

, 3개의 테이블 안에서 모든 처리를 하는 것이다.

 

 

 

 

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

 

 

 

 

만약 특정 table을 지정하려면 -t 또는 --table 이라는 옵션을 사용하면 되는데, 별도로 지정하지 않을 때는 기본적으로 filter 테이블로 인식된다.

 

 

 

 

각각의 table에 대해 잠깐 살펴보자.

 

 

 

filter 테이블(table)

 

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

 

 

 

 

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

 

 

 

 

여기서 INPUT은 외부에서 방화벽 자체로 향하는 패킷에 대한 필터링을 담당하며, FORWARD는 방화벽 자체가 아닌, 방화벽을 통과하여 방화벽이 보호하는 다른 서버 등으로 향하는 패킷에 대한 필터링, OUTPUT은 방화벽에서 나가는 패킷에 대한 필터링을 담당한다.

 

 

 

 

, 한 대의 리눅스 서버 자체 내에서 웹 서비스 등 일반 서비스와 함께 패킷 필터링을 제공하고자 할 경우 FORWARD는 사용하지 않고, INPUTOUTPUT chain만 사용하면 될 것이다.

 

 

 

 

반대로 리눅스를 전용 방화벽 장비로 설정하여 스위치나 서버의 앞단에 설치함으로써 리눅스 서버 내부의 Windows 서버나 다른 유닉스 계열 서버 등을 보호하고자 할 경우에는 FORWARD chain을 사용하여 내부의 서버들에 대한 패킷 필터링 정책을 설정하면 될 것이다.

 

 

 

 

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

 

 

 

nat 테이블(table)

 

nat 테이블은 패킷을 필터링하거나 패킷의 ttl등 특성을 변환하는 기능은 없으며 단지 방화벽으로 향하는 패킷을 방화벽이 보호하는 내부 네트워크의 다른 주소로 포워딩 하거나 방화벽 내부 네트워크에서 방화벽을 통해 외부 네트워크로 나갈 때 다른 IP 주소로 변환시켜 주는 역할을 한다.

 

 

 

 

nat에서는 POSTROUTINGPREROUTING chain이 주로 사용된다.

 

 

 

 

POSTROUTINGSource NAT(SNAT) 타겟과 매칭 되어 내부 네트워크에서 방화벽을 통해 외부로 나갈 때 사용되며, PREROUTINGDestination NAT(DNAT)타겟과 매칭 되어 주로 외부에서 방화벽 내부 서버로 향하는 패킷을 방화벽이 보호하는 내부서버로 포워딩 할 때 사용된다.

 

 

 

 

, POSTROUTING은 사무실 등에서 사설 IP를 사용하면서 하나의 공인 IP로 인터넷을 공유하고자 할 때 즉 공유기의 용도로 사용할 수 있고, PREROUTING은 사설 IP로 서버를 운영하면서 외부로 서비스를 하고자 할 때 사용된다.

 

 

 

 

mangle 테이블(table)

 

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

 

 

 

 

mangle 테이블은 PREROUTINGOUTPUT chain으로 이루어져 있는데, PREROUTING에서는 라우팅 경로가 결정되기 전에 방화벽으로 들어오는 패킷에 대해 변경하고, OUTPUT chain에서는 내부에서 생성된 패킷이 방화벽을 통해 나갈 때 변경한다.

 

 

 

 

주로 패킷의 TTL이나 TOS값을 변경하고자 할 때 사용된다.

 

 

 

 

 

 

혹자는 이러한 것들을 꼭 알아야 할까라는 의구심을 가질 수 있다.

 

 

 

 

그러나 알고 있는 것이 좋다.

 

 

 

 

왜냐하면 굳이 iptables가 아니더라도 다른 방화벽에서도 위와 비슷한 매커니즘과 원리로 운영되기 때문에 위의 설명된 내용을 정확히 알아두면 거의 모든 방화벽의 기본을 이해하는데 큰 도움이 된다.

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,034 명
  • 현재 강좌수 :  35,787 개
  • 현재 접속자 :  298 명