Как запросить определенный сервер DHCP

В большинстве случаев Вы просто вытерли бы и восстановили бы от хороших резервных копий.

0
задан 10 June 2013 в 17:29
3 ответа

Пока вы находитесь в той же подсети, что и DHCP-сервер, вы можете использовать scapy для отправки запроса DHCP и получения ответа .

Например, , Я адаптировал его к следующему, который показывает мне все DHCP-серверы в сети и какой диапазон они обслуживают:

[michael:~/prog/util]$ sudo ./findDhcpServers.py 
Begin emission:
Finished to send 1 packets.
*................................
Received 33 packets, got 1 answers, remaining 0 packets
DHCP offers received:
MAC: 00:1b:64:33:df:29, Server IP: 192.168.0.6, Offer IP: 192.168.0.135
    Mask: 255.255.255.0, Router: 192.168.0.1, Domain: office.myworkplace.ca

Возможно, вам нужен один из этих методов.


Teh codez:

#!/usr/bin/python
# Michael Brown <michael@supermathie.net>

# idea stolen from http://bb.secdev.org/scapy/wiki/doc/IdentifyingRogueDHCPServers

from __future__ import print_function
from scapy.all import *

import sys

# Turn off response IP address validation
conf.checkIPaddr = False

# Set up the interface
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"])

#print("Press Ctrl-C after several seconds...", fd=sys.stderr)
ans, unans = srp(dhcp_discover, multi=True, timeout=5)

if len(ans) == 0:
    print("No DHCP offers received", file=sys.stderr)
else:
    print("DHCP offers received:")
    for pair in ans:
        p = pair[1]
        d = p[DHCP]
        print("MAC: {0}, Server IP: {1}, Offer IP: {2}\n    Mask: {3}, Router: {4}, Domain: {5}".format(
            p[Ether].src,
            p[IP].src,
            p[BOOTP].yiaddr,
            filter(lambda x: x[0] == 'subnet_mask', d.options)[0][1],
            filter(lambda x: x[0] == 'router', d.options)[0][1],
            filter(lambda x: x[0] == 'domain', d.options)[0][1],
            ))
4
ответ дан 4 December 2019 в 11:52

Самый простой способ зафиксировать обмен DHCP - запустить захват пакетов на DHCP-сервере или клиенте во время процесса настройки (это легко сделать с помощью ipconfig / release / refresh в Windows и dhclient -r; dhclient в * nix). Я настоятельно рекомендую использовать для этого Wireshark,

0
ответ дан 4 December 2019 в 11:52

dhclient (по крайней мере, в некоторых системах) имеет параметр -s для указания конкретного сервера вместо использования широковещательной рассылки по умолчанию.

0
ответ дан 4 December 2019 в 11:52

Теги

Похожие вопросы