raw socket 프로그래밍에서 특정 packet 을 drop 하는 방법
글쓴이: thisnome / 작성시간: 수, 2012/06/13 - 11:42오전
tcpdump 처럼 서버에 들어오는 모든 패킷을 살펴보는 프로그램을 만들어보고 있습니다.
raw socket 을 열고 recv 를 호출하면, 해당 기능이 동작하게 되는데요..
이렇게 제가 간단히 만든 프로그램에서 raw socket 으로 recv 를 한 이후에도 해당 패킷들은 서버내의 다른 프로그램들에게 잘 전달됩니다. tcpdump 를 작동시켰다고 tcpdump 가 패킷을 중간에 drop 하지 않는것 처럼 말이죠..
궁금한 점은 아래입니다. (사실 위에서 특정 프로세스가 읽고나서도 다른 프로세스가 또 읽는다는게 TCP , UDP, SCTP 등을 사용하는 프로그래밍만 해본 저로서는 좀 이상하기도 합니다. L4 에서는 특정 포트에 대해 binding 을 한 프로세스만 할 수 있어서 그런건지..)
이때, 특정 패킷에 대해서는 iptables 에서 패킷을 drop 하는것 처럼 다른 프로세스들이 읽지 못하게 하려면 어떻게 해야 하는가 입니다.
처음에 프로그램을 만들 때는, raw socket 으로 recv 한 것을 모두다 sendto 로 다시 돌려 주어야 다른 L4 (TCP/UDP... ) 주소를 바인딩한 프로그램들이 해당 패킷을 받을 것이라고 생각했었네요.
답변 부탁드립니다.
Forums:
댓글 달기