OpenVPN hay WireGuard? Quyết định từ danh tính và vận chuyển
Khóa, luồng đăng nhập và vận chuyển chỉ qua UDP định hình lựa chọn từ rất lâu trước thông lượng. Hãy làm bốn kiểm tra và giữ phép đo trung thực.
So sánh hai giao thức này chỉ hữu ích khi nó so sánh đúng thứ bạn sẽ vận hành. WireGuard nhận diện các peer bằng khóa công khai và mang giao thức của mình qua UDP, trong khi OpenVPN cung cấp nhiều phương thức xác thực hơn và có thể chạy qua UDP hoặc TCP khi máy chủ cung cấp cả hai. Những khác biệt đó định hình việc thiết lập và đường dự phòng từ rất lâu trước khi định hình thông lượng. Hãy thực hiện bốn kiểm tra dưới đây theo thứ tự; hai kiểm tra đầu thường quyết định lựa chọn, và hai kiểm tra cuối cho biết quyết định có đúng hay không.
Bắt đầu từ danh tính, không phải từ danh sách mã hóa
Một peer WireGuard lưu một khóa riêng và liệt kê các khóa công khai mà nó có thể tiếp cận. Nhà cung cấp có thể bọc quanh đó một cổng tài khoản, nhưng bản thân giao thức không có trao đổi tên người dùng và mật khẩu, nên vòng đời tài khoản sống trong thứ phân phối các khóa. OpenVPN có thể dùng chứng chỉ, plugin với một thư mục sẵn có hoặc script xác minh, và đó là lý do các tổ chức có hệ thống danh tính thường thích nó. Không thiết kế nào loại bỏ câu hỏi làm sao gỡ bỏ một thiết bị bị mất.
| Decision | OpenVPN | WireGuard |
|---|---|---|
| Identity | Certificates, plugins or scripts against an existing directory | One private key per peer, public keys listed for the peers it may reach |
| Transport | UDP or TCP profiles when the server offers both | UDP only in the native protocol |
| Routing and DNS | Server pushes routes and DNS options | AllowedIPs maps ranges to peers, and tooling installs the routes |
| Where it usually breaks | Profile mismatch, expired certificate, failing plugin | Blocked UDP, wrong AllowedIPs, key not installed |
Một cấu hình ngắn không giống với việc thiết lập đơn giản. Giao một khóa riêng cho nhiều người khiến việc gỡ bỏ về sau trở nên mơ hồ, vì thu hồi khóa sẽ gỡ tất cả cùng lúc. Hãy ghi lại ánh xạ từ người sang khóa hoặc chứng chỉ trước khi chọn, và quyết định về giao thức sẽ dễ hơn nhiều.
Sau đó xem vận chuyển cho phép điều gì
Giao thức của WireGuard dùng UDP. Các dịch vụ OpenVPN có thể cung cấp cả hồ sơ UDP và TCP, và trên mạng chặn hoặc làm suy giảm UDP thì lựa chọn thứ hai là đường dự phòng thực tế chứ không phải lý thuyết. Máy chủ phải hỗ trợ hồ sơ bạn chọn, và việc đổi số cổng không biến đường hầm thành HTTPS cũng không thuyết phục tường lửa cho nó đi qua.
Mang TCP bên trong TCP cũng thay đổi hành vi khi có mất mát, vì cả hai tầng đều tự thử lại và sắp xếp lại. Một hồ sơ TCP hoạt động trên mạng hạn chế vẫn có thể kém trên mạng có mất mát, và đó là lý do để giữ cả hai hồ sơ sẵn có thay vì tuyên bố một cái vượt trội.
Sau đó kiểm tra định tuyến và phân giải tên
AllowedIPs của WireGuard ánh xạ các dải địa chỉ tới các peer và hoạt động như một quyết định định tuyến bên trong giao thức, và các công cụ xung quanh dùng những dải đó khi cài đặt tuyến. OpenVPN đẩy tuyến và tùy chọn DNS từ máy chủ. Trong cả hai trường hợp, máy khách có thể khởi lên trong khi chính sách dự định chỉ được áp dụng một nửa.
ip route show
ip -6 route show
resolvectl status
wg show
Đọc đầu ra trước khi tin chỉ báo đã kết nối. ip route show liệt kê những gì máy khách đã cài cho IPv4, và biến thể IPv6 bắt được đường hầm chỉ mang một họ địa chỉ. resolvectl status cho thấy máy khách thực sự sẽ hỏi trình phân giải nào, và wg show in ra các AllowedIPs mà WireGuard cho là của mình. Nếu trình phân giải vẫn trỏ tới mạng cục bộ trong khi các tuyến khẳng định phủ toàn bộ, DNS đi ra ngoài đường hầm.
Sau đó đo công việc bạn quan tâm
Giữ thiết bị, mạng và đích đến cố định, và ghi lại các máy khách cùng điểm cuối bạn đã dùng. Nếu hai dịch vụ đi ra ở các thành phố khác nhau hoặc chạy trên phần cứng khác nhau, hãy nói rõ, vì khi đó kết quả mô tả các dịch vụ ấy chứ không phải giao thức.
iperf3 -c 203.0.113.20 -t 30
mtr -rwzbc 50 203.0.113.20
Chạy cả hai lệnh hai lần, mỗi lần cho một cặp hồ sơ, trên cùng mạng và thiết bị. iperf3 cho một con số thông lượng, và mtr cho đường đi và nơi mất mát xuất hiện, điều mà một con số tải xuống không thể hiện được. Một con số tải xuống cũng bỏ qua điều mà cuộc gọi nhận ra: độ trễ tăng thêm, rung và thời gian kết nối lại. Hãy ghi chúng riêng, vì một giao thức thắng về thông lượng vẫn có thể thua ở công việc bạn thực sự chạy.
Với một kết nối được quản lý, khả năng tương thích, hỗ trợ và công sức gia hạn có thể nặng hơn một chênh lệch đo lường nhỏ. Với một lối ra cá nhân, việc ghi nhật ký và quyền tài phán của nhà vận hành quan trọng hơn nhãn giao thức. Cả hai giao thức đều có thể mang một kết nối tốt; dịch vụ và cấu hình của nó quyết định bạn nhận được gì.
Ghi lại cặp hồ sơ trước khi thử
Chọn một hồ sơ cho mỗi giao thức trước khi đo, và ghi lại từng cái phải làm gì: chỉ mạng con riêng, hay toàn bộ lưu lượng với một lối ra cụ thể. Một thử nghiệm so sánh hồ sơ đường hầm chia đôi với hồ sơ đường hầm đầy đủ đo các hồ sơ chứ không phải giao thức. Đặt tên máy khách, phiên bản máy khách và vị trí lối ra trong cùng một ghi chú.
Sau đó chạy cùng công việc trên cả hai, trên cùng mạng, trong cùng phiên. Nếu một bên hoàn toàn không kết nối được, thất bại đó là kết quả và thuộc về biên bản cùng với lý do. Giữ biên bản cùng tài liệu dịch vụ để người sau so sánh đúng cặp đó thay vì bắt đầu lại.