viernes, 15 de noviembre de 2013

Configurar la red desde consola

Debian Reference (version 1)
Capítulo 10 - Configuración de la red


Este capítulo se centra en la administración de redes en Debian. Para una introducción general sobre redes en GNU/Linux lea el Net-HOWTO.
Para que un equipo Debian sea capaz de acceder a Internet sus interfaces de red necesitan ser soportadas por el kernel y configuradas apropiadamente.
El primer requisito es el soporte del kernel para los dispositivos de interfaz de red tales como las tarjetas Ethernet, tarjetas Wi-Fi y módems. Para obtener este soporte es posible que necesite recompilar el kernel o añadirle módulos como se describe en El kernel de Linux en Debian, Capítulo 7.
La configuración de los dispositivos de red se explica a continuación. La información en este capítulo ha sido actualizada para Sarge. Mucho de todo esto no se aplica a versiones anteriores.

10.1 Fundamentos de redes IP

Un equipo Debian puede tener diversas interfaces con una diferente dirección IP. Las interfaces pueden ser de diversos tipos diferentes, incluyendo:
    • Loopback: lo
    • Ethernet: eth0, eth1, ...
    • Wi-Fi: wlan0, wlan1, ... [37]
    • Token Ring: tr0, tr1, ...
    • PPP: ppp0, ppp1, ...
      Existe un amplio rango de otros dispositivos de red disponibles, incluyendo SLIP, PLIP (línea IP serie y paralelo), dispositivos "shaper" para controlar el tráfico de ciertas interfaces, conmutación de tramas, AX.25, X.25, ARCnet y LocalTalk.
      Cada interfaz de red conectada directamente a Internet (o a cualquier red basada en IP) es identificada por una única dirección IP de 32 bits. [38] La dirección IP se puede dividir en la parte relativa a la red y la parte relativa a la máquina. Si se considera una dirección IP, se ponen 1 en los bits que son parte de la dirección de red y ceros en la parte de la dirección de la máquina se obtiene la máscara de red.
      Tradicionalmente, las redes IP fueron agrupadas en clases cuyas direcciones de red componentes eran de 8, 16 o 24 bits de tamaño. [39]

                     direcciones IP                   máscara de red     longitud
           Clase A   1.0.0.0       - 126.255.255.255    255.0.0.0              =  /8
           Clase B   128.0.0.0     - 191.255.255.255  255.255.0.0          = /16
           Clase C   192.0.0.0     - 223.255.255.255  255.255.255.0      = /24 
       
      Las direcciones IP que no se encuentran en estos rangos se utilizan para propósitos especiales.
      En cada clase existen rangos de direcciones reservados para su uso en redes de área local (LANs). Se garantiza que estas direcciones no entren en conflicto con las direcciones propias de Internet (en consecuencia, si una de estas direcciones se asigna a un equipo éste no podrá acceder a Internet directamente sino a través de una puerta de enlace que actúe como proxy para los servicios individuales o hacer la traducción de direcciones de red – NAT) Estos rangos de direcciones se dan en la siguiente tabla junto con el número de rangos en cada clase.

                     direcciones de red                      longitud  cantidad
           Clase A   10.x.x.x                                        /8        1
           Clase B   172.16.x.x -  172.31.x.x              /16       16
           Clase C   192.168.0.x - 192.168.255.x      /24       256 
       
      La primera dirección en una red IP es la dirección de la propia red. La última dirección es la dirección de difusión de la red. [40] Todas las otras direcciones se pueden asignar a máquinas de la red. De éstas, la primera o la última dirección generalmente se asigna a la puerta de enlace para Internet.
      La tabla de rutas contiene información sobre cómo enviar paquetes IP a sus destinos. Veamos una impresión de ejemplo de la tabla de rutas para una máquina Debian de una red de área local (LAN) con dirección IP 192.168.50.x/24. La máquina 192.168.50.1 (también en la LAN) es un router para la red corporativa 172.20.x.x/16 y la máquina 192.168.50.254 (también en la LAN) es un router para Internet.

           # route
           Kernel IP routing table
           Destination    Gateway          Gateway    Genmask      Flags Metric Ref Use Iface
           127.0.0.0     *                      255.0.0.0         U                0      0        2           lo
           192.168.50.0  *                    255.255.255.0 U                0      0       137       eth0
           172.20.0.0    192.168.50.1      255.255.0.0   UG            1      0        7          eth0
           default       192.168.50.254    0.0.0.0           UG             1      0       36         eth0
       
      • La primera línea después del encabezado dice que el tráfico destinado a la red 127.x.x.x será encaminado hacia la interfaz de retorno (loopback) lo.
      • La segunda línea dice que el tráfico destinado para las máquinas de la LAN será encaminado a través de eth0.
      • La tercer línea dice que el tráfico destinado a la red corporativa será encaminado a la puerta de enlace 192.168.50.1 y también a través de eth0.
      • La cuarta línea dice que el tráfico destinado a Internet será encaminado a la puerta de enlace 192.168.50.254 también a través de eth0.
      Las direcciones IP en la tabla también pueden aparecer como nombres que se obtienen observando las direcciones en /etc/networks o usando la biblioteca C resolver.
      Ademas de encaminar, el kernel puede realizar la traducción de las direcciones de red, la modulación del tráfico y su filtrado.
      Véase el Net-HOWTO y other networking HOWTOs para más información.

      10.2 Configuración de la red a bajo nivel

      Las herramientas tradicionales de configuración de red a bajo nivel en sistemas GNU/Linux son los programas ifconfig y route que vienen en el paquete net-tools. Estas herramientas han sido oficialmente reemplazadas por ip que viene en el paquete iproute. El programa ip funciona con Linux 2.2 y superior y es más poderoso que las herramientas anteriores. Sin embargo, las herramientas anteriores aún funcionan y resultan más familiares para muchos usuarios.

      10.2.1 Configuración de la red a bajo nivel – ifconfig y route

      Veamos una ilustración de cómo cambiar la dirección IP de la interfaz eth0 de 192.168.0.3 a 192.168.0.111 y convertir a eth0 en la ruta a la red 10.0.0.0 vía 192.168.0.1. Empiece ejecutando ifconfig y route sin argumentos para mostrar el estado actual de todas las interfaces de red y encaminamiento.

           # ifconfig
           eth0 Link encap:Ethernet  HWaddr 08:00:46:7A:02:B0
                inet addr:192.168.0.3  Bcast:192.168.0.255  Mask:255.255.255.0
                UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                RX packets:23363 errors:0 dropped:0 overruns:0 frame:0
                TX packets:21798 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:100
                RX bytes:13479541 (12.8 MiB)  TX bytes:20262643 (19.3 MiB)
                Interrupt:9
           
           lo   Link encap:Local Loopback
                inet addr:127.0.0.1  Mask:255.0.0.0
                UP LOOPBACK RUNNING  MTU:16436  Metric:1
                RX packets:230172 errors:0 dropped:0 overruns:0 frame:0
                TX packets:230172 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:0
                RX bytes:22685256 (21.6 MiB)  TX bytes:22685256 (21.6 MiB)
           
           # route
           Kernel IP routing table
           Destination  Gateway      Genmask          Flags Metric Ref Use Iface
           192.168.0.0  *            255.255.0.0      U     0      0     0 eth0
           default      192.168.0.1  255.255.255.255  UG    0      0     0 eth0
      

      Primero deshabilitamos la interfaz.

          # ifconfig eth0 inet down
           # ifconfig
           lo   Link encap:Local Loopback
             ... (no más entradas eth0)
           # route
             ... (no más entradas en la tabla de rutas)
      

      Luego la habilitamos con la nueva IP y la nueva ruta.
           
           # ifconfig eth0 inet up 192.168.0.111 \
                      netmask 255.255.0.0 broadcast 192.168.255.255
           # route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.1 dev eth0
      

      El resultado:

           # ifconfig
           eth0 Link encap:Ethernet  HWaddr 08:00:46:7A:02:B0
                inet addr:192.168.0.111  Bcast:192.168.255.255  Mask:255.255.0.0
                UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                ...
           
           lo   Link encap:Local Loopback
                inet addr:127.0.0.1  Mask:255.0.0.0
                ...
           # route
           Kernel IP routing table
           Destination  Gateway      Genmask      Flags Metric Ref Use Iface
           192.168.0.0  *            255.255.0.0  U     0      0     0 eth0
           10.0.0.0     192.168.0.1  255.0.0.0    UG    0      0     0 eth0
      

      Para más información véase ifconfig(8) y route(8).

      10.2.2 Configuración de la red a bajo nivel – ip

      Los comandos ip equivalentes a los comandos ifconfig y route anteriores son:
      • ip link show
      • ip route list
      • ip link set eth0 down
      • ip addr del dev eth0 local 192.168.0.3
      • ip addr add dev eth0 local 192.168.0.111/16 broadcast 192.168.255.255
      • ip link set eth0 up
      • ip route add dev eth0 to 10.0.0.0/8 src 192.168.0.111 via 192.168.0.1
      El programa ip muestra la sintaxis de sus comandos cuando se ejecuta con el argumento help. Por ejemplo, ip link help imprime por pantalla :

           Usage: ip link set DEVICE { up | down | arp { on | off } |
                                 dynamic { on | off } |
                                 multicast { on | off } | txqueuelen PACKETS |
                                 name NEWNAME |
                                 address LLADDR | broadcast LLADDR |
                                 mtu MTU }
                  ip link show [ DEVICE ]
      

      Véase también ip(8).

      10.2.3 Configurando una interfaz Wi-Fi

      Para interfaces Wi-Fi se utiliza el programa iwconfig, que viene con el paquete wireless-tools, además de ifconfig o ip.
      Véase iwconfig(8).

      10.2.4 Configurando una interfaz PPP

      Si accede a Internet mediante un módem conectado a la línea telefónica doméstica la conexión se negocia usando el Protocolo Point-to-Point (PPP). Dichas conexiones se acceden como interfaces de red ppp0, ppp1, etc.
      Una interfaz PPP es administrada por el demonio PPP pppd que viene con el paquete ppp. De esta manera, para el usuario, configurar una interfaz PPP equivale a configurar pppd.

      10.2.4.1 Configurando pppd en forma manual

      Para establecer un vínculo con una red, se necesita abrir un puerto de comunicación (generalmente un puerto serie), los comandos deben enviarse a un dispositivo de comunicación (generalmente un módem) se debe marcar un número telefónico, se debe autenticar la identidad con un demonio PPP externo, se debe crear una interfaz PPP y deben modificarse las tablas de ruta de modo que el tráfico se pueda enviar por el enlace. pppd puede hacer todo esto y, en consecuencia, posee una lista muy extensa de opciones operativas. Estas opciones se describen en pppd(8).
      En un sistema Debian, las opciones globales se configuran en /etc/ppp/options. Las opciones específicas al usuario se configuran en ~/.ppprc. Las opciones que dependen del puerto de comunicación utilizado son almacenadas en /etc/ppp/options.nombre_puerto. Por ejemplo, supongamos que tiene dos módems— un módem interno Lucent LT accesible a través de /dev/LT-modem y un módem externo accesible a través de /dev/ttyS0. Cree los dos archivos de opciones siguientes.

           # cat > /etc/ppp/options.LT-modem <<EOF
           115200
           init "/usr/sbin/chat -f /etc/chatscripts/setup-LT-modem"
           EOF
           # cat > /etc/ppp/options.ttyS0 <<EOF
           115200
           init "/usr/sbin/chat -f /etc/chatscripts/setup-ttyS0"
           EOF
      

      Estos se refieren a los siguientes scripts chat. Primero, /etc/chatscripts/setup-LT-modem.
           ABORT ERROR
           '' ATZ
           OK 'ATW2X2 S7=70 S11=55'
           OK AT
      
      Segundo, /etc/chatscripts/setup-ttyS0.
           ABORT ERROR
           '' ATZ
           OK 'ATL1M1Q0V1W2X4&C1&D2 S6=4 S7=70 S11=55 S95=63 S109=1 +FCLASS=0'
           OK AT
      
      Obviamente, los contenidos de estos archivos dependen de su hardware.
      Las opciones también se pueden pasar como argumentos a pppd.
      En Debian pppd generalmente se inicia usando el comando pon. Cuando se utiliza pon, su primer argumento define un archivo de opciones en /etc/ppp/peers/ que también es leído por pppd. [41] Es allí donde se configuran las opciones que son específicas a un máquina distante particular, por ejemplo, a un determinado Proveedor de Servicios de Internet (ISP).
      Supongamos, por ejemplo, que alterna entre Amsterdam y Den Haag. En cada ciudad tiene acceso a dos ISP —Planet y KPN. Primero cree un archivo de opciones básico para cada ISP.
           # cat > /etc/ppp/peers/KPN <<EOF
           remotename KPN
           noauth
           user kpn
           noipdefault
           ipparam KPN
           EOF
           # cat > /etc/ppp/peers/Planet <<EOF
           remotename Planet
           auth
           user usuario3579@planet.nl
           noipdefault 
           mru 1000
           mtu 1000
           ipparam Planet
           EOF
      
      Estos archivos fijan opciones que difieren entre los dos ISPs. Las opciones comunes a ambos ISPs se pueden ubicar en /etc/ppp/options o, según corresponda, en uno de los archivos de opciones específico a la interfaz.
      A continuación, cree los archivos de opciones para el ISP de cada ciudad. En nuestro ejemplo, la única diferencia entre conectarse a un ISP en un lugar y en otro es el script chat que se necesita (el script chat es diferente porque el número telefónico de acceso local es diferente)
           # cat > /etc/ppp/peers/KPN-Amsterdam <<EOF
           connect "/usr/sbin/chat -v -f /etc/chatscripts/KPN-Amsterdam"
           file /etc/ppp/peers/KPN
           EOF
           # cat > /etc/ppp/peers/KPN-DenHaag <<EOF
           connect "/usr/sbin/chat -v -f /etc/chatscripts/KPN-DenHaag"
           file /etc/ppp/peers/KPN
           EOF
           # cat > /etc/ppp/peers/Planet-Amsterdam <<EOF
           connect "/usr/sbin/chat -v -f /etc/chatscripts/Planet-Amsterdam"
           file /etc/ppp/peers/Planet
           EOF
           # cat > /etc/ppp/peers/Planet-DenHaag <<EOF
           connect "/usr/sbin/chat -v -f /etc/chatscripts/Planet-DenHaag"
           file /etc/ppp/peers/Planet
           EOF
      
      Cada una de las directivas file incluye uno de los archivos de opciones que se mostraron anteriormente. La directiva connect especifica el comando que pppd utiliza para establecer la conexión. Normalmente se utiliza para esto el programa chat, adaptando el script chat al ISP. Veamos los scripts chat para Den Haag. Los pertenecientes a Amsterdam podrían ser similares (salvo el número telefónico) o diferentes si el ISP ofrece allí su servicio a través de otra compañia.
           # cat > /etc/chatscripts/KPN-DenHaag <<EOF
           ABORT BUSY
           ABORT 'NO CARRIER'
           ABORT VOICE
           ABORT 'NO DIALTONE'
           ABORT 'NO DIAL TONE'
           ABORT 'NO ANSWER'
           ABORT ERROR
           OK-AT-OK ATDT 0676012321
           CONNECT \d\c
           EOF
           # cat > /etc/chatscripts/Planet-DenHaag <<EOF
           ABORT BUSY
           ABORT 'NO CARRIER'
           ABORT VOICE
           ABORT 'NO DIALTONE'
           ABORT 'NO DIAL TONE'
           ABORT 'NO ANSWER'
           ABORT ERROR
           OK-AT-OK ATDT 0676002505
           CONNECT \d\c
           EOF
      
      Para poderse conectar a estos ISPs se necesitan los nombres de cliente y contraseñas que pppd puede suministrar bajo demanda. Esta información se almacena en /etc/ppp/pap-secrets (si se utiliza el protocolo PAP) o en /etc/ppp/chap-secrets (si se utiliza el protocolo CHAP). Aunque CHAP es más seguro, PAP aún sigue siendo ampliamente utilizado. Puesto que estos archivos contienen información confidencial, ni el grupo ni el resto de usuarios deberían tener permiso de lectura o escritura sobre ellos. El formato de estos archivos se explica en pppd(8). Un "secreto" (tercer campo) se localiza en el archivo buscando el nombre del cliente (primer campo) y/o el nombre del servidor (segundo campo). Al conectarse a un ISP uno, generalmente, no conoce el nombre del servidor y, en cambio, suministra el nombre del cliente (usuario); esto fue hecho en las líneas user de peers/KPN y peers/Planet de arriba.
           # nombre del cliente nombre del servidor  secreto
           kpn                          *            kpn
           usuario3579@planet.nl        *            mi_mascota_preferida
      

      10.2.4.2 Configurando pppd usando pppconfig

      Una manera rápida de configurar pppd consiste en usar el programa pppconfig que viene con el paquete del mismo nombre. pppconfig configura los archivos como los anteriores luego de formular preguntas al usuario a través de una interfaz de menús.
      Si elije usar resolvconf entonces asegúrese de elegir "None" en la pantalla "Configure Nameservers".

      10.2.4.3 Configurando una interfaz PPP usando wvdial

      Un enfoque diferente para usar pppd consiste en ejecutarlo desde wvdial que viene con el paquete wvdial. En vez de hacer que pppd ejecute chat para marcar y negociar la conexión, wvdial realiza el marcado, la negociación inicial y luego inicia pppd para que haga el resto. En la mayoría de los casos dando sólamente el número telefónico, el nombre de usuario y la contraseña, wvdial logra establecer la conexión.

      10.3 Asignando un nombre a la máquina


      10.3.1 Nombre de la máquina

      Un sistema Debian a veces necesita identificarse por su nombre. Para este propósito el kernel guarda el hostname (nombre de la máquina).
      El script de inicio /etc/init.d/hostname.sh establece el nombre de la máquina durante el arranque (con el comando hostname) usando el nombre almacenado en /etc/hostname. Este archivo únicamente debería contener el nombre de la máquina y no un nombre de dominio completo.
      Para mostrar el nombre actual de la máquina ejecute hostname sin argumentos.

      10.3.2 Nombre para el correo

      El mailname (nombre para el correo) de un máquina es el nombre que los programas relacionados con el correo utilizan para identificar la máquina. El archivo /etc/mailname contiene este nombre seguido de una nueva línea. Generalmente el nombre para el correo es uno de los nombres de dominio completo de la máquina. Véase mailname(5).
      Lo que ve el destinatorio de los mensajes de correo en la cabecera From: del mensaje enviado por su máquina Debian depende de cómo se encuentran configurados el Agente de Usuario de Correo (MUA) y el Agente de Transferencia de Correo (MTA). Supongamos que un usuario local quiensea envía un mensaje de una máquina con nombre para el correo mimáquina.dom. La cabecera From: del mensaje saliente será:
      • "From: quiensea@mimáquina.dom" si el MUA no tiene configurada la cabecera From:;
      • "From: bar@mimáquina.dom" si el MUA tiene configurado "From: bar";
      • "From: bar@falso.dom" si el MUA tiene configurado "From: bar@falso.dom".
      Incluso cuando el MUA tiene una cabecera From: configurada el MTA puede añadir una cabecera "Sender:quiensea@herman.dom" para indicar su verdadero origen.
      Por supuesto, cuando cualquier MTA realiza la reescritura de direcciones como se discutió en Direcciones de correo electrónico inexistentes (Exim), Sección 9.6.1.2 y Reescritura selectiva de direcciones del correo saliente (Exim), Sección 9.6.1.3, la dirección electrónica visualizada por el destinatario se puede modificar arbitrariamente.

      10.4 Servicio de Nombres de Dominio (DNS)

      Las máquinas son referenciadas por el nombre de dominio y por su dirección IP. DNS es un sistema cliente-servidor en donde los sistemas de resolución de nombres (llamados también traductores de direcciones) consultan a los servidores de nombres con objeto de asociar los nombres de dominio con las direcciones IP y otras propiedades de las máquinas. La biblioteca C GNU resolver(3) también puede buscar direcciones IP en archivos o consultar a los Servicios de Información de Red (NIS).
      Para ver la dirección IP asociada a una máquina local utilice el comando hostname --fqdn. Esto muestra el primer nombre de dominio completo que el sistema de resolución encuentra para el nombre de máquina local. [42]

      10.4.1 El sistema de resolución

      La tarea de averiguar las direcciones IP asociadas con un nombre de dominio particular es la función de un sistema de resolución (resolver). El más utilizado es el conjunto de funciones de la biblioteca C GNU que llevan este nombre (resolver(3)). Otro es sistema de resolución FireDNS que viene con el paquete libfiredns.
      La forma que el sistema de resolución de la biblioteca C resuelve los nombres viene dada por la línea hosts del archivo de configuración /etc/nsswitch.conf. Esta línea lista los servicios que deberían usarse para resolver un nombre: por ejemplo, dns, files, nis, nisplus. [43] Véase nsswitch.conf(5). Si se utiliza el servicio files, el comportamiento del sistema de resolución también viene regido por el archivo de configuración /etc/hosts. Véase hosts(5).
      Todos los archivos anteriores son estáticos y se pueden editar con su editor favorito.
      Si se utiliza el servicio dns, el comportamiento del sistema de resolución también viene dado por el archivo de configuración /etc/resolv.conf. Véase resolv.conf(5). Una de las funciones importantes del archivo resolv.conf consiste en listar las direcciones IP de los servidores de nombres que se contactarán para resolver el nombre. Esta lista a menudo depende del entorno de red que puede cambiar de tanto en tanto mientras la máquina está funcionando. Programas tales como pppd y dhclient son capaces de manipular resolv.conf para añadir y eliminar líneas, pero estas características no siempre funcionan adecuadamente y entran en conflicto entre sí. El paquete resolvconf soluciona mejor el problema proporcionando un marco estándar para la actualización de este archivo. Véase Administrando la información del servidor de nombres – resolvconf, Sección 10.4.2.

      10.4.2 Administrando la información del servidor de nombres – resolvconf

      El paquete resolvconf proporciona un marco para la administración dinámica de la información relativa a los servidores de nombres disponibles. Soluciona el antiguo problema de mantener las listas dinámicas de los nombres de los servidores para ser usadas por el sistema de resolución y los cachés DNS. Resolvconf se posiciona como intermediario entre los programas que controlan las interfaces de red y suministran información de los servidores de nombre, y las aplicaciones que necesitan de dicha información.
      resolvconf está diseñado para funcionar sin que sea necesaria ninguna configuración manual. No obstante, el paquete es bastante nuevo y puede requerir alguna intervención para lograr que funcione adecuadamente. Esto será realmente así si alguna vez personalizó paquetes para que actualicen al /etc/resolv.conf: necesitará deshabilitar estas personalizaciones.
      Véase file:///usr/share/doc/resolvconf/README.gz para más detalles.

      10.4.3 Guardar en memoria los nombres resueltos – dnsmasq

      Salvo que su servidor de nombres sea el servidor oficial de un dominio resulta mejor utilizar un servidor de nombres con caché local como dnsmasq que funciona bien con resolvconf.

      10.4.4 Proveyendo un Servicio de Nombres de Dominio – bind

      Si necesita proveer un servicio de nombres oficial para un dominio entonces necesita de un servidor de nombres completo como named que viene con el paquete bind9 o con bind. Para nuevas instalaciones se recomienda bind9.
      Para instalar bind9, instale estos paquetes básicos: bind9; dnsutils. Puede que también quiera instalar estos paquetes de utilidades: bind9-host; dns-browse; dnscvsutil; nslint. Este paquete de documentación: bind9-doc. y estos paquetes de desarrollo: libbind-dev; libnet-dns-perl.
      Instale bind9 o vuelva a configurarlo usando dpkg-reconfigure para realizar la configuración básica. La configuración consiste en editar named.conf. En Debian este archivo se encuentra en /etc/bind/ y se utiliza principalmente para definir las zonas DNS básicas; incluye otros dos archivos: named.conf.local, utilizado para definir las zonas locales y named.conf.options, utilizado para configurar opciones (este último es procesado por resolvconf para producir /var/run/bind/named.options que es el mismo que el original excepto que la especificación forwarders es una lista de los servidores de nombre no locales actualmente disponibles. Para hacer uso de ello, cambie la línea include del named.conf de modo que incluya /var/run/bind/named.options. Véase Administrando la información del servidor de nombres – resolvconf, Sección 10.4.2.)
      Los archivos de base de datos sin una ruta completa mencionados en named.conf* se almacenarán en /var/cache/bind/. Este es el lugar correcto para almacenar archivos generados por named: por ejemplo, los archivos de bases de datos para las zonas cuyo demonio es secundario. Los archivos de base de datos estáticos de /etc/bind/ están y deben referenciarse en named.conf mediante sus rutas completas. Véase file:///usr/share/doc/bind9/README.Debian.gz para más detalles.

      10.5 Configurando las interfaces de red usando DHCP

      La configuración de las interfaces de red de bajo nivel se puede automatizar mediante el Protocolo de Configuración Dinámica de Hosts (DHCP). De esta manera, su cortafuegos, router o su ISP de banda ancha puede suministrar direcciones IP y otros parámetros.
      Para que esto funcione debe instalar uno de los siguientes paquetes:
      • dhcp3-client (versión 3, Internet Software Consortium)
      • dhcpcd (Yoichi Hariguchi y Sergei Viznyuk)
      • pump (Red Hat)
      pump es sencillo y ampliamente utilizado. dhcp3-client es complejo pero más configurable. [44]

      10.6 Configuración de la red de alto nivel en Debian

      A fin de facilitar la configuración de la red, Debian proporciona una herramienta estándar de configuración de red de alto nivel que consiste en los programas ifup, ifdown y el archivo /etc/network/interfaces. [45] Si elige utilizar ifupdown para realizar la configuración de su red, entonces no debería usar los comandos de bajo nivel. [46] Ifupdown se programó bajo la suposición que sólo iba a ser utilizado para configurar y desconfigurar las interfaces de red.
      Para actualizar la configuración de la interfaz haga lo siguiente:
           # ifdown eth0
           # editor /etc/network/interfaces  # modifique a su antojo
           # ifup eth0
      
      Para más información véase interfaces(5), file:///usr/share/doc/ifupdown/examples/network-interfaces.gz y ifup(8).

      10.6.1 Configurando una interfaz con una dirección IP estática.

      Supongamos que desea configurar una interfaz Ethernet que tiene una dirección IP fija 192.168.0.123. Esta dirección comienza con 192.168.0 por lo tanto debe estar en una LAN. Supongamos además que 192.168.0.1 es la dirección de la puerta de enlace de la LAN a Internet. Edite /etc/network/interfaces de modo que incluya un fragmento como el siguiente:
           iface eth0 inet static
                   address 192.168.0.123
                   netmask 255.255.255.0
                   gateway 192.168.0.1
      
      Si tiene instalado el paquete resolvconf puede añadir líneas para especificar la información relativa al DNS. Por ejemplo:
           iface eth0 inet static
                   address 192.168.0.123
                   netmask 255.255.255.0
                   gateway 192.168.0.1
                   dns-search nicedomain.org
                   dns-nameservers 195.238.2.21 195.238.2.22
      
      Luego que se activa la interfaz, los argumentos de las opciones dns-search y dns-nameservers quedan disponibles para resolvconf para su inclusión en resolv.conf. El argumento lindodominio.org de la opción dns-search corresponde al argumento de la opción search en resolv.conf(5). Los argumentos 195.238.2.21 y 195.238.2.22 de la opción dns-nameservers corresponde a los argumentos de las opciones nameserver en resolv.conf(5). Otras opciones reconocidas son dns-domain y dns-sortlist. Véase Administrando la información del servidor de nombres – resolvconf, Sección 10.4.2.

      10.6.2 Configurando una interfaz usando DHCP

      Para configurar una interfaz usando DHCP edite el /etc/network/interfaces de manera que incluya un fragmento como el siguiente :
           iface eth0 inet dhcp
      
      Para que esto funcione debe tener instalado uno de los clientes DHCP mencionados en Configurando las interfaces de red usando DHCP, Sección 10.5.

      10.6.3 Configurando una interfaz Wi-Fi

      El paquete wireless-tools incluye el script /etc/network/if-pre-up.d/wireless-tools que permite configurar hardware Wi-Fi (802.11a/b/g) antes que se active la interfaz. La configuración se realiza usando el programa iwconfig; véase iwconfig(8). Para cada parámetro posible del comando iwconfig puede incluir una opción en /etc/network/interfaces con un nombre como el del parámeto con el prefijo "wireless-". Por ejemplo, para fijar el ESSID de eth0 en miessid y la clave de cifrado en 123456789e antes de activar eth0 usando DHCP, edite el /etc/network/interfaces de modo que incluya un fragmento como el siguiente :
           iface eth0 inet dhcp
                   wireless-essid miessid
                   wireless-key 123456789e
      
      Obsérvese que no debería utilizar este método para configurar el ESSID y la clave si está ejecutando waproamd para esta interfaz. En el momento que se ejecuta ifup, waproamd ya tiene configurados ESSID y la clave. Véase Activando la configuración de la red – waproamd, Sección 10.9.4.

      10.6.4 Configurando una interfaz PPP

      Los programas ifup e ifdown utilizan pon y poff para añadir y eliminar interfaces PPP, por lo tanto, primero lea Configurando una interfaz PPP, Sección 10.2.4.
      Supongamos que ha configurado PPP para que funcione con mi_isp. Edite /etc/network/interfaces de modo que incluya una sección como la siguiente :
           iface ppp0 inet ppp
                   provider mi_isp
      
      con este fragmento, ifup ppp0 hace
           pon mi_isp
      
      Desafortunadamente no es posible hoy por hoy proporcionar otras opciones a pppd en un sección ppp de /etc/network/interfaces. [47]
      Actualmente no es posible usar ifupdown para realizar una configuración auxiliar de las interfaces PPP. Como pon desaparece antes que pppd haya terminado de establecer la conexión, ifup ejecuta los scripts up antes que la interfaz PPP esté lista para usar. Hasta que se solucione este fallo [48] sigue siendo necesario realizar una configuración posterior en /etc/ppp/ip-up o /etc/ppp/ip-up.d/.

      10.6.5 Configurando una interfaz PPPoE

      Muchos Proveedores de Servicios de Internet (ISPs) de banda ancha utilizan PPP para negociar las conexiones incluso cuando las máquinas de los clientes están conectados mediante Ethernet y/o redes ATM. Esto se logra mediante PPP sobre Ethernet (PPPoE) que es una técnica para el encapsulamiento del flujo PPP dentro de las tramas Ethernet. Supongamos que su ISP se llama mi_isp. Primero configure PPP y PPPoE para mi_isp. La manera más fácil de hacerlo consiste en instalar el paquete pppoeconf y ejecutar pppoeconf desde la consola. A continuación, edite /etc/network/interfaces de modo que incluya un fragmento como el siguiente:
           iface eth0 inet ppp
                   provider mi_isp
      
      A veces surgen problemas con PPPoE relativos a la Unidad de Transmisión Máxima (Maximum Transmit Unit o MTU) en líneas DSL (Digital Subscriber Line). Véase DSL-HOWTO para más detalles.
      Obsérvese que si su módem posee un router entonces el módem/router maneja por sí mismo la conexión PPPoE y aparece del lado de la LAN como una simple puerta de enlace Ethernet a Internet.

      10.6.6 Configurando múltiples interfaces Ethernet para una puerta de enlace

      Supongamos que eth0 está conectada a Internet con un dirección IP configurada con DHCP y eth1 está conectada a la LAN con una dirección IP estática 192.168.1.1. Edite /etc/network/interfaces de modo que incluya un fragmento similar al siguiente:
           iface eth0 inet dhcp
           
           iface eth1 inet static
                   address 192.168.1.1
                   netmask 255.255.255.0
      
      Si activa NAT en esta máquina como se describe en Configurando una puerta de enlace, Sección 10.12 puede compartir la conexión de Internet con todas las máquinas de la LAN.

      10.6.7 Configurando interfaces virtuales

      Usando interfaces virtuales puede configurar una única tarjeta Ethernet para que sea la interfaz de distintas subredes IP. Por ejemplo, supongamos que su máquina se encuentra en una red LAN 192.168.0.x/24. Desea conectar la máquina a Internet usando una dirección IP pública proporcionada con DHCP usando su tarjeta Ethernet existente. Edite /etc/network/interfaces de modo que incluya un fragmento similar al siguiente:
           iface eth0 inet static
                   address 192.168.0.1
                   netmask 255.255.255.0
                   network 192.168.0.0
                   broadcast 192.168.0.255
           
           iface eth0:0 inet dhcp
      
      La interfaz eth0:0 es una interfaz virtual. Al activarse también lo hará su padre eth0.

      10.7 Reconfiguración de la red

      En lo que sigue sería importante que el lector comprenda la diferencia entre una interfaz física y una interfaz lógica. [49] Una interfaz física es lo que hemos estado llamando "interfaz", lo que hemos designado con eth0, ppp1, etc. Una interfaz lógica es un conjunto de valores que pueden asignarse a los parámetros variables de una interfaz física. Si al leer le resulta confuso, reemplace la expresión "configurada como interfaz lógica X" por la expresión "configurada con el perfil de la interfaz X".
      Las definiciones iface en /etc/network/interfaces son, en realidad, definiciones de interfaces lógicas no de interfaces físicas. [50] Si nunca más desea volver a configurar sus interfaces entonces puede ignorar este hecho ya que la interfaz física X será configurada, por defecto, como interfaz lógica X.
      No obstante, supongamos que su máquina es un equipo portátil que transporta de su casa a su trabajo. Cuando conecta la máquina a una red corporativa o a su LAN hogareña, necesita configurar eth0 adecuadamente.
      Primero defina dos interfaces lógicas hogar y trabajo (en vez de eth0 como hicimos antes) que describen cómo debería configurarse la interfaz para la red hogareña y la del trabajo respectivamente.
           iface hogar inet static
                   address 192.168.0.123
                   netmask 255.255.255.0
                   gateway 192.168.0.1
           
           iface trabajo inet static
                   address 81.201.3.123
                   netmask 255.255.0.0
                   gateway 81.201.1.1
      
      De esta manera, la interfaz física eth0 se puede activar para la red hogareña con la configuración apropiada especificándola en la línea de comandos:
           # ifup eth0=hogar
      
      Para reconfigurar eth0 para la red del trabajo, ejecute los comandos:
           # ifdown eth0
           # ifup eth0=trabajo
      
      Obsérvese que con el archivo interfaces escrito así ya no resultará posible activar eth0 haciendo solamente ifup eth0. La razón es que ifup utiliza el nombre de la interfaz física como el nombre de la interfaz lógica eth0 predeterminada y, en realidad, en nuestro ejemplo no hay una interfaz lógica definida.

      10.8 Reconfiguración mágica de la red

      Cuando se ejecuta ifup, los nombres de las interfaces lógicas se pueden transformar en los nombres de otras interfaces lógicas. La manera en que se transforman los nombres depende de las circunstancias. Por ejemplo, se puede configurar ifup para activar una determinada interfaz física con la interfaz lógica adecuada entre un conjunto de alternativas predefinidas.
      La transformación del nombre de la interfaz lógica ocurre en los siguientes casos :
      • Si en la línea de comandos de ifup no se da el nombre de la interfaz lógica entonces como nombre de interfaz lógica inicial se utiliza el nombre de la interfaz física.
      • Si el nombre de la interfaz lógica coincide con el patrón de una sección mapping entonces se aplica esta transformación para generar un nuevo nombre de interfaz lógica. Esto se realiza recursivamente hasta que no haya más coincidencias con el patrón.
      • Si el nombre de la última interfaz lógica corresponde a la definición de una interfaz lógica de /etc/network/interfaces entonces la interfaz física es activada como esta interfaz lógica. Caso contrario ifup muesta el mensaje "Ignoring unknown interface" y se detiene.
      La sintaxis de una sección mapping es la siguiente:
           mapping patrón
                   script nombre_script
                   [map script]
      
      El script llamado en la sección mapping es ejecutado con el nombre de la interfaz física como argumento y con el contenido de todas las líneas "map" de la sección. Antes de finalizar, el script muestra el resulta de la transformación por la salida estándar.
      Por ejemplo, la siguiente sección mapping hará que ifup active la interfaz eth0 como interfaz lógica hogar.
           mapping eth0
                   script /usr/local/sbin/echo-hogar
      
      donde /usr/local/sbin/echo-hogar es :
           #!/bin/sh
           echo hogar
      
      Como la transformación se realiza mediante un script, resulta posible seleccionar la interfaz lógica basándose en algun tipo de prueba. Veamos un ejemplo. Supongamos que posee dos tarjetas de red diferentes: una para el hogar y otra para el trabajo. El directorio /usr/share/doc/ifupdown/examples/ contiene un script de transformación que se puede usar para seleccionar una interfaz lógica basándose en la dirección MAC (Media Access Controller). Primero instale el script en un directorio apropiado.
           # install -m770 /usr/share/doc/ifupdown/examples/get-mac-address.sh \
              /usr/local/sbin/
      
      A continuación añada una sección como la siguiente al /etc/network/interfaces:
           mapping eth0
                   script /usr/local/sbin/get-mac-address.sh
                   map 02:23:45:3C:45:3C hogar 
                   map 00:A3:03:63:26:93 trabajo
      
      Programas de transformación más sofisticados se describen en guessnet, Sección 10.8.1 y laptop-net, Sección 10.8.2.

      10.8.1 guessnet

      Instale guessnet y luego añada una sección como la siguiente al /etc/network/interfaces:
           mapping eth0
                   script guessnet-ifupdown
                   map hogar 
                   map trabajo
      
      Ahora al hacer ifup eth0, guessnet verificará si eth0 tiene que activarse como hogar o trabajo. Para ello utiliza la información almacenada en las definiciones de las interfaces lógicas.

      10.8.2 laptop-net

      El paquete laptop-net toma un enfoque diferente para la reconfiguración automática de la red. Laptop-net no utiliza las interfaces lógicas de ifupdown sino sus propios "esquemas" de configuración y "perfiles" de sistemas. No obstante, laptop-net sigue usando ifupdown para configurar las interfaces físicas. Para más información consulte la excelente documentación de laptop-net-doc.

      10.9 Activando la reconfiguración de la red

      Hemos visto como se reconfiguran las interfaces. La reconfiguración necesita realizarse en el momento apropiado.
      Tradicionalmente la red era configurada durante la secuencia de arranque mediante el script init /etc/rcS.d/S40networking y raramente se volvía a configurar. Los servicios que dependían de la red eran lanzados luego durante la secuencia de arranque. Al apagar o reiniciar, los scripts init eran ejecutados en el orden inverso.
      Sin embargo, actualmente existe una tendencia en GNU y Linux al soporte de hardware y entornos que cambian dinámicamente. El primer soporte se añadió para la inserción en caliente de tarjetas PCMCIA ; más recientemente ha sido incorporado el mecanismo hotplug para que muchos más periféricos se puedan enchufar y desenchufar mientras la máquina se encuentra funcionando. Esto incluye el hardware de red. Observe que los servicios que dependen del hardware que se conecta en caliente sólo deben iniciarse luego que el hardware haya sido insertado y deben detenerse cuando se hayan eliminado. Esto significa que dichos servicios deben liberarse del control del sistema init System V y ponerlos, en cambio, bajo el control de ifupdown.
      Por ejemplo, supongamos que el servicio loquesea controlado por el script init /etc/init.d/loquesea depende dinámicamente de la interfaz de red reconfigurada eth0.
      • Primero elimine loquesea del control del sistema init. Si está ultilizando el sistema init sysv-rc entonces haga lo siguiente. [51]
             # rm /etc/rc?.d/S??loquesea
        
      • Luego ponga loquesea bajo el control de ifupdown añadiendo las opciones up y down en la sección eth0 de /etc/network/interfaces que contiene las llamadas al script init loquesea:
             iface eth0 inet dhcp
                     up /etc/init.d/loquesea start
                     down /etc/init.d/loquesea stop
        

      10.9.1 Activando la configuración de la red durante el arranque

      Al arrancar, el script de init /etc/rcS.d/S40networking ejecuta el comando ifup -a. Esto activa todas las interfaces físicas que aparecen en las secciones auto de /etc/network/interfaces.
      Actualmente, a menudo resulta mejor manejar la configuración de la red usando métodos dinámicos. Una vez configurados los mecanismos para el soporte de hardware que cambia en forma dinámica, resulta más sencillo tratar el hardware estático como si fuera dinámico. El arranque se puede considerar como un simple evento hotplug. (Véase Activando la configuración de la red – hotplug, Sección 10.9.2.)
      No obstante, en casi todos los casos uno desea por lo menos que la interfaz de retorno (loopback) lo se active en el arranque. Por lo tanto, asegúrese que /etc/network/interfaces incluya las siguientes líneas:
           auto lo
           iface lo inet loopback
      
      Puede listar los nombres de interfaces físicas adicionales en las secciones auto si desea que también se activen durante el arranque. Nunca incluya las interfaces PCMCIA en las secciones auto. cardmgr se inicia durante el arranque luego de /etc/rcS.d/S40networking.

      10.9.2 Activando la configuración de la red – hotplug

      Para el soporte del arranque en caliente instale el paquete hotplug.
      El hardware de red se puede enchufar en caliente ya sea durante el arranque, tras haber insertado la tarjeta en la máquina (una tarjeta PCMCIA, por ejemplo), o luego que una utilidad como discover se haya ejecutado y cargado los módulos necesarios. [52]
      Cuando el kernel detecta nuevo hardware inicializa el controlador para el hardware y luego ejecuta el programa hotplug para configurarlo. Si más tarde se elimina el hardware, ejecuta nuevamente hotplug con parámetros diferentes. En Debian, cuando se llama a hotplug éste ejecuta los scripts de /etc/hotplug/ y /etc/hotplug.d/. Véase hotplug(8) para más detalles.
      El hardware de red recientemente conectado es configurado por el /etc/hotplug/net.agent. [53] Supongamos que su tarjeta de red PCMCIA ha sido conectada lo que implica que la interfaz eth0 esta lista para usar. /etc/hotplug/net.agent hace lo siguiente:
           ifup eth0=hotplug
      
      A menos que haya añadido una interfaz lógica llamada hotplug en /etc/network/interfaces, este comando no hará nada. Para que este comando configure eth0, añada las siguientes líneas al /etc/network/interfaces:
           mapping hotplug
                   script echo
      
      Como se explicó en Reconfiguración de la red, Sección 10.7 esto transformará el comando mostrado arriba de modo que sea equivalente al siguiente:
           ifup eth0=eth0
      
      (No incluya una sección de este tipo si también posee una sección ifplugd para la misma interfaz como se describió en Activando la configuración de la red – ifplugd, Sección 10.9.3.)
      Si sólo desea que eth0 se active en caliente y no otras interfaces utilice grep en vez de echo como se muestra a continuación :
           mapping hotplug
                   script grep
                   map eth0
      
      Véase Reconfiguración mágica de la red, Sección 10.8 y file:///usr/share/doc/hotplug/README.Debian para más trucos.

      10.9.3 Activando la configuración de la red – ifplugd

      ifplugd activa o desactiva una interfaz según si el hardware subyacente está o no conectado a la red. El programa puede detectar un cable conectado a una interfaz Ethernet o un punto de acceso asociado a una interfaz Wi-Fi. Cuando ifplugd ve que el estado del enlace ha cambiado ejecuta un script que por defecto ejecuta ifup o ifdown para la interfaz.
      ifplugd funciona correctamente en combinación con hotplug. Al insertar una tarjeta, lo que significa que la interfaz está lista para usar, /etc/hotplug.d/net/ifplugd.hotplug inicia una instancia de ifplugd para dicha interfaz. Cuando ifplugd detecta que la tarjeta es conectada a una red, ejecuta ifup para esta interfaz.
      Véase el archivo README del paquete waproamd para más información.

      10.9.4 Activando la configuración de la red – waproamd

      Para asociar una tarjeta Wi-Fi con un punto de acceso puede que necesite programarla con una clave de cifrado WEP adecuada. Si está utilizando ifplugd para controlar ifup como se explicó en Activando la configuración de la red – ifplugd, Sección 10.9.3 entonces evidentemente no podrá configurar la clave de cifrado usando ifup ya que éste sólo es llamado luego que la tarjeta ha sido asociada. Una solución posible consiste en programar todas las claves necesarias en la memoria no volátil de la tarjeta Wi-Fi. Pero si deambula por diversas redes su tarjeta Wi-Fi puede no ser capaz de almacenar suficientes claves.
      Otra solución consiste en usar waproamd que configura la clave de cifrado WEP según los puntos de acceso disponibles que se descubren mediante escaneo.
      waproamd funciona perfectamente con hotplug. Al insertar una tarjeta, lo que implica una interfaz lista para usar, /etc/hotplug.d/net/waproamd.hotplug inicia una instancia de waproamd para dicha interfaz.
      Para más información, véase el archivo README del paquete waproamd.

      10.9.5 Configuración de la red y PCMCIA

      Si utiliza tarjetas de red PCMCIA de 16 bits entonces debe añadir CARDMGR_OPTS="-f" al /etc/default/pcmcia. Esto enlentece un poco el proceso de inicialización pero evita una situación de concurrencia (condición de carrera) ejecutando cardmgr en segundo plano hasta que hayan sido configuradas todas las tarjetas PCMCIA de 16 bits.
      Aunque por defecto /etc/init.d/pcmcia se ejecuta desde /etc/rc2.d/S20pcmcia puede ubicarlo antes, por ejemplo, en /etc/rc2.d/S12pcmcia para aseugrarse que el subsistema PCMCIA se inicialice antes de arrancar los servicios de red en S20.
      Existen diversas maneras para configurar las interfaces de red PCMCIA.
      • Para tarjetas de red PCMCIA PCI de 32 bits (CardBus):
        • hotplug / ifupdown
      • Para tarjetas de red PCMCIA ISA de 16 bits:
        • hotplug / ifupdown con /etc/pcmcia/network desactivado (recomendado), o
        • pcmcia-cs / ifupdown con /etc/pcmcia/network por defecto (obsoleto), o
        • pcmcia-cs personalizado para habilitar características de /etc/pcmcia/network (obsoleto)
      La manera recomendada para tarjetas de 16 bits aprovecha el hecho que el subsistema hotplug de Linux 2.4 ahora soporta PCMCIA. Simplemente siga las instrucciones de Activando la configuración de la red – hotplug, Sección 10.9.2. [54] Sin embargo, nótese que afin de evitar que el script /etc/pcmcia/network de cardmgr no interfiera con hotplug debe añadir la línea:
           exit 0
      
      al comienzo de /etc/pcmcia/network para desactivar su comportamiento predeterminado.
      Obsérvese que no hay nada de malo ejecutar cardmgr. Simplemente, no deseamos que llame a los programas de configuración de red.
      Para que cardmgr funcione correctamente puede que necesite editar /etc/pcmcia/config.opts a fin de configurar los recursos asignados a las tarjetas PCMCIA de 16 bits. Véase PCMCIA, Sección 7.2.1 y el Linux PCMCIA HOWTO para más información.

      10.10 Configuración de los servicios de red

      La configuración típica de los servicios de red en un entorno de escritorio o servidor hogareño incluye:

      10.11 Resolución de problemas en la red

      Si tropieza con problemas verifique la salida de los siguientes comandos para obtener una primera idea :
           # ifconfig
           # cat /proc/pci
           # cat /proc/interrupts
           # dmesg | more
      
      También véase las siguientes secciones Probando la red, Sección 8.6.29.
      Si tiene problemas con ciertos sitios web, véase Problemas extraños al acceder a ciertos sitios de Internet, Sección 3.7.5.

      10.12 Configurando una puerta de enlace

      Una máquina Debian puede ser una puerta de enlace multipropósito que haga la Traducción de las Direcciones de Red (NAT, también conocida como enmascaramiento), la transferencia de correo, DHCP, caché DNS, caché HTTP, servidor CVS, servidor NFS y servidor Samba. Véase Máquinas IP para usar en una LAN, Sección 3.1.9 para un ejemplo de esta configuración.

      10.12.1 Configuración de netfilter

      El proyecto netfilter/iptables es un sistema de firewall para Linux 2.4 y posteriores. Véase Netfilter donde se explican diversos temas sobre la configuración de redes.

      10.12.1.1 Principios básicos de netfilter

      Netfilter procesa los paquetes mediante 5 cadenas incorporadas: PREROUTING, INPUT, FORWARD, OUTPUT, y POSTROUTING.
                           decisión de
           interfaz        enrutado                                     interfaz
           IN ------> PRE ---> ------> FORWARD -----> ----> POST -----> OUT
                      ROUTING  \       filter       /       ROUTING     
                      DNAT     |       tracking     ^       SNAT
                      REDIRECT |       seguimiento  |       MASQUERADE
                               v                    |
                             INPUT                OUTPUT
                               | filtro             ^ filtro,DNAT 
                               v                    |
                               \--> Proceso Local --/
                                       programas del espacio de usuario
      

      10.12.1.2 Tabla netfilter

      Los paquetes son procesados por cada cadena según la siguiente tabla.
      • filter (filtro de paquetes, predeterminado)
        • INPUT (para los paquetes que llegan a la máquina)
        • FORWARD (para los paquetes encaminados por la máquina)
        • OUTPUT (para los paquetes generados localmente).
      • nat (Network Address Translation o Traducción de Direcciones de Red)
        • PREROUTING (para modificar los paquetes tan pronto lleguen)
        • OUTPUT (para modificar los paquetes generados localmente antes de encaminarlos)
        • POSTROUTING (para modificar los paquetes a punto de salir)
      • manipulación (manipulación de direcciones de red, efectiva a partir de la versión 2.4.18)
        • las 5 cadenas incluidas.

      10.12.1.3 Objetivos de Netfilter

      Las reglas de firewall poseen diversos objetivos:
      • los 4 objetivos básicos:
        • ACCEPT significa dejar pasar el paquete.
        • DROP significa descartar el paquete.
        • QUEUE significa pasar al paquete al espacio de usuario (si es soportado por el kernel).
        • RETURN significa detener el paso en la cadena y continuar con la regla siguiente de la cadena anterior.
      • otros objetivos:
        • LOG activa los registros del kernel.
        • REJECT reenvía un paquete con error y descarta el paquete.
        • SNAT modifica la dirección de origen del paquete y se usa únicamente en la cadena POSTROUTING (tabla nat únicamente)
               --to-source  ipaddr[-ipaddr][:port-port]
          
        • MASQUERADE es lo mismo que SNAT pero para direcciones IP asignadas en forma dinámica (conexión telefónica). (tabla nat únicamente)
               --to-ports port[-port]
          
        • DNAT modifica la dirección de destino del paquete y se usa en las cadenas PREROUTING, OUTPUT y las cadenas definidas por el usuario que se llaman únicamente desde dichas cadenas (tabla nat únicamente)
               --to-destination ipaddr[-ipaddr][:port-port]
          
        • REDIRECT modifica la dirección IP de destino para enviar el paquete a la propia máquina.
               --to-ports port[-port]
          

      10.12.1.4 Los comandos netfilter

      Los comandos básicos de iptables son:
           iptables -N cadena                   # crear una cadena
           
           iptables -A cadena \                 # añadir regla a la cadena
                    -t tabla \                  # usar tabla (filtro, nat, mangle)
                    -p protocolo \              # tcp, udp, icmp, or all,
                    -s dirección-fuente[/mask] \
                    --sport puerto[:port] \     # puerto de origen si -p es tcp o udp
                    -d dirección-destino[/mask] \
                    --dport puerto[:port] \     # puerto de destino si -p es tcp o udp
                    -j objetivo \               # qué hacer si coincide
                    -i nombre-interfaz-entrada \# para INPUT,  FORWARD, PREROUTING
                    -o nombre-interfaz-salida   # para FORWARD, OUTPUT, POSTROUTING
      

      10.12.1.5 Traducción de las direcciones de red

      Las máquinas de una LAN pueden acceder a los recursos de Internet a través de una puerta de enlace que utiliza enmascaramiento IP (NAT) compartiendo una única dirección IP accesible desde el exterior
           # apt-get install ipmasq
      
      Aplique las reglas de ejemplo para mejorar la protección ipmasq. Consulte /usr/share/doc/ipmasq/examples/stronger/README. Para el paquete kernel-image-2.4 de Debian asegúrese de cargar los módulos adecuados. Véase Funciones de Red, Sección 7.2.3 para efectuar la correspondiente configuración.
      Para el paquete kernel-image-2.2 de Debian, edite de la siguiente manera Z92timeouts.rul en /etc/masq/rules para asegurar una conexión más duradera con sitios distantes (conveniente para mensajes de correo grandes, etc.):
           # tcp, tcp-fin, udp
           # 2hr, 10 seg, 160 seg - predeterminado
           # 1 día, 10 min, 10 min - modificación
           $IPCHAINS -M -S 86400 600 600
      
      Asimismo, si se accede a la red mediante una tarjeta de red PCMCIA, ipmasq necesita iniciarce desde /etc/pcmcia/network.opts. (consulte: file:///usr/share/doc/ipmasq/ipmasq.txt.gz) o desde /etc/network/interfaces (consulte: Configuración de la red y PCMCIA, Sección 10.9.5 y Activando la reconfiguración de la red, Sección 10.9).

      10.12.1.6 Redireccionar una conexión SMTP (2.4)

      Supongamos que tiene una PC portátil configurada para otro entorno de red y que desea usar su programa de correo sin tener que reconfigurarla.
      Añadiendo las siguientes reglas mediante el comando iptables en la puerta de enlace, la conexión SMTP será redirigida hacia ella.
           # iptables -t nat -A PREROUTING -s 192.168.1.0/24 -j REDIRECT \
                      -p tcp --dport smtp --to-port 25 # smtp=25, INPUT se encuentra abierta
      
      Para el redireccionamiento de un conjunto de reglas más complejo considere instalar el paquete ipmasq y agregue M30redirect.def en el directorio /etc/ipmasq/rules/.

      10.12.2 Administrando múltiples conexiones de red

      [FIXME] Política de encaminamiento (por Phil Brutsche pbrutsch@tux.creighton.edu): Ver el iproute manual para más detalles. El control de tráfico (tc) puede ser también interesante.
      Entorno:
           eth0: 192.168.1.2/24; puerta de enlace 192.168.1.1
           eth1: 10.0.0.2/24; puerta de enlace 10.0.0.1
           Sin enmascaramiento en esta máquina.
      
      Algo de magia:



    • ip rule add from 192.168.1.2 lookup 1
    • [FIXME] Nunca hice esto. ¿Cómo configurar una conexión telefónica como respaldo de una conexión rápida y automática? Por favor, envíenme un parche :)



    • ip rule add from 10.0.0.2 lookup 2
    • ip route add to default via 10.0.0.1 metric 0
    • ip route add to default via 192.168.1.1 metric 1
    • ip route add table 1 to 192.168.1.0/24 via eth0
    • ip route add table 1 to 10.0.0.2/24 via eth1
    • ip route add table 1 to default via 192.168.1.1
    • ip route add table 2 to 192.168.1.0/24 via eth0
    • ip route add table 2 to 10.0.0.2/24 via eth1
    • ip route add table 2 to default via 10.0.0.2



      ==============================================
      NOTA: entrada copiada integramente del siguiente enlace: http://www.debian.org/doc/manuals/debian-reference/ch-gateway.es.html
    • No hay comentarios: