Đường hầm rớt, router ghi nhận một lần kết nối lại, và không có gì trên mạng LAN di chuyển. Một địa chỉ WAN mới vô hiệu hóa kết nối bên ngoài mà không thay đổi gì bên trong: địa chỉ nguồn của máy khách đã thay đổi, trạng thái NAT cũ trỏ đến một nguồn không còn tồn tại, và peer từ xa có thể vẫn gửi đến địa chỉ trước đó. Khôi phục là hành vi bình thường, và câu hỏi hữu ích là trạng thái nào đã không được cập nhật.

Đặt tên cho sự kiện trước khi đọc nhật ký

Kiểm tra điều gì thực sự đã xảy ra ở lớp truy cập. Gia hạn thuê từ nhà cung cấp là một sự kiện. Một phiên PPPoE kết nối lại là sự kiện khác. Modem quang khởi động lại, hoặc chuyển đổi dự phòng WAN từ liên kết này sang liên kết khác, thay đổi địa chỉ bên ngoài hoặc đường đi của nó theo cách thứ ba. Chúng không phải cùng một sự kiện và không để lại cùng một dư lượng.

Dòng kết nối lại trong nhật ký VPN cũng không phải bằng chứng của thay đổi WAN. Thời gian chờ không hoạt động, khoảng thời gian xác thực lại và phát hiện peer đã chết đều tạo ra kết nối lại mà không có bất kỳ thay đổi địa chỉ nào. So sánh dấu thời gian từ nhật ký truy cập với nhật ký VPN trước khi kết luận bất cứ điều gì, và giữ cửa sổ so sánh đủ rộng để bắt được thay đổi xảy ra trong đêm.

Chuyển vùng và kết nối lại là các giao thức khác nhau

WireGuard có chuyển vùng được xác thực tích hợp trong giao thức: khi một peer nhận được gói được xác thực đúng từ địa chỉ nguồn mới, nó cập nhật điểm cuối của peer đó. Bắt đầu nhanh WireGuard mô tả cấu hình peer giúp điều này hoạt động, đó là lý do máy khách trên địa chỉ thay đổi thường khôi phục mà không có khởi động lại nhìn thấy được.

OpenVPN hoạt động khác theo mặc định. Một phiên UDP có thể kết thúc và kết nối lại, và hành vi float tùy chọn cho phép một peer được xác thực tiếp tục từ địa chỉ mới ở nơi cấu hình cho phép. Các đường hầm dựa trên TCP chặt chẽ hơn, vì bản thân kết nối gắn với cặp địa chỉ. Sự khác biệt đó quyết định việc khôi phục trông vô hình hay tự thông báo trong nhật ký mỗi lần.

Không hành vi nào nói gì về các ứng dụng bên trong. Một đường hầm đã khôi phục không khôi phục phiên TCP mà peer đã coi là chết.

Trạng thái mà đường hầm không sở hữu

Trạng thái dịch và định tuyến sống sót qua lần kết nối lại theo những cách khiến người ta ngạc nhiên. Một mục conntrack được tạo cho nguồn cũ giữ đường phản hồi neo vào một địa chỉ không còn tồn tại, và nó hết hạn theo lịch trình của chính nó, không phải khi đường hầm quay lại. Khởi động lại dịch vụ đường hầm không rút ngắn thời gian chờ đó, nên một liên kết đã sửa vẫn có thể trông hỏng trong một lúc.

Các tuyến và quy tắc chính sách có thể tham chiếu cổng hoặc giao diện cũ. Một bộ quy tắc đúng trước khi thay đổi WAN có thể trỏ đến một thiết bị hiện đã ngừng hoạt động, tạo ra một đường hầm báo cáo là đã kết nối và lưu lượng không đi đến đâu. DNS động cho một máy chủ bạn tự vận hành là vấn đề riêng so với máy khách có được nguồn mới. Bản ghi cần được cập nhật để máy khách từ xa tìm thấy bạn, và không cấu hình phía máy khách nào bù đắp cho một địa chỉ mà bản dịch ở thượng nguồn sẽ không chuyển tiếp.

Sắp xếp các bước kiểm tra từ ngoài vào trong

Thứ tự dưới đây đi từ kết nối bên ngoài vào trong, và việc dừng ở bước thất bại đầu tiên là điều làm nó hữu ích: mỗi lượt kiểm tra loại trừ lớp phía trên. Giữ thứ tự đó ngay cả khi lỗi trông hiển nhiên.

wg show
ip -br addr show
ip route get 198.51.100.7
conntrack -L 2>/dev/null | grep -c ESTABLISHED
journalctl -u openvpn-client@home --since '-2 hours' | tail -n 40

Lệnh đầu tiên hiển thị điểm cuối hiện tại và tuổi của bắt tay cho từng peer. Lệnh thứ hai và thứ ba cho biết giao diện bên ngoài và tuyến đến điểm cuối còn hợp lý hay không. Số conntrack là một bước kiểm tra thô cho trạng thái còn lại từ địa chỉ trước, và nhật ký là nơi lý do kết nối lại được ghi lại.

Sau đó thử từ một máy khách trong LAN thay vì từ router. Một ping do chính router gửi dùng đường khác với lưu lượng được chuyển tiếp, nên ping thành công từ router chứng minh đường hầm tồn tại và không nói gì về khả năng tiếp cận của máy khách.

Quyết định hành vi mong đợi và viết nó ra

Kết nối lại là hành vi đúng cho hầu hết triển khai, nên mục tiêu không phải là ngăn nó. Thay vào đó hãy quyết định điều gì nên xảy ra với lưu lượng trong khoảng trống: dừng nó, giữ nó, hoặc chuyển sang đường khác. Quyết định đó thuộc về tường lửa và chính sách định tuyến, không thuộc hồ sơ VPN.

Ghi lại các sự kiện truy cập và thời điểm kết nối lại cùng nhau trong một tuần. Những thay đổi lặp lại mà không có sự kiện truy cập tương ứng chỉ về dịch vụ truy cập, và thay hồ sơ VPN sẽ không sửa được một liên kết liên tục thương lượng lại. Một cặp mục trong cùng một phút giải quyết câu hỏi cho sự cố đó và cho sự cố tiếp theo một đường cơ sở.

Bài viết liên quan