LINUX.ORG.RU
решено ФорумAdmin

nmap broadcast-dhcp-discover не работает на интерфейсе без адреса?

 , ,


0

3

Nmap version 7.94

nmap -sU -p 67 nmap -e vlan0003 --script broadcast-dhcp-discover --script-args "mac=00:11:22:33:44:55, opt=1:3:6, timeout=1"

Не хочет работать если на vlan0003 нет ipv4 адреса.

nmap --iflist

vlan0003 (vlan0003) (none)/0 ethernet up 1500 54:04:A6:8A:D1:2D

Или я слишком много хочу?

Результат:

7.92 - последняя версия, где оно работает без адреса на интерфейсе.

★★★★★

Последнее исправление: vel (всего исправлений: 1)

Ответ на: комментарий от Bers666

Хм. Не знал про -T.

А там мас можно поменять?

Я проверяю конфигурацию dhcp-сервера. Я хочу убедиться, что во всех подсетях правильно выдаются фиксированные ip (по МАС-ам).

nmap оказался всем хорош, кроме того, что нужно задать ip на интерфейсе. Причем проблема судя повсему кроется в libdnet.

vel ★★★★★
() автор топика
Ответ на: комментарий от vel

У меня похоже работает без адреса:

$ sudo nmap --iflist |grep enp0s31f6
enp0s31f6     (enp0s31f6)     (none)/0                     ethernet    up   1500  84:A9:38:73:1C:58
$ sudo nmap -e enp0s31f6 --script broadcast-dhcp-discover --script-args "mac=00:11:22:33:44:55, opt=1:3:6, timeout=1"
Starting Nmap 7.92 ( https://nmap.org ) at 2024-02-26 17:23 MSK
WARNING: No targets were specified, so 0 hosts scanned.
Nmap done: 0 IP addresses (0 hosts up) scanned in 1.14 seconds

Просто проводной интерфейс не подключен к сети. Но если запустить nmap под strace, то видно, что он создаёт один raw сокет для ловли DHCP-ответов, создаёт один udp сокет для отсылки DHCP-запроса, и отсылает через него DHCP-запрос:

90273 socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP) = 7
90273 setsockopt(7, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
90273 bind(7, {sa_family=AF_INET, sin_port=htons(68), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
90273 setsockopt(7, SOL_SOCKET, SO_BINDTODEVICE, "enp0s31f6\0", 10) = 0
90273 setsockopt(7, SOL_SOCKET, SO_BROADCAST, [1], 4) = 0
...
90529 sendto(7, "\1\1\6\0\340\322\237\7\0\0\200\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\21\"3DU\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\202Sc5\1\0017@\374\1\2\3\4\5\6\7\10\t\n"..., 310, 0, {sa_family=AF_INET, sin_port=htons(67), sin_addr=inet_addr("255.255.255.255")}, 16) = 310
 | 00000  01 01 06 00 e0 d2 9f 07  00 00 80 00 00 00 00 00  ................ |
 | 00010  00 00 00 00 00 00 00 00  00 00 00 00 00 11 22 33  .............."3 |
 | 00020  44 55 00 00 00 00 00 00  00 00 00 00 00 00 00 00  DU.............. |
 | 00030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ |
 | 00040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ |
 | 00050  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ |
 | 00060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ |
 | 00070  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ |
 | 00080  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ |
 | 00090  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ |
 | 000a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ |
 | 000b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ |
 | 000c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ |
 | 000d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ |
 | 000e0  00 00 00 00 00 00 00 00  00 00 00 00 63 82 53 63  ............c.Sc |
 | 000f0  35 01 01 37 40 fc 01 02  03 04 05 06 07 08 09 0a  5..7@........... |
 | 00100  0b 0c 0d 0e 0f 10 11 12  13 14 15 16 17 18 19 1a  ................ |
 | 00110  1b 1c 1d 1e 1f 20 21 22  23 24 25 26 27 28 29 2a  ..... !"#$%&'()* |
 | 00120  2b 2c 2d 2e 2f 30 31 32  33 34 35 36 37 38 39 3a  +,-./0123456789: |
 | 00130  3b 3c 3d 43 42 ff                                 ;<=CB.           |

iliyap ★★★★★
()
Ответ на: комментарий от iliyap

Хм. Интересная идея.

У тебя

socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP) = 7
а у меня
socket(PF_PACKET, SOCK_RAW, 0)          = 6
ioctl(6, SIOCGIFINDEX, {ifr_name="lo", ifr_index=1}) = 0
ioctl(6, SIOCGIFHWADDR, {ifr_name="vlan0003", ifr_hwaddr=54:04:a6:8a:d1:2d}) = 0
stat("/sys/class/net/vlan0003/wireless", 0x7ffcab24efa0) = -1 ENOENT (No such file or directory)
open("/sys/class/net/vlan0003/dsa/tagging", O_RDONLY) = -1 ENOENT (No such file or directory)
ioctl(6, SIOCGIFINDEX, {ifr_name="vlan0003", ifr_index=277}) = 0
bind(6, {sa_family=AF_PACKET, proto=0000, if277, pkttype=PACKET_HOST, addr(0)={0, }, 20) = 0
getsockopt(6, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
setsockopt(6, SOL_PACKET, PACKET_ADD_MEMBERSHIP, {mr_ifindex=277, mr_type=PACKET_MR_PROMISC, mr_alen=0, mr_address=}, 16) = 0
setsockopt(6, SOL_PACKET, PACKET_AUXDATA, [1], 4) = 0
getsockopt(6, SOL_SOCKET, 0x30 /* SO_??? */, [64], [4]) = 0
getsockopt(6, SOL_PACKET, PACKET_HDRLEN, [32], [4]) = 0
setsockopt(6, SOL_PACKET, PACKET_VERSION, [1], 4) = 0
setsockopt(6, SOL_PACKET, PACKET_RESERVE, [4], 4) = 0
ioctl(6, SIOCGIFMTU, {ifr_name="vlan0003", ifr_mtu=1500}) = 0
ioctl(6, SIOCETHTOOL, 0x7ffcab24efe0)   = 0
getsockopt(6, SOL_SOCKET, SO_TYPE, [3], [4]) = 0
setsockopt(6, SOL_PACKET, PACKET_RX_RING, 0x7ffcab24f090, 28) = 0
mmap(NULL, 2740224, PROT_READ|PROT_WRITE, MAP_SHARED, 6, 0) = 0x7f908c3e8000
uname({sysname="Linux", nodename="ls-gw-r2", ...}) = 0
bind(6, {sa_family=AF_PACKET, proto=0x03, if277, pkttype=PACKET_HOST, addr(0)={0, }, 20) = 0
getsockopt(6, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
setsockopt(6, SOL_SOCKET, SO_ATTACH_FILTER, "\1\0\0\0\0\0\0\0\200rr\0\0\0\0\0", 16) = 0
fcntl(6, F_GETFL)                       = 0x2 (flags O_RDWR)
fcntl(6, F_SETFL, O_RDWR|O_NONBLOCK)    = 0
recvfrom(6, 0x7ffcab24f14f, 1, 32, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
Этот исскусственный интеллект нужно как-то отколючить.

Т.к. у меня слака, то вопросов с пересборкой какой-то определенной версии с какими-то опциями не возникает.

vel ★★★★★
() автор топика
Последнее исправление: vel (всего исправлений: 3)
Ответ на: комментарий от vel

По моему все нормально. Ну сделал recvfrom из неблокирующего сокета, ну получил EAGAIN. Это же ожидаемое поведение для неблокирующего сокета.

У меня тоже создаёт raw сокет для ловли dhcp ответов. А затем создаёт udp broadcast сокет для отсылки запроса. Мне кажется ты просто не досмотрел трейс.

iliyap ★★★★★
()
Ответ на: комментарий от iliyap

Нет, дальше только сообщение об ошибке.

Я tcpdump-ом смотрю на интерфейсе пакеты, а их нет.

Откатил я версию на 7.91 и все починилось!

vel ★★★★★
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.