Hola listeros, De nuevo os traigo mi duda y os adjunto dos archivos: el dibujo de mi red y el archivo sh de configuración. El problema mas grave que tengo es que no consigo que el equipo de la DMZ pueda acceder a los archivos compartidos de un ordenador de la red local protegida. El otro problema es el balanceo de carga... no consigo que me funcione desde la red local. Es decir: desde el firewall me hace balanceo y luego si me pongo en cualquier ordenador de la red local no tengo acceso a internet. Si quito el balanceo y pongo que acceda siempre por un gateway no hay problema. Una vez mirado en muchiiiiisimos comos y habiéndome vuelto loco de tanto buscar.... ¿alguna ayudita? Muchas gracias y saludos -- Raúl Alonso ralerin@gmail.com
Attachment:
esquema_red.gif
Description: GIF image
#!/bin/sh ## Script para balanceo de dos conexiones a internet y una red local, además de configuración de Firewall ## Modificado por Raúl Alonso para Ediciones Peldaño ## Para activar el script copiar a /etc/init.d ## Despues usar este comando: update-rc.d fwbalanceo.sh defaults ## Para eliminar el script usar: update-rc.d -f fwbalanceo.sh remove ## Variables de nuestra red IPLOCAL="192.168.0.21" IPINTERNET1="192.168.1.2" IPINTERNET2="192.168.2.2" IPDMZ="192.168.2.3" GATEWAY1="192.168.1.1" GATEWAY2="192.168.2.1" INTERNET1="eth1" # Ono INTERNET2="eth2" # Telefonica REDLOCAL="eth0" # Red local ## SCRIPT PARA DAR CONEXION A INTERNET MEDIANTE BALANCEO DE CARGA ## echo "Limpiando tablas de ruteo anteriores..." # Limpio las tablas de ruteo ip route flush cache ip route flush default ip route flush table 1 ip route flush table 2 # Reinicio lo ip addr flush lo ip link set lo down ip addr add 127.0.0.1/8 dev lo ip link set lo up # Reinicio eth0, LAN, lo mismo esto para cada placa de red ip addr flush eth0 ip link set eth0 down ip addr add 192.168.0.21/24 dev eth0 ip link set eth0 up # Reinicio eth1 ip addr flush eth1 ip link set eth1 down ip addr add 192.168.1.2/24 dev eth1 ip link set eth1 up # Reinicio eth2 ip addr flush eth2 ip link set eth2 down ip addr add 192.168.2.2/24 dev eth2 ip link set eth2 up echo "Creando tablas de ruteo..." # Identifico redes en sus eth ip route add 192.168.0.0/24 dev $REDLOCAL src $IPLOCAL ip route add 192.168.1.0/24 dev $INTERNET1 src $IPINTERNET1 ip route add 192.168.2.0/24 dev $INTERNET2 src $IPINTERNET2 # Creo tablas ip route show table main | grep -Ev ^default | while read ROUTE ; do ip route add table 1 $ROUTE ; done ip route show table main | grep -Ev ^default | while read ROUTE ; do ip route add table 2 $ROUTE ; done # Añado puertas de enlace en las tablas ip route add default via $GATEWAY1 table 1 ip route add default via $GATEWAY2 table 2 # Configuro las reglas de ruteo ip rule add from $IPINTERNET1 table 1 ip rule add from $IPINTERNET2 table 2 echo "Tablas de ruteo creadas." # Balanceo de carga (2 gateways) ip route add default scope global equalize nexthop via $GATEWAY1 dev $INTERNET1 weight 1 \ nexthop via $GATEWAY2 dev $INTERNET2 weight 1 # Un solo gateway # ip route add default via $GATEWAY1 # desactivo el filtrado de paquetes echo "0" > /proc/sys/net/ipv4/conf/eth0/rp_filter echo "0" > /proc/sys/net/ipv4/conf/eth1/rp_filter echo "0" > /proc/sys/net/ipv4/conf/eth2/rp_filter # Con esto permitimos hacer forward de paquetes en el firewall, o sea # que otras máquinas puedan salir a traves del firewall. echo 1 > /proc/sys/net/ipv4/ip_forward echo "Carga balanceada." ## fin SCRIPT ## ## SCRIPT FIREWALL ## echo "Limpiando reglas de firewall anteriores..." ## FLUSH de reglas iptables -F iptables -X iptables -Z iptables -t nat -F echo "Creando política de firewall..." # Establecemos 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 echo "Política de firewall creada." # Permito FTP PASV modprobe ip_conntrack modprobe ip_conntrack_ftp ports:21,20 modprobe ip_nat_ftp ports:21,20 echo "Creando filtros..." # El localhost se deja (por ejemplo conexiones locales a mysql) /sbin/iptables -A INPUT -i lo -j ACCEPT # Al firewall tenemos acceso desde la red local iptables -A INPUT -s 192.168.0.0/24 -i $REDLOCAL -j ACCEPT echo "Configuramos accesos desde dentro hacia fuera..." # DENEGAMOS ACCESOS iptables -A FORWARD -s 192.168.0.20 -i $REDLOCAL -p tcp --dport 80 -j DROP #Eneko iptables -A FORWARD -d 64.4.32.7 -j REJECT # HOTMAIL iptables -A FORWARD -d 207.46.1.0/24 -j REJECT # MESSENGER iptables -A FORWARD -d 64.4.15.61 -j REJECT # MESSENGER iptables -A FORWARD -d 64.4.13.0/24 -j REJECT # MESSENGER iptables -A FORWARD -d 213.199.148.191 -j REJECT # MESSENGER iptables -A FORWARD -p TCP --dport 1863 -j REJECT # PUERTO MSN # DAMOS ACCESO DESDE LA LAN AL EXTERIOR # HTTP iptables -A FORWARD -s 192.168.0.0/24 -i $REDLOCAL -p tcp --dport 80 -j ACCEPT # HTTPS iptables -A FORWARD -s 192.168.0.0/24 -i $REDLOCAL -p tcp --dport 443 -j ACCEPT # EMAIL iptables -A FORWARD -s 192.168.0.0/24 -i $REDLOCAL -p tcp --dport 110 -j ACCEPT iptables -A FORWARD -s 192.168.0.0/24 -i $REDLOCAL -p tcp --dport 25 -j ACCEPT # DNS iptables -A FORWARD -s 192.168.0.0/24 -i $REDLOCAL -p tcp --dport 53 -j ACCEPT iptables -A FORWARD -s 192.168.0.0/24 -i $REDLOCAL -p udp --dport 53 -j ACCEPT # PUERTO 8181 iptables -A FORWARD -s 192.168.0.0/24 -i $REDLOCAL -p tcp --dport 8181 -j ACCEPT # FTP iptables -A FORWARD -s 192.168.0.0/24 -i $REDLOCAL -p tcp --dport 21 -j ACCEPT iptables -A FORWARD -s 192.168.0.0/24 -i $REDLOCAL -p tcp --dport 20 -j ACCEPT # PERMITIDO PARA INFORMATICA iptables -A FORWARD -s 192.168.0.2 -i $REDLOCAL -j ACCEPT iptables -A FORWARD -s 192.168.0.65 -i $REDLOCAL -j ACCEPT iptables -A FORWARD -s 192.168.0.1 -i $REDLOCAL -p tcp --dport 139 -j ACCEPT # Y denegamos el resto. Si se necesita alguno, ya avisaran iptables -A FORWARD -s 192.168.0.0/24 -i $REDLOCAL -j DROP # Enmascaramiento de rutas echo "Enmascarando rutas..." # iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o $INTERNET2 -j SNAT --to-source $GATEWAY2 # iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o $INTERNET1 -j SNAT --to-source $GATEWAY1 # iptables -t nat -A POSTROUTING -s 192.168.0.1 -o eth2 -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o $INTERNET2 -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o $INTERNET1 -j MASQUERADE echo "Rutas enmascaradas." ## Permitimos el paso de la DMZ acceder al intercambio de archivos con 192.168.0.1 iptables -A FORWARD -s 192.168.0.1 -d $IPDMZ -p tcp --sport 1024:65535 --dport 139 -j ACCEPT iptables -A FORWARD -s $IPDMZ -d 192.168.0.1 -p tcp --sport 139 --dport 1024:65535 -j ACCEPT ## Permitimos abrir el VNC server de la DMZ desde la IP 192.168.0.2 iptables -A FORWARD -s 192.168.0.2 -d $IPDMZ -p tcp --sport 1024:65535 --dport 5900 -j ACCEPT iptables -A FORWARD -s $IPDMZ -d 192.168.0.2 -p tcp --sport 5900 --dport 1024:65535 -j ACCEPT # Cerramos el acceso de la DMZ a la LAN iptables -A FORWARD -s $IPDMZ -d 192.168.0.0/24 -j DROP ## Cerramos el acceso de la DMZ al propio firewall iptables -A INPUT -s $IPDMZ -i $REDLOCAL -j DROP # Y ahora cerramos los accesos indeseados del exterior: echo "Cerramos los accesos desde fuera hacia adentro..." # Cerramos el rango de puerto bien conocido iptables -A INPUT -i $INTERNET1 -s 0.0.0.0/0 -p tcp --dport 1:1024 -j DROP iptables -A INPUT -i $INTERNET1 -s 0.0.0.0/0 -p udp --dport 1:1024 -j DROP iptables -A INPUT -i $INTERNET2 -s 0.0.0.0/0 -p tcp --dport 1:1024 -j DROP iptables -A INPUT -i $INTERNET2 -s 0.0.0.0/0 -p udp --dport 1:1024 -j DROP # Cerramos el puerto de gestión: webmin iptables -A INPUT -i $INTERNET1 -s 0.0.0.0/0 -p tcp --dport 10000 -j DROP iptables -A INPUT -i $INTERNET2 -s 0.0.0.0/0 -p tcp --dport 10000 -j DROP ## fin SCRIPT ##