The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"работа с DHCP под линуксом"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"работа с DHCP под линуксом" 
Сообщение от Natan Искать по авторуВ закладки on 20-Июн-05, 11:58  (MSK)
Есть необходимость разобраться с принципом работы DHCP, для этого хочу написать что-то простое, например работа с DHCPDISCOVER, DHCPOFFER и пр.
Создать пакет IMHO не проблема, но вот что класть в src_addr, если IP еще нет, и второе - как выяснить MAC-адрес интерфейса (MAC нужно класть в DHCP пакет при отправке broadcast сообщения).

Спасибо!

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "работа с DHCP под линуксом" 
Сообщение от Vladimir Искать по авторуВ закладки(??) on 20-Июн-05, 12:23  (MSK)
>Есть необходимость разобраться с принципом работы DHCP, для этого хочу написать что-то
>простое, например работа с DHCPDISCOVER, DHCPOFFER и пр.
>Создать пакет IMHO не проблема, но вот что класть в src_addr, если
>IP еще нет, и второе - как выяснить MAC-адрес интерфейса (MAC
>нужно класть в DHCP пакет при отправке broadcast сообщения).
>
>Спасибо!

Посмотри эту статью. После нее помойму можно догадаться что и как зделать.
https://www.opennet.ru/docs/RUS/inet_book/4/4/dhcp.html

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "работа с DHCP под линуксом" 
Сообщение от Natan Искать по авторуВ закладки on 20-Июн-05, 13:50  (MSK)
>>Есть необходимость разобраться с принципом работы DHCP, для этого хочу написать что-то
>>простое, например работа с DHCPDISCOVER, DHCPOFFER и пр.
>>Создать пакет IMHO не проблема, но вот что класть в src_addr, если
>>IP еще нет, и второе - как выяснить MAC-адрес интерфейса (MAC
>>нужно класть в DHCP пакет при отправке broadcast сообщения).
>>
>>Спасибо!
>
>Посмотри эту статью. После нее помойму можно догадаться что и как зделать.
>
>https://www.opennet.ru/docs/RUS/inet_book/4/4/dhcp.html


Спасибо за ссылку, но это просто переведенный RFC, который я уже изучил :)
Вот если бы к-л исходники, легкие для понимания :)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "работа с DHCP под линуксом" 
Сообщение от Vladimir Искать по авторуВ закладки(??) on 20-Июн-05, 14:16  (MSK)
>>>Есть необходимость разобраться с принципом работы 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 :)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "работа с DHCP под линуксом" 
Сообщение от Forth emailИскать по авторуВ закладки(ok) on 22-Июн-05, 14:47  (MSK)
>Вот если б ме кто-то кинул исходники как на 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).
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру