# Problema al agregar scriptsFirewall al arranque(Solucionado)

## omarelrockero1

Saludos hermanos de gentoo, mi problema es algo que se me ha venido presentando estos ultimos dias, compartiendo mi conexion a internet con un equipo que usa mi esposa el mismo tiene sistema operativo microsoft basura xp profetional sp3, en mi equipo cuento con una interface eth1 por la que recibo internet dhcp desde un modem adsl, y otra eth0 por la que me encuentro en red local con el mencionado equipo. 

	Para ello scribi una reglas de firewall para poder compartir mi internet, al ejecutar el script todo bien. El problema radica en cuando quiero que estas reglas se ejecuten al iniciar el sistema.

He probado varios metodos para iniciarlo pero el que mejor me ha funcionado el ejecutar el scripts que guarde y le di permiso de ejecucion en /etc/init.d/omar_firewall1 y despues guardar la reglas en /var/lib/iptables/rules-save con /etc/init.d/iptables save y añadir iptables al runlevel default: rc-update add iptables default

. Al reiniciar y hacer un iptables -L -n efectivamente tengo las reglas establecidas pero el computador cliente no puede navegar a pesar de tener red local activa ya que hago ping de cada uno de los computadores y dan respuesta, pero lo misterioso del caso es cuando ejecuto manualmente el script /etc/init.d/omar_firewall1 el computador cliente comienza navegar perfectamente. No se que me recomiendan ustedes?

Tambien lo intente iniciar creando un archivo en  /etc/conf.d/lfirewall y tratando de arrancarlo de /etc/conf.d/local.start y nisiquiera se ejecuta

El scripts es sencillo un fracmento del http://www.gentoo.org/doc/es/home-router-howto.xml:

#!/bin/bash

echo Firewall Iniciando

iptables -F

iptables -X

iptables -Z

iptables -t nat -F

#Configuración de las políticas por defecto para manejar el resto de tráfico

iptables -P INPUT ACCEPT

iptables -P OUTPUT ACCEPT

iptables -P FORWARD DROP

export LAN=eth0

export WAN=eth1

#Luego aseguraremos los servicios que sólo trabajan para la LAN

iptables -I INPUT 1 -i ${LAN} -j ACCEPT

iptables -I INPUT 1 -i lo -j ACCEPT

iptables -A INPUT -p UDP --dport bootps ! -i ${LAN} -j REJECT

iptables -A INPUT -p UDP --dport domain ! -i ${LAN} -j REJECT

#Descartaremos los paquetes TCP / UDP dirigidos a puertos privilegiados

iptables -A INPUT -p TCP ! -i ${LAN} -d 0/0 --dport 0:1023 -j DROP

iptables -A INPUT -p UDP ! -i ${LAN} -d 0/0 --dport 0:1023 -j DROP

#Finalmente añadiremos las reglas para NAT

iptables -I FORWARD -i ${LAN} -d 192.168.0.0/255.255.255.0 -j DROP

iptables -A FORWARD -i ${LAN} -s 192.168.0.0/255.255.255.0 -j ACCEPT

iptables -A FORWARD -i ${WAN} -d 192.168.0.0/255.255.255.0 -j ACCEPT

iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE

#Decir al kernel que el enmascaramiento IP (IP-forwarding, en inglés) está correcto

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

for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done

echo Firewall Ejecutado Correctamente

#########FIN################

lo escribi de forma mas sencilla y nada hace lo mismo:

#!/bin/bash

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

iptables -A INPUT -s 192.168.0.0/255.255.255.0 -i eth1 -j ACCEPT

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

----------

## cohone

¿Y el script se ejecuta correctamente al inicio?

Te aparece:

Firewall Iniciando

Firewall Ejecutado Correctamente 

¿En el log de inicio?

Que yo sepa (que no es mucho, lo admito), los scripts en /etc/init.d no se ejecutan por el mero hecho de estar allí...

Tendrías que ejecutar primero 

```
rc-update add omar_firewall1 default
```

, y para eso el script debería tener una estructura correcta, para aceptar los start/stop, etc...

Supongo que las reglas del firewall se cargan ya que las grabaste con el /iptables/rules-save, pero faltaría por ejecutar el 

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

Estructura básica de un script de inicio:

```
#!/sbin/runscript

depend() {

  (Dependency information)

}

start() {

  (Commands necessary to start the service)

}

stop() {

  (Commands necessary to stop the service)

}

restart() {

  (Commands necessary to restart the service)

}
```

Sacada de aquí, claro: http://www.gentoo.org/doc/es/handbook/handbook-x86.xml?part=2&chap=4

Saludos

----------

## omarelrockero1

no me imprime las salidas por echo a pesar de mandar a ejecutar los scripts creados en los direcctorios /sbin /usr/bin, desde /etc/conf.d/local.start.

si coloque /etc/init.d/omar_firewall1 por solo una referencia también el mismo script lo he colocado en /sbin /usr/bin y funcionan bin:

pero tambien trate de iniciarlo de la manera  rc-update add omar_firewall1 default, siguiendo la estructura de http://www.gentoo.org/doc/es/handbook/handbook-x86.xml?part=2&chap=4. logrando los mismos resultados.

tengo que ejecutar nuevamente echo 1 > /proc/sys/net/ipv4/ip_forward , despues de ejecutar /etc/init.d/iptables save, lo digo porque en el script esta incluida dicha linea?

----------

## omarelrockero1

De esta forma fue que cree el scrips para iniciarlo desde /etc/init.d/ con rc-update al nivel default, no se si esta malo:

#!/sbin/runscript

depend() {

need net

}

start() {

  ebegin "Iniciando Firewall"

start-stop-daemon --start --exec /sbin/omar_firewall1 \

  eend $?

}

----------

## gringo

ya hace que no uso iptables en gentoo pero lo que yo hacía para cargar mis reglas era :

- cargar mis reglas, o bien a mano o con un script

- ejecutar /etc/init.d/iptables save

- eliminar todas las reglas

- cargar las reglas salvadas con /etc/init.d/iptables start

- controlar que las reglas se han cargado con éxito.

- si veía que todas las reglas estaban bien simplemente añadía el script a la carga del sistema rc-update add iptables default

y al menos a mi siempre me ha funcionado bien.

quiero decir con todo este rollo que no tienes porque crear tu propio script de carga, gentoo ya lo proporciona.

saluetes

----------

## pelelademadera

tal cual:

yo tengo un script asi:

 *Quote:*   

> #!/bin/bash
> 
> iptables -F
> 
> iptables -t nat -F
> ...

 

en definitiva, borro las reglas que tengo cargadas en las 2 primeras lineas,

creo las reglas manualmente, y en las ultimas 3 lineas:

guardo las reglas

hago un reload, para ver si me tira un error

la agrego al runlevel boot.

el script lo tengo recontraguardado xq es mi router wifi...

si necesito armar otro, solo tengo que cambiar las 2 lineas de export para hacer coincidir con mi sistema

----------

## opotonil

Creo que @cohone ha dado en el clavo, el unico motivo por el que no te funciona:

```

bash omar_firewall1

/etc/init.d/iptables save

/etc/init.d/iptables start

rc-update add iptables default

```

es por:

 *Quote:*   

> 
> 
> #Decir al kernel que el enmascaramiento IP (IP-forwarding, en inglés) está correcto 
> 
> echo 1 > /proc/sys/net/ipv4/ip_forward 
> ...

 

Que tienes que configurarlo editando "/etc/sysctl.conf" ya que no se guarda con "/etc/init.d/iptables save".

Salu2.

----------

## pelelademadera

 *opotonil wrote:*   

> 
> 
>  *Quote:*   
> 
> #Decir al kernel que el enmascaramiento IP (IP-forwarding, en inglés) está correcto 
> ...

 

es para compartir internet. para que pase paquetes de una interfaz a otra teoricamente....

http://www.gentoo.org/doc/es/home-router-howto.xml#doc_chap4

 *Quote:*   

> Decir al kernel que el enmascaramiento IP (IP-forwarding, en inglés) está correcto
> 
> # echo 1 > /proc/sys/net/ipv4/ip_forward
> 
> # for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done

 

----------

## Txema

Yo para estos menesteres uso net-firewall/arno-iptables-firewall que ya lo usaba cuando el servidor usaba ubuntu y sigo usándolo ahora con gentoo.

Por si te interesa: http://rocky.eld.leidenuniv.nl/joomla/

Un saludo.

----------

## omarelrockero1

Listo! pues si cohone tenia toda la razón y como dice opotonil es lógico que iptables no guarda el: echo 1 > /proc/sys/net/ipv4/ip_forward, guarda solo las reglas iptables. modifique /etc/sysctl.conf estableciendo net.ipv4.ip_forward = 1 y funciona correctamente al arrancar. 

Pero de igual forma cree un scripts con a estructura arriba mencionada y lo agregue al runlevel default de esta manera veo mas fácil para quitar este conjunto de reglas y volver a colocarlas si las requiero nuevamente con rc-update.

si Txema arno-iptables-firewall es muy bueno yo también lo utilice en debían una vez, es solo que ahora quise hacerlo de esta forma ya que simplemente quiero empezar a escribir manualmente las reglas iptables.

Muchas gracias a todos por su ayuda.

----------

