Chạy VPN trên máy chủ hay bên trong VM? Hướng dẫn quyết định
Chủ sở hữu đường hầm quyết định cái gì che cái gì. Chọn vị trí trên máy chủ hoặc trong khách, rồi xác nhận bằng kiểm tra tuyến, DNS và lối ra bên trong khách.
Dựng đường hầm bên trong khách và dựng nó trên máy chủ đều thay đổi địa chỉ mà trình duyệt báo cáo, và sự giống nhau kết thúc ở đó. Một đường hầm thuộc sở hữu của khách giữ khóa, tuyến mặc định và bộ phân giải của nó bên trong nhân của khách, trong khi máy chủ chuyển tiếp các gói đã mã hóa tới một địa chỉ từ xa duy nhất. Một đường hầm thuộc sở hữu của máy chủ là hình ảnh phản chiếu: ứng dụng khách trên máy chủ giữ phiên và áp dụng tuyến cùng chính sách, còn khách vay mượn những gì đi ra. Chọn sai chủ sở hữu và mọi triệu chứng về sau sẽ đưa bạn tới máy sai. Hai lệnh giải quyết câu hỏi trong khoảng một phút, và phần còn lại của hướng dẫn này là những gì cần làm với câu trả lời.
Quyết định chủ sở hữu trước khi chạm vào ứng dụng khách
Quy tắc nói về nơi bản mã được tạo ra, không phải về máy nào hiển thị biểu tượng VPN. Nếu khách tạo ra nó, khách cần một tuyến hoạt động tới máy chủ VPN và không cần gì khác từ máy chủ. Nếu máy chủ tạo ra nó, khách cần đường đi qua máy chủ sống sót qua bất kỳ chính sách nào mà ứng dụng khách trên máy chủ áp lên lưu lượng cục bộ.
Ba câu hỏi thường chọn vị trí thay bạn. Lưu lượng của khách có phải sống sót qua một ứng dụng khách doanh nghiệp trên máy chủ không? Vậy đường hầm nằm trong khách. Nhiều khách có cần một thông tin đăng nhập và một địa chỉ ra không? Vậy nó nằm trên máy chủ, với việc chuyển tiếp được cấu hình có chủ đích. Lưu lượng của khách có phải nằm hoàn toàn ngoài VPN của máy chủ không? Vậy đường hầm trong khách là cách sắp xếp duy nhất cho bạn điều đó ngay từ cấu trúc.
Ghi câu trả lời thành một dòng bên cạnh tên VM: guest-owned hoặc host-owned. Trong phòng thí nghiệm sáu máy, ghi chú đó tiết kiệm nhiều thời gian hơn bất kỳ bước nào bên dưới, vì nó ngăn bạn chẩn đoán một đường hầm chưa bao giờ nằm trong máy mà bạn đã đăng nhập.
WSL1 và WSL2 là hai trường hợp trái ngược
WSL1 không phải máy ảo, nên câu hỏi về vị trí phần lớn tan biến. Các tệp nhị phân Linux của nó chạy trên ngăn xếp mạng của Windows qua một lớp biên dịch, và ứng dụng khách VPN Linux không có giao diện độc lập để cấu hình. Cách sắp xếp hiệu quả là một đường hầm ở phía Windows, với bản phân phối dùng kết quả mà không sở hữu gì.
WSL2 thì ngược lại. Nó chạy một nhân thật trong một VM tiện ích nhẹ phía sau một bộ chuyển mạch ảo Hyper-V, và không gian địa chỉ của nó được dịch qua NAT bằng một bộ điều hợp phía máy chủ. Vì thế ứng dụng khách Linux bên trong bản phân phối hành xử như trên một hộp Linux vật lý: nó tạo tun0 hoặc wg0, cài các tuyến riêng và hoạt động. Lỗi nằm ở phía máy chủ. Khi ứng dụng khách VPN của Windows kết nối với chính sách chặn lưu lượng trên mạng cục bộ, nó coi mạng con WSL2 là mạng cục bộ không đáng tin cậy và cắt đường NAT. Bản phân phối sau đó mất DNS và truy cập ra ngoài trong khi đường hầm của chính nó vẫn khỏe: wg show báo bắt tay, ip route trông đúng, và curl bị treo.
Bản sửa nào bạn dùng được phụ thuộc vào bản dựng Windows. Bản cũ hơn là một ngoại lệ trong ứng dụng khách trên máy chủ cho mạng con WSL, được thêm dưới phần cài đặt mạng cục bộ hoặc đường hầm chia tách của ứng dụng khách. Bản mới hơn, trên các bản dựng Windows 11 hỗ trợ nó, là mạng gương: đặt networkingMode=mirrored trong mục [wsl2] của %UserProfile%\.wslconfig, chạy wsl --shutdown, và bản phân phối chia sẻ các giao diện của máy chủ thay vì một mạng con NAT riêng. Chế độ gương cũng thay đổi hành vi của localhost và các cổng vào, nên hãy coi nó là một cuộc di chuyển chứ không phải một công tắc.
NAT, cầu nối và những gì máy chủ có thể thấy
Dưới NAT, các gói của đường hầm khách được đánh địa chỉ tới địa chỉ công cộng của máy chủ VPN và đi ra qua bộ điều hợp của máy chủ dưới dạng UDP hoặc TCP đã mã hóa. Máy chủ thấy một luồng duy nhất và số byte của nó, không biết gì về các đích bên trong. Dưới một bộ điều hợp cầu nối, khách có danh tính lớp 2 riêng trên LAN vật lý, nhận hợp đồng thuê DHCP riêng, và với bất kỳ chính sách dựa trên MAC nào thì trông như một thiết bị thứ hai. Không chế độ nào cho máy chủ đọc tải trọng của đường hầm; khách được cầu nối chỉ đơn giản là dễ thấy hơn nhiều với mạng xung quanh.
Cô lập cũng có một mức sàn. Khách không thể trốn khỏi máy sở hữu bộ nhớ của nó, và ai kiểm soát máy chủ thì có thể đọc khóa từ RAM của khách. Điều một đường hầm trong khách cho bạn là ranh giới định tuyến và ranh giới phần mềm độc hại, không phải sự bảo vệ khỏi người đang cầm chiếc laptop. Các chế độ bộ điều hợp được ghi tài liệu đáng để mở trong khi chọn, vì chế độ thay đổi cả những gì máy chủ thấy và những gì LAN thấy.
Hướng dẫn: đặt, cấu hình, chứng minh
Chạy bốn kiểm tra này theo thứ tự trong một shell khách mới, và dừng ở kiểm tra đầu tiên không khớp với chủ sở hữu bạn đã ghi.
ip route get 1.1.1.1trả vềtun0hoặcwg0nghĩa là thuộc khách, vàeth0với bước nhảy kế tiếp riêng tư nghĩa là thuộc máy chủ.resolvectl query example.com, hoặc đọc/etc/resolv.confở nơi khách không chạy dịch vụ phân giải. Một đường hầm mang lưu lượng nhưng không mang DNS là trạng thái cấu hình nửa vời phổ biến nhất.- So sánh lối ra:
curl -4 -s https://ifconfig.metrong khách so vớicurl.exe -4 -s https://ifconfig.metrên máy chủ. Địa chỉ khác nhau nghĩa là khách sở hữu đường hầm, và một máy chủ trên VPN với khách hiển thị nhà cung cấp tại nhà là trường hợp không thừa hưởng gì. - Lặp lại cả hai với
-6. Đường hầm chỉ v4 rò rỉ v6 trừ khi ứng dụng khách chặn hoặc định tuyến nó, và nhiều ứng dụng khách mặc định để v6 trên giao diện vật lý.
Với thiết kế cổng trên máy chủ, nơi nhiều khách chia sẻ một đường hầm, máy chủ phải chuyển tiếp và biên dịch. Trên máy chủ Linux đó là ba phần, và khách lặng lẽ quay về tuyến thường của nó khi thiếu bất kỳ phần nào:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
iptables -A FORWARD -i virbr0 -o wg0 -j ACCEPT
iptables -A FORWARD -i wg0 -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
Về phía WireGuard, AllowedIPs của đối tác máy chủ phải bao gồm mạng con của các khách, ví dụ 192.168.122.0/24, nếu không các gói trả về sẽ không bao giờ tới và cấu hình trông như một sự cố tường lửa. Một máy chủ Windows đạt cùng kết quả bằng Chia sẻ kết nối Internet hoặc một quy tắc NAT trên bộ chuyển mạch Hyper-V, và cần cùng kiểm tra đường về đó.
Khi bố cục còn mở, bảng này bao quát những cách sắp xếp thường gặp nhất:
| Situation | Owner | Check first |
|---|---|---|
| One VM, host also on a corporate VPN | Guest | Does the host client block local networks? |
| Six lab VMs, one exit address | Host plus forwarding | ip_forward, NAT rule, server AllowedIPs |
| Malware or research VM | Guest, NAT | Snapshot age and resolver state |
| Bridged VM on an office LAN | Guest | DHCP lease and port security |
Hai đường hầm, hai khách và những xung đột giữa chúng
Khi cần hai lối ra cùng lúc, mẫu trụ được là một đường hầm cho mỗi khách. Mỗi VM giữ tuyến mặc định và bộ phân giải riêng, máy chủ ở lại trên mạng thông thường, và hai đường hầm không bao giờ tranh nhau cùng một bảng định tuyến. Bắc cầu hai khách với nhau cũng không gộp các tuyến của chúng: mạng ảo cung cấp một đường đi, và mỗi ứng dụng khách vẫn phải được cho biết rằng lưu lượng cục bộ này có thể bỏ qua đường hầm.
Chạy một đường hầm máy chủ và một đường hầm khách cùng lúc là hợp lệ, và việc lồng nhau có chủ đích đôi khi chính là điều bạn muốn, với khách đi ra qua đường hầm của nó và đường hầm đó đi ra qua đường hầm của máy chủ. Điều biến nó thành sự cố là không ai ghi lại điểm cuối nào phải tới được qua lớp nào. Hãy giữ một danh sách hai cột gồm đích và chủ sở hữu, và xung đột tuyến trở thành một lần tra cứu thay vì một buổi chiều khám phá.
Xác minh, rồi để việc khôi phục cho chủ sở hữu
Kiểm tra từ bên trong khách bằng một tiến trình ứng dụng mới: lưu lượng, phân giải tên, cả hai họ địa chỉ và điều gì xảy ra khi đường hầm rơi. Biểu tượng VPN trên máy chủ không nói gì về độ phủ của khách, và đó là xác nhận sai phổ biến nhất trong toàn bộ lĩnh vực này.
Việc khôi phục cũng thuộc về chủ sở hữu. Một đường hầm thuộc khách được khôi phục bằng ứng dụng khách riêng của khách và các tuyến mà nó đã ghi. Một thiết kế thuộc máy chủ được khôi phục bằng trình tự khởi động của máy chủ, và các quy tắc chuyển tiếp không sống sót qua lần khởi động lại trừ khi một unit hoặc một tác vụ khởi động áp dụng lại chúng. Một ảnh chụp nhanh được khôi phục là một lần triển khai, không phải hoàn tác, vì nó mang lại thông tin đăng nhập cũ và tuyến cũ cùng với đĩa. Trước khi tuyên bố công việc hoàn tất, hãy xác nhận rằng chủ sở hữu vẫn khớp với dòng bạn đã ghi, rằng DNS và cả hai họ địa chỉ phân giải được bên trong khách, rằng một đường hầm chết để lại mạng dùng được thay vì lỗ đen, và rằng khởi động lại hoặc khôi phục ảnh chụp nhanh tái tạo đúng trạng thái đó.