[완료]netfilter를 왜 사용하는 것인가요?
글쓴이: necrohp / 작성시간: 금, 2010/03/19 - 11:07오후
저는 모듈프로그래밍 초보자입니다. 이제 막 네트워크 모듈프로그래밍을 공부하는 단계입니다.
브릿지 소스를 보면서 소스 분석을 하고 있습니다만 한가지 이해가 안되는 점이 있습니다.
브릿지 소스에서 패킷을 보낼때는 전부 NF_HOOK을 이용해서 넷필터를 통과하여
최종적으로는 NF_HOOK의 마지막 인자의 함수에 도착하여 패킷이 전송되는것을 확인했는데요.
NF_HOOK(PF_BRIDGE, NF_BR_POST_ROUTING, skb, NULL, skb->dev, br_dev_queue_push_xmit);
왜 이렇게 NF_HOOK을 패킷을 보낼때 마다 사용했을까 의문이 듭니다.
skb->dev 에 장치포인터를 주고
dev_queue_xmit(skb) 함수로 쉽게 패킷을 보내는 방법도 있는데 왜 이렇게 보내는 것일까요?
dev_queue_xmit 함수를 이용하여 직접만든 arp 패킷을 보내는 모듈 프로그램을 작성하고 있는데요.
이런 종류의 프로그램에서도 NF_HOOK 을 사용하는 것과 직접 dev_queue_xmit을 사용하는 것이 어떤 차이가 있는지 알고 싶습니다.
Forums:
파이어월이랑 NAT가
파이어월이랑 NAT가 netfilter 훅들에 물려있어요.
아. 그렇군요. 조금더 자세히 설명해주시면 정말 감사하겠습니다.
수신되는 패킷이 아닌 자신이 직접보내는 패킷을 넷필터에 통과시키는 이유는 무엇인가요?
그렇다면 제가만들 ARP 모듈프로그램은 NF_HOOK을 써야하나요?
아니면 지금같이 그냥 보내도 되는가요?
나가는 패킷도
나가는 패킷도 파이어월에서 거르고 바꿀 수 있어야 하니까요. 넷필터 훅 통과할 필요가 없으면 안지나가도 상관 없구요. 근데 userland arpd나 arptables 써서 구현이 불가능한가요?
감사합니다.
userland arpd, arptables 는 저에게 생소하네요 ^^;
자기 마음대로 패킷을 주고 받는 모듈을 만드려고 시도하는 중이고 프로토콜중에서 쉬운축에 속하는 ARP 를 먼저 모델로 잡았습니다 ^^
댓글 달기