| 
  • If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • You already know Dokkio is an AI-powered assistant to organize & manage your digital files & messages. Very soon, Dokkio will support Outlook as well as One Drive. Check it out today!

View
 

Enrutador de red

Page history last edited by Luciérnaga 14 years, 6 months ago

En primer lugar expongo el material empleado:

¿Quién no tiene por ahí un PC en deshuso u obsoleto y que no sabe qué hacer con él ...?

 

Pues bien, se puede emplear (aprovechar) como enrutador de red local a la vez que se convierte en un fabuloso cortafuegos de protección a nuestra conexión de red exterior ..., sigan leyendo ... Wink

 

El esquema del tema es el siguiente:

[Internet]<-->[Router]<-->[PC-1]<-->[Switch-8ports]<-->[Red local de varios PCs]

 

Hardware:

Placa base: Soltek SL-75DRV

Procesador: AMD Athlon XP 1,2GHz

Memoria: 768MB SDRAM, bus 266MHz

Gráfica: AGP Nvidia GeForce4 MX-440

Monitor: TFT/LCD Fujitsu/Siemens Amilo 3190T

Discos duros: IDE (Maxtor 6L160P0 160GB [Master] - Seagate ST32041A 20GB [Slave])

Discos ópticos: DVD-RWs (Sony DRU-800A y Pionner DVR-111D)

Fuente de alimentación estándar automática de 420W ...

... y el alma de este engendro, dos adaptadores Ethernet PCI Gigabit de NetGear modelo GA311 ...

 

Software:

Windows 2000 Profesional, Gentoo Linux 2008 (kernel 2.6.30-gentoo-r4), Molinux 5.0 Dorotea y Guadalinex.v6 ...

No es mi propósito aquí y ahora comentar el cómo instalar cualquiera de esos S.O.s, en cuanto a Molinux se refiere ya lo tengo posteado aquí http://foros.molinux.info/viewtopic.php?t=2043 si algún lector está interesado en leer comentarios de Gentoo pueden navegar hasta esta dirección http://www.dvdadvdr.com/forums/showthread.php?t=66269, respecto a la distro Guadalinex.v6 pueden hacerlo ahí http://www.dvdadvdr.com/forums/showthread.php?t=66458 y sobre Win me disculparán que lo obvie ...

 

Una vez tengamos en funcionamiento la Dorotea y conectada automáticamente a Internet, verificaremos algunas cositas, por ejemplo tener activados los repos así ...

 

También verificaremos que desde la Dorotea tenemos correctamente montada la red local, por ejemplo ejecutaremos el icono del escritorio Servidores de red para comprobar la conectividad con otro PC con Win ... 

 

 

... buscará en nuestra red local para encontrar un equipo ...

 

 

... ejecutaremos el icono Red de Windows para encontrar su dominio o grupo de trabajo ... 

 

... y ejecutaremos el icono de grupo para encontrar un equipo y sus archivos ... 

 

... y et VOILÁ ... sus carpetas de almacenamiento. Bien llegados a este punto resulta que tenemos a nuestro equipo sin problemas de funcionamiento, preparado y al alcance de lo que nos proponemos, configurar un "enrutador de red" ......

 

Abrimos un Terminal y ejecutaremos este comando sudo aptitude install dhcp3-server nos pide la contraseña de usuario, de modo que se la proporcionaremos para conseguir privilegios de superusuario, e ipso facto nos instalará la aplicación ... 

 

Dado que necesitaremos un editor de texto para el Terminal, como es mi caso, y Molinux no lo instala por defecto ("gedit" es el predeterminado) en el Terminal ejecutamos este comando sudo aptitude install nano ...

 

Una vez terminada esta pequeña instalación editaremos el archivo sysctl.conf ejecutando este comando en el Terminal sudo nano -w /etc/sysctl.conf y descomentaremos estas dos líneas ...

net.ipv4.conf.all.rp_filter=1

net.ipv4.ip_forward=1

... para guardar y cerrar el archivo "Ctl+o > Enter > Ctl+x"

 

/etc/sysctl.conf

#

# /etc/sysctl.conf - Configuration file for setting system variables

# See /etc/sysctl.d/ for additional system variables.

# See sysctl.conf (5) for information.

#

#kernel.domainname = example.com

# Uncomment the following to stop low-level messages on console

#kernel.printk = 4 4 1 7

##############################################################3

# Functions previously found in netbase

#

# Uncomment the next two lines to enable Spoof protection (reverse-path filter)

# Turn on Source Address Verification in all interfaces to

# prevent some spoofing attacks

#net.ipv4.conf.default.rp_filter=1

net.ipv4.conf.all.rp_filter=1

# Uncomment the next line to enable TCP/IP SYN cookies

# This disables TCP Window Scaling (http://lkml.org/lkml/2008/2/5/167),

# and is not recommended.

#net.ipv4.tcp_syncookies=1

# Uncomment the next line to enable packet forwarding for IPv4

net.ipv4.ip_forward=1

# Uncomment the next line to enable packet forwarding for IPv6

#net.ipv6.conf.all.forwarding=1

###################################################################

# Additional settings - these settings can improve the network

# security of the host and prevent against some network attacks

# including spoofing attacks and man in the middle attacks through

# redirection. Some network environments, however, require that these

# settings are disabled so review and enable them as needed.

#

# Ignore ICMP broadcasts

#net.ipv4.icmp_echo_ignore_broadcasts = 1

#

#net.ipv4.conf.all.send_redirects = 0

#

# Do not accept IP source route packets (we are not a router)

#net.ipv4.conf.all.accept_source_route = 0

#net.ipv6.conf.all.accept_source_route = 0

#

# Log Martian Packets

#net.ipv4.conf.all.log_martians = 1

#

# The contents of /proc/<pid>/maps and smaps files are only visible to

# readers that are allowed to ptrace() the process

# kernel.maps_protect = 1

# Ignore bogus ICMP errors

#net.ipv4.icmp_ignore_bogus_error_responses = 1

#

# Do not accept ICMP redirects (prevent MITM attacks)

#net.ipv4.conf.all.accept_redirects = 0

#net.ipv6.conf.all.accept_redirects = 0

# _or_

# Accept ICMP redirects only for gateways listed in our default

# gateway list (enabled by default)

# net.ipv4.conf.all.secure_redirects = 1

#

# Do not send ICMP redirects (we are not a router)

#net.ipv4.conf.all.send_redirects = 0

#

# Do not accept IP source route packets (we are not a router)

#net.ipv4.conf.all.accept_source_route = 0

#net.ipv6.conf.all.accept_source_route = 0

#

# Log Martian Packets

#net.ipv4.conf.all.log_martians = 1

#

# The contents of /proc/<pid>/maps and smaps files are only visible to

# readers that are allowed to ptrace() the process

# kernel.maps_protect = 1

 

Una vez realizados los pasos anteriores configuraremos los parámetros de nuestro servidor DHCP.

Para efectos de este tutorial trabajaremos con dos interfaces de red a saber:

eth0 = interfaz externa, por donde conectamos a Internet.

eth1 = interfaz interna, donde salen las direcciones IP hacia la LAN.

 

Ahora definiremos cual será nuestra interfaz interna, por lo que ejecutaremos este comando:

sudo nano -w /etc/default/dhcp3-server

... y editaremos esta línea:

INTERFACES="eth1"

... para guardar y cerrar el archivo "Ctl+o > Enter > Ctl+x"

 

/etc/default/dhcp3-server

# Defaults for dhcp initscript

# sourced by /etc/init.d/dhcp

# installed at /etc/default/dhcp3-server by the maintainer scripts

#

# This is a POSIX shell fragment

#

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?

# Separate multiple interfaces with spaces, e.g. "eth0 eth1".

INTERFACES="eth1"

 

Ahora nos queda definir nuestros parámetros de direcciones IP que dará nuestro servidor, para ello en el Terminal ejecutaremos este comando:

sudo nano -w /etc/dhcp3/dhcpd.conf

Buscamos las siguientes líneas y las comentamos dejándolas así:

# option definitions common to all supported networks...

# option domain-name "example.org";

# option domain-name-servers ns1.example.org, ns2.example.org;

# default-lease-time 600;

# max-lease-time 7200;

 

En el mismo archivo ahora buscaremos las líneas:

# A slightly different configuration for an internal subnet.

# subnet 10.5.5.0 netmask 255.255.255.224 {

# range 10.5.5.26 10.5.5.30;

# option domain-name-servers nsl.internal.example.org;";

# option routers 10.5.5.1;

# option broadcast-address 10.5.5.31;

# default-lease-time 600;

# max-lease-time 7200;

#}

 

Y es aquí en donde configuramos nuestros parámetros de direcciones IP de la siguiente manera:

# A slightly different configuration for an internal subnet.

subnet 192.168.0.0 netmask 255.255.255.0 {

range 192.168.0.1 192.168.0.255;

option domain-name-servers 80.58.61.250, 80.58.61.254;

option domain-name "192.168.0.1";

option routers 192.168.0.100;

option broadcast-address 192.168.0.233;

default-lease-time 600;

max-lease-time 7200;

}

... para guardar y cerrar el archivo "Ctl+o > Enter > Ctl+x"

 

Explicaremos un poco el código ....

'subnet' y 'netmask' es donde estamos diciendo a qué red y máscara de red serán nuestras direcciones LAN ...

en el parámetro 'range' en donde comienzan y terminan nuestras direcciones IP ...

la 'option domain-name-servers' son los DNS de tu ISP (Internet Service Provider) en mi caso los de Telefónica ...

la 'option domain-name' es el nombre de máquina de tu equipo servidor para ser visto por los demás, o lo que es lo mismo la dirección IP inicial ...

la 'option routers' es la dirección IP de puerta de enlace asignada al servidor ...

en la 'option broadcast-address' definimos la dirección de difusión de la red ...

en 'default-lease-time' se indica el tiempo de asignación ...

y en 'max-lease-time' se indica el tiempo de asignación máxima en segundos.

 

/etc/dhcp3/dhcpd.conf

#

# Sample configuration file for ISC dhcpd for Debian

#

# Attention: If /etc/ltsp/dhcpd.conf exists, that will be used as

# configuration file instead of this file.

#

# $Id: dhcpd.conf,v 1.1.1.1 2002/05/21 00:07:44 peloy Exp $

#

# The ddns-updates-style parameter controls whether or not the server will

# attempt to do a DNS update when a lease is confirmed. We default to the

# behavior of the version 2 packages ('none', since DHCP v2 didn't

# have support for DDNS.)

ddns-update-style none;

# option definitions common to all supported networks...

# option domain-name "example.org";

# option domain-name-servers ns1.example.org, ns2.example.org;

# default-lease-time 600;

# max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local

# network, the authoritative directive should be uncommented.

#authoritative;

# Use this to send dhcp log messages to a different log file (you also

# have to hack syslog.conf to complete the redirection).

log-facility local7;

# No service will be given on this subnet, but declaring it helps the

# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {

#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {

# range 10.254.239.10 10.254.239.20;

# option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;

#}

# This declaration allows BOOTP clients to get dynamic addresses,

# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {

# range dynamic-bootp 10.254.239.40 10.254.239.60;

# option broadcast-address 10.254.239.31;

# option routers rtr-239-32-1.example.org;

#}

# A slightly different configuration for an internal subnet.

subnet 192.168.0.0 netmask 255.255.255.0 {

range 192.168.0.1 192.168.0.255;

option domain-name-servers 80.58.61.250, 80.58.61.254;

option domain-name "192.168.0.1";

option routers 192.168.0.100;

option broadcast-address 192.168.0.233;

default-lease-time 600;

max-lease-time 7200;

}

# Hosts which require special configuration options can be listed in

# host statements. If no address is specified, the address will be

# allocated dynamically (if possible), but the host-specific information

# will still come from the host declaration.

#host passacaglia {

# hardware ethernet 0:0:c0:5d:bd:95;

# filename "vmunix.passacaglia";

# server-name "toccata.fugue.com";

#}

# Fixed IP addresses can also be specified for hosts. These addresses

# should not also be listed as being available for dynamic assignment.

# Hosts for which fixed IP addresses have been specified can boot using

# BOOTP or DHCP. Hosts for which no fixed address is specified can only

# be booted with DHCP, unless there is an address range on the subnet

# to which a BOOTP client is connected which has the dynamic-bootp flag

# set.

#host fantasia {

# hardware ethernet 08:00:07:26:c0:a5;

# fixed-address fantasia.fugue.com;

#}

# You can declare a class of clients and then do address allocation

# based on that. The example below shows a case where all clients

# in a certain class get addresses on the 10.17.224/24 subnet, and all

# other clients get addresses on the 10.0.29/24 subnet.

#class "foo" {

# match if substring (option vendor-class-identifier, 0, 4) = "SUNW";

#}

#shared-network 224-29 {

# subnet 10.17.224.0 netmask 255.255.255.0 {

# option routers rtr-224.example.org;

# }

# subnet 10.0.29.0 netmask 255.255.255.0 {

# option routers rtr-29.example.org;

# }

# pool {

# allow members of "foo";

# range 10.17.224.10 10.17.224.250;

# }

# pool {

# deny members of "foo";

# range 10.0.29.10 10.0.29.230;

# }

#}

 

Con eso tenemos todos los parámetros de nuestra red de forma óptima. Ahora solo nos queda asignarle la IP estática que hemos definido a nuestra tarjeta de red interna para que actúe como puerta de enlace. Para ello ejecutaremos el siguiente código:

sudo nano -w /etc/network/interfaces

auto lo

iface lo inet loopback

# interfaz de LAN

auto eth1

iface eth1 inet static

address 192.168.0.100

netmask 255.255.255.0

network 192.168.0.0

broadcast 192.168.0.255

# interfaz conectada a Internet (en mi caso es IP dinámica)

auto eth0

iface eth0 inet dhcp

... para guardar y cerrar el archivo "Ctl+o > Enter > Ctl+x"

 

Ahora crearemos un pequeño guión (script) en donde permitiremos el tráfico, enrutado y enmascaramiento de los equipos de la red local hacia Internet y así puedan navegar sin problemas. Para ello nos dirigimos a la consola y crearemos un script que se llamará router.sh con el siguiente comando:

sudo nano -w /etc/init.d/router.sh

#!/bin/sh

iptables -F

iptables -t nat -F

iptables -P INPUT ACCEPT

iptables -P OUTPUT ACCEPT

iptables -P FORWARD DROP

iptables -I INPUT 1 -i eth1 -j ACCEPT

iptables -I INPUT 1 -i lo -j ACCEPT

iptables -A INPUT -p UDP --dport bootps ! -i eth1 -j REJECT

iptables -A INPUT -p UDP --dport domain ! -i eth1 -j REJECT

iptables -A INPUT -p TCP ! -i eth1 -d 0/0 --dport 0:1023 -j DROP

iptables -A INPUT -p UDP ! -i eth1 -d 0/0 --dport 0:1023 -j DROP

iptables -I FORWARD -i eth1 -d 192.168.0.0/255.255.255.0 -j DROP

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

iptables -A FORWARD -i eth0 -d 192.168.0.0/255.255.255.0 -j ACCEPT

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

echo "aplicando forwarding"

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

... para guardar y cerrar el archivo "Ctl+o > Enter > Ctl+x"

 

Reiniciaremos las interfaces y el demonio DHCP con los comandos siguientes:

sudo /etc/init.d/networking restart

sudo /etc/init.d/dhcp3-server restart

 

Y como último paso, solo nos queda cargar el guión para que los servicios se levanten de forma automática en cada inicio o reinicio del server. Para ello escribiremos en el Terminal ...

sudo update-rc.d router.sh defaults

 

Con eso ya tenemos nuestro servidor corriendo con servicios DHCP sin problemas. Una aclaración, si tu dirección de IP es estática (no dinámica) solo tienes que editar el archivo 'interfaces' y colocar los parámetros de dirección IP a tu interfaz al igual que como se configuró la interfaz estática (eth1) que actúa como gateway anteriormente.

 

Continúa, faltan las comprobaciones de la red local ...

 

Primera comprobación desde un cliente de mi red local con Linux que forzosamente es filtrado por la Molinux 5.0 Dorotea para conectarse a Internet ..., el gráfico representa dos pantallas de 1280x1024 c/u. que conforman una resolución total de 2560x1024 pixels.

La gráfica que soporta dicha resolución es una Nvidia 9600GT y el sistema es la BETA openSUSE 11.2 con un escritorio KDE4 versión 4.3 ... 

 

Para asegurar la certeza de la conexión he aquí otro gráfico con el ping ... 

 

Y para certificar el post anterior adjunto otro gráfico de la misma máquina pero con otra distro Linux, la Gentoo 2008 con un escritorio KDE4 ... 

 

Observen las dos pantallas, la de la izquierda con el ping en el Terminal y la de la derecha con el Firefox navegando en el foro Molinux ... 

 

Rematando la jugada, esta vez estoy en otro cliente de 32bits de mi red local, una distro Arch Linux con un escritorio GNOME perfectamente conectado a Internet y para corroborar la ausencia de problemas y su funcionamiento ... 

 

 

Para disipar alguna duda (por si la hubiere) adjunto un nuevo gráfico desde la máquina de 32 bits, pero con un sistema operativo diferente. el Windows 7 (ojo que no es Vista) en la esquina inferior derecha del gráfico queda reflejado, en definitiva el engendro funciona ... 

 

 

Y para poner la guinda en todo esto, adjunto un gráfico (captura de pantalla) conseguido en el modesto PC con XP Home que tengo en el salón de la planta baja de la casa (mi estudio informático lo tengo en otra planta) conectado a la TV y a la red local via WiFi ... 

 

 

 

¡¡¡Espero que les sea útil a todos!!!

Comments (0)

You don't have permission to comment on this page.