arpsend(8)
| ARPSEND(8) | System Manager's Manual | ARPSEND(8) |
NAME
arpsend - send an Ethernet frame containing an IP ARP request or reply packet with user-specified fields
SYNOPSIS
arpsend [ -c count ] [ -d debuglevel ]
[ -h ] [ -p pause_time ] [ -q ] [ -v ] [
-w ]
[ -i interface_name ]
[ -E ether_source_address ] [ -e
ether_dest_address ]
[ -Q vlan_id ]
[ -o arp_opcode ]
[ -S sender_hardware_address ] [ -s
sender_protocol_address ]
[ -T target_hardware_address ] -t
target_protocol_address
DESCRIPTION
arpsend sends an Ethernet frame containing an IP ARP request or reply packet containing fields you specify. This is a diagnostic tool intended for use by network administrators.
The program does not listen for any ARP replies; if you want to see any ARP replies prompted by a request, you should use another program to do so, such as tcpdump(1).
AVAILABILITY
arpsend is a product of the Network Switching and Routing at Princeton University's Office of Information Technology, and is available from https://www.net.princeton.edu/software/arpsend/
Presently the product builds and runs on Solaris 9 and 10 on SPARC with gcc.
The program relies on the libnet(3) library.
OPTIONS
- -c count
- Specifies the number of packets to send. If not specified, this defaults to 1.
- -d debug_level
- Sets the debug_level variable that controls the amount of debugging messages generated. If not specified, this defaults to 0 (no debugging). Presently no debugging messages are defined.
- -E ether_source_address
- Specifies the source address of the Ethernet frame. If not specified, this defaults to the Ethernet address of the outgoing interface. (Some environments may not allow you to override this value.)
- -e ether_dest_address
- Specifies the destination address of the Ethernet frame. If not specified, this defaults to the Ethernet broadcast address.
- -h
- Display a brief usage summary, then exit.
- -i interface_name
- Specifes the name of the Ethernet interface through which the packet should be sent. If not specified, this defaults to the first interface that is up (other than loopback).
- -o arp_opcode
- Specifies the ARP opcode; valid values are 1 (ARP Request) and 2 (ARP Reply). If not specified, this defaults to 1 (ARP Request).
- -p pause_time
- Specifies the number of seconds to pause between sending each packet, when the packet count is great than 1. If not specified, this defaults to 1 second.
- -q
- Specifies 'quiet' operation; only errors and warnings are displayed.
- -Q vlan_id
- Tag the frame with an 802.1Q VLAN ID.
- -S sender_hardware_address
- Specifies the ARP sender hardware address. If not specified, this defaults to the Ethernet address of the outgoing interface.
- -s sender_protocol_address
- Specifies the ARP sender protocol address. If not specified, this defaults to the primary IP address of the outgoing interface.
- -T target_hardware_address
- Specifies the ARP target hardware address. If not specified, this default to 0:0:0:0:0:0.
- -t target_protocol_address
- Specifies the ARP target protocol address. This option must be specified; no default value is supplied.
- -v
- Display the program's version number, then exit.
- -w
- Specifies that arpsend should not warn you about values that might cause network problems.
OPERATION
arpsend is a diagnostic tool intended to be used by an network administrator. It is possible to specify values that will interfere with the normal operation of devices attached to the network, or the network as a whole.
arpsend checks for the most-common values that could cause network problems, but by no means can catch all such combinations of values. When it believes the values you specify could cause a problem, it will display a warning, and ask you if you still wish to send the packet. You can skip these checks (and the associated prompt) with the -w option; your packet will be sent without comment.
EXAMPLES
To broadcast an ARP Request out the first interface that is up, requesting that 192.168.1.1 respond with an ARP Reply:
arpsend -t 192.168.1.1
In the example above, if my own IP address (on this interface) were 192.168.1.1, the packet would be a Gratuitous ARP request. Although the value of the target hardware address is not significant in a Gratuitous ARP request, typical ARP implementations set it to ff:ff:ff:ff:ff:ff when they send a Gratuitous ARP request; you can duplicate this behavior with:
arpsend -T ff:ff:ff:ff:fff:ff -t 192.168.1.1
To unicast an ARP Request via interface le1 to 0:0:1:1:2:3, requesting that 192.168.1.1 respond with an ARP Reply:
arpsend -i le1 -e 0:0:1:1:2:3 -t 192.168.1.1
To send an ARP Reply that appears to come from a device with IP address 192.168.1.3 and Ethernet address 0:0:1:1:1:1, unicasting the packet to 0:0:1:9:9:9 (we'll pretend that the target device's IP address is 192.168.1.4):
arpsend -o 2 -E 0:0:1:1:1:1 -e 0:0:1:9:9:9 -S 0:0:1:1:1:1 -s 192.168.1.3 -T 0:0:1:9:9:9 -t 192.168.1.4
AUTHOR
The program was written by Irwin Tillman of Princeton University OIT Network Switching and Routing. It was written to run on Solaris 9 and 10, relying on the generally-available libnet(3) library.
SEE ALSO
- RFC 826
- Address Resolution Protocol
- RFC 1122
- Host Network Requirements (Link Layer: Specific Issues, section 2.3)
- libnet(3)
- available from https://codedocs.xyz/libnet/libnet/md_README.html or https://github.com/libnet/libnet/releases
| Apr 5 2021 | Princeton Univ. |
