패킷 경로 변경에 대해 질문드립니다.
글쓴이: julggol / 작성시간: 금, 2007/04/06 - 2:11오후
안녕하세요? 며칠 고생하다가 도저히 방법을 찾지 못해서 질문 드립니다.
리눅스 서버에 랜카드를 두개 달고 IP 마스커레이딩을 사용하여 PC 1대를 공유했습니다.
eth0 -> 내부
eth1 -> 외부
외부에서 들어오는 패킷을 분석하여 TCP 프로토콜의 5000번 포트를 제외한 모든 패킷을
스택과 넷필터를 거치지 않고 바로 하위 클라이언트 PC 로 보내려고 합니다.
net/core/dev.c 파일의 netif_rx() 함수에서 들어오는 패킷을 분석하여 5000번이면
dev_queue_xmit() 함수를 사용하여 바로 전송하였습니다. 하지만 PC 쪽에서는 받지를
못하더군요.
제가 하고 있는 이 방법이 가능하기는 한건가요? 원래 안되는걸 삽질하고 있는지 모르겠습니다.
고수님들 조언좀 해 주시기 바랍니다.
수고하세요..
Forums:
패킷 캡춰를 해보시면 아실 수 있을 듯합니다.
자세히 설명을 하시지 않으셔서, 정확하게 말씀드리기는 힘들지만,
A ---> eth1 ---> eth0 ---> B
라는 네트워크를 생각해보면,
A에서 보낸 패킷을 eth1이 받았다는 것은
IP broadcast이거나, MAC broadcast가 아니라면,
eth1의 IP와 MAC을 destination으로 해서 보낸 패킷일 것입니다.
그 패킷을 그대로 eth0로 내보냈다고 하더라도
IP destination과 mac destination이 eth1에 대한 것이니, B는 패킷을 버리게 됩니다.
일단 받는 PC쪽에서 Wireshark같은 툴을 이용해서 패킷을 캡춰해보셔야 할 듯 합니다.
eth0와 받는 PC가 바로 붙어있다면, eth0로 나오는 모든 패킷이 일단은 PC로 들어오므로,
리눅스 서버가 전달을 잘 한 것인지, 아닌지를 알 수가 있습니다.
만약에 eth0로 패킷을 내보내는 것 까지는 정확하게 하셨다면,
중간에 뭔가 B가 받을 수 있도록 패킷을 조작해야 합니다.
http://jungjun.net
감사합니다.
말씀해 주신대로 송수신 패킷을 모두 캡쳐해서 분석해야겠네요..
답변 감사드리며 해결되면 다시 글 올리겠습니다.
수고하세요..
댓글 달기