← Back to team overview

sslug-teknik team mailing list archive

Re: Port forwarding

 

On Fri, 20 May 2005 16:51:09 +0200
Robert Larsen <robert@xxxxxxxxxxxx> wrote:

> Hej alle
> 
> Jeg kan ikke få port forwarding til at virke :-(
> 
> Jeg vil gerne fange tcp requests til port 81 og forwarde dem til en 
> anden ip (192.168.1.129) til port 80 og har gjort følgende:
> 
> [root@playstation ~]# echo "1" >/proc/sys/net/ipv4/ip_forward
> 
> Derefter prøvede jeg disse:
> [root@playstation ~]# iptables -t nat -A PREROUTING -i eth0 -p tcp -d 
> 192.168.1.160 --dport 81 -j DNAT --to-destination 192.168.1.129:80
> [root@playstation ~]# iptables -A FORWARD -i eth0 -o eth0 -p tcp -d 
> 192.168.1.129:80 --dport 81 -m state --state NEW -j ACCEPT
> [root@playstation ~]#
> 
> Men det virker ikke.
> 
> Det skulle være sådan, at hvis man indstillede browseren på 
> http://192.168.1.160:81 så fik man http://192.168.1.129:80
> Hvad mangler jeg ?
> 

Jeg formoder du prøver fra lokalnettet, hvor du har maskinerne til at
køre.
Ved at gøre det får du et problem.

Forespørgslen kører sådan her igennem ip systemet sådan her:
Klient -> 192.168.1.160:81 -> 192.168.1.129:80

Svaret:
192.168.1.129:80 -> Klient

Dvs. serveren sender svar direkte til klienten, som forventer et svar
fra .160 maskinen og ikke .129 og ved derfor ikke at de har noget med
hinanden at gøre.

Hvad du skal gøre er at få .160 til at sætte forespørgselsadressen til
.160

Det gør du sådan her (hvis dit netværk er 192.168.1.0/24):

iptables -t nat -A POSTROUTING -d 192.168.1.129 -s 192.168.1.0/24 -p tcp
--dport 80 -j SNAT --to 192.168.1.160


Så burde det virke.

Mvh
Jesper K. Pedersen


Follow ups

References