문득 궁금합니다.
netfilter 프레임워크를 이용하여 커널 내부에서의 패킷핸들링을 아주 유용하게 할 수 있도록 제공하고 있습니다.
그런데 packet hooking 지점을 보면 모두 IP 레이어에서만 이루어 지는것을 볼 수 있습니다.
왜? TCP/UDP 등에는 후킹 포인트가 존재하지 않는 건가요 ?
TCP/UDP 등에도 후킹 포인트가 존재한다면 여러모로 쓸모가 많을듯 한데요...
tcp/udp 레이어의 후킹 포인트에서 할 수 있는 모든 일을 IP 레이어에서 할 수 있남요 ?
그렇지 않은 것들이 많을것 같은데...효율성 면에서도 그렇지 않은 것들이 존재 할것 같고...
그리고 netfilter 를 사용하게 되면 특정 패킷들이 기존 IP 스택의 특정 부분을 거치지 않고, 개발자가 작성한 specific한 스택을 지나가도록 할 수 있는게 큰 장점중에 하나인데...그러한 관점에서 봤을때(쉽게 말하면 프로토콜의 모듈화라고나 할까요?)에는 ip 스택에만 netfilter가 존재하는게 제한점이 될 수 있을 것 같은데요...
예를 들자면...
tcp의 congestion window의 계산 방법에 따라 다양한 tcp 변종들이 존재 하잖습니까 ? (vega, reno, westwood 등등...)
그러한 변종들의 대부분의 tcp 코드는 동일하고 해당 부분만 상이한데 이러한 것들의 구현을 tcp 프로토콜 상의 여기저기에 hooking 포인트가 존재한다면 다양하게 적용해보고 네트워크의 상황에 따라 동적으로 적용해 보는등의 작업들이 가능할 것 같은데...지금 현재의 netfilter 구조로는 불가능 하지 않나요?
제 생각으로는 현재의 netfilter로는 불가능하다라고 단정지을 순 없을 것 같네요..
물론 사안에 따라 다소 차이는 있을 수 있지요.
참고로 작년에 Kernel 2.6.12용으로 HTTP Filtering 관련 모듈과 DDoS 관련 모듈을 작성했습니다.
원하는 동작을 수행하는 netfilter용 tcp extension 모듈을 만들고.. 해당 내용을 제어할 수 있는
패치를 iptables에 가하면 되지요.. TCP/IP에 대한 이해만 명확하다면 그리 어려운 작업은 아닐 듯 합니다.
다만 5곳의 HOOK위치면 충분히 원하는 모든 작업이 가능할 것이라 생각되어
러셀이란 분이 지금처럼 구현하지 않았나 하는 생각이 듭니다. 몇번의 실패를 거울삼아..
아시는 내용이겠지만, 반드시 tcp layer에서의 HOOK을 구현하고 싶으시면 원하시는 위치에
HOOK관련 코드를 추가하면 됩니다.
Re:
TCP/UDP 레이어의 후킹 포인트에서 할 수 있는 일이라면,
IP 레이어에서도 할 수 있겠죠.
tcp/udp 레이어의 후킹
tcp/udp 레이어의 후킹 포인트에서 할 수 있는 모든 일을 IP 레이어에서 할 수 있남요 ?
그렇지 않은 것들이 많을것 같은데...효율성 면에서도 그렇지 않은 것들이 존재 할것 같고...
그리고 netfilter 를 사용하게 되면 특정 패킷들이 기존 IP 스택의 특정 부분을 거치지 않고, 개발자가 작성한 specific한 스택을 지나가도록 할 수 있는게 큰 장점중에 하나인데...그러한 관점에서 봤을때(쉽게 말하면 프로토콜의 모듈화라고나 할까요?)에는 ip 스택에만 netfilter가 존재하는게 제한점이 될 수 있을 것 같은데요...
예를 들자면...
tcp의 congestion window의 계산 방법에 따라 다양한 tcp 변종들이 존재 하잖습니까 ? (vega, reno, westwood 등등...)
그러한 변종들의 대부분의 tcp 코드는 동일하고 해당 부분만 상이한데 이러한 것들의 구현을 tcp 프로토콜 상의 여기저기에 hooking 포인트가 존재한다면 다양하게 적용해보고 네트워크의 상황에 따라 동적으로 적용해 보는등의 작업들이 가능할 것 같은데...지금 현재의 netfilter 구조로는 불가능 하지 않나요?
TCP HOOK
제 생각으로는 현재의 netfilter로는 불가능하다라고 단정지을 순 없을 것 같네요..
물론 사안에 따라 다소 차이는 있을 수 있지요.
참고로 작년에 Kernel 2.6.12용으로 HTTP Filtering 관련 모듈과 DDoS 관련 모듈을 작성했습니다.
원하는 동작을 수행하는 netfilter용 tcp extension 모듈을 만들고.. 해당 내용을 제어할 수 있는
패치를 iptables에 가하면 되지요.. TCP/IP에 대한 이해만 명확하다면 그리 어려운 작업은 아닐 듯 합니다.
다만 5곳의 HOOK위치면 충분히 원하는 모든 작업이 가능할 것이라 생각되어
러셀이란 분이 지금처럼 구현하지 않았나 하는 생각이 듭니다. 몇번의 실패를 거울삼아..
아시는 내용이겠지만, 반드시 tcp layer에서의 HOOK을 구현하고 싶으시면 원하시는 위치에
HOOK관련 코드를 추가하면 됩니다.
댓글 달기