Página siguiente Página anterior Índice general

6. Información relacionada con IP y Ethernet

Esta sección cubre la información específica a Ethernet e IP. Estas subsecciones han sido agrupadas juntas debido a que pienso que son las más interesante dentro de la que previamente se llamó sección de «Tecnología Específica». Cualquiera que tenga una LAN se beneficiará de esta parte.

6.1 Ethernet

Los dispositivos Ethernet son eth0, eth1, eth2, etc. A la primera tarjeta detectada por el núcleo se le asigna eth0 y al resto se les asigna secuencialmente en el orden en que sean detectadas.

Por defecto, el núcleo de Linux sólo intenta buscar una tarjeta de red, por lo que tendrá que pasarle algunos parámetros para forzar la detección de las demás.

Para aprender cómo hacer trabajar una tarjeta Ethernet bajo Linux debería acudir al Ethernet Howto, Ethernet-HOWTO.html.

Una vez que tenga el núcleo compilado para reconocer su tarjeta Ethernet, configurar la tarjeta es sencillo.

Normalmente debería hacer algo como:

root# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up
root# route add -net 192.168.0.0 netmask 255.255.255.0 eth0

La mayoría de los controladores Ethernet fueron desarrollados por Donald Becker, becker@CESDIS.gsfc.nasa.gov.

6.2 EQL - ecualizador de tráfico para líneas múltiples

El nombre del dispositivo EQL es eql. Con las fuentes estándar del núcleo sólo podrá tener un dispositivo EQL por máquina. EQL proporciona un medio para utilizar múltiples líneas punto a punto como un solo enlace PPP, slip o PLIP lógico para llevar tcp/ip. A menudo es más barato usar varias líneas de baja velocidad que tener una sola línea de alta velocidad.

Opciones de Compilación del Núcleo:

Network device support  --->
  [*] Network device support
  <*> EQL (serial line load balancing) support
 

Para poder usar este mecanismo la máquina en el otro extremo de la línea debe admitirlo también. Linux, Livingstone Portmasters y los nuevos servidores dial-in soportan servicios compatibles.

Para configurar EQL necesitará las herramientas eql que están disponibles en ftp://metalab.unc.edu/pub/linux/system/Serial/eql-1.2.tar.gz.

La configuración es bastante directa. Se comienza por la interfaz eql. La interfaz es exactamente como la de cualquier otro dispositivo de red. La dirección IP y mtu se configura usando ifconfig, con algo como:

root# ifconfig eql 192.168.10.1 mtu 1006

Lo siguiente que se necesita es iniciar manualmente cada una de las líneas que se vayan a usar. Esta puede ser cualquier combinación de dispositivos de red punto a punto. Cómo iniciar las conexiones depende del tipo de enlace que sea, por lo que ha de mirar las secciones apropiadas para más información.

Finalmente necesitará asociar el enlace serie con el dispositivo EQL, esto se llama «esclavizar» y se hace con la orden eql_enslave como se ve en el ejemplo:

root# eql_enslave eql sl0 28800
root# eql_enslave eql ppp0 14400

El parámetro velocidad estimada que se da a eql_enslave no hace nada directamente. Lo usa el controlador (driver) EQL para determinar qué parte de los datagramas va a recibir cada dispositivo, para así afinar el balance de las líneas jugando con este valor.

Para disociar una línea de un dispositivo EQL use eql_emancipate de esta manera:

#root eql_emancipate eql sl0

Puede añadir rutas de la misma manera que para cualquier otro enlace punto a punto, excepto en que las rutas deben referirse al dispositivo eql en lugar de a los verdaderos dispositivos en serie. Normalmente usará:

root# route add default eql

El controlador EQL fue desarrollado por Simon Janes, simon@ncm.com.

6.3 IP Accounting (en Linux 2.0)

Los servicios de auditoría IP del núcleo de Linux le permiten recolectar y analizar datos de uso de la red. Los datos recogidos comprenden el número de paquetes y de bytes acumulados desde que se puso a cero la última vez. Tiene a su disposición varias reglas para categorizar estas cifras para que se ajusten a los propósitos que les vaya a dar. Esta opción ha sido eliminada del núcleo a partir de la versión 2.1.102, porque el viejo sistema de cortafuegos basado en ipfwadm fue reemplazado por ipfwchains.

Opciones de Compilación del Núcleo:

Networking options  --->
  [*] IP: accounting
 

Después de que haya compilado e instalado el núcleo necesitará hacer uso de la orden ipfwadm para configurar la auditoría de IP. Hay muchas maneras diferentes de obtener la información de auditoría para elegir. He creado un ejemplo sencillo de lo que podría ser útil, pero debería leer la página de manual de ipfwadm para obtener más información.

Escena: Tenemos una red Ethernet que accede a la Internet mediante un enlace PPP. En la Ethernet tiene una máquina que ofrece cierta variedad de servicios y está interesado en saber cuánto tráfico se genera por cada conexión ftp y http, así como el tráfico total tcp y udp.

Podrías usar un conjunto de órdenes que se pareciese a lo siguiente, que se presenta como guión de ejecución de órdenes (shell script):

#!/bin/sh
#
# Borrar las reglas de contabilidad
ipfwadm -A -f
#
# Establecer macros
localnet=44.136.8.96/29
any=0/0
# Agregar reglas para los segmentos de la red local
ipfwadm -A in  -a -P tcp -D $localnet ftp-data
ipfwadm -A out -a -P tcp -S $localnet ftp-data
ipfwadm -A in  -a -P tcp -D $localnet www
ipfwadm -A out -a -P tcp -S $localnet www
ipfwadm -A in  -a -P tcp -D $localnet
ipfwadm -A out -a -P tcp -S $localnet
ipfwadm -A in  -a -P udp -D $localnet
ipfwadm -A out -a -P udp -S $localnet
#
# Reglas por defecto
ipfwadm -A in  -a -P tcp -D $any ftp-data
ipfwadm -A out -a -P tcp -S $any ftp-data
ipfwadm -A in  -a -P tcp -D $any www
ipfwadm -A out -a -P tcp -S $any www
ipfwadm -A in  -a -P tcp -D $any
ipfwadm -A out -a -P tcp -S $any
ipfwadm -A in  -a -P udp -D $any
ipfwadm -A out -a -P udp -S $any
#
# Mostrar las reglas
ipfwadm -A -l -n
#

Los nombres ftp-data y www se refieren a líneas en /etc/services. La última orden da una lista de cada una de las reglas de auditoría y muestra los totales obtenidos.

Una cosa importante a tener en cuenta cuando analizamos IP accounting es que los totales de todas las reglas que se han cumplido se han incrementado, por tanto para obtener las diferencias tendrá que hacer los cálculos apropiados. Por ejemplo, si quiero saber cuantos datos no fueron de ftp, ni www restaré los totales individuales de la regla que se corresponde con todos los puertos.

root# ipfwadm -A -l -n
IP accounting rules
 pkts bytes dir prot source               destination          ports
    0     0 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> 20
    0     0 out tcp  44.136.8.96/29       0.0.0.0/0            20 -> *
   10  1166 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> 80
   10   572 out tcp  44.136.8.96/29       0.0.0.0/0            80 -> *
  252 10943 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> *
  231 18831 out tcp  44.136.8.96/29       0.0.0.0/0             * -> *
    0     0 in  udp  0.0.0.0/0            44.136.8.96/29       * -> *
    0     0 out udp  44.136.8.96/29       0.0.0.0/0            * -> *
    0     0 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> 20
    0     0 out tcp  0.0.0.0/0            0.0.0.0/0            20 -> *
   10  1166 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> 80
   10   572 out tcp  0.0.0.0/0            0.0.0.0/0            80 -> *
  253 10983 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> *
  231 18831 out tcp  0.0.0.0/0            0.0.0.0/0            * -> *
    0     0 in  udp  0.0.0.0/0            0.0.0.0/0            * -> *
    0     0 out udp  0.0.0.0/0            0.0.0.0/0            * -> *

6.4 IP Accounting (en Linux 2.2)

El nuevo código para llevar la contabilidad se accede mediante «IP Firewall Chains». Consulte la página principal de IP chains http://www.adelaide.net.au/~rustcorp/ipfwchains/ipfwchains.html si desea más información. Entre otras cosas, necesitará usar ipchains en lugar de ipfwadm para configurar sus filtros. (De Documentation/Changes en las últimas fuentes del núcleo)

6.5 IP Aliasing

Hay algunas aplicaciones para las que es útil ser capaz de asignar varias direcciones IP a un sólo dispositivo de red. Los Proveedores de Servicios de Internet usan esto a menudo para ofertar a sus usuarios WWW y FTP «a medida». Puede acudir al IP-Alias mini-HOWTO si quiere obtener más información de la que aquí hay.

Opciones de Compilación del Núcleo:

Networking options  --->
   ....
   [*] Network aliasing
   ....
   <*> IP: aliasing support

Después de compilar e instalar su núcleo con la implementación de IP_Alias, la configuración es muy sencilla. Los alias se añaden a dispositivos de red virtuales asociados al verdadero dispositivo de red. Se aplica una convención sencilla para dar nombres a estos dispositivos, que es <nombredisp>:<núm disp virtual>, por ejemplo eth0:0, ppp0:10, etc. Tenga en cuenta que dispositivo nombre:número sólo se puede configurar después de haber activado la interfaz principal.

Por ejemplo, asumiremos que tiene una red Ethernet que soporta dos redes IP diferentes simultáneamente y quiere que tu máquina tenga acceso directo a ambas. Podríamos hacer algo como:

root# ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up
root# route add -net 192.168.1.0 netmask 255.255.255.0 eth0

root# ifconfig eth0:0 192.168.10.1 netmask 255.255.255.0 up
root# route add -net 192.168.10.0 netmask 255.255.255.0 eth0:0

Para borrar un alias sencillamente añadimos un `-' al final de su nombre y nos referimos a él de forma tan sencilla como:

root# ifconfig eth0:0- 0

También serán borradas automáticamente todas las rutas asociadas con ese alias.

6.6 IP Firewall (para Linux 2.0)

Los temas referentes a Cortafuegos IP y al trabajo con Cortafuegos está cubierto en mayor profundidad en el http://www.insflug.org/documentos/Cortafuegos-Como/. Tener un Cortafuegos IP le permite asegurar su máquina frente a accesos por la red no autorizados filtrando o permitiendo que entren datagramas de o hacia las direcciones IP que sean designadas. Hay tres clases diferentes de reglas, filtrado de entradas (incoming filtering), filtrado de salidas (outgoing filtering) y filtrado de reenvíos (forwarding filtering). Las reglas de entradas son aplicadas a los datagramas recibidos en un dispositivo de red. Las reglas de salidas se aplican a los datagramas que va a transmitir un dispositivo de red. Las reglas de reenvíos se aplican a datagramas que se reciben pero que no son para esta máquina, como por ejemplo datagramas que entran por una interfaz para ser encaminados por otra.

Opciones de Compilación del Núcleo:

Networking options  --->
  [*] Network firewalls
  ....
  [*] IP: forwarding/gatewaying
  ....
  [*] IP: firewalling
  [ ] IP: firewall packet logging

La configuración de las reglas del cortafuegos IP se realiza usando la orden ipfwadm. Como mencioné antes, yo no soy un experto en seguridad, por lo aunque le voy a presentar un ejemplo que se puede usar, usted debería investigar y desarrollar sus propias reglas si la seguridad es algo que le importe.

El uso más común de los cortafuegos IP es probablemente cuando está usando su máquina Linux como encaminador y pasarela (gateway) cortafuegos para proteger tu red local de accesos sin autorización desde fuera de la red.

La configuración siguiente está basada en una contribución de Arnt Gulbrandsen, agulbra@troll.no.

El ejemplo describe la configuración de las reglas de cortafuegos en la máquina cortafuegos/encaminadora ilustrada en este diagrama.

-                                   -
 \                                  | 172.16.37.0
  \                                 |   /255.255.255.0
   \                 ---------      |
    |  172.16.174.30 | Linux |      |
NET =================|  f/w  |------|    ..37.19
    |    PPP         | router|      |  --------
   /                 ---------      |--| Mail |
  /                                 |  | /DNS |
 /                                  |  --------
-                                   -

Las órdenes que siguen, deberían normalmente estar situadas en un fichero rc de manera que sean ejecutadas automáticamente cada vez que el sistema reinicie. Para mayor seguridad deberían ser llamadas después de que ser configuradas las interfaces de red, pero antes de que las interfaces hayan sido puestas «en marcha» para prevenir cualquier intento de acceder mientras la máquina cortafuegos está reiniciando.

#!/bin/sh

# Limpiar la tabla de reglas de 'Reenvíos'
# Cambiar la política por defecto a 'accept'
#
/sbin/ipfwadm -F -f
/sbin/ipfwadm -F -p accept
#
# .. y lo mismo para 'Entradas'
#
/sbin/ipfwadm -I -f
/sbin/ipfwadm -I -p accept

# Antes que nada, sellamos la interfaz PPP
# Me encantaría usar '-a deny' en lugar de '-a reject -y' pero entonces
# sería imposible originar conexiones desde ese interfaz.
# El -o causa que todos los datagramas rechazados sean registrados. Esto
# toma espacio de disco a cambio de tener el conocimiento de un ataque
# por error de configuración.
#
/sbin/ipfwadm -I -a reject -y -o -P tcp -S 0/0 -D 172.16.174.30

# Eliminar ciertos tipos de paquetes que obviamente han sido generados
# de forma 'artificial': No puede venir nada de direcciones
# multicast/anycast/broadcast
#
/sbin/ipfwadm -F -a deny -o -S 224.0/3 -D 172.16.37.0/24
#
# y nunca deberíamos ver llegar por un cable nada de la red
# 'loopback'
#
/sbin/ipfwadm -F -a deny -o -S 127.0/8 -D 172.16.37.0/24

# aceptamos entradas de las conexiones SMTP y DNS, pero sólo
# hacia el Mail/Name Server
#
/sbin/ipfwadm -F -a accept -P tcp -S 0/0 -D 172.16.37.19 25 53
#
# DNS usa tanto UPD como TCP, por lo tanto los permitimos ambos
# para quien pregunte por nuestro servidor de nombres
#
/sbin/ipfwadm -F -a accept -P udp -S 0/0 -D 172.16.37.19 53
#
# pero no "respuestas" que lleguen a puertos peligrosos como el de NFS
# y extensiones de NFS de Larry McVoy. Si ejecutamos squid, añadir
# su puerto aquí también.
#
/sbin/ipfwadm -F -a deny -o -P udp -S 0/0 53 \
-D 172.16.37.0/24 2049 2050

# valen las respuestas a otros puertos de usuario
#
/sbin/ipfwadm -F -a accept -P udp -S 0/0 53 \
        -D 172.16.37.0/24 53 1024:65535

# Rechazar conexiones de entrada a identd Usaremos 'reject' aquí para que
# se le diga al ordenador que intenta conectar que no continúe, si no lo
# hiciéramos, experimentaríamos retrasos mientras ident da un error de
# 'time out'
#
/sbin/ipfwadm -F -a reject -o -P tcp -S 0/0 -D 172.16.37.0/24 113

# Aceptamos algunas conexiones a servicios comunes desde las redes
# 192.168.64 y 192.168.65, que son amistades en las que confiamos.
#
/sbin/ipfwadm -F -a accept -P tcp -S 192.168.64.0/23 \
       -D 172.16.37.0/24 20:23

# aceptar y dejar pasar cualquier cosa que se origine dentro
#
/sbin/ipfwadm -F -a accept -P tcp -S 172.16.37.0/24 -D 0/0

# denegar la mayoría del resto de conexiones TCP y registrarlas
# (añade 1:1023 si tiene problemas con el FTP)
#
/sbin/ipfwadm -F -a deny -o -y -P tcp -S 0/0 -D 172.16.37.0/24

# ... para UDP también
#
/sbin/ipfwadm -F -a deny -o -P udp -S 0/0 -D 172.16.37.0/24

Las buenas configuraciones de cortafuegos son un poco complicadillas. Este ejemplo debería ser un punto de partida razonable. La página de manual de ipfwadm ofrece más asistencia en lo que respecta al manejo de la herramienta. Si intenta configurar un cortafuegos, asegúrese de que hace suficientes preguntas para tener información de las fuentes que considera fiables y haga algunas pruebas de funcionamiento con su configuración desde el exterior de la red.

6.7 IP Firewall (para Linux 2.2)

Al nuevo código para controlar el cortafuegos se accede mediante IP Firewall Chains. Consulte la página principal de IP Chains http://www.adelaide.net.au/~rustcorp/ipfwchains/ipfwchains.html si desea más información. Entre otras cosas, necesitará usar ipchains en lugar de ipfwadm para configurar sus filtros. (De Documentation/Changes en las últimas fuentes del núcleo)

Estamos avisados de que esto está seguramente desfasado y estamos trabajando para tener esta sección más al día. Es posible que tengamos una versión nueva para agosto de 1999.

6.8 Encapsulación IPIP

¿Qué razón hay para encapsular datagramas IP dentro de datagramas IP? Le parecerá una tontería si nunca ha visto antes sus aplicaciones. Bien, aquí tenemos un par de ejemplos comunes en los que se usa: Mobile-IP e IP-Multicast. Posiblemente su uso más extendido o al menos el mejor conocido es Amateur Radio.

Opciones de Compilación del Núcleo:

    Networking options  --->
        [*] TCP/IP networking
        [*] IP: forwarding/gatewaying
        ....
        <*> IP: tunneling

Los dispositivos túneles de IP se denominan tunl0, tunl1, etc.

¿Pero por qué?. Bien, bien. Las reglas convencionales de encaminamiento de redes IP comprenden direcciones de red y máscaras de red. Esto hace que conjuntos de direcciones contiguas sean encaminadas mediante una sola regla de encaminamiento. Esto es muy conveniente, pero significa que sólo puede usar una dirección IP en particular cuando está conectado a alguna parte de la red a la que pertenece. En la mayoría de los casos esto vale, pero si suele desplazarse entonces no será capaz siempre de conectar desde el mismo sitio. La encapsulación IP/IP (IP tunneling) le permite saltarse esta restricción permitiendo que los datagramas que están destinados a su dirección IP sean encapsulados y dirigidos a otra dirección IP. Si sabe que va a estar durante un tiempo trabajando en otra red IP entonces podrá poner a punto una máquina de su red habitual para que acepte los datagramas que van dirigidos a su IP y que los reenvíe a la dirección que esté usando de manera temporal.

Una configuración de red con túneles

 192.168.1/24                          192.168.2/24

     -                                     -
     |      ppp0 =            ppp0 =       |
     |  aaa.bbb.ccc.ddd  fff.ggg.hhh.iii   |
     |                                     |
     |   /-----\                 /-----\   |
     |   |     |       //        |     |   |
     |---|  A  |------//---------|  B  |---|
     |   |     |     //          |     |   |
     |   \-----/                 \-----/   |
     |                                     |
     -                                     -

El diagrama ilustra otra posible razón para usar encapsulación IPIP, las redes privadas virtuales. Este ejemplo presupone que tiene dos máquinas cada una con una sola conexión ppp a Internet. Cada máquina tiene una sola dirección IP. Tras cada una de estas máquinas hay algunas redes privadas de área local configuradas con direcciones de red IP reservadas. Supongamos que quiere permitir que cualquier máquina en la red A se conecte con cualquier máquina en la red B, como si estuvieran conectadas a Internet por una ruta de red. La encapsulación IP se lo permitirá. Tenga en cuenta que la encapsulación no resuelve el problema de cómo hacer que las máquinas las redes A y B se comuniquen con otras máquinas en Internet, ya que para seguimos necesitando trucos como el Enmascaramiento IP. La encapsulación la realiza normalmente una máquina que esté funcionando como encaminador.

El encaminador Linux A debería configurarse así:

#!/bin/sh
PATH=/sbin:/usr/sbin
mask=255.255.255.0
remotegw=fff.ggg.hhh.iii
#
# Configuración Ethernet
ifconfig eth0 192.168.1.1 netmask $mask up
route add -net 192.168.1.0 netmask $mask eth0
#
# Configuración ppp0 (iniciar enlace ppp, establecer ruta por defecto)
pppd
route add default ppp0
#
# Configuración del dispositivo túnel
ifconfig tunl0 192.168.1.1 up
route add -net 192.168.2.0 netmask $mask gw $remotegw tunl0

El encaminador Linux `B' debería configurarse con:

#!/bin/sh
PATH=/sbin:/usr/sbin
mask=255.255.255.0
remotegw=aaa.bbb.ccc.ddd
#
# Configuración Ethernet
ifconfig eth0 192.168.2.1 netmask $mask up
route add -net 192.168.2.0 netmask $mask eth0
#
# Configuración ppp0 (iniciar enlace PPP, establecer ruta por defecto)
pppd
route add default ppp0
#
# Configuración del dispositivo túnel
ifconfig tunl0 192.168.2.1 up
route add -net 192.168.1.0 netmask $mask gw $remotegw tunl0

La orden:

route add -net 192.168.1.0 netmask $mask gw $remotegw tunl0

se leería: Envía cualquier datagrama destinado a 192.168.1.0/24 dentro de un datagrama IPIP con dirección de destino aaa.bbb.ccc.ddd'.

Las configuraciones son recíprocas en cada extremo. El dispositivo de túnel usa el gw dado en la ruta como destino del datagrama IP en el que encerrará el datagrama que ha recibido para encaminar. Esa máquina debe saber cómo desencapsular datagramas IPIP, esto es, debe también estar configurada con un dispositivo túnel.

Configuración de la máquina cuyos paquetes serán encapsulados

No tiene por qué estar encaminando una red entera. Por ejemplo puede estar encapsulando una sola dirección IP. En este caso podría configurar el dispositivo tunl en la máquina `remota' con su dirección IP y el extremo A usará la máquina encaminadora (y Proxy Arp) en lugar encaminar la red a través del dispositivo túnel. Dibujemos de nuevo y modifiquemos apropiadamente nuestra configuración. Ahora tenemos una máquina B que quiere actuar y comportarse como si estuviera conectada a Internet y al mismo tiempo fuera parte de una red remota soportada por la máquina A:

 192.168.1/24

     -
     |      ppp0 =                ppp0 =
     |  aaa.bbb.ccc.ddd      fff.ggg.hhh.iii
     |
     |   /-----\                 /-----\
     |   |     |       //        |     |
     |---|  A  |------//---------|  B  |
     |   |     |     //          |     |
     |   \-----/                 \-----/
     |                      también: 192.168.1.12
     -

El encaminador Linux A debería configurarse así:

#!/bin/sh
PATH=/sbin:/usr/sbin
mask=255.255.255.0
remotegw=fff.ggg.hhh.iii
#
# Configuración Ethernet
ifconfig eth0 192.168.1.1 netmask $mask up
route add -net 192.168.1.0 netmask $mask eth0
#
# Configuración ppp0 (iniciar enlace ppp, establecer ruta por defecto)
pppd
route add default ppp0
#
# Configuración del dispositivo túnel
ifconfig tunl0 192.168.1.1 up
route add -host 192.168.1.12 gw $remotegw tunl0
#
# Proxy ARP para la máquina remota
arp -s 192.168.1.12 xx:xx:xx:xx:xx:xx pub

El encaminador Linux B debería configurarse así:

#!/bin/sh
PATH=/sbin:/usr/sbin
mask=255.255.255.0
remotegw=aaa.bbb.ccc.ddd
#
# Configuración ppp0 (iniciar enlace ppp, establecer ruta por
# defecto)
pppd
route add default ppp0
#
# Configuración del dispositivo túnel
ifconfig tunl0 192.168.1.12 up
route add -net 192.168.1.0 netmask $mask gw $remotegw tunl0

Esta clase de configuración es más típica de aplicaciones Mobile-IP, donde una máquina quiere moverse por Internet y mantener una única IP fija. Debería leer la sección Mobile-IP (IP Móvil) si quiere más información de cómo se hace esto en la práctica.

6.9 Enmascarado IP (IP Masquerade)

Mucha gente dispone de una sola cuenta por conexión telefónica para conectarse a Internet. Casi todos los que utilizan esa configuración se ve limitado a una sola dirección IP que le da el Proveedor de Servicios de Internet. Esto normalmente es bastante para permitir un sólo acceso completo a la red. El Enmascarado IP es un truco inteligente que permite que varias máquinas usen una sola dirección IP, haciendo que las otras máquinas se hagan pasar, y de ahí el término de enmascaramiento, por la máquina que realmente tiene la conexión. Hay un pequeño defecto y es que el enmascarado funciona casi siempre en un sólo sentido, y este es que las máquinas enmascaradas pueden hacer llamadas, pero no pueden aceptar o recibir llamadas de otras máquinas remotas. Esto significa que algunos servicios de red como talk no funcionarán y otros como ftp deberán ser configurados en modo pasivo (PASV) para que funcionen. Afortunadamente los servicios de red más comunes como telnet, WWW e irc funcionan bien.

Opciones de Compilación de Red:

    Code maturity level options  --->
        [*] Prompt for development and/or incomplete code/drivers
    Networking options  --->
        [*] Network firewalls
        ....
        [*] TCP/IP networking
        [*] IP: forwarding/gatewaying
        ....
        [*] IP: masquerading (EXPERIMENTAL)

Lo normal es que su máquina Linux esté usando una línea slip o PPP como si fuera una máquina aislada. Sin embargo, podemos tener además otros dispositivos de red configurados, quizá una ethernet, configurada con una de las direcciones de red privadas. Las máquinas que van a ser enmascaradas podrían estar en esta segunda red. Cada una de ellas debería tener asignada la dirección IP del puerto Ethernet de la máquina Linux como la pasarela (gateway) por defecto.

Una configuración típica podría ser algo parecido a:

-                                   -
 \                                  | 192.168.1.0
  \                                 |   /255.255.255.0
   \                 ---------      |
    |                | Linux | .1.1 |
NET =================| masq  |------|
    |    PPP/slip    | router|      |  --------
   /                 ---------      |--| host |
  /                                 |  |      |
 /                                  |  --------
-                                   -

Enmascarado con IPFWADM

Las órdenes más importantes para esta configuración son:

# Ruta de red hacia la Ethernet
route add -net 192.168.1.0 netmask 255.255.255.0 eth0
#
# Ruta por defecto al resto de Internet
route add default ppp0
#
# Hace que todas las máquinas de la red 192.168.1/24 sean
# enmascarados
ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0

Enmascarado con IPCHAINS

# Ruta de red hacia la Ethernet
route add -net 192.168.1.0 netmask 255.255.255.0 eth0
#
# Ruta por defecto al resto de Internet
route add default ppp0
#
# Hace que todas las máquinas de la red 192.168.1/24 sean
# enmascarados
ipchains -A forward -s 192.168.1.0/24 -j MASQ

Puede obtener más información sobre Enmascarado IP de Linux en la página de recursos de IP Masquerade http://www.hwy401.com/achau/ipmasq. También hay un documento muy detallado que habla sobre enmascaramiento, que es el IP-Masquerade-Como (que también enseña a configurar otros sistemas operativos para trabajar teniendo un Linux como servidor enmascarador).

6.10 Proxy IP transparente

El proxy transparente de IP es una característica que le permite redirigir servidores o servicios destinados a otra máquina a esos servicios en esta máquina. Normalmente esto es útil cuando tiene un Linux como encaminador que además proporciona un servidor proxy. Debería redirigir todas las conexiones destinadas a este servicio de forma remota al servidor local de proxy.

Opciones de Compilación del Núcleo:

    Code maturity level options  --->
        [*] Prompt for development and/or incomplete code/drivers
    Networking options  --->
        [*] Network firewalls
        ....
        [*] TCP/IP networking
        ....
        [*] IP: firewalling
        ....
        [*] IP: transparent proxy support (EXPERIMENTAL)

La configuración de la característica de proxy transparente se realiza mediante la orden ipfwadm.

Un ejemplo que podría ser útil es el siguiente:

root# ipfwadm -I -a accept -D 0/0 telnet -r 2323

Este ejemplo hará que cualquier intento de conexión al puerto telnet (23) por parte de otra máquina sea redirigida al puerto 2323 de esta máquina. Si tiene un servicio activo en ese puerto, podría redirigir las conexiones telnet, hacer un registro de lo que pasa, o cualquier cosa que se ajuste a sus necesidades.

Un ejemplo más interesante es redirigir todo el tráfico http a través de un almacén caché local. Sin embargo, el protocolo usado por los servidores proxy es diferente al http nativo: mientras que un cliente conecta a www.servidor.com:80 y pregunta por /camino/página, cuando conecta a la caché local busca proxy.dominio.local:8080 y pregunta por www.servidor.com/camino/página.

Para filtrar una petición http a través del proxy local, necesitará adaptar el protocolo insertando un pequeño servidor llamado transproxy (lo puede encontrar en la web). Si quiere puede ejecutarlo en el puerto 8081, y ejecutar esta orden:

root# ipfwadm -I -a accept -D 0/0 80 -r 8081

Entonces, el programa transproxy recibirá todas las conexiones que tengan que alcanzar servidores externos y las pasará al proxy local arreglando las diferencias de protocolo.

6.11 IPv6

¡Justo ahora que creía que empezaba a entender las redes IP las reglas cambian! IPv6 es la notación abreviada de la versión 6 del Internet Protocol. IPv6 fue desarrollada principalmente para responder a los temores de la comunidad de Internet al respecto de que pronto habrá escasez de direcciones IP para asignar. Las direcciones IPv6 son de 16 bytes (128 bits). IPv6 incorpora varios cambios más, en su mayor parte simplificaciones, que harán que las redes IPv6 sean más manejables que las IPv4.

Linux ya tiene una implementación de IPv6 que funciona, pero no está completa, a partir de la serie de núcleos 2.2.*.

Si quiere experimentar con esta próxima generación de tecnología de Internet, o le hace falta, debería leerse la IPv6-FAQ que está disponible en http://www.terra.net/ipv6.

6.12 Mobile IP

El término movilidad de IP describe la habilidad de una máquina que es capaz de mover su conexión de red de un punto de Internet a otro sin cambiar su dirección IP o perder conectividad. Normalmente cuando una máquina con IP cambia su punto de conexión también debe cambiar su dirección IP. La Movilidad de IP soluciona este problema asignando una IP fija a la máquina móvil y usando encapsulación IP (tunneling) con encaminado automático para asegurar que los datagramas destinados a ella se encaminan a la verdadera dirección IP que esté usando en ese momento.

Está en camino un proyecto para proporcionar un juego completo de herramientas de movilidad de IP para Linux. El estado del proyecto y las herramientas los puede obtener de la página principal de Linux Mobile IP http://anchor.cs.binghamton.edu/~mobileip.

6.13 Multicast

IP Multicast permite encaminar datagramas IP hacia a un número arbitrario de máquinas con IP de forma simultánea. Este mecanismo se explota para proporcionar material de amplia distribución por Internet como transmisiones de imagen y sonido y otras aplicaciones noveles.

Opciones de Compilación del Núcleo:

     Networking options  --->
         [*] TCP/IP networking
         ....
         [*] IP: multicasting
 

Esto requiere un conjunto de herramientas y algo de configuración de la red. Una fuente de información sobre cómo instalar y configurar esto para Linux la encontramos en http://www.teksouth.com/linux/multicast.

6.14 NAT - Network Address Translation (Traducción de direcciones de red)

El servicio de Traducción de Direcciones de Redes IP es algo así como el hermano mayor estandarizado del servicio de Enmascarado IP de Linux. Está especificado con cierto detalle en el RFC-1631 en su archivo RFC más próximo. NAT proporciona características que no posee el Enmascarado IP que lo hacen eminentemente más apropiado para su uso en los diseños de encaminamiento de cortafuegos corporativos y en instalaciones a mayor escala.

Michael Hasenstein, Michael.Hasenstein@informatik.tu-chemnitz.de, ha desarrollado una implementación alfa de NAT para el núcleo 2.0.29 de Linux. La documentación e implementación de Michaels está disponible en: la página Web de Linux IP Network Address http://www.csn.tu-chemnitz.de/HyperNews/get/linux-ip-nat.html

Los núcleos más modernos de Linux 2.2.x también incluyen algo de la funcionalidad NAT en el algoritmo de encaminamiento.

6.15 Traffic Shaper (Manipulación del ancho de banda)

El traffic shaper (regulador de caudal) es un controlador que crea nuevas interfaces de red, las cuales tienen una limitación en el caudal, definida por el usuario, y que actúan sobre una interfaz de red física para hacer la comunicación real, pudiendo ser utilizadas por el encaminador para el tráfico saliente.

El regulador fue introducido con Linux-2.1.15 y fue portado a Linux-2.0.36 (apareció en el 2.0.36-pre-patch-2 distribuido por Alan Cox, el autor del dispositivo regulador y mantenedor de Linux-2.0).

El regulador de caudal sólo puede ser compilado como módulo y para configurarlo se usa el programa shapecfg con órdenes como las siguientes:

shapecfg attach shaper0 eth1
shapecfg speed shaper0 64000

El dispositivo regulador sólo puede controlar el ancho de banda del tráfico de salida, ya que los paquetes son transmitidos a través suyo de acuerdo con las tablas de rutas; sin embargo, una funcionalidad de rutas por dirección de origen podría ayudar a limitar el ancho de banda global de máquinas específicas que estén usando un encaminador Linux.

Linux-2.2 implementa también ese tipo de encaminamiento, y si lo necesita en Linux-2.0, busque el parche de Mike McLagan, en ftp://ftp.invlogic.com. Lea Documentation/networking/shaper.txt si desea más información al respecto del shaper.

Si quiere probar un intento de regulación de caudal de paquetes entrantes, use rshaper-1.01 (o más nuevo). Lo encontrará en ftp://ftp.systemy.it/pub/develop.

6.16 Encaminamiento con Linux-2.2

La última versión de Linux, la 2.2, ofrece mucha flexibilidad en lo que a política de encaminamiento se refiere. Desafortunadamente, deberá esperar a la siguiente versión de este Como, o acudir a las fuentes del núcleo.


Página siguiente Página anterior Índice general