Chuyển tiếp cổng là gì và nó được sử dụng để làm gì?


215

Có rất nhiều câu hỏi về 'chuyển tiếp cổng' , nhưng dường như không có câu hỏi nào nêu rõ nó là gì và nó được sử dụng để làm gì. Vì thế:

  1. Chuyển tiếp cổng là gì?

  2. Nó được dùng để làm gì và tại sao tôi lại cần nó?


1
Tôi nghĩ rằng điều này là đủ tốt: portforward.com/help/portforwarding.htmlm
Koray Tugay

Câu trả lời:


318

Những thứ cơ bản

Để thực sự giải thích chuyển tiếp cổng, trước tiên bạn cần hiểu thêm một chút về những gì bộ định tuyến của bạn làm. Nhà cung cấp dịch vụ internet của bạn chỉ định một địa chỉ IP cho kết nối internet của bạn. Tất cả các máy tính trên internet cần một địa chỉ IP duy nhất, nhưng bạn có nhiều máy tính trong nhà và chỉ có một địa chỉ. Vậy làm thế nào để làm việc này?

Nếu bạn biết nó là gì và chỉ muốn biết cách thực hiện : http://portforward.com/ có cách thực hiện với ảnh chụp màn hình cho hàng trăm bộ định tuyến khác nhau. Tài liệu này được ẩn đằng sau một trang quảng cáo cho công cụ portconfig tự động của họ. (Chỉ cần nhấp xung quanh một chút là bạn sẽ tìm thấy nó.)

NAT - Chuyện gì vậy? tại sao chúng ta sử dụng nó?

Bộ định tuyến gia đình của bạn có một chức năng gọi là Dịch địa chỉ mạng hoặc NAT, được tích hợp. Bên trong mạng của bạn, các máy tính có địa chỉ như 192.168.1.100. Tất cả các địa chỉ trong phạm vi 192.168. * (Hoặc trong phạm vi 10. *) là địa chỉ " riêng tư " hoặc " dành riêng " . Các địa chỉ này được IANA gán chính thức sẽ được sử dụng bên trong các mạng riêng. Bộ định tuyến của bạn sẽ tự động gán một địa chỉ như vậy cho mỗi máy tính được kết nối qua DHCP . Các địa chỉ này là cách các máy tính trong mạng của bạn giao tiếp với bộ định tuyến và với nhau.

Bộ định tuyến của bạn có giao diện mạng riêng biệt kết nối nó với internet. Giao diện này có một địa chỉ rất khác được chỉ định bởi ISP của bạn. Đây là một địa chỉ mà tôi đã đề cập trước đây và bộ định tuyến của bạn sử dụng nó để liên lạc với các máy tính khác trên internet. Các máy tính bên trong mạng của bạn có địa chỉ IP riêng không thể định tuyến , nghĩa là nếu chúng gửi các gói trực tiếp tới internet, các gói sẽ tự động bị hủy (các gói có địa chỉ riêng không được phép truy cập internet vì lý do ổn định). Nhưng bộ định tuyến của bạn có một địa chỉ có thể định tuyến . Dịch địa chỉ mạng, như tên gọi của nó, dịch giữa hai loại địa chỉ này, cho phép nhiều máy tính trong mạng của bạn xuất hiện trên internet dưới dạng một máy tính có một địa chỉ.

Chi tiết

Mặc dù điều này nghe có vẻ phức tạp nhưng thực sự khá đơn giản cách bộ định tuyến của bạn thực hiện. Mỗi khi máy tính trong mạng của bạn muốn kết nối với máy tính trên internet, nó sẽ gửi yêu cầu kết nối đến bộ định tuyến (nó biết gửi nó tới bộ định tuyến vì tham số Cổng mặc định của nó được đặt thành địa chỉ của bộ định tuyến). Sau đó, bộ định tuyến nhận yêu cầu kết nối đó ("yêu cầu SYN" trong TCP / IP) và thay đổi địa chỉ nguồn ("trả lời" hoặc địa chỉ trả về) và thay đổi nó từ IP riêng của máy tính thành IP công cộng của bộ định tuyến, để phản hồi sẽ được gửi đến bộ định tuyến. Sau đó, nó lưu ý trong một cơ sở dữ liệu (được gọi là bảng NAT ) rằng kết nối đã được bắt đầu, để nó ghi nhớ nó sau này.

Khi phản hồi trở lại từ máy tính từ xa ("SYN-ACK"), bộ định tuyến nhìn vào bảng NAT của nó và thấy rằng một kết nối đến máy chủ đó trên cổng đó trước đây được khởi tạo bởi một máy tính riêng trên mạng của bạn, sẽ thay đổi đích địa chỉ đến địa chỉ riêng của máy tính và chuyển tiếp nó vào trong mạng của bạn. Theo cách này, các gói có thể tiếp tục truyền qua lại giữa các mạng, với bộ định tuyến thay đổi địa chỉ một cách trong suốt để nó hoạt động. Khi kết nối bị ngắt, bộ định tuyến sẽ xóa nó khỏi bảng NAT.

Hoặc nghĩ về nó theo cách này

Điều này có thể dễ hình dung hơn một chút với phép ẩn dụ - giả sử bạn là người giao nhận hàng hóa ở Mỹ làm việc với khách hàng Trung Quốc. Họ cần gửi các gói đến nhiều khách hàng ở Mỹ, nhưng vì lý do hải quan / giấy tờ dễ dàng hơn khi chỉ gửi các gói đến một nơi. Vì vậy, một gói đến với bạn từ một trong những khách hàng của bạn ở Trung Quốc (mạng riêng, trong ví dụ này) với một điểm đến thực tế ở đâu đó ở Mỹ (internet). Bạn thay đổi nhãn địa chỉ trên hộp thành địa chỉ Hoa Kỳ (công khai) và bạn thay đổi địa chỉ trả lại thành địa chỉ công cộng của riêng bạn (vì nó không thể được trả thẳng về Trung Quốc mà không gây phiền hà cho khách hàng) và chuyển cho dịch vụ bưu chính . Nếu khách hàng trả lại sản phẩm, nó sẽ đến với bạn. Bạn tra cứu nó trong hồ sơ của bạn và xem nó đến từ công ty nào ở Trung Quốc,

Điều này hoạt động rất tốt, nhưng có một chút vấn đề. Điều gì sẽ xảy ra nếu khách hàng cần gửi một cái gì đó cho công ty, giả sử một lệnh chuyển tiền để thanh toán một cái gì đó? Hoặc giả sử rằng một máy tính trên internet khởi tạo kết nối với bộ định tuyến (yêu cầu SYN), nói với máy chủ web có trong mạng. Thư / gói chỉ có địa chỉ công khai của bộ định tuyến trên đó, vì vậy bộ định tuyến thực sự không biết gửi nó ở đâu! nó có thể được dành cho bất kỳ máy tính nào trên mạng riêng hoặc cho bất kỳ máy tính nào trong số chúng. Bạn có thể đã gặp phải vấn đề này khi bạn gọi điện thoại về nhà của ai đó - khi họ gọi cho bạn thì không vấn đề gì, nhưng khi bạn gọi cho họ thì không có cách nào để họ biết ai là người gọi, vì vậy người đó có thể trả lời sai.

Mặc dù con người đủ dễ dàng để sắp xếp việc này, nhưng nó rất phức tạp đối với máy tính, bởi vì không phải mọi máy tính trên mạng của bạn đều biết tất cả các máy tính khác.

Và cuối cùng chúng tôi cũng đến được Cảng chuyển tiếp

Chuyển tiếp cổng là cách chúng tôi khắc phục sự cố này: đó là cách để cho bộ định tuyến của bạn biết máy tính nào trong mạng kết nối đến sẽ được hướng đến. Chúng tôi có ba cách khác nhau để làm điều này:

  • Faux-DMZ : rất nhiều bộ định tuyến có một tính năng gọi là DMZ. Đây là viết tắt của Khu phi quân sự, là một loại cấu hình bảo mật mạng. DMZ trên các bộ định tuyến gia đình thường được gọi là DMZ giả vì nó thiếu các tính năng của DMZ thực tế. Những gì nó làm là loại xử lý kết nối đơn giản nhất: tất cả các yêu cầu kết nối đến sẽ được gửi đến một chỉ định trong mạng của bạn. Thật đơn giản - bạn nhập địa chỉ IP vào cấu hình của bộ định tuyến và tất cả các kết nối đến đó. Tuy nhiên, điều này không phải lúc nào cũng hoạt động vì bạn có thể có nhiều máy tính cần chấp nhận kết nối đến. Vì thế, chúng ta có ...
  • Chuyển tiếp cổng : Tất cả các yêu cầu kết nối mạng bao gồm "cổng". Cổng chỉ là một con số và đó là một phần trong cách máy tính biết gói tin là gì. IANA đã chỉ định rằng Cổng 80 được sử dụng cho HTTP. Điều này có nghĩa là một gói đến có cổng số 80 phải là một yêu cầu dành cho máy chủ web. Chuyển tiếp cổng trên bộ định tuyến của bạn cho phép bạn nhập số cổng (hoặc có thể là phạm vi hoặc kết hợp số, tùy thuộc vào bộ định tuyến) và địa chỉ IP. Tất cả các kết nối đến với số cổng phù hợp sẽ được chuyển tiếp đến máy tính nội bộ có địa chỉ đó.
  • Chuyển tiếp cổng UPnP : Chuyển tiếp UPnP hoạt động chính xác giống như chuyển tiếp cổng, nhưng thay vì bạn thiết lập nó, phần mềm trên máy tính trong mạng sẽ tự động đặt bộ định tuyến chuyển tiếp lưu lượng truy cập trên một cổng nhất định tới nó.

Một ví dụ

Hãy xem xét một ví dụ sử dụng. Rất nhiều trò chơi video nhiều người chơi (ví dụ như Counter Strike) cho phép bạn chạy một máy chủ trò chơi trên máy tính mà người khác có thể kết nối để chơi với bạn. Máy tính của bạn không biết tất cả những người muốn chơi, vì vậy nó không thể kết nối với họ - thay vào đó, họ phải gửi yêu cầu kết nối mới tới máy tính của bạn từ internet.

Nếu bạn không có bất cứ thứ gì được thiết lập trên bộ định tuyến, nó sẽ nhận được các yêu cầu kết nối này nhưng nó sẽ không biết máy tính nào trong mạng có máy chủ trò chơi, vì vậy nó sẽ bỏ qua chúng (hoặc cụ thể hơn là nó sẽ gửi trở lại một gói chỉ ra rằng nó không thể kết nối). May mắn thay, bạn biết số cổng sẽ có trong yêu cầu kết nối cho máy chủ trò chơi. Vì vậy, trên bộ định tuyến, bạn đặt một cổng chuyển tiếp với số cổng mà máy chủ trò chơi mong đợi (ví dụ: 27015) và địa chỉ IP của máy tính với máy chủ trò chơi (ví dụ: 192.168.1.105).
Bộ định tuyến sẽ biết để chuyển tiếp các yêu cầu kết nối đến 192.168.1.105 bên trong mạng và các máy tính bên ngoài sẽ có thể kết nối.

Một ví dụ khác là một mạng cục bộ có hai máy, trong đó máy thứ hai có IP 192.168.1.10 lưu trữ một trang web sử dụng Apache. Do đó, bộ định tuyến nên chuyển tiếp cổng 80 yêu cầu đến máy này. Sử dụng chuyển tiếp cổng, cả hai máy có thể chạy trong cùng một mạng cùng một lúc.

Biểu đồ ví dụ chuyển tiếp cổng

Trò chơi video có lẽ là nơi phổ biến nhất mà người dùng hàng ngày sẽ gặp phải chuyển tiếp cổng, mặc dù hầu hết các trò chơi hiện đại đều sử dụng UPnP để bạn không phải thực hiện thủ công (thay vào đó, nó hoàn toàn tự động). Bạn sẽ cần phải làm điều này bất cứ khi nào bạn muốn có thể kết nối trực tiếp với một cái gì đó trong mạng của bạn (chứ không phải thông qua một số trung gian trên internet). Điều này có thể bao gồm chạy máy chủ web của riêng bạn hoặc kết nối qua Remote Desktop Protocol với một trong các máy tính của bạn.

Một lưu ý về bảo mật

Một trong những điều tốt đẹp về NAT là nó cung cấp một số bảo mật tích hợp miễn phí. Rất nhiều người lang thang trên mạng để tìm kiếm các máy dễ bị tổn thương ... và họ làm điều này bằng cách cố gắng mở các kết nối với các cổng khác nhau. Đây là các kết nối đến, vì vậy, như đã thảo luận ở trên, bộ định tuyến sẽ loại bỏ chúng. Điều này có nghĩa là trong cấu hình NAT, chỉ có bộ định tuyến dễ bị tấn công liên quan đến các kết nối đến. Đây là một điều tốt, bởi vì bộ định tuyến đơn giản hơn nhiều (và do đó ít có khả năng bị tổn thương hơn) so với một máy tính chạy hệ điều hành đầy đủ với rất nhiều phần mềm. Sau đó, bạn nên nhớ rằng bằng cách DMZing một máy tính trong mạng của bạn (đặt nó làm đích DMZ), bạn sẽ mất lớp bảo mật đó cho máy tính đó: giờ đây nó hoàn toàn mở cho các kết nối đến từ internet, Vì vậy, bạn cần phải bảo mật nó như thể nó được kết nối trực tiếp. Tất nhiên, bất cứ khi nào bạn chuyển tiếp một cổng, máy tính ở đầu nhận sẽ trở nên dễ bị tổn thương trên cổng cụ thể đó. Vì vậy, hãy đảm bảo bạn chạy phần mềm cập nhật được cấu hình tốt.


2
Bạn đã đề cập ngắn gọn về nó, nhưng bạn có thể muốn giải thích về tầm quan trọng của việc sử dụng chuyển tiếp cổng theo kiểu DMZ. Tôi không thể nghĩ về một trường hợp duy nhất trong đó nó là một ý tưởng tốt, trong môi trường sản xuất, để phơi bày thứ gì đó như máy chủ sql (hoặc bất cứ thứ gì) ra thế giới bên ngoài. Chuyển tiếp cổng có thể giúp có được các tài nguyên được bảo vệ mà không ảnh hưởng nghiêm trọng đến bảo mật.
Brian Vandenberg

11
Một chi tiết không được mở rộng trong phần NAT là thực tế là nếu các máy tính trong mạng của bạn sử dụng DHCP để lấy địa chỉ IP riêng không thể định tuyến bên trong của chúng, thì có thể một cái được gán cho chúng sẽ thay đổi và nếu điều đó xảy ra thì việc chuyển tiếp cổng sẽ bị rôi tung. Tốt nhất là tránh điều đó bằng cách thiết lập địa chỉ mạng của mỗi máy tính theo cách thủ công. portforward.com nhấn mạnh tầm quan trọng của việc này và có một hướng dẫn mô tả cách thiết lập địa chỉ IP tĩnh trên hệ thống, tuy nhiên họ không đề cập đến việc phải cấu hình DHCP của bộ định tuyến để tránh các địa chỉ NAT hiện được bảo lưu này.
martineau

2
@jcrawfordor, Hi, bạn có quan tâm giải thích như thế nào chính xác là UPnP hoàn toàn tự động? UPnP là gì và nó hoạt động như thế nào?
Pacerier

1
@martineau bảo lưu địa chỉ DHCP là một cách tốt để làm điều này. Một số bộ định tuyến bạn có thể chuyển tiếp tới các máy khách cụ thể, không phải địa chỉ, điều này thậm chí còn thích hợp hơn.
Baldrickk

2
Một phần của câu trả lời có nội dung: "Cổng chỉ là một con số và đó là một phần trong cách máy tính biết gói tin là gì". là sai lệch. Sửa số cổng cho một ứng dụng là một quy ước, nó không phải là yếu tố quyết định loại gói. Tốt nhất là một gói có nghĩa là cổng 80 có thể được đoán là HTTP, không có gì khác, nó sẽ hoàn toàn phụ thuộc vào (ở lớp ứng dụng) ứng dụng nghe trên cổng 80.
codeman48
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.