Como natear puertos en linux?

Publicado por elrosti, Febrero 14, 2007, 21:18:58

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

elrosti

Estimados amigos.

tengo una PC con linux SuSE 9.3. La misma tiene 2 tarjetas de red y configurada para que funcioné como router.

EL problema es que necesito natear algunos puertos hacia mi PC en la LAN, es decir, si yo tengo la ip internat 192.168.0.9 y quiero natear el puerto 80 para poder montar un servidor web en mi PC, quiero que todas las peticiones al puerto 80 de mi PC con linux (la cual es la que está conectda directamente a internet), sean redirecionadas a 192.168.0.9.

la verdad que busque información en google y lo que obtuve fue u comando como el siguiente

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.0.9:80

La verdad no estoy seguro de que este comandos sea el que necesito porque no me ha funcionado.

Cualquier ayuda e información mas concreta sera bienvenida.

Saludos.
Yo no lo quería creer..... pero ella me convenció.

ZeiterZ

Me parece más conveniente la regla:

iptables -t nat -A PREROUTING  -p tcp  --dport 80 -j REDIRECT --to-port 80

Fijate lo que dice el manual de iptables con respecto a REDIRECT:

REDIRECT
       This target is only valid in the nat table, in the PREROUTING and OUTPUT chains,  and  user-defined  chains  which  are  only  called from those chains.  It redirects the packet to the machine itself by changing the destination IP to the primary address of the incoming  interface (locally-generated packets are mapped to the 127.0.0.1 address).


"Este destino sólo es válido para la tabla NAT, en las cadenas PREROUTING y OUTPUT y otras definidas por el usuario llamadas por éstas. Redirige el paquete hacia la propia máquina cambiando la dirección IP de destino a la dirección primaria de la interfaz [por la que llega] (los paquetes generados localmente se mapean a la dirección 127.0.0.1)."

Saludos.

elrosti

CitarMe parece más conveniente la regla:

iptables -t nat -A PREROUTING  -p tcp  --dport 80 -j REDIRECT --to-port 80

lo que ali no veo es donde le digo a que PC de la LAN en particular quiero routear.....
Yo no lo quería creer..... pero ella me convenció.

ZeiterZ

#3
Bien... estuve mirando el tema.

Hecha tu aclaración, deberías probar con esta regla:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.9

fijate que no es "--to" sino  "--to-destination"
Le saqué el "80" al nuevo destino ya que al no ponerlo se asume que sólo se cambia la dirección de destino y no el puerto de destino. Ponerlo, igualmente, no está mal.

Fijate si te sirve. Si no anda, lo vemos y tratamos de encontrar otro camino.

Saludos.


Aclaro que es esta modificación es para la versión 1.3.6 de iptables, en Debian Etch con kernel 2.6.17

Si tienes otra versión de iptables fijate en el manual.

Desde consola:

$ man  iptables

y buscas tipiando  /DNAT

Si usas KDE, vas a "Ejecutar comando" del "menú K" (pulsas  Alt+F2) y escribes:

man:iptables

Suerte.

elrosti

Zeiter:

Gracias por tu ayuda, lamentablemente no logro hacerlo funcionar, he intentadod e todo y nada funciona. Supongo que quizas me este equivocando con el nombre de los dispositivos (me refiero a eth0, eth1, etc)

La verdad que no se, quizas es alguna convinación de reglas que aun no encuentro. ¿ no existirá algo mas GUI para configurar esto ?.

Desde ya te agradezco la ayuda que me puedas brindar porque esto me está volviendo loco.

Saludos
Yo no lo quería creer..... pero ella me convenció.

ZeiterZ

Regla Nº 1: No te desanimes. ;)

Herramientas gráficas hay un montón. Yo no uso ninguna porque, al dedicarme a esto prefiero aprender (a los golpes, pero aprender).

Firewall-Builder es una muy buena herramienta gráfica... tiene muchas cositas... así que preparate para investigar y estudiar. Puedes mirarlo aquí.

También tienes kmyfirewall y también firestarter.

Si lo deseas, enviame el script que has hecho para que le dé un vistazo. En una de esas detecto el problema.

zeiterz @ gmail.com

Saludos.

elrosti

Gracias ZeiterZ, creo que voy a probar con el Firewall-builder que tiene pinta de bueno (estuve viendo el manual).

Espero que no se tenga que instalar, o al menos si hay que instalarlo que no quede muy a la vista ya que ademas de routear cosas por trabajo quiero routear otras cosas (lease emule  :jaja:)

una vez masmuchas gracias ZeiterZ y luego comento como me fue.

Saludos.
Yo no lo quería creer..... pero ella me convenció.

ZeiterZ

Lo que hacen este tipo de herramientas es darte la posibilidad de diseñar "visualmente" el firewall.

Una vez que lo hagas, le dices que "genere" el firewall, que no es otra cosa que un archivo bash script que contiene las órdenes iptables adecuadas. Luego queda en vos, con tus privilegios de administrador el ejecutar ese script, que no debería ser "visible" para nadie sin privilegios de root.

Fijate bien en tu distribución pues muchas suelen traer alguna herramienta "preferida" para firewall.

Por otro lado, firewall builder es muy conocida así que es muy probable que tu distro la traiga lista para instalar.

Saludos.

DAX

Una herramienta interesante y muy útil, si hablamos de administrar un servidor Linux, ya sea en forma local o remota, es Webmin.

Se instala en el servidor y se activa el demonio de webmin, luego, para accederlo y configurar todos los aspectos del servidor (red, servicios, backups, instalar paquetes, firewall, mail, etc. etc.) se utiliza una interfase web, por lo cual, se puede acceder remotamente desde cualquier PC de la red local e, incluso, desde internet.

SaludOS/2

ZeiterZ

Cierto... Me olvidaba de Webmin (Debian no lo trae).

Lo instalas, ejecutas el demonio y accedes a Webmin con https://maquina:10000

Saludos.

cocochio

No se si les servirá de algo, pero yo nunca aprendí a usar iptables y pude poner un firewall y compartir la conexion de internet entre dos máquinas con linux usando shorewall, que te genera las reglas de iptables basandose en archivos de configuración, separados en configuracion de la red, reglas, masquerading, nat

http://www.shorewall.net/

Pero probablemente sea lo mismo, y más facil, con las herramientas gráficas que recomendaron.

DAX

Tambien, shorewall es una buena alternativa cuando la configuración de iptables se hace dificil.

Otra para tener en cuenta es Jay´s Iptables Firewall, del estilo de shorewall y con interfase de menúes en consola.

SaludOS/2

elrosti

Bueno, gracias a todos por los comentarios, esta noche cuando quede solo en la empresa y pueda meterle mano al servidor voy a ir probando todas las aplicaciones que me dijeron.

Espero no romper nada, sino estaré aumentando el indice de desempleo en el Uruguay  :jaja:.

Saludos.
Yo no lo quería creer..... pero ella me convenció.

ZeiterZ

Tranqui.

Antes de tocar el firewall guardá las reglas actuales con el comando iptables-save... el hermanito de iptables-restore. (1)

También guardá el resultado del comando route.

Y le metes pa'delante.

Saludos.

Notas:
(1) Una forma de usarlo es:

# iptables-save  >> firewall-actual.txt

Luego de las pruebas, lo recuperas con

# iptables-restore  << firewall-actual.txt

o con

# cat firewall-actual.txt | iptables-restore


elrosti

#14
Bueno amigos:

lamentablemente luego de 4 horas frente al servidor no he podido hacer el DNAT de los puertos, intenté con webmin que me parecio completisimo pero no me funcionó, cualquier regla que intentaba poner (incluso siguiendo paso a paso las instrucciones de la documentación) toda la LAN se quedaba sin acceso a internet.

lo que no alcanzo a entender es lo que me tira el ifconfig

dsl0      Link encap:Point-to-Point Protocol
          inet addr:190.64.47.7  P-t-P:200.40.19.8  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:164504 errors:0 dropped:0 overruns:0 frame:0
          TX packets:162677 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:125867828 (120.0 Mb)  TX bytes:101125569 (96.4 Mb)

eth0      Link encap:Ethernet  HWaddr 00:16:EC:C7:83:BC
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::216:ecff:fec7:83bc/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7152075 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8282697 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3363532839 (3207.7 Mb)  TX bytes:2343782741 (2235.2 Mb)
          Interrupt:11 Base address:0xec00

eth1      Link encap:Ethernet  HWaddr 00:08:A1:A0:4A:66
          inet6 addr: fe80::208:a1ff:fea0:4a66/64 Scope:Link
          UP BROADCAST NOTRAILERS RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8281180 errors:0 dropped:0 overruns:0 frame:0
          TX packets:89 errors:6899291 dropped:0 overruns:0 carrier:13726264
          collisions:0 txqueuelen:1000
          RX bytes:2482433383 (2367.4 Mb)  TX bytes:16785 (16.3 Kb)
          Interrupt:10 Base address:0xd000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:124978 errors:0 dropped:0 overruns:0 frame:0
          TX packets:124978 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:8610365 (8.2 Mb)  TX bytes:8610365 (8.2 Mb)

yo tengo 2 tarjetas de red y un modem ADSL, supongo que esos son los 3 dispositivos que me está tirando alli, lo que no entiendo es porque la tarjeta de red (eth1) que es la que recibe la conexion a internet no tiene IP, y es el DSL0 el que obtiene la IP. No se si esto tendrá algo que ver, quizas ustedes me ayuden a interpretar esta información.

tambien estuve probando con el shorewall pero tampoco hubo caso, nuevamente cada cosa que hacia la LAn entera se quedaba sin red, incluso siguiendo las configuraciones tan sencillas que explica la ayuda, la verdad que necesitaria entender un poco mas esas interfaces que aparecen alli porque me tienen un poco confundido.

Saludos.

PD ZeiterZ: no sabes como me salvó la vida tu recomendaciñon de hacer un backup de las reglas de iptables, cada cagada que me mandaba al toque tenia todo andando nuevamente.
Yo no lo quería creer..... pero ella me convenció.