Teniendo problemas para usar linux como router!!

Forums: 

Hola gente! Mi nombre es Oliver y después de 3 o 4 routers (Linksys y un encore) que me traicionaron decidi crear mi propio router con linux, pase unos días aprendiendo un poco de iptables y me hice un pequeño .Sh para compartir la conexión .

estos son mis interfaces:
eth0 es la red local
eth1 es mi isp (con ip estática)

este es el código de sh.:


#!/bin/sh
## script para compartir el interness

echo -n "compartiendola toda"

## borrando reglas viejas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

##poniendo politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

##dejamos el host local para loopback
/sbin/iptables -A INPUT -i lo -j ACCEPT

#aceptamos el acceso al firewall desde la red local
iptables -A INPUT -s 192.168.0.0/24 -i eth0 -j ACCEPT

#aceptamos el acceso al firewall desde el router de fiber
iptables -A INPUT -s 192.168.0.0/24 -i eth1 -j ACCEPT

#empezamos a puentear desde el router a la red local
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

#rutear al werbserver
iptables -t nat -A PREROUTING -p tcp --destination 190.226.58.228 --dport 80 -j DNAT --to-destination 192.168.1.103:80
#rutear al ftp
iptables -t nat -A PREROUTING -p tcp --in-interface eth1 --dport 21 -j DNAT --to-destination 192.168.1.103:20-21
iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 21 -j ACCEPT

#comando de prueba para compartir redes
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

#ejecutamos la orden
echo 1 > /proc/sys/net/ipv4/ip_forward

#reiniciamos la coneccion
/etc/init.d/networking restart

echo "ok, fijate si ahora funca"

#se fini

como pueden ver estoy puenteando el puerto 80 y 21 al servidor web (192.168.1.103).

Ahora mi problema es .... aca hay más de 30 computadoras. Ayer por la noche cuando hice todo esto, sólo tenía 6 compus prendidas. Cuando lo probé, todo funcionó a la perfección ... podia conectar con el ftp, entrar a mi dominio (de otro ISP) que mostró mi página alojada en el servidor web y usando 3 equipos, cada uno tenía internet, Skype, y recibia correos electrónico en Outlook y Thunderbird (Linux, Mac y Windows), incluso el dhcp establecia las ip de las compus basandose ​​en sus macs!. Pero esta mañana .... cuando el resto de mis compañeros vinieron a trabajar y los 30 equipos fueron encendidos y conectados, aparecieron algunos problemas. Pablo no se pudo conectar a internet, Rodrigo no podia enviar o recibir e-mails (pero tenía internet) y absolutamente nadie podía entrar a mi página web. La red estaba funcionando bien (las compus se veian entre si y todo eso), pero la conexión a Internet era el problema. y cuando hice un "/etc/init.d/networking restart" no me pude conectar más... simplemente tube que usar mi router encore denuevo :(.

¿Puede alguien decirme si hice algo mal en las reglas de iptables? o ... hay un límite de compus ruteadas?? Estoy bastante seguro de que es un error (o muchos) que hice en el código xD

Por favor si alguien me puede ayudar, me salvarían la vida!

Cita: #reiniciamos la

Imagen de Jonas

[quote]
#reiniciamos la coneccion
/etc/init.d/networking restart
[/quote]

Por que reinicias la conexión? el reinicio hace que esta linea no tenga efecto:

[quote]
#ejecutamos la orden
echo 1 > /proc/sys/net/ipv4/ip_forward
[/quote]

enserio???? no tenia idea....

enserio???? no tenia idea.... pero si eso no funcionara, no tendria que funcionarme los forward o si? lo demas lo ves bien? o hay algo mas que este perdido?

revisandolo recien vi que me quedo ahi (de cuando usaba 2 conexiones para probar) esta

[quote]#aceptamos el acceso al firewall desde el router de fiber
iptables -A INPUT -s 192.168.0.0/24 -i eth1 -j ACCEPT[/quote]

que era para habilitar un router que ya no esta.... pero aunque este de mas esa linea, no me deberia generar problemas verdad?

Hola amigo espero te sea útil

Imagen de maxstoro

Hola amigo espero te sea útil en este caso lo que hace este firewall es primero dar navegación a toda una subred y la siguiente es la iptable que lo permite

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

cualquier ip en esa subred navega

luego si no tienes habilitado el BIT DE FORWARDING no vas a navegar

echo "1" > /proc/sys/net/ipv4/ip_forward

y abro los puertos ftp con

iptables -A INPUT -i eth1 -p tcp -m tcp --dport 20 -m state --state NEW -j ACCEPT
iptables -A INPUT -i eth1 -p tcp -m tcp --dport 21 -m state --state NEW -j ACCEPT

#!/bin/sh

## reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Establecimiento de politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

## Empezamos a filtrar

# El localhost se deja (por ejemplo conexiones locales a mysql)
/sbin/iptables -A INPUT -i lo -j ACCEPT

# Ahora hacemos enmascaramiento de la red local
# y activamos BIT DE FORWARDING (necesario pues sera parte del enrutado)
iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -o eth0 -j MASQUERADE

# Permitimos hacer forward de paquetes en el firewall, es decir
# que otras máinas puedan salir a traves del firewall.
echo "1" > /proc/sys/net/ipv4/ip_forward

# ACEPTA CONEXIONES POR LOS PUERTOS FTP
iptables -A INPUT -i eth1 -p tcp -m tcp --dport 20 -m state --state NEW -j ACCEPT
iptables -A INPUT -i eth1 -p tcp -m tcp --dport 21 -m state --state NEW -j ACCEPT

# RTMP
iptables -A INPUT -i eth1 -p tcp -m tcp --dport 1935 -m state --state NEW -j ACCEPT

# ===>> Fin de las Reglas <<=== #

servicios que talvez necesites.

Imagen de chilino

Hola Oliver,

antes de levantar cualquier tipo de configuración o agregar algun nuevo equipo o servicio, se tiene que realizar un levantemiento de información sobre los servicios que utilizan todos los clientes de tu red interna y además saber que servicios corren sobre tu router encore.

Segun lo que puedo ver, tu tienes lo siguiente.

Servicios:

- Forwarding.
- Firewall.
- DHCP.
- FTP.
- Web
- DNS
- Internet.
- Administración.

Despues de detallado este tema, tienes que instalar los paquetes en el "linux Box" que te permitiran realizar esta tarea. para este caso:

iptables.
bind.
ssh.
dhcpd3.

Los servicios de FTP y WEB este momento estan corriendo sobre otro equipo.

Con estos paquetes instalados sobre tu "Linux Box" aseguras: - Firewall. DHCP, DNS, Internet y Administración.

Una vez instalado esto, tienes que saber lo siguiente.

- Mediante Forwarding.

Tu conviertes la caja linux en un equipo router por el cual pasan los paquetes en dos vias. Esta es la configuración basica y sobre la cual tu tienes que brindar seguridad.

- Mediante Firewall.

Damos acceso a los clientes a los recursos de la red interna y externa a través de iptables. Tambien se pueden realizar redirecciones hacia una IP. Proxy, etc.

- Mediante DNS.

Relacionamos los servicios que actualmente tenemos sirviendo a la red interna y servicios externos, por ejemplo, con el dns tu puedes establecer un dominio local "miredinterna.local" y sobre este dominio, crear subdominios como ftp.miredinterna.local y www.miredinterna.local. O puedes registrar y comprar un dominio en NIC.ec y crear un dominio publico para que te funcione tanto a nivel interno como externo.

La configuración de este servicio es muy importante, pues con esto simplificas la administración.

- Mediante SSH.

Tu administras los servicios, para este caso puedes acceder al "Linux Box" por ssh y si tienes mas cajas, les puedes acceder por la misma via.

- Mediante DHCP.

Asignas direccionamiento Ip dinamico a la red interna de tus clientes, reservar ips, escluir rangos, etc.


Con esta información conocida, creo que podrás establecer un diagrama de servicios, direccionamiento y administración para establecer una configuración acorde a tus necesidades.

El tema de scripts, es algo que se va ir aplicando de acuerdo a las premisas antes establecidas, lo cual, es un tema que puedes ir googleando y construyendo a medida.

Para el tema de Firewall, te sugiero utilices como politica por defecto "DROP".


Espero haberte ayudado.

Salu2.

Chilino