Kích hoạt cổng so với chuyển tiếp cổng cho máy chủ VPN tại nhà
Kích hoạt mở ánh xạ sau lưu lượng đi ra; chuyển tiếp ánh xạ cổng vĩnh viễn. Máy chủ VPN tại nhà cần cách thứ hai, giới hạn ở trình lắng nghe thật.
Chuyển tiếp cổng và kích hoạt cổng nằm trong cùng một menu trên hầu hết router gia đình, vì vậy chúng bị coi là hai cách làm một việc. Chuyển tiếp là một quy tắc tĩnh: kết nối vào tới một cổng WAN được dịch sang một địa chỉ và cổng bên trong cố định, bất kể có chuyện gì khác xảy ra hay không. Kích hoạt là có điều kiện: router theo dõi lưu lượng đi ra và chỉ mở ánh xạ vào sau khi một kết nối khớp đi ra. Máy chủ VPN chờ người khác kết nối trước, nên chính điều kiện đó là thứ duy nhất nó không bao giờ đáp ứng được.
Hai quy tắc với vòng đời khác nhau
NAT của IPv4 có trạng thái. Khi một máy chủ bên trong gửi gói ra ngoài, router tạo một ánh xạ để các phản hồi tìm được đường về; gói vào không khớp với ánh xạ nào sẽ bị bỏ, và chính hành vi đó giữ một máy để bàn chưa vá ở ngoài internet. Chuyển tiếp là một mục dịch cố định được thêm bằng tay. Kích hoạt là một lỗ tạm thời được canh bởi một mẫu lưu lượng.
Khác biệt thực tế là thời gian. Một chuyển tiếp tồn tại từ lúc lưu đến khi ai đó xóa nó. Một ánh xạ được kích hoạt tồn tại sau khi bộ kích hoạt chạy và đóng lại theo bộ đếm thời gian nhàn rỗi, đo bằng phút trên phần cứng tiêu dùng, hoặc đóng ngay khi khởi động lại.
Không cách nào an toàn hơn về mặt trừu tượng. Chuyển tiếp phơi một cổng liên tục; kích hoạt chỉ phơi nó sau lưu lượng đi ra nhất định. Với một dịch vụ phải nhận gói đầu tiên từ người lạ, chỉ một trong hai phù hợp với công việc.
Vì sao kích hoạt không công bố máy chủ
Máy chủ VPN là thụ động theo thiết kế. Đối tác, dù là laptop trong quán cà phê hay điện thoại trên dữ liệu di động, gửi gói đầu tiên, và router không có ánh xạ nào cho nó. Không có gì bên trong khởi tạo lưu lượng tới cổng kích hoạt, nên quy tắc không bao giờ chạy và kết nối chết trước khi bắt tay bắt đầu.
Ở nơi kích hoạt có vẻ hoạt động, một thứ khác đang tạo lưu lượng trên cổng kích hoạt: một máy khách trong LAN, một đầu dò giám sát hoặc các kiểm tra đi ra của chính máy chủ. Khi đó ánh xạ mở cho đúng một máy đó rồi đóng khi lưu lượng dừng, nên đối tác bên ngoài tiếp theo lại thất bại trong khi thành công đầu tiên nằm trong nhật ký và trông như bằng chứng.
Kích hoạt cũng thường chỉ cho một máy. Nhiều triển khai chỉ cho một thiết bị bên trong giữ ánh xạ tại một thời điểm, điều hoàn toàn sai với một máy chủ phải trả lời nhiều đối tác. Tính năng này được tạo cho các ứng dụng mở kết nối điều khiển ra ngoài và chờ dữ liệu vào trên cổng thứ hai, và nó vẫn phù hợp với hình dạng đó.
Chuyển tiếp thực sự ánh xạ cái gì
Một chuyển tiếp là một mục dịch: cổng và giao thức WAN sang địa chỉ và cổng bên trong. Nó cần một trình lắng nghe đã chạy ở đầu bên kia, và cần địa chỉ bên trong ở yên tại chỗ. Một hợp đồng thuê DHCP chuyển sang máy khác sẽ âm thầm gửi mọi đường hầm tới máy sai, nên hãy tạo đặt trước trước quy tắc.
| Rule | Opens when | Closes when | Fits a VPN listener |
|---|---|---|---|
| Port forward | Saved, at boot | You delete it | Yes |
| Port trigger | Matching outbound traffic | Idle timeout or reboot | No |
Giao thức quan trọng hơn biểu mẫu gợi ý. OpenVPN trên UDP cần chuyển tiếp UDP, WireGuard cần UDP, và dữ liệu IPsec đến dưới dạng ESP, giao thức IP 50, thứ không có cổng nào cả. Một biểu mẫu chuyển tiếp chỉ nhận TCP hoặc UDP không thể diễn đạt điều đó, nên IPsec cần passthrough hoặc ánh xạ tĩnh một-một thay vì một quy tắc cổng.
Lớp phía trên router của bạn
Chuyển tiếp chỉ kiểm soát phần dịch thuộc về bạn. Nếu địa chỉ WAN không phải của bạn, điều xảy ra sau NAT của nhà mạng nơi thuê bao chia sẻ 100.64.0.0/10 như mô tả trong RFC 6598, kết nối vào không bao giờ tới router của bạn vì nhà cung cấp đã dịch trước. Không quy tắc nào trên thiết bị của bạn sửa được thứ tự đó.
NAT kép là cùng vấn đề ở quy mô nhỏ. Router của bạn chuyển tiếp tới router của nhà cung cấp, nơi không có quy tắc khớp và bỏ gói. Hoặc thêm quy tắc trên thiết bị ngoài, hoặc đặt thiết bị ngoài ở chế độ cầu và để thiết bị của bạn giữ địa chỉ công cộng.
Đó là lý do bài kiểm tra phải đến từ bên ngoài. Kiểm tra từ cùng LAN qua địa chỉ công cộng phụ thuộc vào hỗ trợ hairpin NAT và có thể đạt hoặc hỏng vì lý do không liên quan tới quy tắc; một điện thoại trên dữ liệu di động, hay một người bạn ở mạng khác, là cách kiểm tra sạch hơn.
Giới hạn quy tắc, rồi xác minh cả hai nửa
Chuyển tiếp một cổng tới một địa chỉ. Một dải được thêm vì những lần thử đầu thất bại chính là con đường đưa giao diện quản trị ra internet, và trình lắng nghe VPN không cần trang quản trị của router được công bố bên cạnh.
Giữ mọi thứ đã bảo vệ trình lắng nghe đó: danh tính bằng chứng chỉ hoặc khóa, tường lửa của máy, phiên bản gói hiện tại. Chuyển tiếp cho một gói đi vào; xác thực quyết định gói đó có thành đường hầm hay không, và đó là hai lỗi riêng biệt khi có sự cố.
Việc xác minh có hai nửa. Bắt tay phải hoàn tất từ một mạng bên ngoài, rồi một tài nguyên riêng sau máy chủ phải trả lời qua đường hầm. Chuyển tiếp nhận kết nối của đường hầm và không hơn; định tuyến và cấp quyền cho 10.8.0.0/24 là một cài đặt khác trên màn hình khác.
Quyết định bằng ba câu hỏi
Ba câu hỏi giải quyết lựa chọn nhanh hơn bất kỳ bảng so sánh nào:
- Có thứ gì kết nối từ bên ngoài như gói đầu tiên không? Vậy hãy dùng chuyển tiếp, hoặc một relay. Kích hoạt không thể mở nếu không có lưu lượng đi ra mà sẽ không bao giờ tồn tại.
- Lỗ đó có phải sống lâu hơn thời gian nhàn rỗi không? Vậy hãy dùng chuyển tiếp, vì ánh xạ được kích hoạt đóng theo lịch của chính nó.
- Địa chỉ WAN có phải của bạn để công bố không? Nếu không, hãy sửa lớp bên trên trước khi sửa bất kỳ quy tắc nào.
Nếu câu trả lời cho cả ba là không, trường hợp của một laptop tự quay số tới nhà cung cấp thương mại, thì không cần quy tắc nào. Một máy khách sau NAT hoạt động vì nó tự tạo ánh xạ có trạng thái, và điều đó bao phủ phần lớn người đọc trang về chuyển tiếp cổng lúc nửa đêm.