NAT là tội lỗi nguyên thủy của Internet tập trung hóa
Network address translation được đề xuất như một giải pháp tạm thời cho sự cạn kiệt IPv4, nhưng nó âm thầm trở thành kiến trúc đã giết chết việc tự lưu trữ ngang hàng và đào tạo cả một thế hệ nghĩ rằng client-server là con đường duy nhất.
Network address translation (NAT) được đề xuất trong RFC 1631 năm 1994 như một giải pháp ngắn hạn cho sự cạn kiệt địa chỉ IPv4. Ba mươi năm sau, nó không chỉ là giải pháp tạm thời—nó là lý do máy chủ tại nhà của bạn không thể truy cập, tại sao bạn phải thuê VPS để lưu trữ bất cứ thứ gì, và tại sao ý tưởng ai đó kết nối trực tiếp đến máy tính của bạn lại có vẻ kỳ lạ hoặc thậm chí nguy hiểm.
Cơ chế này quen thuộc với bất kỳ ai từng gỡ rối mạng gia đình: thiết bị của bạn gửi một gói tin với IP nguồn riêng tư, router viết lại thành IP công cộng và cổng, và phản hồi quay lại qua cùng một ánh xạ. Vấn đề rõ ràng ngay khi một máy chủ bên ngoài muốn khởi tạo kết nối—router không biết gửi nó đi đâu. Đó không phải là lỗi; đó là thiết kế.
Các giải pháp thay thế đều là sự thỏa hiệp
Port forwarding là giải pháp trực tiếp nhất, nhưng nó ánh xạ một IP công cộng+cổng vào một thiết bị tại một thời điểm, điều này hỏng trên CGNAT hoặc mạng tổ chức nơi bạn không kiểm soát thiết bị dịch. UPnP và các biến thể của nó tự động hóa việc chuyển tiếp, nhưng chúng thường bị tắt do nỗi sợ bảo mật sai lầm—và chúng vẫn thất bại nếu ISP của bạn đang dùng carrier-grade NAT.
STUN, TURN, và ICE là bộ giao thức P2P cung cấp năng lượng cho WebRTC. STUN chỉ hoạt động dưới cone NAT; symmetric NAT (phổ biến trên CGNAT) làm cho ánh xạ vô dụng. TURN chỉ chuyển tiếp lưu lượng qua một máy chủ, điều này phá vỡ mục đích. ICE thử mọi thứ theo thứ tự, đó là điều tốt nhất bạn có thể làm trên internet ngày nay—nhưng nó đã thay thế một kết nối trực tiếp đơn giản bằng cơ sở hạ tầng bên ngoài.
IPv6 được cho là sẽ sửa điều này
Giải pháp dài hạn mà RFC 1631 đề cập là IPv6, cung cấp cho mọi người một địa chỉ duy nhất toàn cầu và loại bỏ NAT. Nhưng việc áp dụng đã chững lại, và ngay cả nơi IPv6 tồn tại, ISP và tổ chức vẫn tiếp tục áp dụng NAT do quán tính—đôi khi thậm chí NAT IPv6 với Unique Local Addresses, điều này thật khó hiểu.
Cái giá thực sự là văn hóa
NAT không chỉ làm cho việc lưu trữ khó khăn; nó đào tạo mọi người nghĩ rằng client-server là tự nhiên. Mô hình tư duy tập trung vào đám mây—thiết bị của tôi nói chuyện với máy chủ, máy chủ nói chuyện với thiết bị khác—là sản phẩm của sự khan hiếm địa chỉ, không phải là thuộc tính cơ bản của internet. Tệ hơn, NAT được bình thường hóa như một tính năng bảo mật, khiến mọi người chống lại thứ có thể sửa nó.
NAT không phải là lý do duy nhất khiến internet đầy những khu vườn có tường bao, nhưng nó là lý do đầu tiên. Đó là lý do bạn không thể chỉ gửi một tệp cho bạn bè, tại sao bạn không tự chạy email của mình, và tại sao chạy bất kỳ dịch vụ nào có nghĩa là thuê VPS thay vì sử dụng phần cứng bạn đã sở hữu.
NAT không phải là lý do duy nhất khiến internet đầy những khu vườn có tường bao, nhưng nó là lý do đầu tiên—đó là lý do khó gửi tệp cho ai đó, tại sao bạn không chạy email trên máy tính của mình, và tại sao chạy dịch vụ của riêng bạn khó khăn và thường tốn kém.
| Phương pháp | Cách hoạt động | Hạn chế chính |
|---|---|---|
| Port forwarding | Thủ công ánh xạ một cổng công cộng đến một IP riêng tư | Một IP công cộng+cổng cho mỗi thiết bị; thất bại sau CGNAT |
| UPnP/NAT-PMP/PCP | Phần mềm yêu cầu router tự động chuyển tiếp cổng | Thường bị tắt; thất bại nếu ISP dùng CGNAT |
| STUN | Hỏi máy chủ công cộng địa chỉ bên ngoài của bạn trông như thế nào | Vô dụng dưới symmetric NAT |
| TURN | Chuyển tiếp tất cả lưu lượng qua một máy chủ | Thêm độ trễ và yêu cầu cơ sở hạ tầng bên thứ ba |
| ICE | Thử tất cả kỹ thuật theo thứ tự | Phức tạp; vẫn có thể rơi vào chuyển tiếp |
Thảo luận
0 bình luận
Hãy là người đầu tiên thảo luận.