mac 주소로 packet 을 쏘는 것에 관해...
글쓴이: driver0401 / 작성시간: 월, 2004/01/19 - 9:34오후
안녕하세요...
제가 만들려고 하는 것은 1번 머신 2번 머신 3번 머신을 갖고 있는데
1번 머신이 3번 머신으로 packet을 보냅니다. 그런데 꼭 2번 머신을 거쳐서 갑니다. 2번 머신은 3번 머신의 mac 주소만 알고 있습니다.
1번이 초기 단계에서 3번 머신으로 보낸 정보는 고스란히 갖고 있고 ( 소스 ip, port 등..) 2번에서는 받은 패킷을 libpcap으로 끌어 올려고 원본 packet은 버립니다. 끌어 올린 packet으로 작업을 한 후 그 packet을 다시 3번 머신의 mac주소로 보낼려고 하는데 이때, 1번과 3번은 2번 머신이 그 packet에 대한 처리를 했다는 것을 모르게 하고 싶습니다.
어떻게 해야하나요...
알려주세요/...
Forums:
bridge계념이 아닌가 싶습니다.
저도 초보입니다.
bridge계념이 아닌가 싶습니다.
리눅스 bridge 방화벽과 비슷한것 같아 짧은 지식으로 적어봅니다.
2번에 nic을 두개 달고 한쪽은 1번 , 또 한쪽은 3번으로..
2번의 리눅스 섭에서는 필터링이나 패킷에 대한 정보를 볼수가 있습니다.
www.woogi.org 에 한번 가보시길
오늘도 고수를 꿈꾸며, 삽질을 한당
틀리더라도 악플은;;
일단 2PC에 NIC을 2개를 설치합니다.
리눅스의 경우 eth0와 eth1번 2개의 장치가 생기게 될 것입니다.
eth0로 1번PC에서 들어온 패킷을 캡쳐합니다.
캡쳐 후 pcap_loop로 패킷을 캡쳐하면 호출되는 함수의 세번째 인자값으로 오는 값이
1번PC에서 보낸 패킷의 정보가 있습니다.
이때 세번째인자값의 p라는 변수로 가정한다면 p의 시작주소부터 6바이트가 목적지 MAC주소가 될 것 입니다.
또한 p+6부터 6바이트가 출발지 MAC주소가 될 것입니다.
p변수를 p변수와 같은 타입, 즉 unsigned char* 형태의 변수에 복사를 해주고
위에서 설명한 MAC주소가 가리키는 주소에 본인이 원하시는 MAC주소를 대입하신 후에
pcap_sendpacket함수를 이용해서 eth1번 랜카드로 3번 PC로 쏴주시면 해결이 될 것 같습니다.
제가 직접 구현해본 결과 아주 잘됐습니다
댓글 달기