mboost-dp1

iptables NAT uden connection tracking


Gå til bund
Gravatar #1 - kasperd
26. mar. 2011 18:11
Er her nogen som ved hvordan man kan få iptables til at ændre source og destinations IP på pakker uden at lave connection tracking?

Jeg har et setup hvor nogle pakker kan håndteres stateless, men fordi iptables prøver at oprette en connection tracking entry for hver pakke jeg laver DNAT eller SNAT på, så har jeg en situation hvor nogle af disse entries konflikter, og pakkerne bliver droppet.

Jeg prøvede at sætte timeout ned til 0 sekunder for at se at mine regler virker korrekt i det tilfælde. Men jeg er bekymret for om det betyder at der er andre ting der ikke virker.

Allerhelst ville jeg angive når jeg opretter min DNAT eller SNAT regel, angive at for denne regel skal der ikke oprettes en connection tracking.

Jeg prøvede med NOTRACK, men hvis jeg opretter en NOTRACK regel der matcher pakken, så bliver den forwardet helt uden at evaluere DNAT eller SNAT reglerne, hvilket ikke var det ønskede resultat.
Gravatar #2 - Tukanfan
26. mar. 2011 18:18
Hvordan er NAT da principielt set muligt uden CONNTRACK'ing?
Gravatar #3 - kasperd
26. mar. 2011 18:26
Tukanfan (2) skrev:
Hvordan er NAT da principielt set muligt uden CONNTRACK'ing?
Det afhænger af protokollen. Jeg vil gerne have connection tracking for alle de TCP forbindelser der går igennem min NAT. Men jeg har også nogle tunneler og for dem vil jeg bruge SNAT og DNAT til at sørge for at pakkerne går til det rigtige tunnel endpoint. Der er ingen brug for connection tracking fordi pakken inde i tunnellen ikke bliver ændret. Men iptables opretter connection tracking for IP adresserne i encapsulation headeren, hvilket ikke virker fordi der opstår konflikter imellem de indgange den prøver at oprette.
Gravatar #4 - Tukanfan
26. mar. 2011 19:12
Jeg kan ikke lige sætte mig ind i hvordan de forskellige entries konflikter, da jeg kun har erfaring med iptables og netværk generelt til simpelt hjemmebrug. Hvis jeg har forstået dig ret, så er dine tunnels ikke kompatible med iptables/NAT. Hvilken tunnel-type bruger du desuden?
Gravatar #5 - kasperd
5. apr. 2011 12:33
Tukanfan (4) skrev:
Hvis jeg har forstået dig ret, så er dine tunnels ikke kompatible med iptables/NAT. Hvilken tunnel-type bruger du desuden?
41.

Jeg har to maskiner bagved NAT gatewayen som hver skal køre en tunnel. Den ene bruger 6to4 den anden bruger en konfigureret tunnel.

For udgående pakker kan der aldrig være nogen tvivl om hvordan de skal sendes. Indholdet af pakken skal ikke ændres, modtager IPv4 adresse skal ikke ændres, og afsender IPv4 adresse skal sættes til min offentlige IP adresse.

For indgående pakker vælges destination afhængigt af hvilken source IP pakken har. (Det ville være bedre at kigge på destinations IPv6 inde i pakken, men jeg har ikke fundet en måde at gøre dette på).

Disse regler er fuldstændig stateless, og vil virke korrekt. Men hver gang en regel anvendes oprettes en connection tracking indgang. Og hvis iptables synes den er i konflikt med en allerede oprettet regel droppes pakken i stedet for at sende den til den destination som reglen forskriver.

Hvis jeg sætter net/ipv4/netfilter/ip_conntrack_generic_timeout til 0 virker det. Men jeg er bekymret for om det timeout vil vise sig at påvirke andre pakker også. Der kan sættes separate timeouts for ICMP, UDP og TCP. Det generiske timeout vil dække alle andre protokoller.
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login