Annotation of embedaddon/dhcdrop/man/ru/dhcdrop.8, revision 1.1.1.1
1.1 misho 1: .TH DHCDROP 8 "14/08/2009"
2: .SH НАЗВАНИЕ
3: dhcdrop \- программа для выявления и нейтрализации несанкционированных DHCP
4: серверов в Ethernet сетях.
5:
6: .SH СИНТАКСИС
7: .BI "dhcdrop
8: .RB [ " \-h "]
9: .RB [ " \-D "]
10: .RB [ " \-t "]
11: .RB [ " \-y "]
12: .RB [ " \-r "]
13: .RB [ " \-b "]
14: .RB [ " \-a "]
15: .RB [ " \-A "]
16: .RB [ " \-f "]
17: .RB [ " \-R "]
18: .RB [ " \-q "]
19: .LP
20: .RB [ " \-m "
21: .I count
22: ]
23: .RB [ " \-c "
24: .I count
25: ]
26: .RB [ " \-n "
27: .I hostname
28: ]
29: .RB [ " \-N "
30: .I clientname
31: ]
32: .RB [ " \-p "
33: .I port
34: ]
35: .RB [ " \-P "
36: .I port
37: ]
38: .RB [ " \-w "
39: .I seconds
40: ]
41: .LP
42: .RB [ " \-T "
43: .I timeout
44: ]
45: .RB [ " \-M "
46: .I max-hosts-scan
47: ]
48: .RB [ " \-l "
49: .I MAC-address
50: ]
51: .RB [ " \-L "
52: .I network
53: ]
54: .RB [ " \-S "
55: .I network/mask
56: ]
57: .RB [ " \-F "
58: .I from-IP
59: ]
60: .LP
61: .RB [ " \-s "
62: .I server-IP
63: ]
64: .RB [ " \-C "
65: .I children count (2 - 32)
66: ]
67: .RB [ " \initial-MAC-address "]
68: .RB < " \-i "
69: .I interface-name|interface-index
70: >
71: .LP
72:
73: .SH ОПИСАНИЕ
74: Подавление DHCP сервера dhcdrop осуществляется при помощи атаки
75: DHCP starvation, либо при помощи флуда DHCPDISCOVER сообщениями.
76: Подробности смотрите ниже. Кроме того, dhcdrop может применяться
77: как средство диагностики и стресс-тестирования при настройке и
78: разработке DHCP серверов.
79:
80: .SH ОПЦИИ
81: .TP
82: .B "-h"
83: показывает help-сообщение, а так же - коды возврата программы.
84: .TP
85: .B "-D"
86: просмотр списка имён и индексов сетевых интерфейсов. Актуально в ОС Windows - см. пример ниже.
87: .TP
88: .B "-t"
89: Режим теста. В этом режиме
90: .B dhcdrop
91: не выполняет подавление сервера. Производится лишь посылка DHCPDISCOVER, если
92: на него приходит ответ от не игнорируемого сервера, то программа заверается
93: возвращаяя код 200 и выводя на экран строку вида
94: .IP
95: DHCP SRV: 10.7.7.1 (IP-hdr: 10.7.7.1) SRV ether: 00:02:44:75:77:E4, YIP: 10.7.7.205
96: .IP
97: содержащую содержащую минимум информации о создающем проблему DHCP сервере.
98: .TP
99: .B "-y"
100: подразумевается ответ "yes" на любой вопрос программы.
101: .TP
102: .B "-r"
103: отключает рандомизацию MAC адреса источника. Каждый последующий MAC адрес
104: источника отличается от предыдущего на 1.
105: .TP
106: .BI "-b"
107: указывает на необходимость использования флага
108: .B BROADCAST
109: в отправляемых DHCP пакетах.
110: .TP
111: .B "-a"
112: всегда ожидать ответа сервера на порт DHCP клиента по умолчанию (68), даже
113: если задано значение номера порта клиента отличное от значения по умолчанию.
114: .TP
115: .B "-A"
116: всегда ожидать ответа с порта DHCP сервера по умолчанию (67), даже если задано
117: значение номера порта сервера отличное от значения по умолчанию.
118: .TP
119: .B "-f"
120: режим флуда запросами DHCPDISCOVER. ПРИМЕНЯТЬ С ОСТОРОЖНОСТЬЮ. Удобен для
121: стресс-тестирования сервера. В случае указания опции
122: .B -r
123: все отправляемые пакеты имеют одинаковый MAC адрес.
124: .TP
125: .BI "-R"
126: отправляет сообщение DHCPRELEASE с MAC адресом источника указанном при запуске
127: программы и IP адресом указанным при помощи опции
128: .B -F
129: к серверу указанному опцией
130: .B -s
131: .
132: .TP
133: .B "-q"
134: "тихий" режим работы. Выводится минимум информации.
135: .TP
136: .BI "-m" " count"
137: максимальное число попыток получения ответа от сервера.
138: .TP
139: .BI "-c" " count"
140: максимальное число адресов арендуемых у сервера.
141: .TP
142: .BI "-n" " hostname"
143: значение DHCP опции HostName (по умолчанию - "DHCP-dropper")
144: .TP
145: .BI "-N" " clientname"
146: значение DHCP опции Vendor-Class (по умолчанию - "DHCP-dropper")
147: .TP
148: .BI "-p" " port"
149: порт используемый клиентом для отправки DHCP сообщений. По умолчанию - 68
150: .TP
151: .BI "-P" " port"
152: порт сервера, на который отправляются DHCP сообщения.
153: .TP
154: .B "-w" " seconds"
155: задаёт таймаут рестарта процесса получения IP адресов в случае использования
156: агрессивного режима. По умолчанию - 60 секунд.
157: .TP
158: .BI "-T" " timeout"
159: устанавливает таймаут ожидания ответа сервера (в секундах). По умолчанию - 3
160: секунды.
161: .TP
162: .BI "-M" " maximum-hosts"
163: максимально допустимое количество сканируемых хостов в случае использования агрессивного режима.
164: .TP
165: .BI "-l" " MAC-address"
166: Ethernet адрес сервера который необходимо игнориновать при выполненении поиска
167: ложных DHCP серверов в сети. В этой опции следует указать адрес DHCP сервера
168: ответственного за раздачу адресов в данном участке сети. Может быть указано
169: несколько адресов - каждый должен предворяться ключом
170: .B -l
171: .
172: .TP
173: .BI "-L" " legal-network"
174: указывает легальную IP подсеть для выбранного интерфейса. Использование этой
175: опции автоматически включает агрессивный режим получения IP адресов. Может быть
176: указано несколько сетей - каждая должна предворяться ключом
177: .B -L
178: .
179: Подробное описание смотрите ниже.
180: .TP
181: .BI "-S" " network/mask"
182: ARP сканирование сети 'сеть' с использованием сетевой маски 'маска' в CIDR
183: нотации. IP адрес источника задаётся опцией
184: .B -F
185: .
186: Если IP адрес источника не задан - используется случайный адрес из диапазона
187: указанной подсети. Пример использования смотрите ниже.
188: .TP
189: .BI "-F" " source-ip"
190: указывает IP адрес источника для сканирования сети (опция
191: .B -S
192: ), либо IP адрес DHCP клиента для отправки сообщения DHCPRELEASE (опция
193: .B -R
194: ).
195: .TP
196: .BI "-s" " server-ip-adress"
197: задаёт IP адрес DHCP сервера. Используется с опцией
198: .B -R
199: .
200: .TP
201: .BI "-C" " count"
202: число порождаемых процессов-потомков. Совместим только с флагом
203: .B -f
204: .
205: Используется для увеличения числа отправляемых пакетов за еденицу времени.
206: .TP
207: .BI "initial-MAC-address"
208: задаёт MAC адрес источника используемый при отправке первого DHCP сообщения,
209: либо используемый постоянно, в случае использования опции
210: .B -f
211: (flood) вместе с опцией
212: .B -r
213: Если не указан, то используется случайный MAC адрес источника.
214: .TP
215: .BI "-i" " interface"
216: имя либо индекс сетевого интерфейса (см. ключ
217: .B -D
218: ). Не может быть "any"! Единственный обязательный параметр программы.
219:
220: .SH ТЕОРЕТИЧЕСКАЯ ОСНОВА
221: В протоколе DHCP определена опция, которая задает длительность аренды
222: IP адреса (Lease time) - это время на которое DHCP сервер выдаёт IP адрес
223: в пользование клиенту. По истечении этого временного интервала клиент
224: должен выполнить попытку обновить IP адрес с целью продления аренды.
225: Для сервера выдача IP адреса в аренду означает то, что за время аренды
226: данный IP адрес может быть выдан только владельцу аренды и никому кроме него.
227: Идентификация клиентов сервером производится на основании MAC адреса. Обычно,
228: каждый сервер имеет пул динамических IP адресов, т.е. IP адресов которые не
229: закреплены за конкретными MAC адресами и выдаются динамически по запросу
230: любому клиенту. Пул на SOHO маршрутизаторах в конфигурации по умолчанию имеет
231: небольшой размер - от нескольких десятков до двух сотен адресов. В случае
232: использования ПО, выполняющего роль DHCP сервера, величину пула определяет
233: тот, кто настраивает. Если пул адресов исчерпан, то DHCP сервер игнорирует
234: запросы от новых клиентов (возможно документируя это в логах) - т.е.,
235: фактически, бездействует.
236:
237: Таким образом, в случае появления в сети ложных DHCP их можно нейтрализовать
238: достаточно просто - необходимо получить аренду на все доступные на данном
239: сервере IP адреса, каждый раз посылая запросы от уникальных клиентов. Чем
240: больше время аренды в настройках сервера, тем на больший срок DHCP сервер
241: оказывается нейтрализован в случае исчерпания динамического пула. Для
242: большинства SOHO маршрутизаторов Lease Time исчисляется днями, или даже
243: неделями. В случае использования в качестве DHCP сервера WinGate, dhcpd и
244: прочего подобного софта, время зависит от фантазии человека который его
245: настроил.
246:
247: .SH ПРИНЦИП РАБОТЫ dhcdrop
248: Программа открывает указанный в параметрах командной строки интерфейс в
249: promiscuous режиме, формирует DHCP запрос (DHCPDISCOVER), используя
250: случайный исходящий MAC адрес (если в параметрах не задано иное поведение)
251: и отправляет его в интерфейс:
252:
253: .nf
254: 01:58:04.681600 00:70:de:3b:b9:05 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800),
255: length 342: (tos 0x10, ttl 64, id 33964, offset 0, flags [none],
256: proto UDP (17), length 328)
257: 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:70:de:3b:b9:05,
258: length 300, xid 0xcc1cfc5c, Flags [none]
259: Client-Ethernet-Address 00:70:de:3b:b9:05
260: Vendor-rfc1048 Extensions
261: Magic Cookie 0x63825363
262: DHCP-Message Option 53, length 1: Discover
263: Parameter-Request Option 55, length 3:
264: Domain-Name-Server, Default-Gateway, Subnet-Mask
265: Hostname Option 12, length 12: "DHCP-dropper"
266: Vendor-Class Option 60, length 12: "DHCP-dropper"
267: Client-ID Option 61, length 7: ether 00:70:de:3b:b9:05
268: .fi
269:
270: После чего переходит к ожиданию ответа (DHCPOFFER) сервера. Если получен ответ
271: с предложением аренды IP адреса, то в интерфейс отправляется следующий DHCP
272: запрос (DHCPREQUEST) на который сервер отвечает DHCPACK-пакетом подтверждающим
273: возможность использования данного IP адреса клиентом. На этом операция
274: получения аренды, на предложенный сервером IP адрес, завершена. Программа
275: изменяет MAC адрес источника и вновь посылает DHCPDISCOVER, после чего, все
276: вышеуказанные операции по получению аренды нового IP адреса повторяются. Стоит
277: обрать внимание, что программа изменяет не только MAC адрес клиента в DHCP
278: сообщении, но и MAC адрес в заголовке Ethernet-фрейма. Данная возможность
279: максимально приближает работу программы к работе реального DHCP клиента
280: (а так же, позволяет обойти DHCP snooping). Цикл получения IP адресов с сервера
281: завершается, когда получено заданное параметром максимальное число IP адресов,
282: либо в случае исчерпания динамического пула сервера.
283:
284: .SH ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ
285: \fIПросмотр списка интерфейсов\fP
286: .sp
287: Актуально в ОС семейства Windows. Используется ключ
288: .B -D
289: :
290:
291: .nf
292: C:\>dhcdrop -D
293: Available interfaces:
294: 1:\\Device\\NPF_GenericDialupAdapter
295: descr: Adapter for generic dialup and VPN capture
296: 2:\\Device\\NPF_{0C796DB5-22D9-46AB-9301-9C7ADC2304AF}
297: descr: ZyXEL GN650 1000Base-T Adapter (Microsoft's Packet Scheduler)
298: iaddr: 192.168.1.2/24 bcast: 255.255.255.255
299: iaddr: 10.7.7.7/24 bcast: 255.255.255.255
300: .fi
301:
302: В качестве аргумента для ключа программы
303: .B-i
304: можно задать либо индекс интерфейса 2, либо его имя:
305: \\Device\\NPF_{0C796DB5-22D9-46AB-9301-9C7ADC2304AF}
306: .
307:
308: \fIИнтерактивный режим\fP
309: .sp
310: Самый простой вариант использования программы для поиска и выбора подавляемого
311: сервера вручную:
312:
313: .nf
314: $ sudo dhcdrop -i eth1
315: Using interface: 'eth1'
316: Got response from server 10.7.7.1 (IP-header 10.7.7.1), server ethernet address: 00:02:44:75:77:E4, lease time: 1.1h (3960s)
317: Got BOOTREPLY (DHCPOFFER) for client ether: 00:16:09:D8:CF:60 You IP: 10.7.7.201/24
318: Drop him? [y/n] n
319: Searching next server...
320: Got response from server 192.168.1.1 (IP-header 192.168.1.1), server ethernet address: 00:1E:2A:52:C8:CA, lease time: 24h (86400s)
321: Got BOOTREPLY (DHCPOFFER) for client ether: 00:16:09:D8:CF:60 You IP: 192.168.1.2/24
322: Drop him? [y/n] y
323: 1. Got BOOTREPLY (DHCPACK) for client ether: 00:16:09:D8:CF:60 You IP: 192.168.1.2/24
324: 2. Got BOOTREPLY (DHCPACK) for client ether: 00:A2:FA:12:41:F7 You IP: 192.168.1.3/24
325: 3. Got BOOTREPLY (DHCPACK) for client ether: 00:56:EA:F8:1C:B0 You IP: 192.168.1.4/24
326: <пропущено>
327: Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
328: Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
329: Finished.
330: .fi
331:
332: При получении ответа от DHCP сервера
333: .B dhcdrop
334: сообщает информацию о предлагаемом IP адресе и спрашивает о необходимости
335: подавления данного сервера. Получив отрицательный ответ - продолжает поиск
336: серверов в сети игнорируя обнаруженный ранее сервер. В случае получения
337: утвердительного ответа - начинает процесс подавления сервера указанным выше
338: способом
339:
340: \fIРежим автоматического подавления всех серверов кроме легитимного\fP
341: .sp
342: В случае, если мы знаем (а обычно мы знаем) MAC адрес легального DHCP сервера
343: в нашей сети, операцию подавления ложных серверов можно упростить:
344:
345: .nf
346: $ sudo dhcdrop -i eth1 -y -l 00:02:44:75:77:E4
347: Using interface: 'eth1'
348: Got response from server 192.168.1.1 (IP-header 192.168.1.1), server ethernet address: 00:1E:2A:52:C8:CA, lease time: 24h (86400s)
349: Got BOOTREPLY (DHCPOFFER) for client ether: 00:37:C5:10:BE:16 You IP: 192.168.1.2/24
350: 1. Got BOOTREPLY (DHCPACK) for client ether: 00:37:C5:10:BE:16 You IP: 192.168.1.2/24
351: 2. Got BOOTREPLY (DHCPACK) for client ether: 00:94:26:88:33:BD You IP: 192.168.1.3/24
352: 3. Got BOOTREPLY (DHCPACK) for client ether: 00:E5:AC:7B:79:BB You IP: 192.168.1.4/24
353: <пропущено>
354: Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
355: Finished.
356: .fi
357:
358: В подобном варианте использования
359: .B dhcdrop
360: подавляет любой сервер, кроме указанного опцией
361: .B -l
362: сервера, не задавая дополнительных вопросов
363: (благодаря использованию опции
364: .B -y
365: ).
366:
367: \fIТестовый режим\fP
368: .sp
369: Тестовый режим
370: .B -t
371: удобно использовать для выполнения программы из скриптов, в автоматизированном
372: режиме. Ниже приведён пример простейшего скрипта:
373:
374: .nf
375: 00 #!/bin/bash
376: 01 LEGAL_SERVER="00:11:22:33:44:55"
377: 02 DROPPER="/usr/sbin/dhcdrop"
378: 03 IFNAME="eth1"
379:
380: 04 $DROPPER -i $IFNAME -t -l $LEGAL_SERVER -m 3
381:
382: 05 if [ $? = 200 ]
383: 06 then
384: 07 echo Illegal server found\! Dropping him\!
385: 08 $DROPPER -i eth1 -l $LEGAL_SERVER -y
386: 09 else
387: 10 echo Illegal server not found.
388: 11 fi
389: .fi
390:
391: В строке 4 выполняется запуск
392: .B dhcdrop
393: в тестовом режиме, с указанием опции легального для сети DHCP сервера
394: .B -l
395: , опцией режима тестирования
396: .B -t
397: и опцией задающей максимальное число попыток отправки DHCPDISCOVER в
398: режиме поиска сервера
399: .B -m
400: Если ни на один из отправленных запросов не придёт ответа - программа
401: завершается с кодом 0. Если приходит ответ от сервера не заданного опцией
402: .B -l
403: , программа завершается с кодом 200, что вызывает последующий запуск программы
404: с параметрами определяющими подавление любого DHCP сервера в сети, кроме
405: легального.
406:
407: \fIИспользование агрессивного режима получения адресов\fP
408: .sp
409: Как можно догадаться из описания протокола DHCP - если клиент уже получил
410: конфигурационный набор данных от нелегального DHCP сервера, то сервер не выдаст
411: повторно этот набор другому клиенту пока не истечёт срок аренды. Следовательно,
412: простое исчерпание пула IP адресов не спасёт клиентов уже получивших неверные
413: конфигурационные данные - сервер будет выдавать эти адреса только изначально
414: запросившим их клиентам и будет игнорировать запросы от
415: .B dhcdrop.
416: При следующей попытке обновления адреса клиенты вновь получат информацию от
417: нелегального DHCP сервера, и так будет продолжаться пока не отключат
418: нелегальный DHCP сервер. Для решения подобных проблем, в dhcdrop, начиная с
419: версии 0.5, добавлен агрессивный режим получения IP адресов. Включается опцией
420: .B -L
421: указывающей легитимную IP подсеть для данного Ethernet сегмента сети. Алгоритм
422: его работы следующий:
423: .B dhcdrop
424: запускает обычный режим подавления и исчерпывает весь пул свободных IP адресов
425: нелегального DHCP сервера. Анализирует первый DHCPOFFER полученный от
426: нелегального DHCP. При помощи сетевой маски и IP адреса клиента выданных
427: сервером получает адрес IP сети обслуживаемой этим сервером. Запускает
428: ARP-сканирование полученной подсети, с целью выявить хосты получившие
429: неправильную конфигурационную информацию. По умолчанию, число сканируемых
430: хостов ограничено числом 512 (можно изменить опцией
431: .B-M
432: ) - некоторые сервера выдают конфигурационные наобры с маской /8, что
433: соответствует примерно 16 млн. хостов - сканирование такого адресного диапазона
434: займёт очень большое время. Отправляет DHCP серверу сообщения DHCPRELEASE от
435: каждого из найденных хостов (исключая сам сервер). Ожидает 60 секунд (значение
436: по умолчанию, может быть изменено опцией
437: .B -w
438: ) после чего перезапускает процесс получения IP адресов.
439:
440: В качестве примера запустим
441: .B dhcdrop
442: с теми же параметрами, что и в предыдущем примере, но дополнительно укажем
443: легальную IP сеть 10.7.7.0.
444:
445: .nf
446: $ sudo dhcdrop -i eth1 -y -l 00:02:44:75:77:E4 -L 10.7.7.0
447: Using interface: 'eth1'
448: Got response from server 192.168.1.1 (IP-header 192.168.1.1), server ethernet address: 00:1E:2A:52:C8:CA, lease time: 24h (86400s)
449: Got BOOTREPLY (DHCPOFFER) for client ether: 00:BC:BF:D6:39:2E You IP: 192.168.1.5/24
450: 1. Got BOOTREPLY (DHCPACK) for client ether: 00:BC:BF:D6:39:2E You IP: 192.168.1.5/24
451: 2. Got BOOTREPLY (DHCPACK) for client ether: 00:FB:E7:A4:19:EC You IP: 192.168.1.6/24
452: 3. Got BOOTREPLY (DHCPACK) for client ether: 00:CB:44:F9:A8:6F You IP: 192.168.1.7/24
453: Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
454: Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
455: Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
456: Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
457: Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
458: Trying to use agressive mode.
459: Starting ARP scanning network in range: 192.168.1.0 - 192.168.1.255...
460: Illegal DHCP server perhaps assigned IP adresses to the following hosts:
461: 1. Received ARP-reply from: 00:1e:2a:52:c8:ca (192.168.1.1) - itself DHCP server.
462: 2. Received ARP-reply from: 00:03:ff:15:52:90 (192.168.1.3)
463: 3. Received ARP-reply from: 00:03:ff:14:52:90 (192.168.1.4)
464: 4. Received ARP-reply from: 00:a0:c5:30:52:90 (192.168.1.200)
465: Sending DHCPRELEASE for invalid clients:
466: Send DHCPRELEASE for host 00:03:ff:15:52:90 (192.168.1.3).
467: Send DHCPRELEASE for host 00:03:ff:14:52:90 (192.168.1.4).
468: Send DHCPRELEASE for host 00:a0:c5:30:52:90 (192.168.1.200).
469: Restart dropping DHCP server after 60 seconds timeout...
470: 1. Got BOOTREPLY (DHCPACK) for client ether: 00:BC:BF:D6:39:2E You IP: 192.168.1.5/24
471: 2. Got BOOTREPLY (DHCPACK) for client ether: 00:F1:32:14:60:A3 You IP: 192.168.1.3/24
472: 3. Got BOOTREPLY (DHCPACK) for client ether: 00:2D:1C:80:ED:12 You IP: 192.168.1.4/24
473: Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
474: Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
475: Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
476: Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
477: Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
478:
479: WARNING: Failed to take away all the IP addresses assigned by DHCP server.
480: Perhaps DHCP server checks availability of IP addresses by sending ARP-request
481: before assigning them. Try to restart dhcpdrop later. If it doesn't help
482: try to disconnect problem hosts temporarily, then send manually DHCPRELEASE
483: from address of this hosts (use option -R) and restart dhcdrop.
484:
485: Finished.
486: .fi
487:
488: Пояснения к результатам работы программы.
489: После вывода надписи "Trying to use agressive mode." начинается ARP
490: сканирование подсети обслуживаемой нелегальным DHCP сервером в указанном
491: диапазоне. В результате найдено 4 хоста, включая сам DHCP сервер (1й хост).
492: Затем,
493: .B dhcdrop
494: посылает серверу 192.168.1.1 сообщения DHCPRELEASE от адресов (Ethernet & IP)
495: всех хостов найденных в подсети кроме самого DHCP сервера и останавливает
496: выполнение на 60 секунд. Таймаут необходим потому, что некоторые DHCP сервера
497: удерживают выдачу IP адреса новому клиенту в течение небольшого времени после
498: получения сообщения DHCPRELEASE от предыдущего клиента. В случае необходмости
499: значение таймаута можно изменить опцией
500: .B -w.
501: По истечении таймаута, dhcdrop запускает процесс получения освободившихся IP
502: адресов. Успешно удалось получить IP адреса 192.168.1.5 (был получен
503: изначально, при старте программы), 192.168.1.3 и 192.168.1.4. Последние два
504: адреса были успешно особождены сервером после получения сообщений DHCPRELEASE
505: сгенерированных
506: .B dhcdrop.
507: Не удалось получить адрес 192.168.1.200 несмотря на присутствие этого хоста в
508: сети, и то, что от его адреса было отправлено сообщение DHCPRELEASE. Одна из
509: причин неудачи описана в предупреждении, в конце вывода программы - DHCP сервер
510: перед выдачей адресов может проверять присутствует ли в сети хост с
511: запрашиваемым IP адресом и только после этого - выдавать адрес, если таковой
512: хост в сети отсутствует. В противном случае - новая аренда на этот адрес выдана
513: не будет. В этой ситуации может помочь отключение проблемных хостов от сети
514: вручную и отправка сообщений DHCPRELEASE от адреса этих хостов серверу
515: (см. пример ниже), после чего необходимо снова запустить процесс получения IP
516: адресов. Но в нашем случае проблема кроется не в этом - хост 192.168.1.200
517: имеет статически установленный адрес и потому никогда не запрашивал
518: конфигурации у DHCP сервера. Сама необходимость указания легальной сети для
519: запуска агрессивного режима необходима что бы проверить - не пересекается ли
520: адресный диапазон выдаваемый нелегальным DHCP сервером с адресным пространством
521: подсети в которой он обнаружен. Если адресные пространства пересекаются - ARP
522: сканирование будет проведено по хостам имеющим правильную конфигурацию и
523: выведет ошибочную информацию. Потому в случае обнаружения пересечения
524: диапазонов адресов агрессивный режим не запускается.
525:
526: \fIОтправка сообщения DHCPRELEASE\fP
527: .sp
528: Возможно у вас возникнет необходимость отправки сообщений DHCPRELEASE в ручном
529: режиме. Например по причине указанной в предыдущем примере. Сделать это можно
530: при помощи опции
531: .B -R
532: :
533:
534: .nf
535: $ sudo dhcdrop -i eth1 -R -s 192.168.1.1 -F 192.168.1.4 00:2D:1C:80:ED:12
536: Using interface: 'eth1'
537: Send DHCPRELEASE from 00:2D:1C:80:ED:12 client IP 192.168.1.4 to DHCP server 192.168.1.1
538: Finished.
539: .fi
540: Опция
541: .B -s
542: задаёт IP адрес сервера,
543: .B -F
544: - IP адрес DHCP клиента, 00:2D:1C:80:ED:12 - Ethernet адрес клиента.
545: В результате в сеть отправлен пакет вида:
546:
547: .nf
548: 16:13:43.887735 00:2d:1c:80:ed:12 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342:
549: (tos 0x10, ttl 64, id 29807, offset 0, flags [none], proto UDP (17), length 328)
550: 0.0.0.0.68 > 192.168.1.1.67: BOOTP/DHCP, Request from 00:2d:1c:80:ed:12,
551: length 300, xid 0xb2f04a28, Flags [none]
552: Client-IP 192.168.1.4
553: Client-Ethernet-Address 00:2d:1c:80:ed:12
554: Vendor-rfc1048 Extensions
555: Magic Cookie 0x63825363
556: DHCP-Message Option 53, length 1: Release
557: Server-ID Option 54, length 4: 192.168.1.1
558: Client-ID Option 61, length 7: ether 00:2d:1c:80:ed:12
559: .fi
560:
561: \fIСканирование сегмента сети\fP
562: .sp
563: Вы можете использовать ARP сканирование сети для поиска клиентов получивших
564: неверную конфигурационную информацию. Осуществляется подобное при помощи опции
565: .B -S
566: :
567:
568: .nf
569: $ dhcdrop -i eth1 -S 192.168.1.0/24
570: Using interface: 'eth1'
571: Starting ARP-scanning for subnet 192.168.1.0/24.
572: IP address range 192.168.1.0 - 192.168.1.255.
573: WARNING: Source IP is not set (use option -F).
574: Using random value for source IP address: 192.168.1.195
575: 1. Received ARP-reply from: 00:1e:2a:52:c8:ca (192.168.1.1).
576: 2. Received ARP-reply from: 00:a0:c5:30:52:90 (192.168.1.200).
577: Finished.
578: .fi
579:
580: Как следует из предупреждения напечатанного программой - при запуске не был
581: задан IP адрес источника, потому dhcdrop выбирает случайный IP адрес из
582: диапазона адресов указанной подсети. Если вам нужно указать адрес источника
583: - используйте опцию
584: .B -F
585: .
586: Для данного типа сканирования не важны фактические настройки маршрутизации
587: в вашей сети. Всегда будет использоваться интерфейс заданный опцией
588: .B -i
589: из расчёта что хосты указанной подсети находятся в одном Ethernet сегменте
590: с хостом на котором запущен
591: .B dhcdrop.
592: Так же, данная опция позволяет обнаружить дублирование IP адресов в одном
593: сегменте сети, даже если сканирование производится с хоста чей IP адрес
594: дублируется другим хостом.
595:
596: .SH АВТОР
597: Эта программа была написана Roman Chebotarev <roma@ultranet.ru>,
598: Какие-либо замечания/предложения/пожелания по поводу данной программы,
599: сообщайте по адресу <roma@ultranet.ru>.
600:
601: .SH MAN ФАЙЛ
602: Страница руководства создана Andrew Clark <andyc@altlinux.org>,
603: на основе статьи автора програмы по адресу -
604: http://www.netpatch.ru/dhcdrop.html
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>