Dlaczego do uzyskania dostępu do portów przychodzących wymagana jest domyślna trasa?

0

Mam tę konfigurację sieci:

- Local router 10.0.0.1, public IP 1.2.3.4
  forwarding port 1002 to 10.0.0.2
  forwarding port 1003 to 10.0.0.3
- Local host 10.0.0.2, server on port 1002, no default route
- Local host 10.0.0.3, server on port 1003, default route via 10.0.0.1
- Remote host public IP 5.6.7.8

Żadne zapory ogniowe nie są skonfigurowane.

Mogę połączyć się z 10.0.0.3 do 10.0.0.2:1002 bez problemów.

Od 5.6.7.8 łączę się z 1.2.3.4:1003 bez problemu, ale 1.2.3.4:1002 nie odpowiada. Jeśli jednak dodam domyślną trasę przez 10.0.0.1 na hoście 10.0.0.2, połączenie zacznie działać.

Tak więc połączenie z 10.0.0.2:1002 zawsze działa w sieci lokalnej, ale działa ze zdalnych hostów tylko wtedy, gdy włączona jest domyślna trasa.

Nie rozumiem różnicy: z perspektywy 10.0.0.2, dlaczego i pakiety przychodzące są różne, gdy pochodzą z innego lokalnego adresu IP lub są przekazywane?

Wizard79
źródło
Gdzie dodałeś domyślną trasę?
djsmiley2k
Czy 10.0.0.2 nie musi wiedzieć, jak wysłać pakiety z powrotem do 5.6.7.8? Musi znać domyślną trasę. Czy w wersji 10.0.0.3 ustawiona jest domyślna trasa? Wyobrażam sobie, że to będzie konieczne.
Dawn Benton,
@ djsmiley2k: napisano w pytaniu: dodaj domyślną trasę przez 10.0.0.1 na hoście 10.0.0.2
Wizard79
@DawnBenton: ale skąd 10.0.0.2 wie, jak wysłać pakiety z powrotem do 10.0.0.3? Dlaczego jest inaczej To jest sedno pytania. Tak, 10.0.0.3 ma ustawiony domyślny zestaw tras, zapisany w pytaniu.
Wizard79
10.0.0.2 nie musi trasować do 10.0.0.3, ponieważ może to zobaczyć. „Domyślna roure” to sposób, w jaki pakiety są wysyłane do innej sieci. 2 i 3 są w tej samej sieci. Przepraszam również, że nie przewinęłem wystarczająco daleko, by zobaczyć, że podałeś, że 3 ma ustawioną trasę.
Dawn Benton,

Odpowiedzi:

1

Gdy 10.0.0.2 otrzyma żądanie z 5.6.7.8 i spróbuje odpowiedzieć, jeśli nie ma wyraźnej trasy do 5.6.7.8 lub domyślnej trasy, na którą można się wycofać, nie będzie wiedział, gdzie wysłać odpowiedź.

Objaśnienie: Zakładając, że 10.0.0.2 i 10.0.0.3 znajdują się w tej samej podsieci (określonej przez maskę podsieci)

Przykładowa tabela tras w wersji 10.0.0.2 (DRUT TRASY w systemie Windows)

Network Destination        Netmask          Gateway       Interface
          0.0.0.0          0.0.0.0         10.0.0.1        10.0.0.2
         10.0.0.0    255.255.255.0         On-link         10.0.0.2
(added by me)10.0.2.0    255.255.255.0         10.0.0.99       10.0.0.2  

Od wersji 10.0.0.2 komputer .3 znajduje się w sieci docelowej „10.0.0.0”. Jest to „On-Link”, co oznacza, że ​​10.0.0.2 i 10.0.0.3 znajdują się na tym samym łączu logicznym. Dlatego pakiety do .2 i .3 nie muszą być kierowane. Wysyłają je bezpośrednio do siebie. Nie dotyczy to routingu.

Gdy .3 lub .2 próbują odesłać pakiet z powrotem do 5.6.7.8 w odpowiedzi na żądanie z 5.6.7.8 (niezależnie od tego, czy jest to NAT przekazane czy faktycznie trasowane), ponieważ 5.6.7.8 nie jest bezpośrednio połączony ani w innych trasach w tabeli tras znajduje się w polu Miejsce docelowe sieci „0.0.0.0” i musiałby wiedzieć, gdzie wysłać pakiet do routingu do miejsca docelowego - w tym przypadku trasy domyślnej.

W powyższej tabeli tras, jeśli 10.0.0.2 próbuje wysłać do 10.0.2.50, przekieruje pakiet przez inny router o 10.0.0.99, ponieważ ta trasa jest określona w tabeli tras. Jeśli ta trasa nie zostanie określona, ​​wróci do trasy domyślnej.

Jeśli więc nie ma wyraźnie zdefiniowanych tras do miejsca docelowego, a miejsce docelowe nie znajduje się w lokalnej podsieci, zostaje wysłane do domyślnego routera.

Dawn Benton
źródło
Czy pakiety przychodzące 5.6.7.8są po prostu kierowane, gdy przekierowanie portów jest włączone? Innymi słowy, w nagłówku IP sourcejest 5.6.7.8i destinationjest 1.2.3.4, i 1.2.3.4przekazuje go takim, jaki jest, 10.0.0.2bez tłumaczenia adresów?
Wizard79
1
Jeśli nie masz konfiguracji NAT, to tak, po prostu ją prześle.
djsmiley2k
1
NAT przepisuje miejsce docelowe w przychodzącym nagłówku pakietu, aby dostarczyć go do hosta w sieci lokalnej, ale źródło nie ulega zmianie. Więc jeśli 5.6.7.8 wyśle ​​żądanie do 1.2.3.4:1002, to 10.0.0.2 zobaczy pakiet z 5.6.7.8 i spróbuje odpowiedzieć na to samo. Zauważ, że źródło pakietu przychodzącego jest takie samo, niezależnie od tego, czy wewnętrzny cel znajduje się za NAT, czy też ma prawdziwy adres IP z możliwością routingu (powiedzmy 1.2.3.6). Wszystko, co robi NAT, polega na tym, że zewnętrzny widzi jednego hosta, przepisuje miejsce docelowe pakietów przychodzących i śledzi za pomocą tabeli mapowania portów.
Dawn Benton