Ante todo para realizar estas configuraciones se recomienda una distribución linux para
servidor, como Debian o Red Hat, yo he trabajado con Debian 6.
Vlan es un protocolo que permite sectorizar un suiche físico de red para poder conectar varias
subredes al mismo sin que choquen unas con otras. Es así como en un mismo suiche de red podemos
tener varias subredes, en lugar de tener un suiche para cada subred. Para diferenciar o separar una vlan
de la otra se usa una vlan id, que es la etiqueta digital que identifica a una vlan en especifico.
Generalmente cantv proporciona este servicio desde un suiche con vlan, esto significa que entre
los parámetros de conexión además de la ip wan y ip lan, se entrega el vlan id correspondiente. Debes
verificar la existencia de la vlan en la conexión ya que de existir, es necesario etiquetar la conexión del
lado del cliente con la misma vlan id para que haya comunicación con el equipo de cantv.
¿Por qué es recomendable usar 3 tarjetas de red?. Una tarjeta de red estará conectada al
módem de cantv y donde se configuran la ip wan y la ip lan. La segunda tarjeta de red se usara para
configurar la DMZ que es donde se montaran los servidores que requieren ser vistos desde internet, por
ejemplo la pagina web de la institución. La tercera tarjeta de red se usara para configurar la red local de
la institución.
Una vez instaladas las tres tarjetas se podrán ver sus nombres con el comando ifconfig como
superusuario
eth0, eth1 y eth2
Para mayor facilidad es mejor dejar la tarjeta eth0 para la red interna, eth1 para
conectarse al módem y eth2 para la dmz.
Para usar las funciones de etiquetado de la vlan es necesario activar el protocolo 802.1q en
/etc/modules con el comando como superusuario:
# modprobe 8021q
Las reglas del cortafuegos se usaran en un script basado en iptables y almacenado en /etc/init.d
el cual se ejecutará cada vez que se inicie la computadora o el servidor.
Es el script de iptables es el que controla el flujo de paquetes entre las interfaces y las subredes,
también el que controla que puertos abrir o cerrar, así como la protección de la dmz y de la red interna.
En este caso llamaremos al archivo de iptables "cortafuego" y estará ubicado en la siguiente ruta
/etc/init.d/cortafuego
-------------------------------------------------------------------------------------------------------------------------
Creacion del archivo de iptables y su ejecución al inicio de linux
Trabajando como superusuario creamos un archivo llamado cortafuego en el directorio /etc/init.d
# touch /etc/init.d/cortafuego
En esta forma los archivos que llevaran la configuración de la conexión a internet serán los
siguientes:
/etc/network/interfaces //El archivo donde se configuran las interfaces de red
/etc/init.d/cortafuego //El cortafuegos del sistema
/etc/modules //Donde se cargan los módulos adicionales del sistema que se ejecutan al inicio
Una vez cumplidos todos estos pasos pasamos a realizar las configuraciones con los parámetros
proporcionados por cantv.
auto eth2
#
# Variables de la dmz
# dmz eth2
export DMZ_IFACE="eth2"
export DMZ_NET="172.16.16.0/24"
export DMZ_IP="172.16.16.254"
#
# dmz 0
export DMZ_IP0="172.16.16.1" # Para el Correo
#
# dmz 1
export DMZ_IP1="172.16.16.2" # Para el Portal
#
# dmz 2
export DMZ_IP2="172.16.16.3"
#
# dmz 3
export DMZ_IP2="172.16.16.4"
#
# dmz 4
export DMZ_IP4="172.16.16.5"
#
# dmz 5
export DMZ_IP5="172.16.16.6"
#
# Funcion para limpiar el firewall (detener)
function detener {
#
# Eliminando reglas de todas las tablas
#
$IPTABLES -t filter -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
##$IPTABLES -t raw -F
#
# Eliminando cadenas definidas por el usuario de todas las tablas
$IPTABLES -t filter -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X
##$IPTABLES -t raw -X
#
# Reseteando los conatadores de todas las tablas a cero
$IPTABLES -t filter -Z
$IPTABLES -t nat -Z
$IPTABLES -t mangle -Z
##$IPTABLES -t raw -Z
#
# Aplicando el bit de forwarding para la redireccion de paquetes
echo 0 > /proc/sys/net/ipv4/ip_forward
#
# Aplicando politicas por defecto
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
}
#
# Funcion para iniciar el firewall (iniciar)
function iniciar {
#
# Aplicando politicas por defecto
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
#
# Aplicando el bit de forwarding para la redireccion de paquetes
echo 1 > /proc/sys/net/ipv4/ip_forward
#
######## INPUT ########
# Habilitando entrada de localhost (lo)
$IPTABLES -A INPUT -i lo -j ACCEPT
#
# Habilitando entrada de la red local (eth0)
$IPTABLES -A INPUT -s $LAN_NET -i $LAN_IFACE -j ACCEPT
#
# Habilitando entrada de la DMZ (eth2)
$IPTABLES -A INPUT -s $DMZ_NET -i $DMZ_IFACE -m state --state RELATED,ESTABLISHED
-j ACCEPT
$IPTABLES -A INPUT -s $DMZ_NET -i $DMZ_IFACE -p tcp -m multiport --dports 53,3142 -j
ACCEPT
$IPTABLES -A INPUT -s $DMZ_NET -i $DMZ_IFACE -p udp -m multiport --dports 53 -j ACCEPT
#
# Habilitando entrada de la WAN (eth1)
# entrada ssh/scp
$IPTABLES -A INPUT -d $WWAN_IP -p tcp --dport 2552 -i $WWAN_IFACE -j ACCEPT
# entrada desde el puerto 80 (www) para actualizar el sistema
$IPTABLES -A INPUT -d $WWAN_IP -p tcp -m multiport --sports 80,443 -i $WWAN_IFACE -m
state --state RELATED,ESTABLISHED -j ACCEPT
# entrada desde el puerto udp 123 (ntp)
$IPTABLES -A INPUT -p udp --sport 123 -i $WWAN_IFACE -m state --state
RELATED,ESTABLISHED -j ACCEPT
# entrada desde el puerto tcp y udp 53 para las consultas dns externos
$IPTABLES -A INPUT -p tcp --sport 53 -i $WWAN_IFACE -m state --state
RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A INPUT -p udp --sport 53 -i $WWAN_IFACE -m state --state
RELATED,ESTABLISHED -j ACCEPT
# entrada hacia el puerto tcp y udp 53 para las consultas dns a este servidor
$IPTABLES -A INPUT -d $WWAN_IP -p tcp --dport 53 -i $WWAN_IFACE -j ACCEPT
$IPTABLES -A INPUT -d $WWAN_IP -p udp --dport 53 -i $WWAN_IFACE -j ACCEPT
# entrada hacia el puerto tcp y udp 53 para las consultas dns a este servidor (secundario)
$IPTABLES -A INPUT -d $WLAN_IP5 -p tcp --dport 53 -i $WWAN_IFACE -j ACCEPT
$IPTABLES -A INPUT -d $WLAN_IP5 -p udp --dport 53 -i $WWAN_IFACE -j ACCEPT
#
######## OUTPUT ########
# Habilitando salida localhost (lo)
$IPTABLES -A OUTPUT -o lo -j ACCEPT
#
# Habilitando salida a la red local (eth0)
$IPTABLES -A OUTPUT -d $LAN_NET -o $LAN_IFACE -j ACCEPT
#
# Habilitando salida a la DMZ (eth2)
$IPTABLES -A OUTPUT -d $DMZ_NET -o $DMZ_IFACE -j ACCEPT
$IPTABLES -A OUTPUT -d $DMZ_NET -o $DMZ_IFACE -p tcp -m multiport --sports 53,3142 -j
ACCEPT
$IPTABLES -A OUTPUT -d $DMZ_NET -o $DMZ_IFACE -p udp -m multiport --sports 53 -j
ACCEPT
#
# Habilitando salida a la WAN (eth1)
# salida ssh/scp
$IPTABLES -A OUTPUT -s $WWAN_IP -p tcp --sport 2552 -o $WWAN_IFACE -j ACCEPT
# salida hacia el puerto 80 (www) para actualizar el sistema
$IPTABLES -A OUTPUT -s $WWAN_IP -p tcp -m multiport --dports 80,443 -o $WWAN_IFACE -j
ACCEPT
# salida hacia el puerto udp 123 (ntp)
$IPTABLES -A OUTPUT -p udp --dport 123 -o $WWAN_IFACE -j ACCEPT
# salida hacia el puerto tcp y udp 53 para las consultas dns externos
$IPTABLES -A OUTPUT -p tcp --dport 53 -o $WWAN_IFACE -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 53 -o $WWAN_IFACE -j ACCEPT
# salida hacia el puerto tcp y udp 53 para las consultas dns a este servidor
$IPTABLES -A OUTPUT -s $WWAN_IP -p tcp --sport 53 -o $WWAN_IFACE -j ACCEPT
$IPTABLES -A OUTPUT -s $WWAN_IP -p udp --sport 53 -o $WWAN_IFACE -j ACCEPT
# salida hacia el puerto tcp y udp 53 para las consultas dns a este servidor (secundario)
$IPTABLES -A OUTPUT -s $WLAN_IP5 -p tcp --sport 53 -o $WWAN_IFACE -j ACCEPT
$IPTABLES -A OUTPUT -s $WLAN_IP5 -p udp --sport 53 -o $WWAN_IFACE -j ACCEPT
#
#
######## PREROUTING DNAT ########
# Squid3
iptables -t nat -A PREROUTING -i $LAN_IFACE -p tcp -m multiport --dports 80 -j REDIRECT --to-
port 3128
# iptables -t nat -A PREROUTING -i $LAN_IFACE -p tcp -m multiport --dports 443 -j REDIRECT
--to-port 3130
#
# De internet hacia el servidor email
$IPTABLES -t nat -A PREROUTING -d $WLAN_IP0 -p tcp -m multiport --dports 80,25,110,143,443
-i $WWAN_IFACE -j DNAT --to $DMZ_IP0
#
# De internet hacia el servidor www
$IPTABLES -t nat -A PREROUTING -d $WLAN_IP1 -p tcp --dport 80 -i $WWAN_IFACE -j DNAT
--to $DMZ_IP1
#
######## FORWARD ########
# lan <=> dmz
$IPTABLES -A FORWARD -s $LAN_NET -i $LAN_IFACE -o $DMZ_IFACE -j ACCEPT # De la
red local hacia la dmz
$IPTABLES -A FORWARD -d $LAN_NET -i $DMZ_IFACE -o $LAN_IFACE -m state --state
RELATED,ESTABLISHED -j ACCEPT # De la dmz hacia la red local
#
# internet <=> lan
$IPTABLES -A FORWARD -d $LAN_NET -p tcp -m multiport --sports 80,443,1863,3306 -i
$WWAN_IFACE -o $LAN_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT # De
internet hacia la red local
$IPTABLES -A FORWARD -s $LAN_NET -p tcp -m multiport --dports 80,443,1863,3306 -i
$LAN_IFACE -o $WWAN_IFACE -j ACCEPT # De la red local hacia internet
$IPTABLES -A FORWARD -d $LAN_NET -p udp -m multiport --sports 123 -i $WWAN_IFACE -o
$LAN_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT # De internet hacia la red local
(udp)
$IPTABLES -A FORWARD -s $LAN_NET -p udp -m multiport --dports 123 -i $LAN_IFACE -o
$WWAN_IFACE -j ACCEPT # De la red local hacia internet (udp)
#
# internet <=> dmz
$IPTABLES -A FORWARD -d $DMZ_NET -p tcp -m multiport --sports 80,873 -i $WWAN_IFACE
-o $DMZ_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT # De internet desde el puerto
80 (www) hacia la dmz para actualizar el sistema
$IPTABLES -A FORWARD -s $DMZ_NET -p tcp -m multiport --dports 80,873 -i $DMZ_IFACE -o
$WWAN_IFACE -j ACCEPT # De la dmz hacia internet hacia el puerto 80 (www) para actualizar el
sistema
$IPTABLES -A FORWARD -d $DMZ_NET -p udp --sport 123 -i $WWAN_IFACE -o $DMZ_IFACE
-m state --state RELATED,ESTABLISHED -j ACCEPT # De internet desde el puerto 123 (ntp) hacia la
dmz
$IPTABLES -A FORWARD -s $DMZ_NET -p udp --dport 123 -i $DMZ_IFACE -o $WWAN_IFACE
-j ACCEPT # De la dmz hacia internet hacia el puerto 123 (ntp)
#
# internet <=> email (dmz)
$IPTABLES -A FORWARD -d $DMZ_IP0 -p tcp -m multiport --dports 80,25,110,143,443 -i
$WWAN_IFACE -o $DMZ_IFACE -j ACCEPT # De internet hacia el servidor email (para los accesos
a email)
$IPTABLES -A FORWARD -s $DMZ_IP0 -p tcp -m multiport --sports 80,25,110,143,443 -i
$DMZ_IFACE -o $WWAN_IFACE -j ACCEPT # De el servidor email hacia internet (para los accesos
a email)
$IPTABLES -A FORWARD -d $DMZ_IP0 -p tcp --sport 25 -i $WWAN_IFACE -o $DMZ_IFACE -j
ACCEPT # De internet hacia el servidor email (para los envios de email)
$IPTABLES -A FORWARD -s $DMZ_IP0 -p tcp --dport 25 -i $DMZ_IFACE -o $WWAN_IFACE -j
ACCEPT # De el servidor email hacia internet (para los envios de email)
#
# internet <=> www (dmz)
$IPTABLES -A FORWARD -d $DMZ_IP1 -p tcp --dport 80 -i $WWAN_IFACE -o $DMZ_IFACE -j
ACCEPT # De internet hacia el servidor www
$IPTABLES -A FORWARD -s $DMZ_IP1 -p tcp --sport 80 -i $DMZ_IFACE -o $WWAN_IFACE -j
ACCEPT # De el servidor www hacia internet
#
######## POSTROUTING SNAT ########
# internet <= lan
$IPTABLES -t nat -A POSTROUTING -s $LAN_NET -p tcp -m multiport --dports 80,443,1863,3306
-o $WWAN_IFACE -j SNAT --to $WWAN_IP # De la red local hacia internet
$IPTABLES -t nat -A POSTROUTING -s $LAN_NET -p udp -m multiport --dports 123 -o
$WWAN_IFACE -j SNAT --to $WWAN_IP # De la red local hacia internet (udp)
#
# internet <= email (dmz)
$IPTABLES -t nat -A POSTROUTING -s $DMZ_IP0 -p tcp -m multiport --sports 80,25,110,143,443
-o $WWAN_IFACE -j SNAT --to $WLAN_IP0 # De el servidor email hacia internet (para acceso a
email)
$IPTABLES -t nat -A POSTROUTING -s $DMZ_IP0 -p tcp -m multiport --dports 25,80,873 -o
$WWAN_IFACE -j SNAT --to $WLAN_IP0 # De el servidor email hacia internet (para envios de
email)
######## BORRAR ######## $IPTABLES -t nat -A POSTROUTING -s $DMZ_IP0 -p tcp --dport
80 -o $WWAN_IFACE -j SNAT --to $WLAN_IP0 # De el servidor email hacia internet (para
actualizacion del sistema)
$IPTABLES -t nat -A POSTROUTING -s $DMZ_IP0 -p udp --dport 123 -o $WWAN_IFACE -j
SNAT --to $WLAN_IP0 # De el servidor email hacia internet (para actualizacion de la hora)
#
# internet <= www (dmz)
$IPTABLES -t nat -A POSTROUTING -s $DMZ_IP1 -p tcp --sport 80 -o $WWAN_IFACE -j SNAT
--to $WLAN_IP1 # De el servidor www hacia internet (para acceso al portal)
$IPTABLES -t nat -A POSTROUTING -s $DMZ_IP1 -p tcp --dport 80 -o $WWAN_IFACE -j SNAT
--to $WLAN_IP1 # De el servidor www hacia internet (para actualizacion del sistema)
$IPTABLES -t nat -A POSTROUTING -s $DMZ_IP1 -p udp --dport 123 -o $WWAN_IFACE -j
SNAT --to $WLAN_IP1 # De el servidor www hacia internet (para actualizacion de la hora)
#
}
case "$1" in
start)
detener
iniciar
;;
stop)
detener
;;
*)
echo "Usar: /etc/init.d/iptables {start|stop}"
exit 1
;;
esac
exit 0
----------------------------------------------------------------------------------------------------------------------------
LA RED LOCAL EN LA TARJETA eth0
-------------------------------------------------------------------------------------------------------------
Las ip's automáticas para la red interna se realizan con dhcp3-server el cual se instala como
supersusuario con el comando:
apt-get install dhcp3-server
---------------------------------------------------------------------------------------------------------------
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;
# deny unknown-clients;
log-facility local7;
-------------------------------------------------------------------------------------------------
Una vez configurado el dhcp, se reinicia el servicio como superusuario y con el comando:
/etc/init.d/isc-dhcp-server restart
Fuentes:
http://oscarcorrea.wordpress.com/2011/11/04/ejecutar-un-script-al-arrancar-linux/
http://www.pello.info/filez/IPTABLES_en_21_segundos.html
http://www.microhowto.info/tags/802.1q.html
http://www.microhowto.info/howto/configure_an_ethernet_interface_as_a_vlan_trunk.html
http://www.microhowto.info/howto/configure_an_ethernet_interface_as_a_vlan_trunk_on_debian.html