When we enable DHCP Snooping (in my previous post) we should also
consider Dynamic ARP Inspection. This feature protects against ARP poisoning.
Let’s test this feature on below example:
Initial configuration of R1:
R2:
R3:
SW1:
DHCP Snooping created bindings:
Now we check ARP tables on all three devices:
Now let’s set static IP (192.168.1.32) on R3, the same as R2, and then ping R1. Compare below outputs before and after R3 ping R1:
As we see above we can easily change the ARP table on R1. Now we try to do the same with Dynamic ARP Inspection.
The current ARP table on R1:
The snooping binding table on SW1:
On SW1 we have to add:
and
Let’s try set IP address on R3 that is currently assigned to R2:
and then ping R1:
On SW1 we can see:
As we see with the DAI feature we can’t ping R1 from R3, whose MAC address doesn’t match with DHCP snooping table:
Some useful commands for DAI:
Let’s test this feature on below example:
DHCP SERVER
/----\
| R1 |
\----/
| / fa1/0/9
-------
| SW1 |
|_____|
fa1/0/11- / \ -fa1/0/13
/ \
/ \
/ \
/----\ /----\
| R2 | | R3 |
\----/ \----/
DHCP CLIENT1 DHCP CLIENT2
Initial configuration of R1:
!
interface GigabitEthernet0/0
description link to SW1 Fas 1/0/9
ip address 192.168.1.10 255.255.255.0
no sh
!
ip dhcp excluded-address 192.168.1.1 192.168.1.30
!
ip dhcp pool DHCP-POOL
network 192.168.1.0 255.255.255.0
!
R2:
!
hostname R2
!
interface gig0/0
ip address dhcp
no shu
!
R3:
!
hostname R3
!
interface FastEthernet0/0
ip address dhcp
no sh
!
SW1:
ip dhcp snooping vlan 1
no ip dhcp snooping information option
ip dhcp snooping database flash:DHCP.txt
ip dhcp snooping database write-delay 30
ip dhcp snooping
errdisable recovery cause dhcp-rate-limit
errdisable recovery interval 30
!
interface FastEthernet1/0/11
switchport mode access
spanning-tree portfast
ip dhcp snooping limit rate 50
!
interface FastEthernet1/0/13
switchport mode access
spanning-tree portfast
ip dhcp snooping limit rate 50
!
interface FastEthernet1/0/9
description to R1-2911 gi0/0
ip dhcp snooping trust
!
DHCP Snooping created bindings:
SW1#sh ip dhcp snooping binding
MacAddress IpAddress Lease(sec) Type VLAN Interface
------------------ --------------- ---------- ------------- ---- --------------------
E8:B7:48:42:45:C8 192.168.1.32 86323 dhcp-snooping 1 FastEthernet1/0/11
04:C5:A4:3F:D6:D0 192.168.1.33 86356 dhcp-snooping 1 FastEthernet1/0/13
Total number of bindings: 2
Now we check ARP tables on all three devices:
r1#sh arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.1.10 - e8b7.4842.4c58 ARPA GigabitEthernet0/0
Internet 192.168.1.32 2 e8b7.4842.45c8 ARPA GigabitEthernet0/0
Internet 192.168.1.33 1 04c5.a43f.d6d0 ARPA GigabitEthernet0/0
r1#
r2#sh arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.1.10 0 e8b7.4842.4c58 ARPA GigabitEthernet0/0
Internet 192.168.1.32 - e8b7.4842.45c8 ARPA GigabitEthernet0/0
Internet 192.168.1.33 0 04c5.a43f.d6d0 ARPA GigabitEthernet0/0
r2#
r3#sh arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.1.10 1 e8b7.4842.4c58 ARPA FastEthernet0/0
Internet 192.168.1.32 0 e8b7.4842.45c8 ARPA FastEthernet0/0
Internet 192.168.1.33 - 04c5.a43f.d6d0 ARPA FastEthernet0/0
r3#
Now let’s set static IP (192.168.1.32) on R3, the same as R2, and then ping R1. Compare below outputs before and after R3 ping R1:
r1#sh arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.1.10 - e8b7.4842.4c58 ARPA GigabitEthernet0/0
Internet 192.168.1.32 52 e8b7.4842.45c8 ARPA GigabitEthernet0/0
Internet 192.168.1.33 52 04c5.a43f.d6d0 ARPA GigabitEthernet0/0
r1#
r3#ping 192.168.1.10
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/1/4 ms
r3#
r1#
r1#sh arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.1.10 - e8b7.4842.4c58 ARPA GigabitEthernet0/0
Internet 192.168.1.32 0 04c5.a43f.d6d0 ARPA GigabitEthernet0/0
r1#
As we see above we can easily change the ARP table on R1. Now we try to do the same with Dynamic ARP Inspection.
The current ARP table on R1:
r1#sh arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.1.10 - e8b7.4842.4c58 ARPA GigabitEthernet0/0
Internet 192.168.1.32 0 e8b7.4842.45c8 ARPA GigabitEthernet0/0
Internet 192.168.1.34 0 04c5.a43f.d6d0 ARPA GigabitEthernet0/0
r1#
The snooping binding table on SW1:
SW1#sh ip dhcp snooping binding
MacAddress IpAddress Lease(sec) Type VLAN Interface
------------------ --------------- ---------- ------------- ---- --------------------
E8:B7:48:42:45:C8 192.168.1.32 82485 dhcp-snooping 1 FastEthernet1/0/11
04:C5:A4:3F:D6:D0 192.168.1.34 86219 dhcp-snooping 1 FastEthernet1/0/13
Total number of bindings: 2
On SW1 we have to add:
int fa1/0/9
ip arp inspection trust
and
ip arp inspection vlan 1
ip arp inspection vlan 1 logging dhcp-bindings all
ip arp inspection vlan 1 logging arp-probe
Let’s try set IP address on R3 that is currently assigned to R2:
r3(config)#int fa0/0
r3(config-if)#ip add
r3(config-if)#ip address 192.168.1.32 255.255.255.0
r3(config-if)#end
and then ping R1:
r3#ping 192.168.1.10
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.10, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
r3#
On SW1 we can see:
SW1#
Apr 22 12:23:22.523: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa1/0/13, vlan 1.([04c5.a43f.d6d0/192.168.1.32/ffff.ffff.ffff/192.168.1.32/12:23:22 UTC Tue Apr 22 2014])
Apr 22 12:23:29.569: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Fa1/0/13, vlan 1.([04c5.a43f.d6d0/192.168.1.32/0000.0000.0000/192.168.1.10/12:23:28 UTC Tue Apr 22 2014])
Apr 22 12:23:31.583: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Fa1/0/13, vlan 1.([04c5.a43f.d6d0/192.168.1.32/0000.0000.0000/192.168.1.10/12:23:30 UTC Tue Apr 22 2014])
Apr 22 12:23:33.596: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Fa1/0/13, vlan 1.([04c5.a43f.d6d0/192.168.1.32/0000.0000.0000/192.168.1.10/12:23:32 UTC Tue Apr 22 2014])
Apr 22 12:23:35.609: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Fa1/0/13, vlan 1.([04c5.a43f.d6d0/192.168.1.32/0000.0000.0000/192.168.1.10/12:23:34 UTC Tue Apr 22 2014])
Apr 22 12:23:37.622: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Fa1/0/13, vlan 1.([04c5.a43f.d6d0/192.168.1.32/0000.0000.0000/192.168.1.10/12:23:36 UTC Tue Apr 22 2014])
As we see with the DAI feature we can’t ping R1 from R3, whose MAC address doesn’t match with DHCP snooping table:
r1#sh arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.1.10 - e8b7.4842.4c58 ARPA GigabitEthernet0/0
Internet 192.168.1.32 11 e8b7.4842.45c8 ARPA GigabitEthernet0/0
r1#
Some useful commands for DAI:
SW1#sh ip arp inspection vlan 1
Apr 22 12:30:59.241: %SYS-5-CONFIG_I: Configured from console by statistics
Vlan Forwarded Dropped DHCP Drops ACL Drops
---- --------- ------- ---------- ---------
1 0 59 59 0
Vlan DHCP Permits ACL Permits Probe Permits Source MAC Failures
---- ------------ ----------- ------------- -------------------
1 0 0 0 0
Vlan Dest MAC Failures IP Validation Failures Invalid Protocol Data
---- ----------------- ---------------------- ---------------------
1 0 0 0
SW1#sh ip arp inspection
Source Mac Validation : Enabled
Destination Mac Validation : Disabled
IP Address Validation : Enabled
Vlan Configuration Operation ACL Match Static ACL
---- ------------- --------- --------- ----------
1 Enabled Active
Vlan ACL Logging DHCP Logging Probe Logging
---- ----------- ------------ -------------
1 Deny All Permit
Vlan Forwarded Dropped DHCP Drops ACL Drops
---- --------- ------- ---------- ---------
1 0 59 59 0
Vlan DHCP Permits ACL Permits Probe Permits Source MAC Failures
---- ------------ ----------- ------------- -------------------
1 0 0 0 0
Vlan Dest MAC Failures IP Validation Failures Invalid Protocol Data
---- ----------------- ---------------------- ---------------------
1 0 0 0
SW1#sh ip arp inspection interfaces
Interface Trust State Rate (pps) Burst Interval
--------------- ----------- ---------- --------------
Fa1/0/1 Untrusted 15 1
Fa1/0/2 Untrusted 15 1
Fa1/0/3 Untrusted 15 1
Fa1/0/4 Untrusted 15 1
Fa1/0/5 Untrusted 15 1
Fa1/0/6 Untrusted 15 1
Fa1/0/7 Untrusted 15 1
Fa1/0/8 Untrusted 15 1
Fa1/0/9 Trusted None N/A
Fa1/0/10 Untrusted 15 1
Fa1/0/11 Untrusted 15 1
Fa1/0/12 Untrusted 15 1
Fa1/0/13 Untrusted 15 1
Fa1/0/14 Untrusted 15 1
Fa1/0/15 Untrusted 15 1
Fa1/0/16 Untrusted 15 1
Fa1/0/17 Untrusted 15 1
Fa1/0/18 Untrusted 15 1
Fa1/0/19 Untrusted 15 1
Fa1/0/20 Untrusted 15 1
Fa1/0/21 Untrusted 15 1
Interface Trust State Rate (pps) Burst Interval
--------------- ----------- ---------- --------------
Fa1/0/22 Untrusted 15 1
Fa1/0/23 Untrusted 15 1
Fa1/0/24 Untrusted 15 1
Gi1/0/1 Untrusted 15 1
Gi1/0/2 Untrusted 15 1
SW1#
Comments
Post a Comment