Đường hầm VPN là gì và lớp bảo vệ dừng ở đâu
Đường hầm bọc một lớp phong bì thứ hai quanh những gói đã chọn trên liên kết bạn đã có. Hãy theo dõi một yêu cầu và xem một trang thực sự ghi lại địa chỉ nào.
Máy khách báo đã kết nối, ổ khóa đã đóng, mà một trang vẫn ghi lại địa chỉ căn hộ của bạn. Không có gì hỏng. Đường hầm không thay thế Wi-Fi hay kết nối di động; nó bọc một lớp phong bì thứ hai quanh những gói nhất định và gửi phong bì đó qua mạng bạn đã có. Hiểu mẹo này chủ yếu là theo dõi một yêu cầu và để ý nơi phong bì được mở, vì gần như mọi triệu chứng khó hiểu, từ địa chỉ nhà bị lộ đến bản tải lớn bị kẹt, đều đến từ ranh giới đó.
Hai lớp phong bì, một liên kết vật lý
Laptop giữ kết nối bình thường với router, và router giữ kết nối bình thường với nhà cung cấp. Không có gì trên đường đó thay đổi khi đường hầm được dựng lên. Điều thay đổi là những gói được chọn được giao cho một giao diện ảo, được gói vào một gói mới có địa chỉ của đối tác VPN, và được gửi như lưu lượng bình thường qua liên kết vật lý.
Đầu nhận là một thiết bị mở phong bì và chuyển tiếp gói gốc về phía đích của nó. Giữa hai đầu, người quan sát chỉ thấy phần đầu ngoài và không thấy gì về phần trong, trừ khi giao thức mã hóa nó, điều mà hầu hết giao thức tiêu dùng làm và kỹ thuật chung không bắt buộc.
Đó là lý do giao diện ảo vừa thật vừa gây nhầm lẫn. Nó tồn tại như một đối tượng của nhân với một địa chỉ và một đơn vị truyền tối đa, và hệ điều hành định tuyến lưu lượng vào đó như mọi giao diện khác. Nó không phải cáp, và sự tồn tại của nó chỉ chứng minh rằng một thành phần đã được cài. Việc trình duyệt của bạn có dùng nó hay không do các tuyến quyết định, không phải do giao diện đang bật.
Theo dõi một yêu cầu trên hành trình
Chọn một đích và hỏi nhân xem nó sẽ dùng giao diện nào. Một lệnh duy nhất này giải quyết phần lớn tranh cãi về việc đường hầm có làm gì không:
ip route get 203.0.113.7
ip -brief addr show
ip -4 addr show dev wg0
Nếu đầu ra của tuyến nêu tên giao diện đường hầm, gói sẽ được bọc. Nếu nó nêu giao diện vật lý, gói sẽ không được bọc, và khởi động lại máy khách bao nhiêu lần cũng không thay đổi điều đó. Lệnh thứ hai hiển thị hai giao diện cạnh nhau, và đó là cách bạn phát hiện một đường hầm dựng lên mà không có địa chỉ hoặc có địa chỉ thuộc họ sai.
Sau đó xem bước nhảy đầu tiên từ bên trong phong bì, và so sánh với bước nhảy đầu tiên từ bên ngoài:
traceroute -n -m 3 203.0.113.7
sudo tcpdump -ni wg0 -c 5
Bên trong đường hầm, bước nhảy đầu tiên là địa chỉ bên trong của đối tác, không phải router của bạn. Bắt gói trên giao diện đường hầm hiển thị các gói bên trong, tức lưu lượng mà ứng dụng tưởng là đang gửi. Bắt gói đồng thời trên giao diện vật lý hiển thị các gói bên ngoài, và hai thứ cùng nhau là minh chứng rõ nhất về việc đường hầm thực sự làm gì.
Ba địa chỉ, và trang chỉ thấy một
Người ta liên tục nhầm lẫn những thứ này, và sự nhầm lẫn sinh ra các báo cáo rò rỉ sai. Chúng là những trường khác nhau trong những phần đầu khác nhau với thời gian sống khác nhau.
| Address | Where it appears | Who can see it |
|---|---|---|
| Endpoint address | Outer header, the peer you connect to | Your access network and the path to it |
| Inner tunnel address | Inside the envelope, on the virtual interface | The peer, and anything the peer routes to |
| Exit address | Source of the packet that reaches the website | The website and its upstream |
Con số bên cạnh bộ điều hợp ảo là hàng thứ hai. Đó không phải địa chỉ mà một trang ghi lại, và trích nó như IP công cộng của bạn là hoàn toàn sai. Địa chỉ mà trang thấy do lối ra cấp, và trong một đường hầm tới mạng riêng có thể không có lối ra công cộng nào, vì đích nằm bên trong tổ chức chứ không phải trên internet.
Đường hầm giữa các site là cùng cơ chế với đầu khác. Hai router bọc lưu lượng giữa các mạng, và không thiết bị riêng lẻ nào có máy khách được cài. Phong bì giống nhau về nguyên tắc, còn ranh giới quản trị thì không.
Nơi phong bì được mở, và những gì sống sót qua đó
Đường hầm kết thúc tại đối tác của nó. Nếu mã hóa của chính ứng dụng vươn xa hơn, nó sống sót qua ranh giới đó, đây là trường hợp bình thường của HTTPS: phiên của trình duyệt kết thúc tại trang, nên lối ra chuyển tiếp bản mã mà nó không đọc được.
Không gì khác sống sót theo mặc định. Một yêu cầu không mã hóa vẫn đọc được ở lối ra đúng như nó đọc được trên Wi-Fi của quán cà phê, và đường hầm không thêm lớp bảo vệ mà ứng dụng chưa từng có. Tương tự, các quy tắc tường lửa và chính sách chuyển tiếp của lối ra quyết định điều gì xảy ra tiếp theo; một cái bắt tay thành công là sự thật về kết nối với đối tác, không phải về phần còn lại của hành trình.
Chi phí phụ là hệ quả dễ thấy khác. Mỗi gói mang thêm một phần đầu, và lớp truyền tải bên ngoài có thể thêm phần của nó, nên tải trọng dùng được trên mỗi gói giảm đi. Trên một đường có đơn vị truyền tối đa cố định, đó chính là lý do một đường hầm có thể cho ping đi qua và làm kẹt một lần tải lên lớn.
Kiểm tra con đường mà ứng dụng thực sự đã đi
Bước cuối là xác nhận ứng dụng cụ thể, không phải cả máy nói chung. Phân giải đích, xem tuyến cho địa chỉ đó, rồi quan sát kết nối khi nó đang mở:
getent hosts example.com
ip route get "$(getent hosts example.com | awk '{print $1; exit}')"
ss -tnp state established '( dport = :443 )'
Nếu tuyến nêu đường hầm nhưng danh sách socket hiển thị một kết nối với địa chỉ nguồn từ giao diện vật lý, ứng dụng bị gắn với một thứ cụ thể, hoặc một đường hầm thứ hai đang tranh tuyến mặc định. Đây là câu hỏi định tuyến, và có thể trả lời từ ba đầu ra này thay vì màn hình trạng thái của máy khách.
Kiến trúc bảo mật RFC 4301 mô tả phiên bản lớp IP của cách bọc này cho IPsec, và cùng logic phân lớp áp dụng cho WireGuard và OpenVPN. Một khi bạn chỉ được vào gói bên trong và gói bên ngoài như hai đối tượng riêng, phần lớn hành vi của đường hầm không còn bí ẩn nữa và trở thành một bảng định tuyến mà bạn đọc được.