[완료]dhcp discover 응답패킷을 받는법.
글쓴이: visualplus / 작성시간: 금, 2008/08/01 - 3:48오후
dhcp client를 만들고 있는데 초반부터 막혀버리네요..
지금 생긴 문제는
dhcp client에서 discover메세지를 보내서 dhcp server의 응답패킷을 기다리고 있는데요.
이 dhcp server가 패킷의 목적지 ip를 자신의 pool안에있는 ip로 보내더군요.
그래서 mac은 discover 메세지를 보낸 곳으로 오지만 ip가 다르기 때문에
routing을 해버려서 다시 나가버립니다.
이것을 해결 할 수 있는 방법이 있을까요?
Forums:
자세히는 모르겠지만,
여기를 보니 --> http://www.faqs.org/rfcs/rfc2131.html
"The TCP/IP software SHOULD accept and
forward to the IP layer any IP packets delivered to the client's
hardware address before the IP address is configured; "
라고 언급되어 있네요.
뭔가 테스트하시는 네트워크 configuration에 문제가 있는것은 아닐까요?
-------------------------------------------------
$yes 4 8 15 16 23 42
이전 질문을 보니
Linux의 IP layer에서 곧바로 routing이 되는가 보네요.
(참고로 저 Linux 초짜입니다. 커널 본적도 없구요)
아무래도 소스를 보시면 도움이 되시지 않을까요?
http://osdir.com/ml/network.general/2002-11/msg00092.html
그리고 서치를 해 보니 Socket Option(SO_BINDTODEVICE)
과 몇가지 설정에 대해서도 언급되어 있는 내용이 눈이 보이네요.
http://www.isc.org/index.pl?/sw/dhcp/v2-readme.php
-------------------------------------------------
$yes 4 8 15 16 23 42
다른 네트워크라면
다른 네트워크라면 dhcp relay 를 운영하셔야 할 겁니다.
음..
일단 지금 테스트해보고 있는게 안된다면 하나씩 읽어봐야 겠네요.
감사합니다^^
그리고 다른 네트워크가 아니구요.
pydhcplib에 raw소켓이 구현이 되어있고,
또 이것저것 검색 해 본 결과
어쩌면 discover응답패킷은 raw소켓으로 받아야 하는 것 일지도 모르겠다는 생각이 드네요.
뭐 기존 지식이 없으니 제 추측이지만요..^^
여하튼 감사합니다^^
해결되면 다시 답글 올리고 완료로 전환하겠습니다..
앗, 물론 IP level에서
앗, 물론 IP level에서 처리되는것이니까 raw socket을 쓰셔야죠.
왠지 금방 해결하실듯한 좋은 예감.
good luck~!
-------------------------------------------------
$yes 4 8 15 16 23 42
완전 삽질중.
쩝 제가 원하는 패킷만 받으려고 raw socket으로 받은 뒤
데이타를 분석해서 저에게 맞는 패킷만 보여주도록 해서 계속 테스트 하고 있었는데
아무래도 이상해서 그것을 없애고 모든 패킷을 다 분석해서 보니..
응답패킷 자체가 제가 예측하지 못한상태로 왔더군요..
일단 검색으로 얻은 정보대로 PF_PACKET 요걸로 소켓을 만들면 일단 모든 패킷이 다 들어오는것 같습니다.
댓글 달기