Yêu cầu cổng VPN: ba dòng cần viết trước khi so sánh
Xác định câu hỏi về cổng nào bạn thực sự có: đích ra ngoài, công bố vào trong hay vận chuyển của chính đường hầm. Sau đó chỉ hỏi nhà cung cấp điều đó.
Danh sách cổng của các dịch vụ VPN được sao chép giữa các trang so sánh mà thiếu chi tiết quyết định chúng có quan trọng hay không: ai là người khởi tạo kết nối. Một quy tắc cho phép TCP 443 ra ngoài không nói gì về việc một máy chủ khác có thể tiếp cận trình lắng nghe trên máy của bạn hay không. Hãy viết ba yêu cầu riêng biệt trước khi so sánh dù chỉ một gói, và đánh dấu yêu cầu nào mà công việc của bạn thực sự cần. Hầu hết các so sánh thu về một câu hỏi ngắn khi tờ giấy đó tồn tại.
Tách yêu cầu trước khi đọc bất kỳ danh sách cổng nào
Ba dòng bao phủ gần như mọi trường hợp: đến được một đích ngoài đường hầm, công bố thứ gì đó để người khác có thể kết nối vào, và mang chính đường hầm. Mỗi dòng thất bại vì lý do khác nhau, và một chính sách nhà cung cấp đáp ứng một dòng có thể để hai dòng còn lại nguyên vẹn. Xếp công việc của bạn vào đúng dòng mất năm phút và tiết kiệm một cuộc tranh cãi sau này.
| Line | Who starts it | What can block it | Question for the provider |
|---|---|---|---|
| Outbound destination | Your application | Egress filter on the exit node | Is this protocol and port allowed to that destination? |
| Inbound publishing | A remote peer | No mapping, no public address, short lifetime | Which protocol, which external port, and how long does the mapping last? |
| Tunnel transport | Your client to the gateway | The access network drops that protocol | Does the client offer a fallback the local network permits? |
Các tuyên bố tiếp thị làm mờ ba dòng một cách có chủ đích. Cho phép P2P mô tả chính sách đích, địa chỉ chuyên dụng mô tả một địa chỉ, và tuyên bố không có hạn chế cổng thường có nghĩa là gói không liệt kê chúng. Không câu nào trong số đó trả lời các câu còn lại.
Chọn một luồng cụ thể và viết nó thành câu: bên khởi tạo, vận chuyển, cổng, họ địa chỉ, hướng. Một ứng dụng sao lưu ban đêm tải lên máy chủ từ xa chỉ là chiều ra. Một máy chủ trò chơi trên bàn của bạn mà bạn bè tham gia là chiều vào. Chạy cả hai qua một đường hầm nghĩa là tờ giấy cần cả hai dòng, không phải một sự thỏa hiệp giữa chúng.
Truy cập ra ngoài thất bại ở chính sách đích, không phải ở đường hầm
Lưu lượng ra ngoài qua một cổng dịch tạo ra trạng thái. Gói đầu tiên từ một địa chỉ và cổng nội bộ tạo ra một mục dịch, và các phản hồi khớp với nó, đó là hành vi ánh xạ được mô tả trong RFC 3022. Cơ chế đó là lý do một thẻ trình duyệt thường hoạt động mà không cần bất kỳ yêu cầu cổng nào.
Hai điều vẫn phá vỡ nó. Nút thoát có thể lọc các đích hoặc số cổng mà nó cho là có thể bị lạm dụng, và ứng dụng có thể đang lắng nghe trên một cổng mà chính sách thoát chưa bao giờ dự kiến. Hãy hỏi về cặp đích thay vì các quy tắc đầu vào, và mong đợi câu trả lời khác nhau cho TCP và UDP.
Hãy đo trước khi tranh luận. Chạy những lệnh này trên máy sẽ nằm sau đường hầm, một lần khi đường hầm tắt và một lần khi nó bật:
ss -lntup | sort
nc -vz -w 3 203.0.113.10 443
curl -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://example.com
Cùng lệnh, cùng đích, hai trạng thái đường hầm, cho người vận hành một so sánh trước và sau để họ có thể hành động. Hãy thay địa chỉ tài liệu bằng máy chủ bạn thực sự cần; điều quan trọng là so sánh được lặp lại, không phải là một con số nào đó trông ấn tượng.
Công bố vào trong cần một ánh xạ, một địa chỉ và một thời hạn
Không gì từ bên ngoài có thể khởi tạo kết nối tới trình lắng nghe của bạn trừ khi có thứ gì đó ở phía công khai biết nơi chuyển nó tới. Một đặt trước cổng tĩnh do nhà vận hành giữ, một ánh xạ do ứng dụng khách yêu cầu qua UPnP, NAT-PMP hoặc PCP, và một địa chỉ công khai được định tuyến là ba sản phẩm khác nhau với ba giới hạn khác nhau.
Hãy hỏi năm câu về bất kỳ cái nào trong số đó: giao thức nào, cổng ngoài nào, cổng ngoài có được khác cổng cục bộ không, nó bao phủ họ địa chỉ nào, và ánh xạ tồn tại bao lâu sau khi kết nối lại. Một đặt trước gắn với phiên đang hoạt động sẽ biến mất khi phiên đó kết thúc, bất kể trang gói nói gì.
Trước hết hãy xác nhận nửa cục bộ, vì một trình lắng nghe chết và một đường vào bị chặn trông giống nhau từ bên ngoài:
ss -lntup | grep -E ':(8080|51820)\b'
python3 -m http.server 8080 --bind 0.0.0.0
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080
Khi yêu cầu cục bộ trả về 200 và một yêu cầu từ mạng bạn không kiểm soát vẫn hết thời gian chờ, khoảng trống nằm ở phía công khai. Đó là lúc nên nói với nhà vận hành giao thức và cổng ngoài thay vì mô tả ứng dụng bằng tên.
Vận chuyển của chính đường hầm là một câu hỏi riêng
Các cổng của nhà vận chuyển là phần nhỏ nhất của vấn đề và dễ tra cứu nhất. Giá trị mặc định khác nhau theo giao thức, và điều ứng dụng khách có thể thương lượng quan trọng hơn mọi mô tả gói.
| Client | Outer transport | Default port | When it helps |
|---|---|---|---|
| OpenVPN | UDP | 1194 | Default mode; needs outbound UDP to pass |
| OpenVPN | TCP | 443 | UDP is dropped and TCP 443 is not |
| WireGuard | UDP | 51820 | Short handshake; there is no TCP mode |
| IKEv2/IPsec | UDP | 500 and 4500 | Mobile clients; 4500 carries NAT traversal |
Một mạng loại bỏ UDP ra ngoài sẽ chấp nhận đường hầm TCP 443 và từ chối đường hầm UDP, vì vậy một chế độ dự phòng thuộc về tờ yêu cầu. Đổi nhà vận chuyển không di chuyển một cổng ứng dụng bên trong đường hầm và không mở rộng chính sách đích; những thứ đó nằm ở dòng riêng của chúng.
Phân mảnh đáng một lần thử trong khi bạn ở đó, vì một đường hầm kết nối rồi kẹt ở các lần truyền lớn thường có MTU sai chứ không phải cổng đóng:
ping -M do -s 1400 203.0.113.10 ping -M do -s 1372 203.0.113.10
Trên Windows, cùng phép thử là ping -f -l 1400 203.0.113.10. Đặt MTU của đường hầm dưới kích thước lớn nhất đi qua, rồi kiểm tra lại lần truyền đã thất bại.
Xác minh ba dòng trước khi trả tiền cho một gói
Đặt ba dòng lên một trang và điền mỗi ô bằng một kết quả đo được thay vì một lời hứa. Những lệnh này tạo ra nửa cục bộ của trang đó trong khoảng một phút:
ss -lntup | sort
nc -vz -w 3 203.0.113.10 443
python3 -m http.server 8080 --bind 0.0.0.0
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080
ping -M do -s 1400 203.0.113.10
Đọc đầu ra như một danh sách kiểm tra. Chiều ra hoạt động khi đích trả lời với đường hầm bật. Chiều vào chỉ hoạt động khi một máy chủ ngoài mạng của bạn tiếp cận trình lắng nghe trên cổng ngoài. Nhà vận chuyển hoạt động khi bắt tay hoàn tất trên một giao thức mà mạng truy cập của bạn cho phép.
Hai thói quen giữ tờ giấy trung thực. Ghi ngày và phiên bản ứng dụng khách bên cạnh mỗi kết quả, vì cả chính sách nhà cung cấp và giá trị mặc định của ứng dụng khách đều thay đổi. Sau đó yêu cầu ánh xạ hẹp nhất phục vụ luồng, vì một yêu cầu mở mọi thứ thường nhận được sự từ chối hoặc một đợt bán thêm thay vì câu trả lời kỹ thuật.