Skip to main content
Proxy Basics

How Does Proxy ARP Work? The Complete Technical Guide [2026]

9 min read

Understanding the Mechanics of Proxy ARP

To fully grasp how Proxy ARP works, one must first understand the standard operation of the Address Resolution Protocol (ARP). ARP operates at Layer 2 (Data Link Layer) and Layer 3 (Network Layer) of the OSI model. Its sole purpose is to map a known IP address (Layer 3) to an unknown MAC address (Layer 2) so that an Ethernet frame can be constructed and transmitted over the wire.

In a standard scenario, if Computer A (192.168.1.5) wants to send a packet to Computer B (192.168.1.10) on the same subnet, it broadcasts an ARP request: "Who has 192.168.1.10?" Computer B replies with its MAC address. Communication proceeds directly.

The Scenario: Different Subnets

The problem arises when the destination IP is on a different subnet. According to standard TCP/IP logic, if a destination is not local, the host should send the packet to its Default Gateway (Router). This requires the host to have a routing table entry and a gateway configured.

However, what if the host has no default gateway configured? Or what if the network admin wants two subnets to coexist on the same physical wire without reconfiguring every workstation? This is where Proxy ARP enters the picture.

How Proxy ARP Works Step-by-Step

Imagine a scenario with two subnets connected by a Router (R1):

  • Host A (Client): IP 10.0.0.2/24 (Subnet A) - No Gateway Configured
  • Router (R1): Interface 1 IP 10.0.0.1, Interface 2 IP 10.0.1.1
  • Server B: IP 10.0.1.5/24 (Subnet B)
  • Here is the step-by-step execution flow:

    1. The Intent: Host A decides to ping Server B (10.0.1.5). 2. The Calculation: Host A performs a bitwise AND operation on its own IP/Subnet mask and the Destination IP. It determines that 10.0.1.5 is not on the local 10.0.0.0/24 network. 3. The Exception: Normally, Host A would drop the packet or look for a gateway. However, for simplicity or legacy reasons, Host A might assume it can reach the address. It broadcasts an ARP request: "Who has 10.0.1.5?" 4. The Proxy Detection: The broadcast reaches the Router (R1). R1 checks its routing table and sees that it knows how to reach 10.0.1.5 (it is directly connected to Interface 2). 5. The "Lie": Because Proxy ARP is enabled on R1, the Router decides to answer the request on behalf of Server B. It sends an ARP reply to Host A. * Critical Detail: The reply contains the Router's own MAC address (e.g., 00:11:22:33:44:55), but maps it to the IP address of 10.0.1.5. 6. The Update: Host A receives this reply. It naively updates its ARP cache, believing that the device with MAC 00:11:22... is the owner of IP 10.0.1.5. 7. The Transmission: Host A sends the Ethernet frame destined for Server B to the Router's MAC address. 8. The Relay: The Router receives the frame, strips the Layer 2 header, looks at the Layer 3 destination IP (10.0.1.5), realizes it owns that subnet, and forwards the packet to Server B via Interface 2.

    ---

    Why Use Proxy ARP? Use Cases and Benefits

    While modern networking relies heavily on DHCP and static gateways, Proxy ARP has specific use cases that make it relevant in 2025, particularly in virtualization and mobility.

    1. Transparent Subnet Bridging (Mobile Networks)

    This is arguably the most common modern use case. In 4G and 5G mobile networks (e.g., GTP tunnels), the User Equipment (UE) is assigned an IP address from a pool. However, the UE (your phone) connects to a radio tower that connects to a gateway far away.

    When you browse the web, your phone sends data to a "Public" IP. The network uses Proxy ARP to ensure that the return traffic from the internet is intercepted by the gateway and tunneled back to your phone, without the phone needing complex routing configurations for every tower it connects to. It makes the mobile network appear as one giant flat LAN.

    2. Zero-Touch Router Replacement (HA Clustering)

    In High Availability (HA) setups (like VRRP or HSRP), two physical routers share one virtual IP. If the primary router fails, the secondary takes over. Proxy ARP is often used in these scenarios to ensure that when a new ARP request is broadcast, the backup router can respond and take over traffic flow seamlessly without disrupting the ARP caches of the connected hosts.

    3. "Poor Man's" Routing

    In legacy systems or embedded devices (like IoT sensors or old printers) that do not support a default gateway configuration, Proxy ARP allows them to communicate with servers on other subnets. The router simply does the work for them.

    4. Mobile IP and Roaming

    When a mobile device roams from one access point to another, it often moves to a different subnet. To maintain ongoing TCP connections without dropping packets, the home agent uses Proxy ARP to intercept packets destined for the device's original location and forward them to the device's new location.

    ---

    The Risks: ARP Spoofing and Man-in-the-Middle Attacks

    As a web scraping and proxy expert, I must highlight that Proxy ARP is functionally identical to ARP Spoofing.

    In a hacking context, an attacker uses Proxy ARP techniques to convince two victims that the attacker's machine is the router. This is a classic Man-in-the-Middle (MITM) attack.

  • The Attack: Attacker sends gratuitous ARP replies to Victim A and Victim B.
  • The Result: Both victims send traffic to the Attacker.
  • The Danger: The Attacker can now log, modify, or block all traffic between the victims before forwarding it on.

Because Proxy ARP relies on implicit trust (hosts believe any ARP reply they receive), it is generally considered less secure than explicit routing configurations. On untrusted networks (like public Wi-Fi), Proxy ARP should be disabled to prevent rogue devices from intercepting traffic.

---

Proxy ARP vs. Standard Routing

It is crucial to distinguish when to use Proxy ARP versus standard routing.

| Feature | Proxy ARP | Standard Routing (Default Gateway) | | :--- | :--- | :--- | | Host Configuration | Minimal (No Gateway needed) | Required (Gateway IP mandatory) | | Network View | Flat (Appears as one Layer 2 segment) | Tiered (Distinct Layer 3 boundaries) | | Scalability | Poor (Broadcast traffic increases) | Excellent (Routers segment traffic) | | CPU Usage | High (Routers process ARP for all remote hosts) | Lower (Routers only process routing protocols) | | Security | Low (Facilitates MITM/Impersonation) | High (Strict control points) |

---

Configuration Examples

Checking Proxy ARP on Linux

Most Linux distributions have Proxy ARP enabled by default per interface. You can check or modify this using the sysctl command or the ip command.

To check the current setting on eth0:

Check specific interface

cat /proc/sys/net/ipv4/conf/eth0/proxy_arp

Returns 1 (enabled) or 0 (disabled)

Enabling Proxy ARP (Linux)

If you are setting up a Linux router or a bridge, you can enable it temporarily:

Enable on eth0 immediately

echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp

Or using iproute2

ip link set eth0 arp on

To make it persistent across reboots, edit /etc/sysctl.conf:

net.ipv4.conf.eth0.proxy_arp = 1

net.ipv4.conf.all.proxy_arp = 1

Python: Sending a Proxy ARP Reply (Scapy)

In the context of web scraping automation or network diagnostics, you might use Python's Scapy library to test if a device is susceptible to Proxy ARP or to diagnose ARP issues.

*Note: The following code is for educational and diagnostic purposes on networks you own.*

from scapy.all import ARP, Ether, sendp

Define the network interfaces and IPs

This script simulates a Proxy ARP reply for an IP that doesn't belong to us

Example: We are the router (00:11:22:33:44:55) answering for the Server (192.168.1.50)

target_mac = "ff:ff:ff:ff:ff:ff" # Broadcast src_mac = "00:11:22:33:44:55" # Our Router's MAC src_ip = "192.168.1.50" # The IP we are proxying for (The Server)

Construct the ARP Reply opcode=2 means reply

pdst is the victim asking the question

psrc is the IP we are claiming to have (The Server)

arp_reply = ARP( op=2, pdst="192.168.1.10", # The victim asking for the server psrc=src_ip, # We claim to be the Server IP hwdst="33:33:33:33:33:33" # Victim's MAC )

Ethernet frame to wrap it

eth_frame = Ether(dst=target_mac, src=src_mac)

Send the packet

In a real Proxy ARP scenario, the router listens for requests first.

This is a 'Gratuitous ARP', forcing the entry into the cache.

sendp(eth_frame / arp_reply, iface="eth0", verbose=False)

print(f"[+] Sent Proxy ARP reply claiming ownership of {src_ip}")

This code snippet demonstrates how easily a device can insert itself into a conversation using Proxy ARP logic, reinforcing why no proxy arp is a common security hardening measure.

---

Proxy ARP Offload (Hardware Acceleration)

In modern high-performance routers (2025 standards), Proxy ARP Offload is a feature where the CPU delegates the task of replying to ARP requests to the Network Interface Card (NIC) hardware.

Without offload, the main CPU must interrupt its processing to handle every single ARP broadcast. With offload, the NIC sees the ARP request packet in the DMA buffer, checks its internal cache of "IPs we own/IPs we proxy for", and generates the reply directly without waking the CPU. This significantly reduces latency in high-density environments like data centers or large-scale proxy server farms.

Summary

Proxy ARP is a "hack" that turns a router into a proxy, pretending to be other hosts to facilitate communication across subnets. While useful for specific scenarios involving mobile clients, legacy devices, or transparent failover, it introduces security risks and scalability issues compared to standard routing. For the vast majority of corporate networks and scraping setups, disabling Proxy ARP (no proxy arp) is the recommended security posture unless there is a specific technical requirement to enable it.

Share: