Thêm hồ sơ máy khách vào một máy đã chạy máy chủ VPN, và nạn nhân đầu tiên là dịch vụ cũ. Đường hầm mới có thể không bao giờ được thiết lập, hoặc nó dựng lên trong khi các máy khách hiện có của máy chủ lặng lẽ ngừng nhận phản hồi. Hai xung đột tạo ra cả hai kết quả: một nhóm đường hầm đã được dùng và một tuyến mặc định do nửa máy khách mới cài đặt phủ toàn bộ bảng. Không cái nào sinh ra thông báo lỗi OpenVPN, nên sự cố được đọc như vấn đề của máy chủ.

Một máy, hai vai trò, và hai câu trả lời không tương thích về nơi phản hồi phải đi.

Cùng một nhóm, hai máy chủ: bên nào thắng

Mỗi phiên bản máy chủ cần một mạng con đường hầm riêng. Sao chép một dòng như server 10.8.0.0 255.255.255.0 vào cấu hình thứ hai cho hai phiên bản cùng một tiền tố, và kết quả là hoặc từ chối khởi động hoặc một cuộc tranh giành lặng lẽ trong đó máy khách của một máy chủ nhận địa chỉ mà bên kia cũng coi là của mình. Cổng UDP và tên thiết bị khác nhau không giúp gì, vì cả hai đều không chạm vào không gian địa chỉ. Hãy đổi nhóm thứ hai, và đổi nó ở mọi nơi mà các tuyến nhắc tới.

Liệt kê những gì đang hoạt động trước khi sửa: ip -4 addr show liệt kê thiết bị đường hầm, ss -lunp liệt kê bộ lắng nghe, và systemctl list-units nêu tên các đơn vị. Một cái nhìn vào địa chỉ đường hầm là đủ để biết các nhóm có chồng nhau không.

Hồ sơ máy khách thêm gì vào bảng

Nửa máy khách ghi tuyến ngay khi kết nối. redirect-gateway def1 chia tuyến mặc định thành 0.0.0.0/1 cộng 128.0.0.0/1, cả hai đều đi qua thiết bị mới, cùng với một tuyến máy chủ tới máy chủ xa được cố ý ghim vào giao diện vật lý. Việc ghim đó tồn tại để đường hầm giữ một đường cho chính lưu lượng của nó. Mọi thứ khác, kể cả phản hồi mà máy chủ cục bộ nợ máy khách của mình, giờ đi theo tuyến mặc định mới và ra ngoài qua liên kết từ xa.

Vậy xung đột thứ hai không phải đường hầm hỏng. Đó là đường hầm đang chạy ở sai chỗ trong bảng.

Ba cách giữ các vai trò tách nhau

Cách sửa ít xâm lấn nhất giữ tuyến mặc định ra ngoài hồ sơ máy khách: route-nopull cộng các dòng route rõ ràng cho các tiền tố từ xa, để bảng cục bộ chỉ đổi ở nơi bạn yêu cầu. Bước tiếp theo là một quy tắc chính sách miễn trừ mạng con đường hầm cục bộ, cho phép phản hồi tới máy khách cục bộ đi ra qua giao diện mà nó đến, ngay cả khi có tuyến mặc định. Triệt để nhất là một không gian tên mạng riêng cho vai trò máy khách, loại bỏ hoàn toàn bảng dùng chung và tốn thêm một ngữ cảnh định tuyến để bảo trì.

Dù chọn con đường nào, ngoại lệ phải nêu tên mạng con đường hầm cục bộ chứ không phải LAN. Phản hồi mà máy chủ cục bộ gửi có đích là một địa chỉ đường hầm, nên một ngoại lệ hình LAN không bao giờ khớp với nó.

Phiên bản nào trong hai là thủ phạm

Dừng phiên bản máy khách và kiểm tra lại các máy khách ban đầu. Phục hồi ngay lập tức nghĩa là định tuyến, không phải máy chủ. Đưa máy khách trở lại và theo dõi một phản hồi duy nhất bằng ip route get được cấp cả địa chỉ nguồn lẫn đích, cho thấy đường mà nhân sẽ chọn, rồi quan sát giao diện mà gói tin thực sự dùng bằng tcpdump -ni any port 1194. Tệp trạng thái của máy chủ, được ghi vài giây một lần qua chỉ thị status, chứa danh sách máy khách đã kết nối và bộ đếm byte ở cả hai chiều.

Đọc các bộ đếm đó đối chiếu nhau. Lưu lượng đi ra mà không bao giờ quay lại là câu trả lời về định tuyến, không phải vấn đề bắt tay.

Bài viết liên quan