DNAT: Neforwardovani tcp spojeni [trosku delsi] (vyreseno)

Slávek Banko slavek.banko na axis.cz
Neděle Prosinec 31 15:04:53 CET 2006


Pro vysvětlení naznačím rozdíl cesty paketu a odpovědi bez a s 
SNAT/MASQUERADE:

__bez_SNAT__

Notebook1:
  notebook1 => server (na odchodu)

Server:
  notebook1 => server (příjem)
  notebook1 => notebook2 (proveden dnat)
  notebook1 => notebook2 (na odchodu)

Notebook2:
  notebook1 => notebook2 (příjem)
  notebook2 => notebook1 (odpověď)

Notebook1:
  notebook2 => notebook1 (příjem)
   - neočekávaný paket bude ignorován/zahozen

__s_snat__

Notebook1:
  notebook1 => server (na odchodu)

Server:
  notebook1 => server (příjem)
  notebook1 => notebook2 (proveden dnat)
  server => notebook2 (proveden snat/masquerade)
  server => notebook2 (na odchodu)

Notebook2:
  server => notebook2 (příjem)
  notebook2 => server (odpověď)

Server:
  notebook2 => server (příjem)
  notebook2 => notebook1 (obnovení z snat/masquerade)
  server => notebook1 (obnovení z dnat)
  server => notebook1 (na odchodu)

Notebook1:
  server => notebook1 (příjem)

Z toho by mělo být patrné, že DNAT proběhl vždy. Bez přepisu zdrojové 
adresy ale putovaly odpověďi přímo na notebook1, a tak se vracely 
neočekávané pakety. Po doplnění SNAT či MASQUERADE je zajištěna i 
zpáteční cesta paketu přes server.

V případě paketů, které na server přichází z vnějšího rozhraní je zpáteční 
cesta zajištěna "automaticky", protože notebook2 posílá odpovědi na svou 
výchozí bránu, což pravděpodobně je právě server.

Slávek
-- 
Dne neděle 31 prosinec 2006 14:35 Dal Horinek napsal(a):
> Diky moc za nakopnuti,
>
> problem byl v tom, ze MASQUERADE byla jen na eth0 a ve vnitrni siti to
> slo pres eth1, kde se preklad nekonal, takze se to do DNATu vubec
> nedostalo, aspon tak jsem to pochopil.
>
>    Jeste jednou diky moc,
>
>          s pozdravem
>                 Dalibor Horinek
>
> Slávek Banko wrote:
> > Problém může být v tom, že všechny stroje jsou v jedné síti. Z
> > notebook1 odejde paket na server, ten proveden DNAT a předá paket na
> > notebook2. Odpověď z notebook1 již ale jde přímo na notebook1. Jenže
> > ten takový paket neočekává - očekává paket od serveru, ne od
> > notebook2.
> >
> > Doplňte na serveru ještě pravidlo, které na POSTROUTINGu provede SNAT
> > (či MASQUERADE), aby zajistil i zpáteční cestu paketů přes server.
> >
> > Slávek


Další informace o konferenci Linux