12. februar 2012 - 09:27Der er
13 kommentarer og 1 løsning
Iptables NAT "husker" regler selvom de er fjernet
Goddag,
Jeg har et problem med iptables som jeg benytter til at NAT'te nogle spil servere igennem en "hoved" maskine.
eth0: internet (192.168.1.2) eth1: lokal netværk (10.10.10.1->10.10.10.10)
Spil serverene har deres eget netværk, de er forbundet med hoved maskinen via eth1, serverene bliver så nattet igennem hoved maskinen så alt trafik på eth0 ryger videre til eth1 via iptables regler.
Mit problem er at iptables på en eller anden måde "husker" reglerne selvom de er blevet slettet. Spil serverene kører med load ballance system så en port kan godt blive tildelt forskellige spil servere.
hvis en spil server bliver tildelt en anden host så skifter ipen til porten, eks: 192.168.1.2:1001 -> 10.10.10.1:1001 (uændret) 192.168.1.2:1002 -> 10.10.10.5:1002 (ændret) 192.168.1.2:1003 -> 10.10.10.8:1003 (ændret)
spil serveren på port 1001 er der forsat forbindelse til, men port 1002 samt 1003 er "døde", og det er selv om at "iptables -t nat -L" fortæller at forbindelserne er som de skal være.
Dine linjer med DNAT rammer kun den første pakke i en forbindelse (vist nok den med SYN-bitten sat). Derefter vil alle efterfølgende pakker køre som en normal forbindelse.
Du skal altså til at lave DROP eller REJECT på de efterfølgende pakker, når du fjerner en DNAT linje, da de forbindelser der allerede er oprettet ellers vil bestå indtil en af enderne i forbindelsen lukker den af sig selv.
Din firewall er så vidt jeg husker det din FORWARD table og den har du kun ACCEPT på og ACCEPT af oprettede forbindelser.
Ups, så lige at din ACCEPT af established forbindelser er på INPUT, hvilket betyder den kan ignores i din normale NAT'ing. Så er det bare at smide din DROP i FORWARD. Husk dog at din DROP skal tilpasses til forbindelsen som den ser ud efter en evt. PREROUTING regel har ændret den.
Og ja, IPTables er forbandet indviklet når man begynder på de avancerede ting, men det kan klare opgaven.
Jeg ved ikke lige hvad du bruger som kilde til vejledning, men jeg fandt følgende side ret så god, da den har packet flow diagrammer, hvilket hjælper en del til forståelsen.
Wally1973: smide min drop i en forward? jeg er efterhånden helt lost. Det skal lige siges at de ting jeg har stående er noget en ven har lavet til mig, han kunne dog ikke hjælpe mig videre med dette.
Kunne jeg få dig til at lave et konkret eksempel på hvor "DROP" og "PREROUTING" skal være?
Når du skal lukke en NAT'ing, så gør følgende: Fjern: /sbin/iptables -t nat -A PREROUTING -p udp --dport 1001 -j DNAT --to-destination 10.10.10.1 Opret: /sbin/iptables -A FORWARD -d 10.10.10.1 -p udp --dport 1001 -j REJECT
Jeg bruger REJECT i stedet for DROP, da REJECT sender en besked tilbage til afsender maskinen om at forbindelsen er tabt, hvor efter afsender maskinen lukker sin forbindelse og ved næste forsøg er det så en ny forbindelse, som NAT'ing vil fange og route rigtigt.
Skal jeg have "/sbin/iptables -P FORWARD ACCEPT" med i firewall filen? og er det korrekt at mine PREROUTING og REJECT kommer til sidst i firewall filen?
Lukker spørgsmål, ingen af de overstående løsninger virker og jeg har endnu ikke fået løst problemet.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.