Trong một bài viết trước đây, chúng ta đã cùng trao đổi về kỹ thuật proxy ARP (xem bài viết trên link: http://www.ntps.edu.vn/blog/187-ip-services-bai-so-13-proxy-arp). Trong bài viết này, chúng ta sẽ cùng trao đổi về một kịch bản trong đó proxy ARP được sử dụng để giải quyết một tình huống overlap IP trên sơ đồ mạng.
Như thường lệ, chúng ta cùng tìm hiểu vấn đề quan tâm thông qua một bài lab ví dụ.
Sơ đồ
Mô tả
– Sơ đồ gồm 4 router được đấu nối với nhau như hình 1.
– Trên sơ đồ này, hai router Host1 và Host2 đóng vai trò như các host trên các subnet 192.168.1.0/24 và 192.168.1.128/25. Để ý rằng trong quy hoạch IP trên hình 1, hai subnet trên hai mạng LAN kết nối vào cổng F0/0 của R1 và R2 đã bị overlap lên nhau (mạng 192.168.1.128/25 là mạng con của 192.168.1.0/24).
– Không thay đổi lại quy hoạch IP đã thực hiện, chúng ta sẽ sử dụng tính năng proxy – ARP trên router để giải quyết vấn đề overlap IP này.
Thực hiện
Bước 1: Cấu hình ban đầu
– Thực hiện đặt IP trên các cổng của các router theo quy hoạch IP như được chỉ ra trên hình 1.
– Chạy một hình thức định tuyến bất kỳ giữa R1 và R2 đảm bảo hai router này thấy được các mạng LAN của nhau.
– Các host thực hiện chỉ default – gateway về các router gateway trên mạng LAN của mình.
Cấu hình
Trên R1:
R1(config)#interface f0/0
R1(config-if)#no shutdown
R1(config-if)#ip address 192.168.1.1 255.255.255.0
R1(config-if)#exit
R1(config)#interface f0/1
R1(config-if)#no shutdown
R1(config-if)#ip address 192.168.12.1 255.255.255.0
R1(config-if)#exit
R1(config)#router eigrp 100
R1(config-router)#network 192.168.12.1 0.0.0.0
R1(config-router)#network 192.168.1.1 0.0.0.0
R1(config-router)#exit
Trên R2:
R2(config)#interface f0/0
R2(config-if)#no shutdown
R2(config-if)#ip address 192.168.1.129 255.255.255.128
R2(config-if)#exit
R2(config)#interface f0/1
R2(config-if)#no shutdown
R2(config-if)#ip address 192.168.12.2 255.255.255.0
R2(config-if)#exit
R2(config)#router eigrp 100
R2(config-router)#no auto-summary
R2(config-router)#network 192.168.12.2 0.0.0.0
R2(config-router)#network 192.168.1.129 0.0.0.0
R2(config-router)#exit
Trên Host1:
Host1(config)#interface f0/0
Host1(config-if)#no shutdown
Host1(config-if)#ip address 192.168.1.2 255.255.255.0
Host1(config-if)#exit
Host1(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.1
Trên Host2:
Host2(config)#interface f0/0
Host2(config-if)#no shutdown
Host2(config-if)#ip address 192.168.1.130 255.255.255.128
Host2(config-if)#exit
Host2(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.129
Kiểm tra
Ta kiểm tra rằng định tuyến đã hội tụ trên các router R1 và R2:
R1#show ip route eigrp
192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
D 192.168.1.128/25
[90/30720] via 192.168.12.2, 00:00:22, FastEthernet0/1
R2#show ip route eigrp
192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
D 192.168.1.0/24 [90/30720] via 192.168.12.1, 00:00:27, FastEthernet0/1
R1 và R2 đã đi được đến các subnet trên các mạng LAN của nhau:
R1#ping 192.168.1.129
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.129, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 28/39/56 ms
R2#ping 192.168.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 28/36/56 ms
Bước 2: Khắc phục IP overlapping với proxy ARP
– Sử dụng proxy – ARP trên router thích hợp để đảm bảo các host của mạng LAN 192.168.1.0/24 và các host của mạng LAN 192.168.1.128/25 có thể giao tiếp được với nhau, từ đó khắc phục được vấn để IP overlapping trên sơ đồ hình 1 mà không cần phải thay đổi quy hoạch IP.
Cấu hình
Trên R1:
R1(config)#interface f0/0
R1(config-if)#ip proxy-arp
R1(config-if)#exit
Ghi chú
Mặc định, tính năng proxy – ARP được bật trên cổng Ethernet của router Cisco nên ta không cần phải cấu hình tường minh như ở trên. Để kiểm tra tác dụng của lệnh này, ta thực hiện gỡ bỏ tính năng proxy – ARP trên cổng F0/0 của router R1:
R1(config)#interface f0/0
R1(config-if)#no ip proxy-arp
R1(config-if)#exit
Khi proxy – ARP không được sử dụng, các host của LAN 192.168.1.0/24 không còn đi được đến các host của LAN 192.168.1.128/25 nữa:
Host1#ping 192.168.1.130
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.130, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
Ta cùng nhau giải thích vấn đề này.
Khi Host1 gửi gói tin đến địa chỉ 192.168.1.130, vì Host1 được đặt IP là 192.168.1.2/24 nên nó thấy rằng địa chỉ 192.168.1.130 cùng mạng với nó. Xét trên khía cạnh định tuyến, Host1 thấy rằng đích đến thuộc về subnet connected 192.168.1.0/24 trên cổng F0/0 chứ không phải một subnet ở xa:
Host1#show ip route 192.168.1.130
Routing entry for 192.168.1.0/24
Known via "connected", distance 0, metric 0 (connected, via interface)
Routing Descriptor Blocks:
* directly connected, via FastEthernet0/0
Route metric is 0, traffic share count is 1
Do đó, Host1 sẽ không chuyển gói này lên default – gateway mà thực hiện phân giải ARP cho địa chỉ 192.168.1.130 để tìm ra địa chỉ MAC tương ứng với IP này và sau đó thực hiện đóng frame với source MAC là MAC trên cổng F0/0 của nó và destination MAC là MAC phân giải được rồi gửi frame đến thiết bị đích đến. Tuy nhiên, như chúng ta thấy trên hình 1, host 192.168.1.130 nằm trên một mạng LAN ở xa chứ không phải thuộc về cùng một mạng LAN với Host1 nên không có máy nào trả lời ARP Reply cho request phát đi từ Host1 dẫn đến phân giải ARP không thành công và hoạt động ping thất bại. Ta kiểm tra bảng ARP của Host1 để xác nhận điều này:
Host1#show ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.1.2 - 0017.e0bf.e440 ARPA FastEthernet0/0
Internet 192.168.1.130 0 Incomplete ARPA
Ta cũng có thể thực hiện debug trên Host1 để thấy rằng đóng gói diễn ra không thành công:
Host1#debug ip packet detail
IP packet debugging is on (detailed)
Host1#ping 192.168.1.130
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.130, timeout is 2 seconds:
*Mar 1 00:39:29.107: IP: tableid=0, s=192.168.1.2 (local), d=192.168.1.130
(FastEthernet0/0), routed via RIB
*Mar 1 00:39:29.111: IP: s=192.168.1.2 (local), d=192.168.1.130
(FastEthernet0/0), len 100, sending
*Mar 1 00:39:29.115: ICMP type=8, code=0
*Mar 1 00:39:29.119: IP: s=192.168.1.2 (local), d=192.168.1.130
(FastEthernet0/0), len 100, encapsulation failed
*Mar 1 00:39:29.123: ICMP type=8, code=0.
Tóm lại, do lỗi quy hoạch IP sai, dẫn đến các host trên LAN 192.168.1.0/24 khi gửi dữ liệu đến các host trên LAN 192.168.1.128/25 ở xa lại cứ “nghĩ rằng” đang gửi đến các host trên cùng mạng LAN với mình, vì vậy không nhờ đến default – gateway mà chỉ thực hiện các hoạt động gửi dữ liệu nội bộ trên LAN, do vậy việc gửi dữ liệu diễn ra không thành công.
Tiếp theo, ta thực hiện bật proxy – ARP trên cổng F0/0 của default – gateway R1:
R1(config)#interface f0/0
R1(config-if)#ip proxy-arp
R1(config-if)#exit
Lần này, Host1 đã đi được đến Host2:
Host1#ping 192.168.1.130
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.130, timeout is 2 seconds:
..!!!
Success rate is 60 percent (3/5), round-trip min/avg/max = 92/112/128 ms
Host1#ping 192.168.1.130
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.130, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 72/110/144 ms
Ta giải thích kết quả này.
Giống như lần trước, Host1 vẫn chỉ coi Host2 với địa chỉ 192.168.1.130 là một host cùng mạng với nó chứ không hề biết rằng Host2 nằm trên một mạng LAN ở xa và vì thế Host1 vẫn thực hiện tác vụ gửi ARP Request cho địa chỉ 192.168.1.130.
Tuy nhiên, điểm khác biệt lần này là R1 đã được bật proxy – ARP nên R1 sẽ thực hiện trả lời ARP reply cho request đến từ Host1, không để xảy ra tình trạng không có ai trả lời ARP như lần trước. Ta nhắc lại rằng với tính năng proxy – ARP, router sẽ thực hiện trả lời ARP cho các địa chỉ IP mà match với một route nào đó trong bảng định tuyến của nó.
Với trường hợp này, R1 thấy rằng IP cần phân giải 192.168.1.130 match với route 192.168.1.128/25 trong bảng định tuyến nên router R1 thực hiện trả lời ARP cho địa chỉ này, phân giải IP 192.168.1.130 về địa chỉ MAC trên cổng F0/0 của nó:
! Match với route 192.168.1.128/25
R1#show ip route 192.168.1.130
Routing entry for 192.168.1.128/25
Known via "eigrp 100", distance 90, metric 30720, type internal
Redistributing via eigrp 100
Last update from 192.168.12.2 on FastEthernet0/1, 00:46:07 ago
Routing Descriptor Blocks:
* 192.168.12.2, from 192.168.12.2, 00:46:07 ago, via FastEthernet0/1
Route metric is 30720, traffic share count is 1
Total delay is 200 microseconds, minimum bandwidth is 100000 Kbit
Reliability 255/255, minimum MTU 1500 bytes
Loading 1/255, Hops 1
!Kết quả phân giải cho địa chỉ 192.168.1.130 trỏ về MAC trên F0/0 của R1
R1#show interfaces f0/0 | inc bia
Hardware is MV96340 Ethernet, address is 0021.a03b.d828 (bia 0021.a03b.d828)
Host1#show ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.1.2 - 0017.e0bf.e440 ARPA FastEthernet0/0
Internet 192.168.1.130 13 0021.a03b.d828 ARPA FastEthernet0/0
(Lưu ý rằng R1 sẽ chỉ thực hiện hoạt động proxy ARP nếu địa chỉ IP cần phân giải match với route có output interface khác với interface mà nó đã nhận được ARP request cho địa chỉ này. Trong bài lab đang xét, output interface của route nêu trên là F0/1, khác với cổng nhận được ARP request là F0/0.)
Với kết quả phân giải ARP ở trên, Host1 sẽ đóng frame gói IP gửi đến 192.168.1.130 vào một frame có source MAC là MAC trên cổng F0/0 của nó và destination MAC là MAC trên cổng F0/0 của router default – gateway. Frame này sẽ được hệ thống chuyển mạch Ethernet chuyển đến gateway R1, R1 sau khi nhận được gói IP sẽ tra cứu định tuyến và thấy rằng gói này cần phải được chuyển ra cổng F0/1 để đi tiếp đến R2, R2 khi nhận được gói tin này sẽ chuyển xuống Host2 kết nối trực tiếp với nó.
Về phần dữ liệu trả về, vì Host2 thấy rằng địa chỉ đích của gói trả về là 192.168.1.2, là một IP khác mạng với nó nên sẽ chuyển gói này lên default – gateway R2 để R2 chuyển đi tiếp:
Host2#show ip route 192.168.1.2
% Subnet not in table
Host2#show ip route 0.0.0.0
Routing entry for 0.0.0.0/0, supernet
Known via "static", distance 1, metric 0, candidate default path
Routing Descriptor Blocks:
* 192.168.1.129
Route metric is 0, traffic share count is 1
R2 tra cứu bảng định tuyến thấy rằng route match với đích đến 192.168.1.2 chỉ đường ra là F0/1 sẽ chuyển gói trả về này ra cổng F0/1 để đi tiếp đến R1, từ đó đến tay thiết bị nhận là Host1, hoàn tất hoạt động trao đổi dữ liệu:
R2#show ip route 192.168.1.2
Routing entry for 192.168.1.0/24
Known via "eigrp 100", distance 90, metric 30720, type internal
Redistributing via eigrp 100
Last update from 192.168.12.1 on FastEthernet0/1, 01:00:06 ago
Routing Descriptor Blocks:
* 192.168.12.1, from 192.168.12.1, 01:00:06 ago, via FastEthernet0/1
Route metric is 30720, traffic share count is 1
Total delay is 200 microseconds, minimum bandwidth is 100000 Kbit
Reliability 255/255, minimum MTU 1500 bytes
Loading 1/255, Hops 1
Như vậy, nhờ có proxy – ARP được bật trên cổng F0/0 của R1, ta đã khắc phục được vấn đề IP overlapping trên sơ đồ hình 1 mà không cần phải thay đổi quy hoạch IP trên sơ đồ.
Cảm ơn các bạn!
Hẹn gặp lại các bạn trong các bài viết tiếp theo!