Instan khởi động, cài đặt gói thành công và dịch vụ thậm chí báo trạng thái đang chạy, nhưng không có gì kết nối được. Mẫu này phổ biến trên máy chủ riêng ảo, vì một khách mời truy cập internet thoải mái vẫn có thể không tạo được giao diện mà giao thức của bạn yêu cầu. Năm kiểm tra phân biệt một máy chủ có thể phục vụ đường hầm với một máy chủ chỉ trông như đã sẵn sàng, và kiểm tra đầu tiên thất bại thường giải thích mọi thứ sau đó. Mỗi kiểm tra đều rẻ để chạy và kết thúc bằng một quyết định, không phải một ghi chú.

Xác nhận giao diện mà giao thức cần

OpenVPN trên TUN cần thiết bị ký tự và mô-đun kernel phía sau; WireGuard cần hỗ trợ kernel riêng hoặc triển khai không gian người dùng với kỳ vọng tương ứng. Các container được quản lý có thể chia sẻ kernel máy chủ không bao giờ lộ thiết bị, và một số nền tảng cấm hoàn toàn việc tạo giao diện đường hầm, bất kể đã cài gì.

Hãy kiểm tra khả năng thay vì đọc trang hỗ trợ, vì nhãn tiếp thị thay đổi nhanh hơn giới hạn nền tảng. Danh sách tính năng viết cho một gói có thể không mô tả kernel mà khách mời thực sự chạy. Hai lệnh ngắn trả lời câu hỏi cho các giao thức thông dụng, và cả hai đều dọn dẹp phía sau. Các lệnh bên dưới không tạo gì vĩnh viễn và được xóa ngay.

sudo ip tuntap add dev tun9 mode tun
sudo ip tuntap del dev tun9 mode tun
sudo ip link add wgtest type wireguard && sudo ip link del wgtest

Bị từ chối ở cặp đầu tiên nghĩa là TUN không khả dụng và chế độ mặc định của OpenVPN không thể khởi động; bị từ chối ở dòng cuối nghĩa là thiếu giao diện kernel của WireGuard. tài liệu kernel về TUN/TAP mô tả thiết bị mà kiểm tra đầu tiên thực hành. Không lỗi nào trong hai lỗi được sửa bằng cách cài lại gói VPN.

Hãy nhớ rằng đường vào có hai chủ sở hữu

Quy tắc mạng của nhà cung cấp và tường lửa của khách mời là các hệ thống riêng biệt, và lưu lượng phải vượt qua cả hai. Một trình lắng nghe gắn trên khách mời không có ý nghĩa nếu nhóm bảo mật của nhà cung cấp bỏ cổng, và một quy tắc mở của nhà cung cấp không làm gì nếu khách mời từ chối gói. Kiểm tra trình lắng nghe, rồi quy tắc của khách mời, rồi bảng điều khiển của nhà cung cấp, theo thứ tự đó, và xác nhận cả giao thức lẫn số cổng. Nhảy thẳng vào bảng điều khiển của nhà cung cấp là cách người ta mở một dải họ không cần.

UDP là nạn nhân thường gặp: nhiều nền tảng cho phép TCP theo mặc định và coi quy tắc UDP là một mục riêng. Nếu instan nằm sau NAT của nhà cung cấp thay vì có địa chỉ công cộng, việc chuyển tiếp cổng phía nhà cung cấp trở thành cấu hình thứ ba cần hòa giải.

Lập kế hoạch cho đường về, không chỉ đường ra

Dịch vụ đường hầm đầy đủ cần bật chuyển tiếp, một sơ đồ dịch hoặc định tuyến cho lưu lượng máy khách và một đường về đến nhóm máy khách. Mở một trình lắng nghe không cung cấp bất kỳ điều nào trong số đó. Một đường hầm thiết lập nhưng không mang lưu lượng hữu ích thường thất bại ở đây chứ không phải ở xác thực. Hãy coi một cái bắt tay thành công là khởi đầu của chẩn đoán, không phải kết thúc.

Viết kế hoạch thành ba quyết định cụ thể: máy khách nhận dải nguồn nào, lưu lượng của họ ra internet như thế nào và các phản hồi tìm đường về ra sao. Sau đó xác nhận kernel đồng ý với kế hoạch trước khi kiểm tra một máy khách, để một sự không khớp âm thầm không bị nhầm là lỗi phía máy khách.

sysctl -n net.ipv4.ip_forward
sudo nft list ruleset | head -n 40
ip -4 route show default

Quyết định vấn đề IPv6 một cách rõ ràng

IPv6 đến qua một số cơ chế hoạt động khác nhau với một cổng: một địa chỉ trên instan, một tiền tố được định tuyến hoặc không có gì. Chỉ một tiền tố được định tuyến mới cho phép máy chủ cấp địa chỉ cho máy khách theo cách thông thường. Giả định rằng một địa chỉ IPv6 hoạt động trên máy chủ nghĩa là có tiền tố máy khách dùng được là một sai lầm xuất hiện sau này dưới dạng kết nối hỏng một nửa. Đây là kiểu lỗi vượt qua mọi bài kiểm tra chỉ thực hiện với IPv4.

Nếu nhà cung cấp không định tuyến tiền tố nào, hãy quyết định đường hầm chỉ dùng IPv4 hay không và có nên thông báo cho máy khách. Sự vắng mặt được ghi lại an toàn hơn một cấu hình một phần âm thầm ném đích IPv6 vào hố đen cho người dùng đã kết nối.

Hãy chứng minh từ một máy khách bên ngoài

Trạng thái dịch vụ cục bộ mô tả một tiến trình trên một máy chủ. Bài kiểm tra hữu ích là một máy khách được ủy quyền trên mạng khác, kết nối bằng hồ sơ bạn định phân phối, sau đó đến được một ứng dụng và phân giải một tên. Hãy kết nối lại một lần nữa, vì một đường hầm chỉ hoạt động ở lần thử đầu không đáp ứng yêu cầu quan trọng nhất trong thực tế.

sudo wg show wg0 latest-handshakes
ip -4 route get 203.0.113.44
sudo journalctl -u wg-quick@wg0 -n 15 --no-pager

Giữ các nền tảng vận hành bên cạnh bài kiểm tra: chỗ cho cập nhật, nhật ký có giới hạn, quyền truy cập quản trị không phụ thuộc đường hầm, một bảng điều khiển khôi phục và một ghi chú về điều gì xảy ra với hồ sơ máy khách khi instan được xây dựng lại và địa chỉ công cộng của nó thay đổi. Nếu một giao diện hoặc mô hình chuyển tiếp cần thiết đơn giản là không có, không thay đổi phía máy khách nào cung cấp được nó, và bước tiếp theo trung thực là một loại instan khác chứ không phải cấu hình nhiều hơn.

Bài viết liên quan