Loading content...
Dynamic ARP Inspection (DAI) represents the gold standard for enterprise ARP security. Unlike static measures that require manual configuration of every IP-to-MAC binding, DAI automatically validates ARP packets against a trusted binding database built by DHCP Snooping.
DAI provides several critical capabilities:
When properly deployed, DAI makes ARP spoofing attacks effectively impossible on protected VLANs while maintaining network performance and minimizing operational overhead.
By mastering this page, you will understand: (1) DAI architecture and relationship to DHCP Snooping, (2) configuration for Cisco and other enterprise switches, (3) ARP Access Control Lists for static IP hosts, (4) rate limiting and DoS protection, (5) logging and monitoring, and (6) troubleshooting common deployment issues.
DAI requires DHCP Snooping to be enabled and operational. Without the DHCP Snooping binding table, DAI has no source of legitimate IP-to-MAC mappings. Enable and verify DHCP Snooping before configuring DAI. For static IP hosts, you must configure ARP ACLs or manually add binding entries.
DAI integrates with DHCP Snooping to create a comprehensive Layer 2 security architecture. Understanding this architecture is essential for proper deployment.
Component Relationships:
Data Flow Through DAI:
DAI Validation Process (Step by Step):
Step 1: Port Classification
Step 2: Rate Limit Check
Step 3: DHCP Snooping Binding Check
Step 4: ARP ACL Check
Step 5: Logging and Statistics
| Check | What's Validated | Failure Action |
|---|---|---|
| Source MAC Binding | Sender MAC matches binding for Sender IP | Drop packet |
| Destination MAC (optional) | Target MAC matches binding for Target IP | Drop packet |
| IP Address (optional) | Valid IP addresses (not 0.0.0.0, etc.) | Drop packet |
| Rate Limit | ARP rate within configured limit | Error-disable port |
By default, DAI only validates the source MAC-to-IP binding. Additional checks (destination MAC, IP address validation) can be enabled for stricter validation but may cause issues in some network configurations. Enable additional checks only after testing in your environment.
Configuring DAI requires careful planning to avoid network disruption. Follow these steps for safe deployment.
Pre-Configuration Checklist:
Configuration Sequence:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
! ================================================! Complete DAI Configuration Example (Cisco IOS)! ================================================ ! Prerequisites: Verify DHCP Snooping is enabled and workingshow ip dhcp snoopingshow ip dhcp snooping binding ! ================================================! Step 1: Enable DAI on VLANs! ================================================ ! Enable DAI for specific VLANsip arp inspection vlan 10,20,30 ! Enable for VLAN rangeip arp inspection vlan 10-100 ! ================================================! Step 2: Configure Trusted Ports! ================================================ ! Uplinks to other switches/routers should be trustedinterface GigabitEthernet0/1 description Uplink to Core Switch ip arp inspection trust interface GigabitEthernet0/2 description Uplink to Router ip arp inspection trust ! DHCP server connection should be trustedinterface GigabitEthernet0/3 description DHCP Server ip arp inspection trust ! ================================================! Step 3: Configure Rate Limiting (Important!)! ================================================ ! Set reasonable rate limits on untrusted ports! Default is 15 pps - may need adjustment ! Set rate limit on specific interfaceinterface GigabitEthernet0/10 description User Access Port ip arp inspection limit rate 20 ! Set for range of interfacesinterface range GigabitEthernet0/10 - 48 ip arp inspection limit rate 25 ! Set burst interval (optional)interface GigabitEthernet0/10 ip arp inspection limit rate 30 burst interval 2 ! ================================================! Step 4: Configure Additional Validation (Optional)! ================================================ ! Enable additional validation checks! These are optional but increase security ! Validate Source MAC in Ethernet header matches ARP bodyip arp inspection validate src-mac ! Validate Destination MAC in Ethernet header matches ARP bodyip arp inspection validate dst-mac ! Validate IP address fieldsip arp inspection validate ip ! Enable all validations at onceip arp inspection validate src-mac dst-mac ip ! ================================================! Step 5: Configure Logging! ================================================ ! Default: Log all dropped packets! Can configure log buffer and rate ! Set log buffer entriesip arp inspection log-buffer entries 1024 ! Set logging rateip arp inspection log-buffer logs 10 interval 5 ! Enable VLAN-level loggingip arp inspection vlan 10 logging acl-match noneip arp inspection vlan 10 logging dhcp-bindings permit ! ================================================! Step 6: Error Recovery Configuration! ================================================ ! Enable automatic recovery from error-disabled stateerrdisable recovery cause arp-inspectionerrdisable recovery interval 300 ! 5 minutes ! ================================================! Verification Commands! ================================================ ! Verify DAI statusshow ip arp inspection ! Verify per-VLAN statusshow ip arp inspection vlan 10 ! View DAI statisticsshow ip arp inspection statistics ! View interfacesshow ip arp inspection interfaces ! View log buffershow ip arp inspection log ! ================================================! Example DAI Status Output! ================================================! Source MAC Validation : Enabled! Destination MAC Validation : Enabled ! IP Address Validation : Enabled!! Vlan Configuration Operation ACL Match Static ACL! ---- ------------- --------- --------- ----------! 10 Enabled Active None None! 20 Enabled Active None None ! ================================================! Troubleshooting: View dropping stats! ================================================show ip arp inspection statistics vlan 10 ! Look for:! - Forwarded, Dropped, DHCP Drops, ACL Drops! - High drop counts may indicate attack OR misconfigurationThe default rate limit of 15 pps is appropriate for typical workstations but may be too low for servers or virtualized environments with many VMs. Monitor for error-disabled ports after deployment and adjust rate limits accordingly. Too high allows DoS attacks; too low causes legitimate traffic interruption.
Hosts with static IP addresses don't appear in the DHCP Snooping binding table, so DAI would block their ARP packets by default. ARP Access Control Lists provide a way to explicitly permit these hosts.
When ARP ACLs Are Needed:
ARP ACL Processing:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
! ================================================! ARP Access Control List Configuration! ================================================ ! Create ARP ACL for static IP hostsarp access-list STATIC-SERVERS ! Format: permit ip host <ip> mac host <mac> ! Web Server permit ip host 192.168.10.10 mac host 0000.1111.2222 ! Database Server permit ip host 192.168.10.11 mac host 0000.1111.3333 ! File Server permit ip host 192.168.10.12 mac host 0000.1111.4444 ! Print Server permit ip host 192.168.10.20 mac host 0000.2222.1111 ! Domain Controller permit ip host 192.168.10.5 mac host 0000.3333.1111 ! DNS Server permit ip host 192.168.10.2 mac host 0000.3333.2222 ! Gateway (if needed) permit ip host 192.168.10.1 mac host 0000.4444.1111 ! Apply ARP ACL to VLAN! Note: static keyword determines behavior if no matchip arp inspection filter STATIC-SERVERS vlan 10 ! With 'static' keyword: Only ARP ACL is checked (DHCP bindings ignored)ip arp inspection filter STATIC-SERVERS vlan 10 static ! Without 'static': ACL checked first, then DHCP bindings! This is useful when you have both static and DHCP hosts ! ================================================! Multiple VLANs with Different ACLs! ================================================ arp access-list SERVER-VLAN-HOSTS permit ip host 10.10.10.10 mac host aaaa.bbbb.cccc permit ip host 10.10.10.11 mac host aaaa.bbbb.dddd arp access-list MANAGEMENT-HOSTS permit ip host 10.20.20.1 mac host cccc.dddd.eeee permit ip host 10.20.20.2 mac host cccc.dddd.ffff ip arp inspection filter SERVER-VLAN-HOSTS vlan 100ip arp inspection filter MANAGEMENT-HOSTS vlan 200 ! ================================================! Using IP and MAC Ranges (Advanced)! ================================================ arp access-list PRINTER-RANGE ! Permit a range of printer IPs with corresponding MACs permit ip host 192.168.10.30 mac host 0011.2233.4401 permit ip host 192.168.10.31 mac host 0011.2233.4402 permit ip host 192.168.10.32 mac host 0011.2233.4403 ! For true range, need individual entries ! ================================================! Verification! ================================================ ! Show configured ARP ACLsshow arp access-list ! Show which ACLs are applied to which VLANsshow ip arp inspection ! Detailed per-VLANshow ip arp inspection vlan 10 ! ================================================! Common Mistake: Forgetting DHCP Hosts! ================================================ ! If you use 'static' keyword, DHCP clients won't work!! Only use 'static' on VLANs where ALL hosts are static. ! Bad (DHCP clients will be blocked):ip arp inspection filter SERVERS vlan 10 static ! Good (both ACL and DHCP bindings checked):ip arp inspection filter SERVERS vlan 10 ! ================================================! Maintaining ARP ACLs at Scale! ================================================ ! For large deployments, generate ACLs from CMDB/IPAM! Example: Script to generate Cisco config from CSV ! Input CSV: ip,mac,description! 192.168.10.10,0000.1111.2222,Web Server! 192.168.10.11,0000.1111.3333,Database Server ! Generated config would be:! arp access-list STATIC-SERVERS! permit ip host 192.168.10.10 mac host 0000.1111.2222! permit ip host 192.168.10.11 mac host 0000.1111.3333For environments with many static IP hosts, manually maintaining ARP ACLs is error-prone. Integrate with your IP Address Management (IPAM) system to automatically generate ARP ACL configurations. When a server is provisioned with a static IP, the ACL entry should be generated automatically.
DAI's rate limiting feature prevents ARP-based denial of service attacks. An attacker flooding ARP packets could overwhelm the switch's CPU (which must inspect each packet) or the network itself. Rate limiting bounds the impact.
Rate Limiting Mechanics:
Default Values and Recommendations:
| Environment | Recommended Limit | Burst Interval | Rationale |
|---|---|---|---|
| User workstation | 15-25 pps | 1 second | Normal user generates few ARPs |
| Power user/Developer | 30-50 pps | 1 second | More active network usage |
| Server (non-virtualized) | 50-100 pps | 1 second | Multiple services may generate ARPs |
| Virtualized host | 100-500 pps | 1 second | Many VMs sharing single physical port |
| Network infrastructure | Trust port | N/A | Don't rate limit trusted ports |
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
! ================================================! DAI Rate Limiting Configuration! ================================================ ! Basic rate limit (packets per second)interface GigabitEthernet0/10 ip arp inspection limit rate 20 ! Rate limit with burst (higher temporary rate allowed)interface GigabitEthernet0/11 ip arp inspection limit rate 20 burst interval 3 ! Allows 60 packets over 3 seconds (average 20 pps) ! No rate limit (effectively unlimited - use with caution)interface GigabitEthernet0/12 ip arp inspection limit rate none ! WARNING: Only use for known high-ARP hosts ! ================================================! Rate Limits for Different Port Types! ================================================ ! Standard user portsinterface range GigabitEthernet0/1 - 24 ip arp inspection limit rate 25 ! Server ports (non-virtualized)interface range GigabitEthernet0/25 - 36 ip arp inspection limit rate 100 ! Virtualization host ports (many VMs)interface range GigabitEthernet0/37 - 48 ip arp inspection limit rate 500 burst interval 1 ! ================================================! Error Recovery Configuration! ================================================ ! Enable automatic recovery from rate limit violationserrdisable recovery cause arp-inspectionerrdisable recovery interval 300 ! 300 seconds = 5 minutes ! Show error-disabled statusshow interfaces status err-disabled ! Manual recoveryinterface GigabitEthernet0/10 shutdown no shutdown ! ================================================! Monitoring Rate Limit Violations! ================================================ ! View DAI statistics including rate violationsshow ip arp inspection statistics ! Example output:! Vlan Forwarded Dropped DHCP Drops ACL Drops Rate Limit! ---- ---------- ------- ---------- --------- ----------! 10 1523 15 0 15 0! 20 847 0 0 0 0 ! Non-zero "Rate Limit" indicates violations ! ================================================! Tuning Approach! ================================================! ! 1. Start with conservative limits (15-20 pps)! 2. Monitor for err-disabled ports! 3. Check legitimate ARP rates:! show ip arp inspection interfaces! 4. Increase limits for ports with violations! 5. Document exceptions and justificationVoIP phones connecting through switches to PCs may generate more ARP traffic than expected. If using inline power and phone data ports, ensure rate limits account for both the phone and the connected PC. Monitor VoIP deployments closely after DAI enablement.
Understanding Burst Intervals:
The burst interval allows temporary spikes above the rate limit:
ip arp inspection limit rate 20 burst interval 3
When to Use Burst:
Effective DAI deployment requires comprehensive logging and monitoring. Logs help identify attacks, troubleshoot issues, and verify protection is working.
DAI Log Information:
DAI logs the following information for dropped packets:
Logging Configuration:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
! ================================================! DAI Logging Configuration! ================================================ ! Configure log buffer size (number of entries)ip arp inspection log-buffer entries 1024 ! Configure logging rate (entries per interval)ip arp inspection log-buffer logs 10 interval 60! Generates max 10 log entries per 60 seconds ! ================================================! Per-VLAN Logging Options! ================================================ ! Log packets dropped due to ACLip arp inspection vlan 10 logging acl-match! Options: matchlog, none ! Log packets matching DHCP bindings (permits)ip arp inspection vlan 10 logging dhcp-bindings permit ! ================================================! View DAI Logs! ================================================ ! Show log buffershow ip arp inspection log ! Example output:! Total Log Buffer Size : 1024! ! Syslog rate : 10 entries per 60 seconds.! ! Interface Vlan Sender MAC Sender IP Target MAC Target IP! --------- ---- ------------ ---------- ------------ --------- ! Gi0/10 10 0000.1111.2222 192.168.10.99 0000.0000.0000 192.168.10.1! Dropped by ARP ACL: STATIC-SERVERS! 00:15:32 UTC Jan 15 2024! ! Gi0/15 10 0000.aaaa.bbbb 192.168.10.50 0000.0000.0000 192.168.10.1! Dropped by DHCP Snooping binding! 00:16:45 UTC Jan 15 2024 ! ================================================! Syslog Integration! ================================================ ! DAI generates syslog messages automatically! Configure syslog serverlogging host 10.10.10.100logging trap informational ! Example syslog messages:! %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Gi0/10, ! vlan 10.([0000.1111.2222/192.168.10.99/0000.0000.0000/192.168.10.1]) ! ================================================! SNMP Notifications! ================================================ ! Enable SNMP traps for DAIsnmp-server enable traps arp-inspection ! Configure SNMP serversnmp-server host 10.10.10.101 version 2c public ! ================================================! Monitoring Script Example (for SIEM)! ================================================ ! Parse syslog for this pattern:! %SW_DAI-4-DHCP_SNOOPING_DENY! ! Extract:! - Interface (Gi0/10)! - VLAN (10)! - Source MAC (0000.1111.2222)! - Source IP (192.168.10.99)! - Timestamp!! Alert if:! - Same source MAC with multiple source IPs (spoofing)! - High volume from single port (attack in progress)! - Critical IPs appearing in drops (misconfiguration)SIEM Integration for DAI Alerts:
For enterprise environments, integrate DAI logs with your Security Information and Event Management (SIEM) system:
Alert Conditions:
Correlation with Other Events:
Create a real-time dashboard showing DAI statistics across all switches. Key metrics: drops per VLAN, rate limit violations, top dropped source MACs/IPs, and trend over time. This provides instant visibility into both attacks and misconfigurations.
DAI deployment often encounters issues. Knowing how to quickly diagnose and resolve problems minimizes network disruption.
Common Issues and Solutions:
Symptom: Host loses network connectivity after DAI enabled
Diagnosis:
! Check if DAI is dropping packets
show ip arp inspection statistics vlan 10
! Look for the host in binding table
show ip dhcp snooping binding | include <IP>
! Check DAI log for drops
show ip arp inspection log
Common Causes:
Static IP host not in ARP ACL
arp access-list STATIC-HOSTS
permit ip host 192.168.10.50 mac host 0000.1234.5678
ip arp inspection filter STATIC-HOSTS vlan 10
DHCP binding not in table
! On host: ipconfig /release then /renew
Port is error-disabled
show interfaces status err-disabled
! If error-disabled, check if rate limit was exceeded
! Recover:
interface Gi0/10
shutdown
no shutdown
Wrong VLAN in ARP ACL filter
show ip arp inspection
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
! ================================================! Complete DAI Troubleshooting Command Reference! ================================================ ! Overall DAI statusshow ip arp inspection ! Per-VLAN DAI statusshow ip arp inspection vlan 10,20,30 ! DAI statistics (drops, forwards, etc.)show ip arp inspection statisticsshow ip arp inspection statistics vlan 10 ! Interface configuration and rate limitsshow ip arp inspection interfaces ! DAI log buffer (dropped packets)show ip arp inspection log ! DHCP Snooping binding tableshow ip dhcp snooping bindingshow ip dhcp snooping binding vlan 10show ip dhcp snooping binding interface Gi0/10 ! ARP ACL configurationshow arp access-list ! Error-disabled portsshow interfaces status err-disabled ! Clear DAI statisticsclear ip arp inspection statistics ! Clear DAI logclear ip arp inspection log ! Debug DAI (use with caution - CPU intensive)debug arp inspection ! ================================================! Verification Checklist After Enabling DAI! ================================================ ! 1. Verify DAI is active on expected VLANsshow ip arp inspection | include Active ! 2. Verify trusted ports are correctshow ip arp inspection interfaces | include Trust ! 3. Verify DHCP bindings existshow ip dhcp snooping binding | count ! 4. Verify ARP ACLs are appliedshow running-config | include ip arp inspection filter ! 5. Check for drops (should be zero initially)show ip arp inspection statistics | include Dropped ! 6. Check for error-disabled portsshow interfaces status err-disabledDynamic ARP Inspection provides comprehensive, automated protection against ARP spoofing attacks. When properly deployed with DHCP Snooping and ARP ACLs, DAI makes ARP-based attacks effectively impossible on protected VLANs.
Key Implementation Points:
Complete Security Architecture:
For maximum Layer 2 security, deploy all related controls:
| Control | Purpose |
|---|---|
| DHCP Snooping | Block rogue DHCP, build binding table |
| DAI | Validate ARP against bindings |
| IP Source Guard | Validate IP packets against bindings |
| Port Security | Limit MAC addresses per port |
| 802.1X | Authenticate devices before network access |
| Private VLANs | Isolate hosts within VLANs |
This comprehensive approach addresses the full spectrum of Layer 2 attack vectors.
You have completed the ARP Security module. You now understand: (1) ARP spoofing attack mechanics, (2) cache poisoning techniques, (3) MITM attack capabilities, (4) defensive measures including static ARP, VLANs, and port security, and (5) enterprise-grade Dynamic ARP Inspection. This knowledge enables you to protect networks against one of the most fundamental and dangerous Layer 2 attack categories.