2009-10-02 16 views
11

Scenariusz jest następujący. Mam dwie maszyny A i B: A: Klient (za NAT) B: Server (za NAT)Jak sprawić, aby serwer TCP działał za routerem (NAT) bez potrzeby konfigurowania przekierowania

Chcę B, aby móc słuchać na danym porcie, tak że A może wysyłać pakiety do B przez ten konkretny port TCP i otrzymasz odpowiedź. Jeśli obie maszyny nie są za NATem, to jest to dość prosty proces. Jak jednak sprawić, aby działał, tak aby działał nawet wtedy, gdy B znajduje się za routerem, bez konieczności zmiany konfiguracji routera umożliwia przekazywanie niektórych portów itp.

Na przykład, w jaki sposób peer-to-peer programy takie jak klienci torrenta działają bez konieczności konfigurowania przez użytkownika?

+1

Można mieć więcej szczęścia na serverfault.com – NotMe

+0

Zakładam, to pytanie jest, jak napisać serwer do pracy za NAT, zamiast jak skonfigurować to. –

Odpowiedz

0

Alternatywą dla serwera proxy jest serwer dopasowujący. Zamiast pełnić rolę proxy całego ruchu, twórca dopasowań po prostu negocjuje, aż inni będą mogli ze sobą rozmawiać. Obejmuje to znalezienie zewnętrznych publicznych adresów IP rówieśników i rozmowę z każdym z nich, aby firewall/router wiedział, że partnerzy chcą się komunikować.

Nazywa się to hole punching i często musi to robić sam twórca meczu, a nie sami. Po otwarciu dziury konstruktor dopasowań może powiedzieć o sobie nawzajem i może komunikować się bezpośrednio.

+1

Dziurkowanie otworów AFAIK działa tylko w przypadku UDP - i tylko wtedy, gdy mapowanie portu UDP jest zgodne z routerem. –

+0

ah .. on mówi TCP w pytaniu .. –

+0

Czytałem o dziurkowaniu, czy dziurkowanie TCP działa również? Być może nie jest to jednak łatwe do wdrożenia, ale spróbuję, ponieważ wygląda na to, czego szukam. Dzięki. – Chetane

1

Trzeba będzie albo:

  1. Konfigurowanie przekierowania portów z nat bramy przed serwera do urządzenia oprogramowania serwera jest uruchomiony, i klient połączyć się z adresem IP ta brama .

  2. Tworzenie serwera proxy siedzi pomiędzy nimi 2 nat gatewys więc zarówno serwer i klient może połączyć do tego. Zarówno serwer, jak i klient muszą ustanowić połączenie z tym serwerem proxy , które będzie pośredniczyć w danych między tymi dwoma połączeniami.

+0

Witam, Mam przewidziane to rozwiązanie, jedynym problemem z tym rozwiązaniem jest to, że obciążenie będzie znaczne na serwerze proxy, to kosztowne. – Chetane

6

Aby odpowiedzieć na przykład programów peer to peer, a ogólnie: Jest to technologia o nazwie Universal Plug and Play które routery NAT można używać, aby umożliwić klientom za nimi, aby odsłonić porty na zewnątrz. To właśnie klienci bittorrent mogą wykorzystać, aby inni klienci mogli się do nich bezpośrednio podłączyć.

+0

, ale czy UPnP nie jest tylko sposobem automatyzacji automatyzacji przekierowania portów? –

+1

Kluczem jest * automatyzacja * - Zakładam, że "nim" w pytaniu jest użytkownik. Unikanie ręcznego ustawiania przekierowania portów jest zarówno pięknem, jak i niebezpieczeństwem UPnP. –

0

Dziurkowanie jest umiarkowanie zrozumiałe w przypadku komunikacji UDP, ale można go również niezawodnie wykorzystać do skonfigurowania strumieni TCP równorzędnych (peer-to-peer). Oto dobrze szczegółowy artykuł na temat zarówno TCP i UDP:

http://www.brynosaurus.com/pub/net/p2pnat/

Powiązane problemy