Forums:
Buenos días,
Estimados, tengo una máquina usada como gateway y firewall de una red lan, tengo dos interfaces de red la eth0 está conectada al modem del ISP, la eth1 está conectada a la red LAN con una ip fija dentro de una red 10.0.0.0/24 la ip es la 10.0.0.3, la eth0 es una ip dinámica. Ahora bien, todo lo que entre por el puerto 22 lo quiero enviar a otra máquina que posee asterisk y la cual quiero que esté disponible para yo poder ingresar vía ssh. la ip de esa máquina es la 10.0.0.2 no se que estoy haciendo mal
De momento no he cerrado puertos por que no he conseguido redireccionar:
Anexo mi Script
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
echo "Enrutando"
iptables -t nat -A PREROUTING -i eth0 \
-p tcp --dport 22 -j DNAT --to 10.0.0.2:22
echo "Dando permisos locales"
iptables -A INPUT -i lo -j ACCEPT
echo "Dando salida a internet y enmascarando la ip"
iptables -A INPUT -s 10.0.0.0/24 -i eth1 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
echo "Activando bit de forward"
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "Haciendo Forward"
#190.200.131.56 es la dirección ip pública que otorga el dhcp a la eth0
iptables -A FORWARD -s 190.200.131.56 -d 10.0.0.2 -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -s 10.0.0.2 -d 190.200.131.56 -p tcp --sport 22 -j ACCEPT
echo "Ok"
Nota: No sé que se me puede estar olvidando.
Gracias de antemano.
Pues no veo ninguna regla que
Pues no veo ninguna regla que haga el redireccionamiento que dices.
Prueba con algo así:
iptables -t nat -A PREROUTING -p tcp --dport 22 -j DNAT --to ip_destino
Esto redireccionará el tráfico que llegue por el puerto 22 hacia la ip que especifiques en ip_destino.
Espero te sirva
Saludos
Juan Yépez
0993681879
Dj - Discomovil Quito
Hola, Juan. Gracias por
Hola, Juan.
Gracias por contestar, estimado esa regla si está . Lo que no estoy seguro es el orden donde debe estar al igual que el forward.
Yo la pongo siempre junto a
Yo la pongo siempre junto a la línea de forward. Sin embargo deberías verificar si no hay otra regla que haga contradicción con el redireccionamiento.
Saludos
Juan Yépez
0993681879
Dj - Discomovil Quito
Ok, Gracias, voy a tomar tu
Ok, Gracias, voy a tomar tu sugerencia y colocarla junto a la regla del Forward, ahora la regla del forward está bien así o debería especificarle las interfaces también por que he pensado que podría hacer el forward de la siguiente manera:
iptables -A FORWARD -p tcp -i eth0 -o eth1 -d 10.0.0.2 --dport 22 -m state --state NEW -j ACCEPT
Saludos
creo que con esto es
creo que con esto es suficiente ;)
iptables -A FORWARD -i eth0 -p tcp --dport 22 -d 10.0.0.2 -j ACCEPT
Lo pongo en ese orden solo por costumbre: Interfaz, Puerto y destino.
Saludos
Juan Yépez
0993681879
Dj - Discomovil Quito
Hola, Juan, he intentado de
Hola,
Juan, he intentado de mil maneras hasta me hice un script para inicializar y parar los servicios del firewall pero no hay manera de que enrute internamente la conexión y la enrute al servidor que yo necesito
#Firewall creado por otrejo
#!/bin/bash
case "$1" in
start)
#Limpieza de reglas.
echo -n "Limpiando reglas iptables: "
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
echo "hecho."
#Cargando modulos.
echo -n "Cargando modulos: "
/sbin/depmod -a
modprobe ip_tables
modprobe ip_conntrack
modprobe iptable_filter
modprobe iptable_nat
modprobe ipt_state
modprobe ipt_MASQUERADE
modprobe ipt_LOG
modprobe ip_nat_irc
echo "hecho."
#Forwarding.
echo -n "Activando forwarding: "
echo "1"> /proc/sys/net/ipv4/ip_forward
echo "hecho."
#Política por defecto.
echo -n "Aplicando políticas por defecto: "
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
echo "hecho."
#NAT
echo -n "Activando NAT: "
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
echo "hecho."
#Interfaz lo.
echo -n "Activando interfaz lo: "
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
echo "hecho."
##Acceso
#SSH
#ssh desde fuera redireccionado al server.
echo -n "Activando redireccionamiento conexión ssh externa al server: "
iptables -A INPUT -i eth0 -p tcp --dport 22 -j LOG --log-prefix "CONEXION_SSH"
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j DNAT --to 10.0.0.2:22
iptables -A FORWARD -i eth0 -p tcp --dport 22 -d 10.0.0.2 -j ACCEPT
echo "hecho."
#Interfaces internas.
echo -n "Activando interfaces eth0 eth1: "
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A OUTPUT -o eth0 -j ACCEPT
iptables -A INPUT -i eth1 -s 10.0.0.0/24 -j ACCEPT
iptables -A OUTPUT -o eth1 -d 10.0.0.0/24 -j ACCEPT
echo "hecho."
##Cerrar
#Conexiones no necesarias.
echo -n "Cerrando conexiones no necesarias: "
iptables -A INPUT -i eth0 -m state --state NEW,INVALID -j DROP
iptables -A OUTPUT -o eth0 -m state --state NEW,INVALID -j DROP
iptables -A FORWARD -i eth0 -m state --state NEW,INVALID -j DROP
echo "hecho."
;;
stop)
echo -n "Parando el firewall: "
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -F
iptables -t nat -F
echo "hecho."
;;
restart)
$0 stop
echo -n "Reiniciando el firewall: "
sleep 2
$0 start
echo "hecho."
;;
status)
iptables -L -n
;;
*)
echo "usar: $0 {start|stop|restart|status}"
exit 1
esac
exit 0
Ahora si necesito ayuda es urgente...!!!
No logro hacer que enrute...!!!
Gracias.
Mira, prueba este
Mira, prueba este script
##Firewall configuration
## eth1 = local network interface
## eth0 = remote network interface
## default policy for input/forward DROP
## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
#Carga de módulos
modprobe ip_conntrack_ftp
modprobe ip_conntrack
modprobe ip_nat_ftp
# set default policies for the INPUT, FORWARD and OUTPUT chains
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
#Habiliar ruteo
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.xxx.yyy/24 -o eth0 -j MASQUERADE
#################LOCAL INPUT########################
#Allow all from localhost
iptables -A INPUT -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#From my machine
iptables -A INPUT -s 192.168.xxx.yyy -j ACCEPT
#correo
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
#de mi ip publica
iptables -A INPUT -s 200.105.xxx.yyy -i eth0 -j ACCEPT
#dns
iptables -A INPUT -p tcp --sport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
#Allow established or related connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#################FROWARD ########################
#ssh a mi equipo
iptables -A FORWARD - i eth0 -p tcp --dport 22 -d 192.168.xxx.yyy -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to 192.168.xxx.yyy:22
#Allow established or related connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Personalmente yo escucho en un puerto diferente al 22 en mi interfaz pública, por cuestiones de seguridad. Ese tráfico lo redirecciono hacia mi máquina al puerto 22 y listo, debe funcionarte.
Saludos
Juan Yépez
0993681879
Dj - Discomovil Quito
Hola, Juan Gracias por la
Hola, Juan Gracias por la info.
Pero ya lo solucioné, lo que pasaba era que el enmascaramiento de retorno no lo estaba haciendo, entonces el paquete se perdía, puesto que la petición no se inicio con la ip interna y este la estaba entregando con la ip interna lo solucioné haciendo un MASQUERADE a todo lo que salga del puerto 22 la configuración quedó asi:
#Acceso ssh
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2022 -j DNAT --to-destination 10.0.0.2:22
iptables -t nat -A POSTROUTING -p tcp --dport 22 -j MASQUERADE
#FORWARD del ssh
iptables -A FORWARD -i eth0 -p tcp --dport 2022 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -o eth0 -p tcp --sport 2022 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Muchas gracias a todos por su ayuda.
Que bueno que lo
Que bueno que lo solucionaste.
Solo una observación que espero no estar equivocado. La línea que te puse en el script:
[quote]iptables -t nat -A POSTROUTING -s 192.168.xxx.yyy/24 -o eth0 -j MASQUERADE[/quote]
hace el enmascaramiento de todo el tráfico saliente hacia internet. Esto debería bastar para que te funcione.
Saludos
Juan Yépez
0993681879
Dj - Discomovil Quito
El "enmascaramiento de
El "enmascaramiento de retorno" como tu lo llamas no es necesario. Si con eso te funcionó, lo más probable es que no tengas configurada adecuadamente la puerta de enlace en tu servidor destino (10.0.0.2).
Saludos,
----
Edwin Boza
about.me/edwinboza
Páginas