아.. kernel 레벨에서 ppp0에서 ppp1으로 packet을 보내는것을 어떻게 해야합니까?
글쓴이: parkys1 / 작성시간: 수, 2006/07/05 - 2:34오후
흠.. 처음에는 ppp0으로 오는 packet을 ppp1으로만 단순히 보내려 했습니다.
kernel 함수 ip_finish_output2()에서 어찌어찌 고쳐보니까 되더라구요...
헌데 이제 netfilter를 사용해서 NF_IP_POST_ROUTING 에서 packet의 방향을
바꿔보려 합니다. 예를들어 ppp0에서 ppp1으로... 저희가 ppp만 사용해야 하거든요
헌데 어떻게 하는것인지 정말 막막합니다...
고수님들 부탁합니다..
Forums:
dev_queue_xmit() 써보심이...
NF_IP_PRE_ROUTING 위치에 아래와 같은 방식의(완전한 코드는 아님)
함수를 후킹으로 걸어보세요....
int foo(struct sk_buff *skb)
{
struct net_device *dev;
//skb_push()등을 이용하여 L2 Header를 만든다.
dev = dev_get_by_name("ppp1");
skb->dev = dev;//강제로 socket buffer가 나갈 디바이스를 정한다.
dev_queue_xmit(skb);//주의: skb를 이 함수가 보쌈해 간다.
dev_put(dev);//dev_get_by_name()에 의해 hold된 참조count를 1 감소
return NF_STOLEN;//NF_ACCEPT가 아니다. skb는 이미 dev_queue_xmit()가 가져갔다.
}
/***************************************
Being the one is just like being in love.
***************************************/
댓글 달기