Ứng dụng thứ hai của bạn kết nối, tài nguyên của ứng dụng thứ nhất ngừng được phân giải, và phiếu hỗ trợ nói rằng VPN công việc đã làm hỏng VPN cá nhân. Không có gì hỏng theo nghĩa lỗi: cả hai ứng dụng đều làm đúng thiết kế, và máy chỉ có một bảng định tuyến. Xung đột xoay quanh bốn tài nguyên mà mỗi ứng dụng cho là của mình. Đi qua chúng theo thứ tự, và cách khắc phục thường trở thành một lựa chọn thiết kế thay vì một lần sửa chữa.

Bước 1: tìm ra ứng dụng nào sở hữu lối ra

Đọc quyết định lối ra hiện tại trước khi thay đổi bất cứ điều gì. Tra tuyến cho một địa chỉ công cộng cho bạn biết gói tin sẽ dùng giao diện nào và bước nhảy tiếp theo nào ngay lúc này, và đó là câu trả lời cho việc ai đã thắng. So sánh với tên giao diện do các ứng dụng tạo ra, thường mang tên sản phẩm hoặc giao thức. Nếu tra cứu trỏ tới đường hầm mà bạn không ngờ tới, bạn đã tìm ra xung đột.

ip route get 1.1.1.1
ip route show default
route print

Một số ứng dụng không hề thay thế tuyến mặc định; chúng thêm hai nửa, một cho nửa dưới của không gian địa chỉ và một cho nửa trên, cộng lại phủ toàn bộ. Điều này để tuyến mặc định gốc vẫn hiển thị và khiến việc sửa tay trông có vẻ đúng trong khi lưu lượng vẫn đi ra qua đường hầm. Hãy đọc số đo và độ dài tiền tố, không chỉ sự tồn tại của một mục mặc định.

Dừng lại nếu cả hai ứng dụng cùng đòi một tiền tố với cùng số đo. Nhân hệ điều hành sẽ chọn một, và cái còn lại sẽ trông như đã kết nối mà không mang gì.

Bước 2: kiểm tra trình phân giải và các tiền tố chồng lấn

DNS là xung đột thứ hai, và nó tạo ra triệu chứng đặc trưng: tên thất bại trong khi địa chỉ vẫn hoạt động. Mỗi ứng dụng áp đặt trình phân giải của riêng mình, và người ghi cuối cùng thắng cho các truy vấn tiếp theo. Hỏi dịch vụ phân giải xem nó dùng gì cho từng liên kết thay vì đọc trang cài đặt của ứng dụng.

resolvectl status
Get-DnsClientServerAddress
dig +short intranet.corp.example

Sau đó so sánh các tiền tố riêng mà hai mạng sử dụng. Nếu cả hai bên cấp phát từ cùng một dải, không cách sắp xếp phía ứng dụng nào sửa được, vì máy không thể nói đích 10.0.0.0/8 nào thuộc đường hầm nào. Một bên phải được đánh số lại hoặc chuyển đổi, và đó là cuộc trao đổi với chủ sở hữu mạng chứ không phải thay đổi cấu hình. Chồng lấn là xung đột duy nhất mà câu trả lời trung thực là thiết kế phải thay đổi.

Dừng ở đây nếu các tiền tố chồng lấn. Mọi thứ sau đây trong danh sách giả định chúng không chồng lấn.

Bước 3: chọn một mẫu tách biệt bền vững

Các mẫu đáng tin cậy tránh chạy hai ứng dụng trên cùng một bảng định tuyến. Một ứng dụng với chính sách đường hầm chia đôi tiếp cận cả hai mạng riêng là đơn giản nhất, miễn là các đích không chồng lấn và chủ chính sách đồng ý. Máy ảo hoặc không gian tên mạng là bước tiếp theo, vì mỗi bên có bảng và trình phân giải riêng.

sudo ip netns add vpn2
sudo ip netns exec vpn2 ip link show
sudo ip netns exec vpn2 curl -sI https://intranet.corp.example/

Không gian tên cho khả năng tách biệt như máy ảo mà không cần hệ điều hành thứ hai, nhưng có cạnh thô: thiết bị đường hầm phải được chuyển vào trong và ứng dụng phải được khởi chạy bên trong. Một thiết bị vật lý riêng thường là lựa chọn ít bất ngờ nhất cho VPN cá nhân bên cạnh ứng dụng công việc được quản lý. Xếp một đường hầm vào trong một đường hầm khác không phải là mẫu tách biệt; điểm cuối bên trong phải vẫn tiếp cận được qua đường hầm bên ngoài, và cách bố trí này còn thêm vấn đề MTU và độ trễ.

Chọn một mẫu và ghi lại lý do. Trộn không gian tên cho một ứng dụng với đường hầm chia đôi cho phần còn lại tái tạo xung đột ban đầu ở dạng khó gỡ lỗi hơn.

Bước 4: xác minh cả hai mạng từ cùng một phiên

Kiểm tra một tài nguyên trên mỗi mạng riêng từ môi trường nơi ứng dụng thực sự chạy, không phải từ shell của bạn nếu ứng dụng chạy trong không gian tên. Kiểm tra cùng lúc giao diện lối ra, địa chỉ đã phân giải và mã phản hồi, vì thành công ở một trong ba có thể che giấu thất bại ở hai cái kia. Lặp lại sau khi khởi động lại, vì thứ tự các ứng dụng khởi động quyết định bên nào thắng. Chính thứ tự đó là phần người ta quên ghi lại.

curl -sI https://intranet.corp.example/
curl -sI https://files.personal.example/
ip route get 10.20.30.40

Ghi lại phiên bản ứng dụng, giao diện, trạng thái trình phân giải và tiền tố của từng mạng. Khi một ứng dụng được cập nhật và thay đổi hành vi tuyến, bản ghi đó là khác biệt giữa sửa năm phút và xây dựng lại. Người tiếp theo sẽ không chia sẻ ký ức của bạn về việc đường hầm nào lên trước.

Danh sách hoàn tất khi bạn có thể nêu tên giao diện sở hữu tuyến mặc định, trình phân giải mà mỗi tên sử dụng, mẫu tách biệt đường hầm thứ hai và kết quả của một yêu cầu trên mỗi mạng sau khi khởi động lại. Bất cứ điều gì ít hơn là một cấu hình tình cờ hoạt động hôm nay.

Bài viết liên quan