работа с DHCP под линуксом, Natan, 20-Июн-05, 11:58 [смотреть все]Есть необходимость разобраться с принципом работы DHCP, для этого хочу написать что-то простое, например работа с DHCPDISCOVER, DHCPOFFER и пр. Создать пакет IMHO не проблема, но вот что класть в src_addr, если IP еще нет, и второе - как выяснить MAC-адрес интерфейса (MAC нужно класть в DHCP пакет при отправке broadcast сообщения).Спасибо!
|
- работа с DHCP под линуксом, Vladimir, 12:23 , 20-Июн-05 (1)
>Есть необходимость разобраться с принципом работы DHCP, для этого хочу написать что-то >простое, например работа с DHCPDISCOVER, DHCPOFFER и пр. >Создать пакет IMHO не проблема, но вот что класть в src_addr, если >IP еще нет, и второе - как выяснить MAC-адрес интерфейса (MAC >нужно класть в DHCP пакет при отправке broadcast сообщения). > >Спасибо! Посмотри эту статью. После нее помойму можно догадаться что и как зделать. https://www.opennet.ru/docs/RUS/inet_book/4/4/dhcp.html
- работа с DHCP под линуксом, Natan, 13:50 , 20-Июн-05 (2)
>>Есть необходимость разобраться с принципом работы DHCP, для этого хочу написать что-то >>простое, например работа с DHCPDISCOVER, DHCPOFFER и пр. >>Создать пакет IMHO не проблема, но вот что класть в src_addr, если >>IP еще нет, и второе - как выяснить MAC-адрес интерфейса (MAC >>нужно класть в DHCP пакет при отправке broadcast сообщения). >> >>Спасибо! > >Посмотри эту статью. После нее помойму можно догадаться что и как зделать. > >https://www.opennet.ru/docs/RUS/inet_book/4/4/dhcp.html Спасибо за ссылку, но это просто переведенный RFC, который я уже изучил :) Вот если бы к-л исходники, легкие для понимания :)
- работа с DHCP под линуксом, Vladimir, 14:16 , 20-Июн-05 (3)
>>>Есть необходимость разобраться с принципом работы DHCP, для этого хочу написать что-то >>>простое, например работа с DHCPDISCOVER, DHCPOFFER и пр. >>>Создать пакет IMHO не проблема, но вот что класть в src_addr, если >>>IP еще нет, и второе - как выяснить MAC-адрес интерфейса (MAC >>>нужно класть в DHCP пакет при отправке broadcast сообщения). >>> >>>Спасибо! >> >>Посмотри эту статью. После нее помойму можно догадаться что и как зделать. >> >>https://www.opennet.ru/docs/RUS/inet_book/4/4/dhcp.html > > >Спасибо за ссылку, но это просто переведенный RFC, который я уже изучил >:) >Вот если бы к-л исходники, легкие для понимания :) Вот если б ме кто-то кинул исходники как на C брать пакет из divert, и возвращать его в ipfw :)
- работа с DHCP под линуксом, Forth, 14:47 , 22-Июн-05 (4)
>Вот если б ме кто-то кинул исходники как на C брать пакет >из divert, и возвращать его в ipfw :) вот кусочек с моей проги: /*Создаем сокет*/ if ((s=socket(PF_INET, SOCK_RAW, IPPROTO_DIVERT))<0) { perror("socket"); closelog(); exit(1); } /*Заполняем структуру перед вызовом bind*/ sa.sin_family=PF_INET; sa.sin_addr.s_addr=INADDR_ANY; sa.sin_port=htons(PORT_NUM); /*Вызываем bind для инициализации сокета*/ if (bind(s,(struct sockaddr*) &sa,sizeof sa) == -1) { perror("bind"); close(s); closelog(); exit(1); } Вот так забираем пакетик из сокета(этож обычный raw): recv_size=recvfrom(s,buf,sizeof buf,0,(struct sockaddr*) &addr,&addr_size); if (recv_size==-1) { if (errno==EINTR) { continue; } perror("recv"); closelog(); close(s); return 1; } А чтобы обратно записать - sendto. Только пакетик правильно оформить перед передачей(Указатель на buf сунуть в указатель на структуру типа struct ip* (она есть в netinet/ip.h)). Смотреть одним глазом в man 4 divert, вторым в /usr/src/sbin/natd/natd.c (очень понятно написанный, по нему и изучать divert).
|