MỘT LÝ GIẢI VỀ DEFAULT GATEWAY CHO VIỆC KẾT NỐI HAI MÁY TÍNH CÓ ĐỊA CHỈ MẠNG KHÁC NHAU BẰNG SWITCH/HUB A CLARIFICATION OF DEFAULT GATEWAY FOR CONNECTING TWO COMPUTERS WITH DIFFERENT NETWORK ADDRESSES TO SWITCH/HUB Phạm Văn Tính, Khoa CNTT, ĐH Nông Lâm TP HCM e-mail :
[email protected] SUMMARY In pratice, it is usually said that, two computers with different network identifiers (network addresses) connected to a switch or hub cannot be communicated. It is also said that, the network indentifier of a default gateway and that of IP address configured on the same computer should be the same. In this article we discuss another view of the default gateway. Therefore, is help readers to understand the default gateway’s essence in order to suggest a new IP configuration rule. This rule could be used to establish a communication between two computers configured with different network addresses by linking them directly or by connecting them to a switch/hub.
ĐẶT VẤN ĐỀ Chúng ta vẫn thường nói: Hai máy tính có địa chỉ mạng (Network ID) khác nhau không thể liên lạc được với nhau thông qua các trang thiết bị mạng lớp thứ nhất và lớp thứ hai trong mô hình mạng OSI (Open System Interconnection) như switch hoặc hub.
Computer A MAC_A IP_A : 192.168.1.1 GW_A : . . .
SW
Computer B MAC_B IP_A : 192.168.2.2 GW_A : . . .
Hình 1 : Hai máy tính có địa chỉ mạng khác nhau kết nối qua SWITCH Để hai máy tính này có thể kết nối được với nhau chúng ta cần phải sử dụng các trang thiết bị mạng lớp thứ ba (trang thiết bị có chức năng định tuyến - routing) như Router hay PC. Trong trường hợp này mỗi máy tính sẽ có địa chỉ default gateway là địa chỉ interface tương ứng của router mà máy tính này kết nối tới, điều đó có nghĩa là địa chỉ của default gateway phải có cùng địa chỉ mạng (Network ID) với địa chỉ IP của máy tính (hình 2).
Bài viết này sẽ cho chúng ta một cách nhìn khác về default gateway và nguyên tắc giúp cho hai máy tính có hai địa chỉ mạng khác nhau “liên lạc” được với nhau khi chúng chỉ kết nối với nhau thông qua switch hay hub. Computer A MAC_A IP_A : 192.168.1.1 GW_A:192.168.1.2
Computer B MAC_B IP_A : 192.168.2.2 GW_A:192.168.2.1
Router
Interface E0 MAC_E0 IP_A : 192.168.1.2
Interface E1 MAC_E1 IP_A : 192.168.2.1
Hình 2 : Hai máy tính có địa chỉ mạng khác nhau kết nối qua ROUTER
NGUYÊN TẮC HOẠT ĐỘNG Trước tiên chúng ta nhắc lại cơ chế làm việc của mạng máy tính ở lớp thứ hai và lớp thứ ba trong mô hình OSI để lý giải việc tại sao hai máy tính ở hình 1 không tạo được kết nối. Trong mạng LAN – Ethernet, mỗi máy tính sẽ có một địa chỉ phần cứng duy nhất là địa chỉ MAC (Media Access Control Address) của thẻ giao tiếp mạng (Network Interface Card - NIC). Để dữ liệu có thể truyền từ một máy tính trong mạng LAN thứ nhất sang máy tính của mạng LAN thứ hai thì dữ liệu sẽ được đóng gói kèm theo các địa chỉ sau: Destination MAC : địa chỉ MAC máy nhận Source MAC : địa chỉ MAC máy gửi Destination IP : địa chỉ IP máy nhận Source IP : địa chỉ IP máy gửi Khi máy tính A gửi dữ liệu cho B thì frame được đóng gói với: Destination MAC = MAC_B Source MAC = MAC_A Trong quá trình đóng gói dữ liệu thì máy tính gửi cần phải biết địa chỉ MAC của máy tính nhận. Nếu máy tính gửi không có địa chỉ MAC của máy tính nhận, thì máy tính gửi sẽ thực hiện ARP (Address Resolution Protocol) để tìm địa chỉ MAC của máy đích khi biết địa chỉ IP đích. Destination MAC MAC_B
Source MAC MAC_A
Source IP IP_A
Destination IP IP_B
Hình 3 : Frame từ máy A gửi sang máy B
Data ………
NIC của máy tính sẽ nhận được tất cả các tín hiệu trên đường truyền. Nhiệm vụ của lớp thứ nhất (Physical layer) là chuyển đổi các tín hiệu này thành frame dữ liệu gửi lên lớp thứ hai (Data link layer). Tại lớp này địa chỉ destination MAC sẽ được kiểm tra. Nếu destination MAC trùng với địa chỉ MAC của máy tính (địa chỉ MAC của NIC) thì dữ liệu sẽ được chuyển lên lớp thứ ba (Network layer) để xử lý, ngược lại frame này sẽ bị hủy. Lớp thứ ba sẽ kiểm tra địa chỉ destination IP tương tự như lớp thứ hai kiểm tra địa chỉ destination MAC. Nếu địa chỉ destination IP này trùng với địa chỉ IP của máy tính thì dữ liệu sẽ được chuyển tiếp lên lớp trên để xử lý, ngược lại dữ liệu này này cũng sẽ bị hủy bỏ. Nói tóm lại để hai máy tính có thể kết nối với nhau thì dữ liệu khi đóng gói (encapsulation) gửi đi phải có destination MAC và destination IP trùng với địa chỉ MAC và địa chỉ IP của máy đích. Chúng ta tạm gọi điều kiện cần và đủ này là ĐK1. Xin lưu ý chúng ta đang nói tới hai máy tính A và B theo hình 1. Trong thực tế khi dữ liệu truyền từ mạng này sang mạng khác thì source IP và destination IP không bao giờ thay đổi nhưng source MAC và destination MAC sẽ thay đổi liên tục trên từng LAN Segment. Có người cho rằng máy tính A hoàn toàn có thể gửi dữ liệu tới B thoả mãn điều kiện ĐK1. Bởi vì dữ liệu sẽ đóng gói kèm theo source IP: IP_A, destination IP: IP_B, source MAC : MAC_A, và destination MAC máy A sẽ tìm thông qua ARP khi biết destination IP là IP_B (destination MAC sẽ là MAC_B). Trong thực tế theo hình 1 thì dữ liệu hoàn toàn không được gửi đi. Để lý giải điều này chúng ta xét hai trường hợp: S Trường hợp 1 : máy tính không có khai báo default gateway. S Trường hợp 2 : máy tính có default gateway thường là một địa chỉ IP nào đó có cùng địa chỉ mạng với địa chỉ IP của máy tính, nhưng thiết bị có địa chỉ IP này (theo hình 1) không tồn tại. Trọng tâm của vấn đề là ARP. Trước khi đóng gói frame máy tính gửi sẽ xác định xem địa chỉ IP của máy đích có cùng địa chỉ mạng với mình hay không. S Nếu cùng thì ARP sẽ phân giải MAC đích theo địa chỉ IP đích. Đây là trường hợp hai máy tính có cùng địa chỉ mạng và chúng tạo được kết nối. S Nếu không cùng thì frame sẽ được đóng gói để gửi tới default gateway (ARP sẽ phân giải MAC của default gateway theo địa chỉ IP của default gateway). Nếu chúng ta không khai báo default gateway hoặc default gateway không tồn tại thì dữ liệu sẽ không được gửi đi, bởi vì ARP không thể phân giải được địa chỉ MAC của máy đích và vì thế máy tính gửi sẽ không thể đóng gói được frame dữ liệu.
GIẢI PHÁP Như vậy để cho A có thể tạo kết nối được tới B thì chúng ta chỉ cần đảm bảo cho ARP phân giải đúng destination MAC (MAC_B) theo địa chỉ destination IP (IP_B) là đủ (ĐH1). Muốn vậy chúng hãy khai báo: GW_A (IP default gateway của A) = IP_B (IP máy tính B) GW_B (IP default gateway của B) = IP_A (IP máy tính A)
Hình 4: Cấu hình địa chỉ IP máy A
Hình 5: Cấu hình địa chỉ IP máy B Chú ý: Trong hệ điều hành Windows khi khai báo địa chỉ default gateway và địa chỉ IP của máy tính có địa chỉ mạng khác nhau chúng ta không gặp khó khăn gì, nhưng trong Linux chúng ta không thể khai báo một cách bình thường được. Chúng ta có thể sử dụng mẹo vặt như sau: Giả sử máy tính A cấu hình địa chỉ IP là 192.168.1.1 Giả sử máy tính B cấu hình địa chỉ IP là 192.168.2.2 Trên máy tính A : route add –net 192.168.2.0 netmask 255.255.255.0 eth0 route add default gw 192.168.2.2 route del –net 192.168.2.0 netmask 255.255.255.0 Lúc này chúng ta đã có : IP_A : 192.168.1.1 GW_A : 192.168.2.2
KẾT LUẬN Bài viết trên đã cho chúng ta một cách nhìn khác về default gateway. Default gateway không nhất thiết phải có cùng địa chỉ mạng với địa chỉ IP của máy tính. Default gateway thực sự là “cửa ngõ”. Đó là lối thoát mặc định khi máy tính của chúng ta không xác định được đường đi cho các gói dữ liệu. Nhờ đó quan niệm về địa chỉ của hai máy tính kết nối trong một LAN Segment cũng thay đổi, tức là chúng không nhất thiết phải có cùng địa chỉ mạng. Điều quan trọng là làm sao cho dữ liệu truyền được đúng tới đích với các thông số cần thiết để máy tính đích chấp thuận và xử lý.
TÀI LIỆU THAM KHẢO CCNA : Cisco Networking Academy Program, Cisco press , USA, 2003. MCSE : Microsoft Windows 2000 Network Infrastructure Administration, Microsoft Coporation, USA, 2002. RHCE : Study Guide Exam RH302, SYBEX Inc., USA 2001