Xử lý sự cố TCP/IP: Phương pháp cấu trúc - Phần 2: Xử lý sự cố bảng định tuyến

Phần 1: Giới thiệu

Bài viết này chúng tôi sẽ giải thích cho các bạn về bảng định tuyến làm việc như thế nào và làm thế nào để xử lý vấn đề xảy ra với việc định tuyến trong các mạng Windows.

Trong bài trước của loạt bài này, chúng tôi đã phác thảo một phương pháp cấu trúc cho việc xử lý sự cố vấn đề mạng TCP/IP trên các mạng Windows. Những điểm chính trong phương pháp cấu trúc này gồm có 3 phần dưới đây:

• Hiểu các kỹ thuật và giao thức mạng là nền tảng của vấn đề.

• Chỉ ra được các thành phần khác nhau của vấn đề và các thuộc tính của chúng.

• Chỉ ra các bước xử lý sự cố và công cụ cần phải áp dụng để giải quyết vấn đề.

Nền tảng của mạng TCP/IP là bảng định tuyến, dữ liệu được xây dựng trên mỗi host trên mạng TCP/IP. Bảng định tuyến phục vụ cho các mục đích dưới đây:

• Chúng được sử dụng để lưu trữ thông tin về các mạng con khác trong mạng và cách bạn có thể đến được các host trên mỗi mạng đó.

• Chúng chỉ ra host nào (được gọi là địa chỉ IP trong bước nhảy tiếp theo) mỗi gói được chuyển tiếp đến để cuối cùng đến được host đích mà chúng cần đến.

• Được sử dụng để chỉ ra giao diện mạng nào (gọi là giao diện trong bước nhảy tiếp theo) được sử dụng để chuyến gói này đến được đích của nó.

Hiểu về bảng định tuyến là một vấn đề vô cùng cần thiết nếu bạn muốn xử lý sự cố các vấn đề định tuyến một cách hiệu quả trong mạng TCP/IP. Hãy xem xét các bảng định tuyến làm việc như thế nào, chúng như thế nào trong các kịch bản khác nhau, các bước xử lý sự cố gì và công cụ gì cần phải sử dụng để giải quyết các vấn đề khác nhau đó. Chúng ta sẽ bắt đầu bằng việc kiểm tra bảng định tuyến trên một máy chủ (máy chủ với một giao diện mạng độc lập) có một địa chỉ IP được gán. Chúng tôi chọn ví dụ này vì nó dễ hiểu đối với mọi người, ở những phần sau chúng tôi sẽ xem xét các kịch bản phức tạp hơn gồm có máy chủ với nhiều địa chỉ IP (như các máy chủ web) và máy chủ có nhiều giao diện mạng (như các máy chủ được kết nối đến cả mạng LAN và một mạng độc lập được sử dụng cho việc chạy backup).

Bảng định tuyến cho máy chủ có một địa chỉ IP

Dưới đây là bảng định tuyến cho một máy chủ có địa chỉ IP là 172.16.11.30 trong mạng 172.16.11.0/24:

C:\>route print
IPv4 Route Table
===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x10003 ...00 03 ff 25 88 8c ...... Intel 21140-Based PCI Fast Ethernet Adapter
(Generic)
===========================================================================
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 172.16.11.1 172.16.11.30 20
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
172.16.11.0 255.255.255.0 172.16.11.30 172.16.11.30 20
172.16.11.30 255.255.255.255 127.0.0.1 127.0.0.1 20
172.16.255.255 255.255.255.255 172.16.11.30 172.16.11.30 20
224.0.0.0 240.0.0.0 172.16.11.30 172.16.11.30 20
255.255.255.255 255.255.255.255 172.16.11.30 172.16.11.30 1
Default Gateway: 172.16.11.1
===========================================================================
Persistent Routes:
None

Để hiển thị bảng định tuyến, bạn mở cửa sổ lệnh và đánh route print tại dòng lệnh. Hãy xem xét từng phần của bảng để có thể hiểu được nó làm việc như thế nào. Mỗi một mục trong bảng định tuyến này gồm có 5 trường:

Network Destination. Địa chỉ IP hoặc mạng con trình bày địa chỉ đích được gán để các gói IP có thể được chuyển tiếp đến.

Netmask. Một bitmask được sử dụng tương xứng với trường đích trong địa chỉ IP của gói đối với một trong các đích đến có thể ở trên.

Gateway. Địa chỉ IP trong bước nhảy tiếp theo để gói tin được chuyển tiếp đến được địa chỉ đích của nó.

Interface. Giao diện trong bước nhảy tiếp theo được sử dụng để chuyển tiếp gói tin đến được địa chỉ đích của nó.

Metric. Sự hao phí trong định tuyến

Ví dụ 1: Đích đến trên mạng con nội bộ

Trong ví dụ đầu tiên này, máy chủ trong trường hợp địa chỉ IP (172.16.11.30) phải gửi một gói tin đến một máy khác có địa chỉ IP là 172.16.11.80 (cùng trong một mạng con). Vì vậy gói tin này có địa chỉ nguồn là 172.16.11.30 và địa chỉ đích là 172.16.11.80. Vậy Windows đã sử dụng bảng định tuyến của nó như thế nào:

1. Trước tiên Windows sử dụng đến các route trong bảng một cách lần lượt và thực hiện toán tử AND giữa địa chỉ đích đến trong gói (172.16.11.80) và bitmask (Netmask) của route được chọn. Dưới đây là các kết quả thu được, mỗi một route trong bảng được phân biệt với nhau bằng đích đến trong mạng của nó.

RouteNetmask172.16.11.80 AND Netmask
0.0.0.00.0.0.00.0.0.0
127.0.0.0255.0.0.0172.0.0.0
172.16.11.0255.255.255.0172.16.11.0
172.16.11.30255.255.255.255172.16.11.80
172.16.255.255255.255.255.255172.16.11.80
224.0.0.0224.0.0.0160.0.0.0
255.255.255.255255.255.255.255172.16.11.80

2. Với mỗi route, kết quả thu được sau khi thực hiện phép toán AND sẽ được so sánh với trường địa chỉ đích của route, nếu tương xứng thì điều đó có nghĩa là route có thể được sử dụng để chuyển tiếp nó tin này đến địa chỉ đích của nó. Nếu có nhiều route cho kết quả hợp lệ thì Windows sẽ sử dụng route tương xứng dài nhất (route có mặt nạ mạng có bit 1 cao nhất). Nếu đây không phải là một kết quả tương xứng duy nhất thì Windows sẽ sử dụng sự tương xứng có mức hao phí thấp nhất (Metric). Cuối cùng, nếu có nhiều tương xứng có cùng một mức hao phí thấp nhất thì Windows sẽ chọn một cách ngẫu nhiên một trong số những route như vậy để sử dụng. Từ bảng định tuyến trên, bạn có thể thấy được kết quả của phép tính AND cho hai kết quả tương xứng (route 1 và 3) vì vậy Windows sẽ sử dụng route 3 (route có sự tương xứng dài nhất) để chuyển các gói tin đến được địa chỉ đích của nó. Đây là những gì route này thể hiện trong bảng định tuyến.

Network Destination Netmask Gateway Interface Metric
172.16.11.0 255.255.255.0 172.16.11.30 172.16.11.30 20

3. Windows sẽ sử dụng thuật toán dưới đây để quyết định những gì cần thực hiện tiếp theo:

a, Nếu trường Gateway của route tương xứng với địa chỉ của một trong những giao diện mạng trên máy chủ (hoặc nếu Gateway là trống) thì Windows sẽ gửi gói tin trực tiếp đến địa chỉ đích của nó bằng giao diện được chỉ định trong route.

b, Nếu trường Gateway của route không tương xứng với địa chỉ của bất kỳ giao diện mạng nào trên máy chủ thì Windows sẽ gửi gói tin đến địa chỉ trong trường Gateway của route.

Rõ ràng rằng, điều kiện A là một trường hợp trường Gateway của route field (172.16.11.30) là địa chỉ được gán cho card mạng của máy chủ. Vì vậy Windows chỉ ra địa chỉ đích nằm trên mạng con nội bộ và điều đó có nghĩa là Windows có thể gửi gói tin trực tiếp đến địa chỉ mà không cần chuyển tiếp nó đến các route khác. Vì vậy trong trường hợp này, Windows chỉ đơn giản gửi gói tin đến địa chỉ 172.16.11.80 bằng sử dụng giao diện mạng 172.16.11.30 của máy chủ.

Ví dụ 2: Đích đến trên mạng con từ xa

Trong trường hợp này chúng ta cũng trải qua quá trình tương tự nhưng máy chủ ở đây gửi gói tin đến một host nằm trên mạng con khác có địa chỉ 172.16.10.200. Hay nói cách khác gói tin được truyền tải từ nguồn có địa chỉ 172.16.11.30 đến đích có địa chỉ 172.16.10.200. Ở đây Windows sử dụng bảng định tuyến của nó để quyết định route nào sử dụng trong thời điểm này:

1. Windows kiểm tra trên tất cả các route có trong bảng và thực hiện phép toán AND giữa địa chỉ đích đến trong gói (172.16.10.200) và bitmask (Netmask) của route. Các kết quả thu được được liệt kê dưới đây:

RouteNetmask172.16.10.200 AND Netmask
0.0.0.00.0.0.00.0.0.0
127.0.0.0255.0.0.0172.0.0.0
172.16.11.0255.255.255.0172.16.10.0
172.16.11.30255.255.255.255172.16.10.200
172.16.255.255255.255.255.255172.16.10.200
224.0.0.0224.0.0.0160.0.0.0
255.255.255.255255.255.255.255172.16.10.200

2. Với mỗi một route, kết quả của phép toán AND được so sánh với trường Network Destination của route, nếu có sự tương xứng có nghĩa là route có thể được sử dụng để chuyển tiếp gói tin đến địa chỉ đích của nó. Từ bảng thứ hai của chúng ta ở trên, bạn có thể thấy được chỉ có một trường hợp tương xứng, hàng 1, nơi mà trường Network Destination là 0.0.0.0 tương xứng với kết quả của phép toán AND. Vì vậy route mà Windows sẽ sử dụng để chuyển tiếp gói tin đến địa chỉ đích của nó sẽ là route dưới đây:

Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 172.16.11.1 172.16.11.30 20

3. Sau khi Windows sử dụng thuật toán đã được giới thiệu phần trên để quyết định xem những gì cần làm tiếp theo, và trong trường hợp B này trường Gateway của route (172.16.11.1) không tương xứng với địa chỉ đã gán cho card mạng của máy chủ có địa chỉ 172.16.11.30. Chính vì vậy Windows sẽ xác định địa chỉ đích đến là mạng con từ xa và điều đó có nghĩa rằng Windows sẽ không gửi gói tin trực tiếp đến đích của nó mà thay vì đó là chuyển tiếp nó đến một router khác sau đó công việc tiếp theo lại dựa vào xử lý trên router tiếp theo này. Trong trường hợp này, Windows sẽ gửi gói tin đến địa chỉ được thể hiện trong trường Gateway của route đã chọn (172.16.11.1) bằng sử dụng giao diện mạng 172.16.11.30 của máy chủ. Khi router tại địa chỉ 172.16.11.1 nhận được gói tin nó sẽ xác định hành động tiếp theo cần thiết phải thực hiện là gì để chuyển tiếp gói tin này đến được địa chỉ đích cuối cùng của nó là 172.16.10.200, rõ ràng điều này phụ thuộc vào mạng 172.16.11.10/24 là một mạng con lân cận đối với 172.16.11.11/24 (ví dụ được kết nối bởi một router với nó) hoặc là một mạng từ xa (được kết nối qua một số router trong môi trường mạng giữa chúng).

Các mẹo nhỏ trong việc xử lý sự cố

Vậy những gì có thể xảy ra trong quá trình trên? Đầu tiên đó là Windows có thể không chọn được router có trường đích Network Destination tương xứng với phép toán AND giữa trường Netmask của route và địa chỉ đích của gói. Nếu điều này xảy ra, bạn sẽ gặp phải một lỗi định tuyến và điều này được chỉ thị bằng một số ứng dụng mạng đang chạy trên máy chủ. Những gì xảy ra thường là Windows sử dụng TCP để thông báo cho lớp ở trên của ngăn xếp mạng mà gói không thể được gửi đến và một thông báo lỗi.

Trong tình huống này, có thể bảng định tuyến của bạn bị hỏng hoặc tuyến liên tục trong bảng định tuyến không hợp lệ. Các tuyến liên tục là tuyến bạn thêm một cách thủ công vào bảng bằng việc sử dụng lệnh route -p add và khởi động lại các giá trị của chúng được lưu trong registry. Nếu bạn thêm các tuyến không hợp lệ thì chúng có thể sinh ra kết quả lạ, hầu hết các trường hợp như thế dẫn đến tình trạng mất lưu lượng một cách lạ kỳ.

Cách khác, nếu đích đến nằm trên một mạng con từ xa và Windows chuyển tiếp gói tin này đến một router (địa chỉ cổng mặc định) và router này không thể chọn tuyến thì những gì thường xảy ra trong trường hợp này là route trả về một thông báo ICMP "Destination Unreachable – Host Unreachable" (không đến được đích) đến host gửi gói tin đi. Trong trường hợp này, TCP sẽ thông báo lên lớp bên trên và một số kiểu thông báo lỗi sẽ được hiển thị. Trong cả hai giải pháp, cách hữu dụng nhất để xử lý là kiểm tra các bảng định tuyến trên host đang gửi tin và router trung gian trên đường đến địa chỉ đích, tìm xem các bảng định tuyến này có thích hợp hay có lỗi gì không. Một bảng định tuyến lỗi được lưu lại bằng cách khởi tạo lại ngăn xếp TCP/IP thông qua lệnh netsh int ip reset. Lưu ý rằng quá trình khởi động lại sẽ không gỡ bỏ các route bạn đã thêm vào bảng định tuyến của mình.

Kết luận

Qua bài viết này bạn có thể hiểu được một chút ít về các bảng định tuyến và cách xử lý một số sự cố xảy ra đối với chúng, trong bài tiếp theo chúng tôi sẽ giới thiệu các ví dụ phức tạp hơn như máy chủ với nhiều địa chỉ và vài card mạng.

Phần 3: Sửa các kết nối mạng
Phần 4: Sử dụng Netdiag.exe

Thứ Ba, 12/06/2007 09:30
31 👨 3.111
0 Bình luận
Sắp xếp theo