7

I did an experiment to check if Linux will send the gratuitous ARP or ARP probe before using the target IP.

The experiment scenario is as follows:

There are two Linux computers, both connected to the same AP. I connected the one first and used ifconfig wlan0 192.168.1.30 (which is another Linux computer's default IP address) to set the IP address statically.

Then I use WPA_supplicant to connect the other one, and use dhclient wlan0 to get the IP address. From sniffer, I didn't observe any gratuitous ARP or ARP probe sent from the second computer.

Just wondering under what condition, will linux computer send these two ARP request? Since under the same condition, I observe that my windows computer will send the ARP Probe to solicit the IP.

Thanks

2

Manually configuring an IP address on a device doesn't require the device to check for address conflicts. It is only if the device configures its own IP address (DHCP, etc.) that it should check for address conflicts.

You are not going to see a gratuitous ARP if you manually configure a device since the device has no way to change its (or request a new) address if it discovers a conflict. The purpose of the RFC is so that a device, configuring its own IP address, can detect if it needs to change the IP address it got. It can do that for things like DHCP, but it has no way to do that if you manually configure the address. In other words, the device has to trust that you, the human, know what you are doing, but it needs to verify that any address it comes up with on its own is not already in use.

  • 1
    Incorrect. I quote from RFC 5227 section 2.1 (emphasis mine) - "Before beginning to use an IPv4 address (whether received from manual configuration, DHCP, or some other means), a host implementing this specification MUST test to see if the address is already in use...." https://tools.ietf.org/html/rfc5227#section-2.1 – Steve365 Mar 11 '16 at 13:15
  • Yes, but that is not actually how many OS vendors have implemented, hence the question. You can test this yourself with WireShark. – Ron Maupin Mar 11 '16 at 13:17
  • Indeed, I was merely clarifying for future readers that to be fully compliant with the RFC an implementation should apply the protocol for manual addressing as well as DHCP. Your opening line suggested that this was not the case. I'm aware there are many buggy implementations out there that don't do this :) – Steve365 Mar 11 '16 at 13:22
  • I haven't seen a single OS that actually implements this. I have, however seen it on some network equipment. The OS vendors don't see the point. Some ignore whole RFCs (e.g., RFC 3021 - Using 31-Bit Prefixes on IPv4 Point-to-Point Links, which has been around for over 15 years). – Ron Maupin Mar 11 '16 at 13:29
  • Some versions of Windows implement this. I've just used Wireshark to confirm on Windows 7 with a static IP. – Steve365 Mar 11 '16 at 13:33
2

Here's a question, Why would Linux send an ARP probe for an IP that is being locally assigned, it knows who the own of that IP will be (itself!) ? - You are setting the IPs so you should know which IP is free. When you rm -rf / Linux doesn't check, it “just does”, because you should know if its ok to perform that operation or not. Windows (for example) has a habit of holding your hand to make it more idiot proof (in my opinion).

In the case of an MS DHCP server, if you run a packet capture on one (which I have) you will see that they will ping an address before leasing it out to a client to ensure it isn't already taken and doesn't know about it (either due to another DHCP server or a static assignment).

When you assign an IP to an interface on Linux there is no need to send out a gratuitous ARP. If another hosts wants to know the MAC for IP 1.2.3.4 it can send an ARP request. There is no benefit to gratuitously ARP out anytime an interface comes up.

I know I have made few statements without hard evidence to back them up however as per your question you have seen for yourself the same behaviour. This just makes logical sense to me.

0

Solaris 10 and onwards support DAD (RFC 5227) for IPv4 for both static assigned IP addresses and dynamically assigned IP addresses.

The dhcp daemon (dhcpd) on NetBSD and other platforms (such as Ubuntu) supports RFC 5227.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.