2009-12-30 34 views
12

Nếu tôi có hai máy tính nội bộ kết nối với cùng một địa chỉ IP bên ngoài thông qua bộ định tuyến NAT, thì bộ định tuyến có thể nhận lưu lượng truy cập đến máy tính nội bộ chính xác như thế nào? Đó là sự hiểu biết của tôi rằng NAT chuyển tiếp các gói dữ liệu đến máy tính mà gần đây đã gửi các gói gửi đi đến địa chỉ IP của người gửi đến. Vì cả hai máy tính đang gửi đến cùng một địa chỉ, router có chuyển tiếp gói tin đến cả hai không? Nếu đúng như vậy, đó là trách nhiệm của phần mềm máy khách để xác định gói nào có liên quan?Làm thế nào để hai máy tính kết nối với cùng một địa chỉ bên ngoài thông qua NAT?

Có thể nếu cả hai máy tính đang cố gắng kết nối với cùng một cổng?

+3

Nếu bạn hỏi xem chương trình dựa trên IP của bạn có cần phải biết NAT hay không, câu trả lời là không - đó là lý do tại sao nó thành công. –

+0

Có một câu trả lời được chấp nhận, vì vậy tôi không thấy điểm trong tiền thưởng. –

+0

@RonMaupin anh ấy muốn cung cấp một số tiền thưởng danh tiếng của mình cho câu trả lời hiện có bởi vì anh ấy thích nó hoặc nó đã giúp anh ấy rất nhiều. Xem mô tả về tiền thưởng * Một hoặc nhiều câu trả lời là gương mẫu và xứng đáng với một tiền thưởng bổ sung. Khen thưởng câu trả lời được chấp nhận hiện tại *. Mọi người ở đây thường xuyên làm điều đó và thưởng thêm tiền thưởng cho những câu trả lời tốt ngay cả sau nhiều năm. –

Trả lời

26

Khi mở ổ cắm, bạn cần phải giải quyết một cổng của hệ thống đích và mở một cổng nghe liên hợp trên hệ thống của riêng bạn để nhận bất kỳ phản hồi nào. Bạn phải gửi hệ thống đích đến cổng nghe của bạn.

Có nhiều hơn một hệ thống sử dụng modem cùng

Khi bạn khởi động trình duyệt web, và đi đến www.google.com:80, trình duyệt của bạn có được/tìm kiếm cho một cổng liên hợp không thuộc hệ thống miễn phí từ hệ thống để nghe. Chúng ta hãy nói, cổng liên hợp là 10000. Cổng nghe là để nhận lại luồng http từ google.

Sau đó, con bạn ngồi bên cạnh bạn tình cờ cũng duyệt www.google.com:80 và anh/cô phiên google của trạm chơi hay xbox-bất cứ điều gì cũng tình cờ được gán cổng liên hợp 10000.

Cả hai bạn đang ngồi sau một modem cáp, và đằng sau modem cáp là bộ định tuyến không dây của bạn.Và cả hai hệ thống của bạn đều nằm phía sau bộ định tuyến không dây - Tất cả đều nằm trong chuỗi đó, cấu trúc liên kết mạng.

Để ngăn chặn cổng địa chỉ va chạm trên router/modem

Chúng ta hãy nói rằng DHCP công ty cáp của bạn gán modem ip4 địa chỉ 72.72.72.72. Nhưng DHCP không dây của bạn gán 192.168.0.10 cho hệ thống của bạn và 192.168.0.11 cho hệ thống của con bạn.

Khi khung chứa thông tin của các cổng người nghe của bạn vượt qua bộ định tuyến NAT của bạn, nó sẽ dịch một hoặc cả hai cổng nghe. Giả sử cổng 15000 cho trang của bạn và cổng 16000 cho trang của con bạn.

Bộ định tuyến không dây của bạn sau đó gửi yêu cầu của bạn đến máy chủ google như đến từ 72.72.72.72:15000 và 72.72.72.72:16000.

Máy chủ Google sau đó sẽ phản hồi riêng 72.72.72.72:15000 và 72.72.72.72:16000 và khi bộ định tuyến không dây gặp phản hồi, nó sẽ đưa vào bản đồ mà nó đã lưu trữ và dịch 72.72.72.72:15000 đến 192.168. 0,10: 10000 để tiếp cận hệ thống của bạn nhưng dịch 72.72.72.72:16000 đến 192.168.0.11:10000 để tiếp cận hệ thống của con bạn.

Chạy web/trò chơi/ftp/etc máy chủ

Nhưng nếu bạn có một máy chủ web hoặc máy chủ FTP chạy trên hệ thống của bạn. Điều gì nếu bạn có hai hệ thống và cả hai đều có một máy chủ web và cả hai máy chủ web đang lắng nghe trên cổng 80?

Giả sử địa chỉ ip cục bộ được đăng ký/gán với bộ định tuyến không dây của hệ thống máy chủ web đầu tiên của bạn là 192.168.0.30 và hệ thống máy chủ web thứ hai của bạn là 192.168.0.40.

Bộ định tuyến không dây sẽ có trang web cấu hình thường theo mặc định 192.168.0.1:80, trừ khi bạn thay đổi nó. Sẽ có một tab để trên trang nơi bạn có thể xác định/dự trữ ánh xạ cổng ứng dụng.

Bạn có thể đăng ký với router không dây của bạn để bảo lưu bản đồ

192.168.0.30:80 => outgoing port 8080 
192.168.0.40:80 => outgoing port 8088 

Vì vậy, bạn phải gọi điện thoại cho bạn bè của bạn trên web/trò chơi máy chủ của bạn là địa chỉ thông qua 72.72.72.72:8080 và 72.72.72.72:8088 tương ứng, nơi bộ định tuyến không dây sẽ loại trừ cổng 8080 và 8088 khỏi mức sử dụng NAT động của riêng nó.

Tất nhiên, 72.72.72.72 chỉ hoạt động tốt trước khi ISP DHCP của bạn quyết định gia hạn địa chỉ ip4 của modem của bạn, 72.72.90.200. Sau đó, bạn sẽ phải gọi điện/gửi email cho bạn bè của mình và nói Xin chào, địa chỉ của máy chủ đã thay đổi thành 72.72.90.200:8080 và 72.72.90.200:8088 tương ứng. Hoặc bạn có thể đăng ký dịch vụ dns động (ddns) để sử dụng miền được đặt tên, nơi dịch vụ ddns sẽ cần bạn cài đặt tiện ích nhịp tim đơn giản trên hệ thống của bạn để giúp họ theo dõi biến thể địa chỉ. Bản dịch DDNS là một vấn đề/chiến lược riêng biệt.

modem NAT

Mới hơn hợp đồng ISP cung cấp cho bạn với một modem có NAT. Nếu vậy, bạn phải tắt hoặc là một trên modem của bạn hoặc một trên router không dây của bạn. Bạn không nên sử dụng cả hai - những gì là điểm trong dịch hai lần vì NAT chỉ đơn giản là để ngăn chặn va chạm địa chỉ.Khi bạn tắt NAT từ bộ định tuyến không dây, nó có thể hoạt động như một công tắc trung tâm và không phải là bộ định tuyến nữa để bạn có thể kết nối nó với modem bằng cách sử dụng một trong các ổ cắm LAN thay vì ngắt ổ cắm WAN của nó.

+3

+1 Thật là một lời giải thích tuyệt vời! Tôi đã luôn luôn thất vọng bởi thực tế là hầu hết các giải thích của NAT không bao giờ thực sự xóa bỏ cách trả lời các kết nối gửi đi làm cho nó trở lại với người gửi. – AaronLS

1

Nó sử dụng các cổng khác nhau cho lưu lượng truy cập bên ngoài, và NAT sau đó định tuyến các gói trên một cổng đến một địa chỉ IP nội bộ và các gói từ cổng khác đến địa chỉ IP nội bộ khác ... máy tính nội bộ, khi nó đi qua NAT trên đường ra, thiết lập cổng nào sẽ được sử dụng cho lưu lượng truy cập đến từ địa chỉ IP bên ngoài và nó cho máy chủ bên ngoài biết cổng nào sẽ gửi lưu lượng truy cập đó cho kết nối đó.

4

Bộ định tuyến quản lý các cổng "nguồn" riêng biệt cho mỗi máy tính. Trong khi bạn có thể kết nối với cổng 80 trên "đích", router có thể gán cổng nguồn cho một số cổng số cao.

Wikipedia tiền nó lên như

Mạng dịch địa chỉ liên quan đến lại bằng văn bản cho các địa chỉ nguồn và/hoặc chỉ IP đích và thường cũng là/số cổng UDP TCP IP gói khi chúng đi qua NAT. Séc (cả IP và TCP/UDP) phải cũng được viết lại để tính đến số các thay đổi.

+0

Sửa lỗi nếu tôi sai: Cả hai máy tính ban đầu đều yêu cầu kết nối đến 1.1.1.1 trên cổng 1000. Bộ định tuyến tạo cổng mới, 40000 và 40001. Bộ định tuyến gửi gói tin cùng, vẫn kết nối trên cổng 1000. Khi máy chủ gửi nó trở lại, nó sẽ gửi lại cổng 40000 hoặc 40001. Điều đó có ý nghĩa, ngoại trừ việc tôi nghĩ khi mở một kết nối, việc gửi và nhận xảy ra trên cùng một cổng. – user241146

+3

Một "ổ cắm" bao gồm bốn phần dữ liệu: địa chỉ IP gốc, cổng gốc, IP đích và cổng đích. Trong ví dụ của bạn, các cổng 40000 và 40001 là các cổng nguồn, 1000 là một cổng đích. – kdgregory

2

câu trả lời Đã tốt được cung cấp, nhưng đây là một ví dụ:

HOST A addr   HOST B addr 
    10.1.0.2:4040  10.1.0.3:4040 
----------------------------------------- 
NAT 200.50.50.28:4040 200.50.50.28:4041 (what external host sees) 

200.50.50.28 là bộ định tuyến của toàn cầu (internet) IP.

Mọi số cổng là duy nhất trong bảng NAT. Và tất nhiên, bộ định tuyến thực hiện tất cả công việc bẩn sửa đổi địa chỉ nguồn và đích một cách minh bạch.

+0

Vì vậy, nếu hai máy tính sử dụng cùng một cổng nguồn, router sẽ tự động gán lại một cổng src mới cho bất kỳ Máy chủ nào? Và sau đó máy chủ lưu trữ A và Host B kết nối để thấy một cổng src khác nhau? Nếu không có va chạm trên các cổng của Host A và Host B thì router sẽ không thay đổi cổng src? Chỉ muốn xác nhận nếu tôi hiểu chính xác. Cảm ơn – kuchi

+1

@kuchi, có máy chủ nhìn thấy một cổng khác nhau cho mỗi máy chủ lưu trữ. Các bộ định tuyến trong xung đột địa chỉ giải quyết chung, tức là cùng một cổng có thể được sử dụng nếu hai máy chủ kết nối với hai máy chủ khác nhau. Bộ tuple '(src_ip, src_port, dest_ip, dest_port)' phải khác biệt. –

1

RFC3022 cung cấp nhiều thông tin về cách thức hoạt động của

Các vấn đề liên quan