/ / Jak pobrać maskę adresu za pomocą ICMP - linux, icmp

Jak pobrać maskę adresu za pomocą ICMP - linux, icmp

RFC 950, strona 11:

Brama odbierająca żądanie maski adresupowinien zwrócić go za pomocą pole maski adresu ustawione na 32-bitową maskę bitów identyfikujących podsieć i sieć dla podsieci, w której otrzymano żądanie.

Chcę pobrać maskę adresu hosta i zbudować pakiet żądań maski adresu ICMP do bramy lokalnej i innych adresów IP. używam tcpdump -i eth0 icmp i znajdź ICMP address mask request pakiet został wysłany. Ale nie znalazłem żadnej odpowiedzi. Czy coś jest nie tak? Główny kod to:

 struct icmp        *picmp;

/* ICMP header */
picmp = (icmp_t *)send_buf;
picmp->icmp_type = ICMP_MASKREQ;    // Address Mask Request
picmp->icmp_code = 0;
picmp->icmp_id = pid;
picmp->icmp_seq = npkt++;

len = 12; // ICMP header length
picmp->icmp_cksum = 0;
picmp->icmp_cksum = in_cksum((u_short *)picmp, len);

sendto(sock_fd, send_buf, len, 0, pr->p_addr, pr->addr_len);

Odpowiedzi:

0 dla odpowiedzi № 1

Maska adresu jest przestarzała, ponieważ jej podstawową funkcją (hosty wykrywające maskę sieci lokalnej podczas konfiguracji sieci) zostały włączone do protokołu Dynamic Host Configuration Protocol (DHCP RFC, Wikipedia). Prawdopodobnie nie jest on zaimplementowany na większości routerów konsumenckich RFC 6918.

Jeśli chcesz wysyłać kwerendy do routerów w celu uzyskania informacji o konfiguracji, aby poznać topologię, odpowiednim protokołem jest Simple Network Management Protocol (SNMP RFC, Wikipedia). Jest to dość złożony protokół, więc jeśli chcesz go użyć, powinieneś szukać wstępnie zaprogramowanych implementacji (istnieją zarówno biblioteki, jak i interfejsy CLI). Jednak routery zazwyczaj wymagają autoryzacji klientów, więc nie będziesz w stanie wysyłać zapytań o losowe routery internetowe; nie jestem pewien, czy routery konsumenckie w ogóle je implementują, ponieważ rzadko zdarza się centralne zarządzanie routerami domowymi.