sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #102441
Re: Oversætte port nummer til andet port nummer
On Mon, 5 Mar 2012 15:44:49 +0100
Jesper Langkjær <jl@xxxxxxxxxxx> wrote:
> > Forstår stadig ikke hvorfor det ikke bare kan løses med en
> > statisk
> >ip route til dr's net hvor du router ud gennem IP på wan
> >interface 2
>
> > Der kan være ting som at du ikke har styr på routen tilbage og
> > andre
> >protrokoller du gerne vil have til at køre på andre interfaces
> >osv men vil du bare gerne have traffiken til dr skal følge en
> >bestemt route ud af huset så skulle jeg mene du kan nøjes men en
> >simpel statisk route.
>
> Nogle personer skal have adgang til www.xxx.dk på alm. port 80 og
> andre skal have adgang til www.xxx.dk på port 81. Nu var dr.dk
> kun et eksemple, det er drejer sig som 65 forskellige url'er der
> skal tilgåes på denne måde.
>
> /Jesper
Desværre har jeg ikke prøvet at filtrere til forskellige interfaces
på portnummer, men jeg undrer mig over om du bruger iptables rigtigt.
-dport og -sport er filter udtryk, d.v.s. du kan ikke om-dirigere
med -dport 81 #(destination port), -dport undersøger om target er
x.x.x.x:81, laver ikke pakkerne om.
Til Andreas' forslag må man sige, at man ikke kan nøjes med en
statisk route, fordi router-tabellen jo ikke tager hensyn til
portnummer.
Hvis du både forlanger -sport 81 og -dport 80, så fanger du kun
trafik FRA x.x.x.x:81 TIL x.x.x.x:80 og det har du garanteret
ikke noget af!
Mit bedste gæt er, at du kan "fange" pakkerne med et filter udtryk
i retning af --source x.x.x.x -sport 81 (dem der kommer fra
domain.com:81, source er fra port 81) og så bruger
--out-interface eth1
som er en omdirigerings-kommando, faktisk en routing kommando
midt inde i iptables (som ellers først og fremmest filtrer ting
væk eller omskriver adresser :)
Du kan kun bruge --out-interface med FORWARD eller med
NAT tabellens PREROUTING og OUTPUT chains (check selv).
Hvis man gør den slags, ved jeg ikke om svar-pakker kommer
tilbage ad samme rute, det tror jeg ikke de behøver at gøre (det
tror jeg ikke de nødvendigvis vil gøre. Åh sproget ...)
Men hvis det vigtigste er at få volumen-streams til at gå over
den ene wireless, så er det jo ligegyldigt hvad vej de i antal
meget få request pakker vil blive sendt.
Et exempel på udefra kommende trafik til to Apache-servere:
De to nedenstående exempler fra man-page for iptables viser IKKE
det du har brug for, men tilsvarende hvordan man kan sprede
indgående trafik TIL port 80 til 8080 og 8081. Det vises
i exemplet at man fordeler til flere CPU'er - formentlig med hver
deres apache, og de lytter på hhv. port 8080 og 8081; der er ikke
tale om separate maskiner eller netværks-interfaces.
cpu
[!] --cpu number
Match cpu handling this packet. cpus are numbered from 0 to
NR_CPUS-1 Can be used in combination with RPS (Remote Packet
Steering) or multiqueue NICs to spread network traffic on differ-
ent queues.
Example:
iptables -t nat -A PREROUTING \
-p tcp --dport 80 -m cpu --cpu 0 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING \
-p tcp --dport 80 -m cpu --cpu 1 -j REDIRECT --to-port 8081
Available since Linux 2.6.36.
Jeg håber jeg ramte noget, du kan bruge - sætter pris på
feedback.
--
Donald Axel <donax@xxxxxx>
Follow ups
References