File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / dhcdrop / man / ru / dhcdrop.8
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 22:25:35 2012 UTC (13 years, 1 month ago) by misho
Branches: dhcdrop, MAIN
CVS tags: v0_5, HEAD
dhcdrop

    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>