Cách phân biệt vòng lặp định tuyến với tuyến dao động trên các site VPN
Vòng lặp định tuyến và tuyến không ổn định gây ra cùng một kiểu mất mát gián đoạn. Ba kiểm tra trên các gateway phân biệt hai thứ trước khi bạn thay đổi bất cứ điều gì.
Hai site, một đường hầm và một tiền tố từ xa trả lời được một lúc rồi im bặt. Phản xạ đầu tiên là gọi đó là vòng lặp định tuyến, và đôi khi đúng là như vậy. Nhưng vòng lặp và tuyến dao động tạo ra cùng một lời than phiền và cần những cách sửa trái ngược nhau: một là quyết định chuyển tiếp không bao giờ kết thúc, hai là một tiền tố liên tục rời khỏi bảng. Ba quan sát phân biệt chúng, và bạn có thể thu thập cả ba từ dòng lệnh của gateway trước khi chạm vào bộ lọc hay khởi động lại đường hầm.
Vòng lặp được quyết định theo từng chặng. Site A chọn B làm chặng kế tiếp cho đích, B chọn A cho cùng đích đó, và gói tin hết hạn TTL sau hai vòng khứ hồi. Dao động thì do giao thức định tuyến quyết định: tiền tố bị rút lại, được cài lại hoặc bị thay bằng chặng kế tiếp thay thế, nên một số gói tin không có tuyến nào trong khi những gói khác đi theo một tuyến hoàn toàn tốt.
Ba kiểm tra giải quyết câu hỏi
Bạn không cần bắt gói tin để đưa ra quyết định đầu tiên. Bạn cần trạng thái tiền tố ở hai đầu, chặng kế tiếp mà mỗi bên chọn, và số chặng lặp lại hoặc không lặp lại. Nếu tiền tố vẫn được cài với cùng chặng kế tiếp trong khi lưu lượng thất bại, vòng lặp nằm trong đường chuyển tiếp. Nếu tiền tố biến mất rồi quay lại, lỗi nằm phía trên chuyển tiếp và việc sửa thuộc về giao thức định tuyến, không phải tuyến tĩnh.
| Observation | Routing loop | Route flapping |
|---|---|---|
| Prefix in the table | Installed, same next hop throughout | Withdrawn and reinstalled, or next hop alternates |
| Hop count | Reaches zero at the same two gateways | Expires only while the prefix is missing |
| Failure shape | Consistent loss for that prefix from every source | Bursts, often after a link or peer event |
| Where the fix belongs | The site that owns the prefix, plus filters on the transit path | Advertisement, hold timers, or the flapping link |
Một lời cảnh báo trước khi bắt đầu. Nếu bạn đọc điều này qua đường hầm đang lặp, phiên của bạn sẽ chết ngay khi bạn đổi tuyến. Hãy mở một bảng điều khiển hoặc đường quản trị không phụ thuộc vào tiền tố bạn sắp sửa.
Kiểm tra một: tiền tố ổn định hay đang sôi
Hãy hỏi nhân hệ điều hành nó đã cài gì, chứ không phải tệp cấu hình hứa gì. Trên gateway Linux, ip route get 10.20.30.40 chạy đúng phép tra cứu mà đường chuyển tiếp chạy, kể cả các bảng chính sách, còn ip route show 10.20.30.0/24 hiển thị chính bản ghi. ip monitor route phát trực tiếp mọi thay đổi ngay khi nó xảy ra, và đó là cách nhanh nhất để xem một tiền tố đến rồi đi.
Trên router chạy FRR hoặc BIRD, bảng chuyển tiếp không phải thứ đáng quan tâm. show ip bgp 10.20.30.0/24 trả về tuyến đã chọn và thời gian hoạt động của nó; thời gian hoạt động bị đặt lại vài phút một lần là dao động có thể gọi tên, không phải vòng lặp. show ip bgp summary hiển thị trạng thái láng giềng và số tiền tố, nên một peer liên tục sụp sẽ gỡ lỗi khỏi đường chuyển tiếp.
Ghi lại câu trả lời trước khi thay đổi bất cứ điều gì. Ổn định mười phút trong khi ping thất bại, và biến mất bốn lần trong mười phút dẫn đến những bước tiếp theo khác nhau. Trường hợp thứ hai khiến mọi lý thuyết về tuyến tĩnh trở nên vô nghĩa.
Kiểm tra hai: chặng kế tiếp có trỏ ngược vào đường hầm đến không
Một vòng lặp cần hai gateway đồng ý với nhau. Tại site nhận gói tin, hãy xem tuyến mà gói tin sẽ dùng để đi ra: ip route get 10.20.30.40 from 10.10.5.20 với địa chỉ nguồn thật, vì một quy tắc chính sách có thể trả lời khác bảng chính. Sau đó lặp lại phép tra cứu ở site đã gửi. Nếu mỗi bên chọn bên kia làm chặng kế tiếp cho cùng tiền tố, vòng lặp được chứng minh và không bản bắt gói nào thêm được gì.
Nguyên nhân gần như luôn là một quảng cáo lẽ ra không được vượt qua đường hầm. Một tuyến mặc định được phân phối lại vào đường hầm, một tổng hợp bao trùm chính subnet của site từ xa, hay một tuyến tĩnh trỏ về peer cho chắc — tất cả đều tạo ra cùng một chặng kế tiếp lẫn nhau. Đường hầm có thể đã được thiết lập đầy đủ mà vẫn mang lưu lượng vòng tròn; ghi chú về chuyển tiếp của strongSwan mô tả phía định tuyến của yêu cầu đó.
WireGuard xứng đáng có ghi chú riêng, vì không có quảng cáo nào để đổ lỗi. wg show liệt kê AllowedIPs của từng peer, và nhân chỉ chấp nhận đích cho một peer nếu nó nằm trong dải đó. Vòng lặp ở đó là một dải AllowedIPs chồng lấp hoặc một tuyến tĩnh trỏ ngược qua giao diện, nên việc sửa chỉ nằm ở hai chỗ đó.
Kiểm tra ba: đọc số chặng, không đọc dấu sao
traceroute -n -I 10.20.30.40 và mtr -n -r -c 20 10.20.30.40 đều hiển thị đường đi, và chế độ ICMP thường sống sót qua việc lọc ăn mất các đầu dò UDP. Vòng lặp trông như một chuỗi ngắn lặp lại của cùng hai địa chỉ gateway với TTL tăng dần mỗi lần. Sụt trông như các dấu sao sau gateway cuối cùng đã trả lời, và một chặng im lặng không chứng minh điều gì.
Khi đường đi mơ hồ, hãy đọc TTL trên dây. tcpdump -ni any -vv icmp trên cả hai gateway hiển thị TTL của từng gói tin và địa chỉ nguồn của mọi phản hồi quá thời gian. Nếu một gói tin đến site từ xa với TTL thấp hơn số chặng mà đường đi có thể chứa, có gì đó đang thêm chặng mà traceroute không cho bạn thấy, và điều đó xảy ra khi tường lửa của site này trả lời đầu dò thay cho site kia.
Sửa chủ sở hữu tiền tố, rồi xác minh cả hai chiều
Hãy quyết định site nào tạo ra đích và những đường trung chuyển nào được phép, rồi đổi quảng cáo hoặc tuyến tĩnh tại chủ sở hữu đó. Sửa site nhận thì hấp dẫn và thường sai: nó giấu vòng lặp cho một tiền tố và để quảng cáo xấu tại chỗ cho tiền tố kế tiếp. Thẻ tuyến, danh sách phân phối và quy tắc split-horizon tồn tại để chặn điều này tại nguồn, và chúng rẻ hơn một bộ lọc chỉ khớp một tiền tố.
Sau thay đổi, hãy xác minh riêng chiều đi và chiều về, vì vòng lặp có thể bị thay bằng một lỗ đen mà triệu chứng không hề cải thiện rõ rệt. Chạy ip route get từ hai đầu, gửi lưu lượng từ một máy không phải gateway, và để ip monitor route chạy ít nhất một bộ đếm giữ để dao động không bị nhầm là đã sửa.
Trước khi thay đổi bất cứ điều gì, hãy xác nhận năm điểm: tiền tố ổn định hay đang sôi, chặng kế tiếp ở hai đầu trỏ vào một đường hầm, số chặng lặp lại hay không, một site duy nhất sở hữu tiền tố, và bạn có một đường quản trị sống sót qua thay đổi. Nếu một trong năm điểm là chưa biết, bốn điểm còn lại chỉ là phỏng đoán.