Bash kullanarak ağımda bir DHCP sunucusunun var olup olmadığını kontrol et


23

statik IP ile CentOS kullanarak, bir DHCP sunucusunun bash kullanarak ağ üzerinde çalışıp çalışmadığını belirlemenin herhangi bir yolu var mı?

Yanıtlar:


44

nmap bunu kolayca yapar:

sudo nmap --script broadcast-dhcp-discover -e eth0

gösterecek:

Starting Nmap 6.40 ( http://nmap.org ) at 2016-08-16 09:25 UTC
Pre-scan script results:
| broadcast-dhcp-discover: 
|   IP Offered: 192.168.14.67
|   DHCP Message Type: DHCPOFFER
|   Server Identifier: 192.168.14.1
|   IP Address Lease Time: 0 days, 0:05:00
|   Subnet Mask: 255.255.255.0
|   Router: 192.168.14.1
|   Domain Name Server: 193.190.127.150
|   Domain Name: maas
|   Broadcast Address: 192.168.14.255
|_  NTP Servers: 91.189.91.157, 91.189.89.199, 91.189.94.4, 91.189.89.198
WARNING: No targets were specified, so 0 hosts scanned.
Nmap done: 0 IP addresses (0 hosts up) scanned in 0.27 seconds

1
Mevcut cevaplar oldukça iyi olmasına rağmen, çözümünüzü tercih ederim!
Julie Pelletier

1
İyi komut ama bunun sadece yanıt veren ilk DHCP sunucusunu çıkardığını belirtmek gerekir. Birden fazla DHCP sunucusu varsa, bu komut onları bulamaz.
dürtmek

6

Depoda varsa dhcpdump var

man sayfasından:

SYNOPSIS
       dhcpdump [-h regular-expression] -i interface

DESCRIPTION
       This command parses the output of tcpdump to display the dhcp-packets for easier checking and debugging.

USAGE
       dhcpdump -i /dev/fxp0

       If you want to filter a specific Client Hardware Address (CHADDR), then you can specifiy it as a regular expressions:

       dhcpdump -i /dev/fxp0 -h ^00:c0:4f

       This will display only the packets with Client Hardware Addresses which start with 00:c0:4f.

5

Eğer varsa tcpdump, sizin için kullanılabilir aşağıdaki parametrelerle kök olarak programı çağırmadan sunucuyu bulmanıza yardımcı olabilir:

tcpdump -i [arayüz kimliği] -nev udp bağlantı noktası 68

Ne yazık ki, ağımın düzeni nedeniyle, tam bir DHCP el sıkışmasını hemen yakalayamıyorum. Ancak, iPad'imden bir DHCP İsteği görüyorum:

22:16:44.767371 30:10:e4:8f:02:14 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: (tos 0x0, ttl 255, id 15652, offset 0, flags [none], proto UDP (17), length 328)
    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 30:10:e4:8f:02:14, length 300, xid 0x42448eb6, Flags [none]
      Client-Ethernet-Address 30:10:e4:8f:02:14
      Vendor-rfc1048 Extensions
        Magic Cookie 0x63825363
        DHCP-Message Option 53, length 1: Request
        Parameter-Request Option 55, length 6: 
          Subnet-Mask, Default-Gateway, Domain-Name-Server, Domain-Name
          Option 119, Option 252
        MSZ Option 57, length 2: 1500
        Client-ID Option 61, length 7: ether 30:10:e4:8f:02:14
        Requested-IP Option 50, length 4: 192.168.2.222
        Lease-Time Option 51, length 4: 7776000
        Hostname Option 12, length 15: "NevinWiamssiPad"

Tcpdump'ın bir gece çalışmasına izin verdikten sonra, sonunda bu ACK'yı gördüm:

07:46:40.049423 a8:39:44:96:fa:b8 > 68:a8:6d:58:5b:f3, ethertype IPv4 (0x0800), length 320: (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 306)
    192.168.2.1.67 > 192.168.2.22.68: BOOTP/DHCP, Reply, length 278, xid 0x5e7944f, Flags [none]
      Client-IP 192.168.2.22
      Your-IP 192.168.2.22
      Client-Ethernet-Address 68:a8:6d:58:5b:f3
      Vendor-rfc1048 Extensions
        Magic Cookie 0x63825363
        DHCP-Message Option 53, length 1: ACK
        Server-ID Option 54, length 4: 192.168.2.1
        Lease-Time Option 51, length 4: 86400
        Subnet-Mask Option 1, length 4: 255.255.255.0
        Default-Gateway Option 3, length 4: 192.168.2.1
        Domain-Name-Server Option 6, length 8: 192.168.2.1,142.166.166.166

Bu tcpdumpkomutu çalıştırırken ve bir DHCP sunucusundan gelen bir BOOTP / DHCP Teklifi veya Ack (Nack) görürseniz ve sunucunun MAC adresi ilk satırdaki zaman damgasından hemen sonra olacaktır.

Dolayısıyla (geçerli) DHCP sunucusunun MAC adresi a8: 39: 44: 96: fa: b8` olur.

Web'deki birçok MAC adresi arama aracından birini kullanarak bu MAC'in A8:39:44 Actiontec Electronics, Incyönlendiricime ait olduğunu görüyorum .

Sahte DHCP sunucu paketlerini tcpdumpolurken yakalamak için, bu işlemi terminal penceresinde çalışır durumda bırakmak zorunda kalırdım:

tcpdump -i en0 -nev udp src port 67 and not ether host a8:39:44:96:fa:b8

Bu, işlemin kendi penceresinde çalıştığı sürece yalnızca geçerli DHCP sunucum dışındaki ana bilgisayarlardan gelen DHCP sunucusu yanıtlarını gösterecektir.

Aşağıdaki komut, 100 paket yakalanana kadar arka planda çalışır ve dosyaya hileli DHCP sunucusu iletileri ekler /tmp/rogue. Yine, geçerli DHCP sunucunuzun MAC adresi uygun yerde ve sisteminizdeki arayüz tanımlayıcıda kullanılmalıdır.

tcpdump -U -i en0 -c 100 -nev udp src port 67 and not ether host a8:39:44:96:fa:b8 >> /tmp/rogue 2>&1 &

'


+1, müşterinin VoIP ağlarında, hizmetlerini bozan sahte DHCP sunucularını tespit etmelerine yardımcı olmak için bunu her zaman kullanırdı.
MaQleod

Evet, ağımızdaki her bir DOCSIS öncesi kablo modemine giden UDP bağlantı noktası 67'yi nasıl filtreleyeceğimizi anlayana kadar kablo modem ağlarının erken dağıtımlarında haydut DHCP sunucuları bulmak için kullanmak zorunda kaldım. Rogue'u tanımladıktan sonra bile, arkasında hangi modemin olduğunu belirlemek her zaman mümkün değildi. Ağır vakalarda, haydut duruncaya kadar her düğümü kapatmamız ve daha sonra MSO'nun yapacağı kamyon rulolarının sayısını daraltmak için o düğümdeki amp'i izole etmek zorunda kaldık. Eğlenceli zamanlar. Yaşasın DOCSIS.
Nevin Williams

basit bir çözüm, çünkü bash ile sık sık kontrol etmek istiyorum
Steve

Bu tcpdumpkomutu çalışır durumda bırakırsanız , DHCP sunucunuzunkinden farklı bir MAC adresiyle gönderilen DHCP sunucu paketlerini görüntüler. Tabii ki, adresi belirtilen yere vermeniz gerekecek ... Biçimlendirmeyi daha iyi elde etmek için şu anda cevabımı vereceğim.
Nevin Williams

0

Yeterli zaman verildiğinde, algılamayı pasif bir şekilde yapmak mümkün olabilir: Bir başlangıç ​​istemcisinin bir DHCPDISCOVER yayını gönderdiğini hatırlayın. Bir dhcpserver varsa, bir teklif alır ve ardından bir DHCPREQUEST gönderir (yine yayın olarak!). Böylece

  • DHCPREQUEST yayını alırsanız, bir dhcp sunucusu vardır
  • DHCPDISCOVER alır, ancak bir veya iki saniye içinde DHCPREQUEST almazsanız (dhcp geçişi ile uzak dhcp sunucularını hesaba katmak için), dhcp sunucusu yoktur
  • DHCPDISCOVER bile almazsanız, daha uzun süre beklemeniz veya etkin bir dhcp sunucusu bulmaya çalışmanız gerekir (örneğin, Kenned'in yöntemine göre)

İlk iki noktanın başarısı, ağa yeni bağlanan / önyüklenen diğer ana bilgisayarların sayısına ve kiralama sürelerine bağlıdır.


0

Arabirimi yeniden yapılandırmadan herhangi bir yanıt yazdığı test modunda bir diğer ad cihazı oluşturmayı ve bir dhcp istemcisi kullanmayı deneyebilirsiniz:

ifconfig eth0:1 up
dhclient -w -n eth0:1

Ben sadece bir debian kutusu erişim var, bu yüzden başka bir dhcp uygulaması varsa, dhcpcd gibi, kuru çalışma seçeneği farklı olabilir:

dhcpcd -T eth0:1

Ben sahte bir dhcp sunucuları hakkında admin (beni!) Uyarır böyle bir şey ile çalışan bir cron komut dosyası vardı.


1
ifconfig eth0:1 upÇıktıyı aradığınızdaSIOCSIFFLAGS: Cannot assign requested address
Steve
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.