Как найти серверы dhcp в сети

Как найти второй DHCP-сервер в сети?

Задать вопрос

Наши специалисты ответят на любой интересующий вопрос по услуге

Иногда при разборе чужой сети требуется определить насколько правильно работает сеть и нет ли там чужих DHCP серверов.
Делается это довольно просто. Для этого можно использовать небольшую утилиту RogueChecker.

Скачиваем, запускаем, видим такое окошко:

Нажимаем кнопку «Detect Rogue Servers» и в верхнем окне получаем список всех серверов, которые отозвались.

Если же клиентский компьютер был введен в домен, то список авторизованных серверов появится в нижней части окна.

После первого поиска все найденные DHCP серверы будут считаться неизвестными. Утилита не сверяет найденные серверы со списком авторизованных в AD.

Если поставить галочку в столбце «Valid DHCP Servers» напротив нашего правильного сервера, то программа будет его считать авторизованным, и больше не будет рисовать красный кружочек с восклицательным знаком около него. Это сделано для удобства просмотра и поиска «левых» DHCP серверов в сети. Иконка в трее меняется, если обнаружен неизвестный DHCP сервер:

 
Также программу можно использовать для автоматического вылавливания периодически появляющихся DHCP серверов.
Для этого надо зайти во вкладку Configuration и установить настройки, как часто делать поиск DHCP серверов. В данном примере я поставил проверку на каждые 5 минут.

Также в этом окне можно выбрать через какие сетевые карты делать поиск серверов (при условии, что сетевых карт несколько в этом компьютере).

Источник

Заказать услугу

Оформите заявку на сайте, мы свяжемся с вами в ближайшее время и ответим на все интересующие вопросы.

On my LAN there are multiple DHCP servers running, and all of them are on the same range.

Now I use a machine which has a dynamic IP address from a DHCP server. I have to know from which server it comes.

How to do that?!

Aaron's user avatar

Aaron

6,6365 gold badges34 silver badges48 bronze badges

asked Jan 31, 2014 at 16:19

Maythux's user avatar

To find out the DHCP server that’s giving you the IP, just press Ctrl+Alt+T on your keyboard to open Terminal. When it opens, run the command(s) below:

cat /var/lib/dhcp3/dhclient.leases

Or you can just use grep command to get DHCP server address.

grep dhcp-server-identifier /var/lib/dhcp3/dhclient.leases

OR

grep dhcp-server-identifier /var/lib/dhcp/dhclient.leases

For Ubuntu 14.04, 16.04, and 17.10 you can use:

dhclient -d -nw eth0

Sample output:

Internet Systems Consortium DHCP Client 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth0/00:0c:29:49:3e:67
Sending on   LPF/eth0/00:0c:29:49:3e:67
Sending on   Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3 (xid=0x4f723f9)
DHCPREQUEST of 192.168.138.136 on eth0 to 255.255.255.255 port 67 (xid=0x4f723f9)
DHCPOFFER of 192.168.138.136 from 192.168.138.254
DHCPACK of 192.168.138.136 from 192.168.138.254
RTNETLINK answers: File exists
bound to 192.168.138.136 -- renewal in 892 seconds.

answered Jan 31, 2014 at 17:04

Mitch's user avatar

MitchMitch

106k24 gold badges208 silver badges266 bronze badges

4

In Ubuntu 14.04, the /var/lib/dhcp/dhclient.leases is empty. The actual lease file can be found on the command line of dhclient via ps. Look for the -lf option. This command should work in Ubuntu 14.04 installations (still valid as of 17.10):

cat $(ps aux | grep -o '[/]var/lib/NetworkManager/S*.lease') | grep dhcp-server-identifier

answered May 5, 2015 at 2:36

glibdud's user avatar

glibdudglibdud

7378 silver badges21 bronze badges

1

With:

  • nmap (source; DHCPv6):

    sudo nmap --script broadcast-dhcp-discover -e eth0  # DHCPv4
    sudo nmap --script broadcast-dhcp6-discover -6      # DHCPv6
    
  • dhdump (source):

    sudo dhcpdump -i eth0
    
  • tcpdump (source):

    sudo tcpdump -i eth0 -nev udp port 68
    

Others:

  • dhcp_probe (dhcp-probe package)

answered Oct 19, 2018 at 19:44

Pablo Bianchi's user avatar

Pablo BianchiPablo Bianchi

13.8k4 gold badges74 silver badges112 bronze badges

1

In Ubuntu 16.04 you can try

journalctl | grep DHCPACK

answered Sep 3, 2018 at 9:33

miouze's user avatar

1

Using the new iproute2 (in my case in Ubuntu 22.04.1 LTS):

$ ip route | grep default

default via 1xx.1xx.xxx.xxx dev gpd0 metric 10 
default via 192.168.xxx.xxx dev wlp0s proto dhcp metric 100 

The DHCP server IP is the one given after the via keyword for each of your specified network interface(s).

ip r | grep default also works.

From the man:

ip route
   Show table routes.

The help:

$ ip route help

$ ip route help
Usage: ip route { list | flush } SELECTOR
       ip route save SELECTOR
       ip route restore
       ip route showdump
       ip route get [ ROUTE_GET_FLAGS ] ADDRESS
                            [ from ADDRESS iif STRING ]
                            [ oif STRING ] [ tos TOS ]
                            [ mark NUMBER ] [ vrf NAME ]
                            [ uid NUMBER ] [ ipproto PROTOCOL ]
                            [ sport NUMBER ] [ dport NUMBER ]
       ip route { add | del | change | append | replace } ROUTE
SELECTOR := [ root PREFIX ] [ match PREFIX ] [ exact PREFIX ]
            [ table TABLE_ID ] [ vrf NAME ] [ proto RTPROTO ]
            [ type TYPE ] [ scope SCOPE ]
ROUTE := NODE_SPEC [ INFO_SPEC ]
NODE_SPEC := [ TYPE ] PREFIX [ tos TOS ]
             [ table TABLE_ID ] [ proto RTPROTO ]
             [ scope SCOPE ] [ metric METRIC ]
             [ ttl-propagate { enabled | disabled } ]
INFO_SPEC := { NH | nhid ID } OPTIONS FLAGS [ nexthop NH ]...
NH := [ encap ENCAPTYPE ENCAPHDR ] [ via [ FAMILY ] ADDRESS ]
      [ dev STRING ] [ weight NUMBER ] NHFLAGS
FAMILY := [ inet | inet6 | mpls | bridge | link ]
OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ] [ as [ to ] ADDRESS ]
           [ rtt TIME ] [ rttvar TIME ] [ reordering NUMBER ]
           [ window NUMBER ] [ cwnd NUMBER ] [ initcwnd NUMBER ]
           [ ssthresh NUMBER ] [ realms REALM ] [ src ADDRESS ]
           [ rto_min TIME ] [ hoplimit NUMBER ] [ initrwnd NUMBER ]
           [ features FEATURES ] [ quickack BOOL ] [ congctl NAME ]
           [ pref PREF ] [ expires TIME ] [ fastopen_no_cookie BOOL ]
TYPE := { unicast | local | broadcast | multicast | throw |
          unreachable | prohibit | blackhole | nat }
TABLE_ID := [ local | main | default | all | NUMBER ]
SCOPE := [ host | link | global | NUMBER ]
NHFLAGS := [ onlink | pervasive ]
RTPROTO := [ kernel | boot | static | NUMBER ]
PREF := [ low | medium | high ]
TIME := NUMBER[s|ms]
BOOL := [1|0]
FEATURES := ecn
ENCAPTYPE := [ mpls | ip | ip6 | seg6 | seg6local | rpl | ioam6 ]
ENCAPHDR := [ MPLSLABEL | SEG6HDR | SEG6LOCAL | IOAM6HDR ]
SEG6HDR := [ mode SEGMODE ] segs ADDR1,ADDRi,ADDRn [hmac HMACKEYID] [cleanup]
SEGMODE := [ encap | inline ]
SEG6LOCAL := action ACTION [ OPTIONS ] [ count ]
ACTION := { End | End.X | End.T | End.DX2 | End.DX6 | End.DX4 |
            End.DT6 | End.DT4 | End.DT46 | End.B6 | End.B6.Encaps |
            End.BM | End.S | End.AS | End.AM | End.BPF }
OPTIONS := OPTION [ OPTIONS ]
OPTION := { srh SEG6HDR | nh4 ADDR | nh6 ADDR | iif DEV | oif DEV |
            table TABLEID | vrftable TABLEID | endpoint PROGNAME }
IOAM6HDR := trace prealloc type IOAM6_TRACE_TYPE ns IOAM6_NAMESPACE size IOAM6_TRACE_SIZE
ROUTE_GET_FLAGS := [ fibmatch ]

Current version:

$ ip -V
ip utility, iproute2-5.15.0, libbpf 0.5.0

More:
Web: https://wiki.linuxfoundation.org/networking/iproute2
Git.kernel: https://git.kernel.org/pub/scm/network/iproute2/iproute2.git
Github: https://github.com/shemminger/iproute2

answered Sep 27, 2022 at 19:29

s.k's user avatar

s.ks.k

1,1382 gold badges14 silver badges41 bronze badges

Иногда при разборе чужой сети требуется определить насколько правильно работает сеть и нет ли там чужих DHCP серверов.

Делается это довольно просто. Для этого можно использовать небольшую утилитку RogueChecker (см. аттач). Автор ее Subhash Badri. Основную страничку с утилитой можно посмотреть тут, скачать утилиту тут.

Скачиваем, запускаем, видим такое окошко:

Rouge DHCP Web

Нажимаем кнопку «Detect Rogue Servers» и в верхнем окне получаем список всех серверов, которые отозвались.

Если же клентский компьютер был введен в домен, то список авторизованных серверов появится в нижней части окна.

После первого поиска все найденные DHCP серверы будут считаться неизвестными. Утилита не сверяет найденные серверы со списком авторизованных в AD.

Если поставить галочку в столбце «Valid DHCP Servers» напротив нашего правильного сервера, то программа будет его считать авторизованным, и больше не будет рисовать красный кружочек с восклицательным знаком около него. Это сделано для удобства просмотра и поиска «левых» DHCP серверов в сети. Иконка в трее меняется, если обнаружен неизвестный DHCP сервер:

Также программу можно использовать для автоматического вылавливания периодически появляющихся DHCP серверов.

Для этого надо зайти во вкладку Configuration и установить настройки, как часто делать поиск DHCP серверов. В данном примере я поставил проверку на каждые 5 минут.

Также в этом окне можно выбрать через какие сетевые карты делать поиск серверов (при условии, что сетевых карт несколько в этом компьютере).

наличие двух серверов. при каждом запросе ip-адреса от клиента он будет получать его от того сервера, пакет от которого успел раньше прийти.
избежать конфликтов ip-адресов. при назначении вручную — вести список назначенных адресов, не выдавать пользователям прав на изменение ip-адресов. при назначении автоматическом — настроить DHCP-сервер (один), не выдавать пользователям прав на изменение ip-адресов, не допускать появления в сети других DHCP-серверов (защитить сетевые коммутаторы от постороннего доступа, использовать на коммутаторах DHCP-snooping, если поддерживается).
найти лишние DHCP-сервера. запустить на компьютере Wireshark. заставить компьютер переполучить ip-адрес (например, вытаскиванием патчкорда). проанализировать результат. если ответы на запрос пришли с разных MAC-адресов — посмотреть, какой MAC-адрес у правильного DHCP-сервера; остальные, следовательно, лишние. дальше их можно искать, если у вас управляемые коммутаторы, на них можно посмотреть, какому физическому порту коммутатора назначен MAC-адрес лишнего DHCP-сервера.

  Маршрутизаторы Mikrotik позволяют вычислить чужой, «левый», сторонний DHCP-сервер который находится в вашей сети и тем самым мешает вашим устройствам получать правильные IP-адреса. Такая ситуация может возникнуть, когда клиент, например, подсоединил свой домашний роутер не через WAN порт, а через LAN-порты, а ваша сеть не ориентированна на изоляцию клиента (VLANs, EoIP/VPLS Tunnels, Horizon Bridging/Private VLAN Edge(PVE)). Для этого в RouterOS существует настройка /ip dhcp-server alert:

  Добавляем правило, с отсылкой на выполнения скрипта script1:

  interface — интерфейс, на котором искать не легитимные DHCP-сервера;
  valid-server — список МАС-адресов ваших легитимных DHCP-серверов;
  alert-timeout — таймаут обнаружения чужих DHCP-серверов. Если параметр не заполнить (сделать не активным) — скрипт выполнится один раз при обнаружении. Это важный параметр, заполнять его нужно исходя из DHCP Lease Time вашей сети. Если у вас Lease Time стоит 12 часов, то alert-timeout можно сделать 1-2 часа. Вероятность того, что чужой сервер раздаст между этими периодами адреса минимальна. Если Lease Time то и alert-timeout нужно уменьшить. Но, если вы будете при обнаружении «левого» DHCP отправлять e-mail, то сильно уменьшенное время в alert-timeout приведет к спаму на ваше «мыло» до того момента, пока «левый» сервер не пропадет.
  unknown-server — список МАС-адресов обнаруженных неизвестных серверов DHCP. Сервер будет удален из этого списка после тайм-аута.
  on-alert — сценарий для запуска, если неизвестный сервер DHCP обнаружен;
  reset-alert — не выведен в интерфейс WinBox, доступен с командной строки. Команда /ip dhcp alert reset-alert очищает список всех найденных «левых» DHCP-серверов.

  Если DHCP Alerts не может получить dhcp-пакет, он действует как dhcp-клиент и посылает пакеты DHCP Discover раз в минуту. В on-alert можно добавлять как сам скрипт, так и ссылку на него в виде названия скрипта в /system script.
  Но наша задача при появлении «левого» DHCP-сервера отсылать уведомление на e-mail. Что-бы на «мыло» приходило не только оповещение, но и IP, интерфейс на котором найден и MAC-адрес чужого DHCP-сервера. Для этого скрипт нужно писать напрямую в окне on-alert, так как там мы будем использовать спец-переменные. Проблема в том, что оператором get данные с DHCP Alerts получить нельзя (проблема микротиковцам известна). Итак, напишем скрипт в on-alert:

  В пункте Unknown Server видно MAC-адрес «левого» сервера. Alert Timeout стоит тестовые 10 секунд, обычно это значение у меня 1 час. Интерфейс может быть как реальный, так и бридж. Значение Valid Servers заполняем нашими легитимными DHCP-серверами, так как у меня он только один (мое текущее устройство), то заполняем MAC с нашего интерфейса.

    Сам скрипт:

/tool e-mail send server=10.10.10.10 port=25 user=admin@ya.ru password=111111 start-tls=yes to=»admin@ya.ru» from=admin@ya.ru subject=(«DHCP Alert: Discovered unknown dhcp-server, RouterBoard identity: «.[/system identity get name]) body=»MikroTik have been detected unknown dhcp-server: nnIP: $address nInterface: $interface nMAC: quot;mac-address»»;
/log info «e-mail send unknown dhcp-server»

  После появления в сети чужого DHCP-сервера раз в заданное время опроса скрипт будет выполнятся, в это время будут писаться записи в терминал и лог журнал:



    Последняя запись в логе инициализированная скриптом. Ну и само письмо будет иметь такой вид:

  Как видим в тему письма подтягиваются название роутера (идентификатор). А в тело — IP, интерфейс обнаружения и MAC-адрес чужого DHCP-сервера. Письма будут отсылаться через промежуток времени указанный в Alert Timeout, до того момента, пока DHCP-сервер не пропадет или вы его не найдете.

Используемые материалы:

Подписаться на новые статьи.



Понравилась статья? Поделить с друзьями:
  • Как найти число куб которого равен
  • Как составить план рекламного объявления
  • Как составить домашнюю библиотеку для детей
  • Как найти плотность куба формула
  • Как найти друга иностранца для общения