Re: port forwarding partially working (SOLVED)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Raul I. Becette wrote:

Cedric Blancher wrote:

Le mercredi 16 février 2005 à 17:58 -0300, Raul I. Becette a écrit :


I am having trouble forwarding ports to internal servers.
$IPTABLES -A FORWARD -i $PUB_IF -p tcp --dport 1024 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i $PUB_IF -p tcp --dport 1024 -j DNAT --to $SERV_BIBL:110
works ok when I telnet $PUB_IF 1024. I got redirected to the POP server with no problems.


I should not.


How can I accomplish the port forwarding for the services?

What I want to do is assign ports 1024-1030 to redirect services for $SERV_BIBL, ports 1031-1039 to redirect services for $SERV_ING and so on.

If you DNAT your connexion to $PUB_IF port 1024 to $SERV_BIBL:110, then
your FORWARD chain will see a packet to destined to port 110, not 1024.
If you just look at Netfilter architecture, you will see FORWARD chain
traversal occurs _after_ PREROUTING traversal. Thus, packets are already
NDATed and have their destination modified when hitting FORWARD rules.

That's why, in order to accept your DNATed connection, you should have :

$IPTABLES -A FORWARD -i $PUB_IF -p tcp --dport 110 -j ACCEPT

If it works anyway, it means you must have some kind of overlaping rule
that accidentally accepts thoses packets.

Now, going to your script, there's indeed a rule that accepts
destination port 110 whatever their destination is :

$IPTABLES -A FORWARD -i $PUB_IF -p tcp --dport 110 -j ACCEPT

So your stuff works, but that's an accident !




Why is an accident?

TIA

Hello list

I solved the problem modifying the FORWARD line adding the state of the connection as NEW

$IPTABLES -A FORWARD -p tcp --dport $SERVICE_PORT -m state --state NEW -j ACCEPT

and deleted the FORWARD lines that accepted connections with --dport 10nn. The PREROUTING chain takes care of redirecting that port.

That part of my script now is:

# Abro el puerto de smtp para enviar los correos desde unpata hacia a La Gran Bestia POP
$IPTABLES -A FORWARD -i $PUB_IF -s $LAN_SMTP -p tcp --dport 25 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i $PUB_IF -p tcp --dport 25 -j DNAT --to $LAN_POP:25


# Abro puertos para servicios accesibles desde Internet
$IPTABLES -A FORWARD -i $PUB_IF -p tcp --dport 21 -m state --state NEW -j ACCEPT


# POP a cuentas unpata.edu.ar y unp.edu.ar
$IPTABLES -A FORWARD -i $PUB_IF -p tcp --dport 110 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i $PUB_IF -p tcp --dport 110 -j DNAT --to $LAN_POP:110


# Servicios biblioteca.unp.edu.ar
$IPTABLES -t nat -A PREROUTING -i $PUB_IF -p tcp --dport 1024 -j DNAT --to $SERV_BIBL:21
$IPTABLES -t nat -A PREROUTING -i $PUB_IF -p tcp --dport 1025 -j DNAT --to $SERV_BIBL:25
$IPTABLES -t nat -A PREROUTING -i $PUB_IF -p tcp --dport 1026 -j DNAT --to $SERV_BIBL:110


# Servicios ing.unp.edu.ar
$IPTABLES -t nat -A PREROUTING -i $PUB_IF -p tcp --dport 1030 -j DNAT --to $SERV_ING:21
$IPTABLES -t nat -A PREROUTING -i $PUB_IF -p tcp --dport 1031 -j DNAT --to $SERV_ING:110



I used information from the "slow ftp" thread and wondered myself "what if I specify the state of the connection?"
It worked.


Thanks a lot for the help

--


----------------------------------------------------------------- Raul I. Becette E-mail: raulbecette@xxxxxxxxxx Area Redes y Telecomunicaciones Univ. Nac. de la Patagonia San Juan Bosco Ciudad Universitaria - Km.4. 9000 - Comodoro Rivadavia - Chubut Tel/Fax : (0297) - 4550073 ------------------------------------------------------------------




[Index of Archives]     [Linux Netfilter Development]     [Linux Kernel Networking Development]     [Netem]     [Berkeley Packet Filter]     [Linux Kernel Development]     [Advanced Routing & Traffice Control]     [Bugtraq]

  Powered by Linux