Überprüfen Sie, ob ein DHCP-Server in meinem Netzwerk mit bash vorhanden ist
Gibt es bei Verwendung von CentOS mit statischer IP eine Möglichkeit zu bestimmen, ob ein DHCP-Server im Netzwerk mit bash ausgeführt wird ?
6 answers
nmap
macht das leicht:
sudo nmap --script broadcast-dhcp-discover -e eth0
Wird angezeigt:
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.0.67
| DHCP Message Type: DHCPOFFER
| Server Identifier: 192.168.0.1
| IP Address Lease Time: 0 days, 0:05:00
| Subnet Mask: 255.255.255.0
| Router: 192.168.0.1
| Domain Name Server: 8.8.8.8
| Domain Name: maas
| Broadcast Address: 192.168.0.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
Hinweis: Es gibt ein ähnliches Skript für dhcpv6
sudo nmap --script broadcast-dhcp6-discover -e eth0
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-02-03 14:24:37
Falls im Repository verfügbar, gibt es dhcpdump
Von Manpage:
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.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-07-07 20:01:08
Wenn Ihnen tcpdump
zur Verfügung steht, kann es hilfreich sein, das Programm als root mit den folgenden Parametern aufzurufen, um den Server zu finden:
Tcpdump -i [interface-id] -nev udp-port 68
Leider kann ich aufgrund des Layouts meines Netzwerks keinen vollständigen DHCP-Handshake sofort erfassen. Ich sehe jedoch eine DHCP-Anfrage von meinem iPad:
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"
Nachdem ich 'tcpdump' über Nacht laufen ließ, sah ich schließlich diesen ACK:
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
Wenn beim laufen dieser Befehl tcpdump
und Sie sehen ein BOOTP / DHCP-Angebot oder ein Ack (Nack), das von einem DHCP-Server stammt, und die MAC-Adresse des Servers befindet sich direkt nach dem Zeitstempel in der ersten Zeile.
Der (gültige) DHCP-Server hier hat also die MAC-Adresse a8: 39: 44:96:fa: b8`.
Mit eines von vielen MAC-Adress-Lookup-Tools im Web Ich sehe, dass dieser MAC zu A8:39:44 Actiontec Electronics, Inc
gehört, was mein Router ist.
Um schurkische DHCP-Serverpakete abzufangen, müsste ich dies verlassen tcpdump
prozess läuft im Terminalfenster:
tcpdump -i en0 -nev udp src port 67 and not ether host a8:39:44:96:fa:b8
Dies zeigt nur DHCP-Serverantworten von anderen Hosts als meinem gültigen DHCP-Server an, solange der Prozess in einem eigenen Fenster ausgeführt wird.
Der folgende Befehl wird im Hintergrund ausgeführt, bis 100 Pakete erfasst werden, wobei alle fehlerhaften DHCP-Servermeldungen an die Datei angehängt werden /tmp/rogue
. Auch hier muss die MAC-Adresse Ihres gültigen DHCP-Servers an der entsprechenden Stelle verwendet werden, sowie der Schnittstellendeskriptor auf Ihrem System.
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 &
`
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-05-09 21:57:52
Bei ausreichender Zeit ist es möglicherweise möglich, die Erkennung passiv durchzuführen: Denken Sie daran, dass ein initialisierender Client eine DHCPDISCOVER-Übertragung sendet. Wenn ein dhcpserver verfügbar ist, wird er sich für ein Angebot entscheiden und dann (wieder als Broadcast!) DHCPREQUEST. So
- wenn Sie eine DHCPREQUEST-Übertragung empfangen, gibt es einen DHCP-Server
- wenn Sie DHCPDISCOVER erhalten, aber innerhalb von ein oder zwei Sekunden keine DHCPREQUEST (um Remote-DHCP-Server über DHCP-Relay zu berücksichtigen), gibt es keinen DHCP-Server
- wenn Sie nicht einmal DHCPDISCOVER erhalten, müssen Sie länger warten-oder versuchen, aktiv einen DHCP-Server zu finden (z. B. nach Kenneds Methode)
Der Erfolg der ersten beiden Punkte hängt von der Anzahl der anderen Hosts ab, die neu an das Netzwerk angeschlossen / gestartet wurden, sowie von den Leasingzeiten.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-05-06 16:42:39
Sie können versuchen, ein Alias-Gerät zu erstellen und einen DHCP-Client im Testmodus zu verwenden, in dem eine Antwort ausgedruckt wird, ohne die Schnittstelle tatsächlich neu zu konfigurieren:
ifconfig eth0:1 up
dhclient -w -n eth0:1
Ich habe nur Zugriff auf einen debian-box, so wenn Sie einen anderen dhcp-Implementierung, die dry-run-option, die könnte anders sein, wie zum dhcpcd:
dhcpcd -T eth0:1
Früher ließ ich ein Cron-Skript mit so etwas ausführen, das den Administrator alarmieren würde (ich!) über rogue-dhcp-Server.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-05-07 15:14:31
Wenn Sie scapy verfügbar haben, ist dies eine (sogar skriptfähige) einfache Befehlszeilenlösung.
Nur dieser Code (in der Scapy-Schnittstelle ausgeführt oder wie gewünscht über die Datei .py
skriptiert) sollte die DHCP-Anforderung ausführen und die Anzahl von answers
(entspricht DHCP) zurückgeben verschiedene Server):
conf.checkIPaddr = False
fam,hw = get_if_raw_hwaddr(conf.iface)
dhcp_discover = Ether(dst="ff:ff:ff:ff:ff:ff")/IP(src="0.0.0.0",dst="255.255.255.255")/UDP(sport=68,dport=67)/BOOTP(chaddr=hw)/DHCP(options=[("message-type","discover"),"end"])
ans, unans = srp(dhcp_discover, multi=True) # Press CTRL-C after several seconds
ans.summary()
Der Scapy-Weg ist gut, da er auf many platforms
und eingebetteten Geräten (wie OpenWRT) verfügbar ist und scripting
akzeptiert.
Der Nachteil: Sie müssen python
installiert (gut... weit verfügbar auch).
Keine Notwendigkeit für Bash auf dieser Lösung.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-05-30 00:10:12