O erro sendto
é proveniente de nping
, que está recebendo de volta da biblioteca de soquetes do SO (ou seja, localmente - não de algum lugar da rede). Portanto, nping
está apenas tentando enviar pacotes UDP de 1600 bytes, mas o SO não pode enviá-los.
OTOH, se você usar a opção --mtu
para nping
, ela fragmentará os pacotes. Ele aparentemente não está contando o cabeçalho IP em seu MTU, porque o maior que eu posso definir o MTU é 1480.
nping --udp -p 111 -data-length 1600 --mtu 1480 some-host
WARNING: Payload exceeds maximum recommended payload (1400)
Starting Nping 0.5.51 ( http://nmap.org/nping ) at 2015-08-11 10:29 EDT
SENT (0.0056s) UDP 192.168.1.40:53 > 192.168.1.14:111 ttl=64 id=58221 iplen=1628
RCVD (0.0068s) ICMP 192.168.1.14 > 192.168.1.40 Destination host 192.168.1.14 administratively prohibited (type=3/code=10) ttl=64 id=33478 iplen=576
OTOH, ping
deve estar fragmentando os pacotes antes de fornecê-los ao SO.
Uma boa técnica para investigar esse tipo de coisa é usar tcpdump
para detectar o que realmente está acontecendo na rede.
tcpdump -s0 -w /tmp/tcpdump.out host 192.168.1.1
você pode baixar o tcpdump.out e inspecionar seu conteúdo com o wireshark.
se você omitir -s0, ele irá capturar apenas os primeiros 64 (i) bytes de cada pacote. Para este caso, isso seria suficiente.