Muchas distribuciones de GNU/Linux vienen con discos de arranque que funcionan
con el hardware para PC más común. Normalmente, el núcleo suministrado es
altamente modulable e incluye casi cualquier controlador que pueda necesitar. Esta es una
gran idea para los discos de arranque, pero no es lo que usted probablemente
quiera para un uso a largo plazo. No es un buen sistema tener almacenados
controladores en su disco que nunca va a usar. Por lo tanto, será conveniente crear
su propio núcleo e incluir sólo aquellos controladores que realmente necesite o desee;
de esta forma ahorrará un poco de espacio en disco y reduce el tiempo
que lleva compilar un núcleo nuevo.
En cualquier caso, al trabajar con un sistema GNU/Linux, le deberá ser familiar
la compilación de un núcleo. Piense en esto como si fuera un tránsito, una afirmación de
una de las cosas que hace al software libre más poderoso de lo que ya es—
usted tiene las fuentes. Este no es un caso de, “tengo que compilar un
núcleo,” más bien es el caso de, “puedo
compilar un núcleo.” Los conceptos básicos de la compilacion de un núcleo
Linux se explican en la Guía de Matt Welsh: "instalación y primeros pasos", que también forma parte de la serie del Proyecto de Documentación de
GNU/Linux. Por tanto, en esta sección solo trataremos las opciones de
configuración que afectan a la red.
Un punto importante que vamos a repetir aquí es
la forma en que funciona el esquema de numeración de la versión del núcleo.
Los núcleos Linux son numerados en el siguiente formato:
2.2.14. El primer dígito indica el número de versión
primario. Este dígito cambia cuando hay cambios numerosos y significativos
en el diseño del núcleo. Por ejemplo, el núcleo cambio del 1 al 2 cuando
obtuvo soporte para máquinas de diferente arquitectura a la Intel x86 (la del PC).
El segundo número es el número de versión secundario.
En muchos aspectos, este número es el más importante a tener en cuenta.
La comunidad de desarrolladores de Linux ha adoptado un estándar en el cual un
número de versión secundario par indica que el núcleo está en
producción,
o es estable, y un número de versión
secundario impar indica que el núcleo esta en
desarrollo, o es inestable.
Debe usar los núcleos estables para los equipos importantes, ya que
han sido comprobados más a fondo. Los núcleos en desarrollo son
los que debe de usar si está interesado en experimentar con las
últimas características de Linux., pero éstos pueden tener muchos problemas
que todavía no han sido corregidos. El tercer número es simplemente un
incremento por cada liberación de una versión secundaria.[1]
Al ejecutar make menuconfig, aparecerá un menú de texto que
le mostrará una lista de cuestiones sobre la configuración, como por ejemplo,
si desea usar la emulación del coprocesador matemático en el núcleo. Una de esas
cuestiones pregunta si desea soporte para redes TCP/IP. Debe contestar con
y para que el núcleo sea capaz de trabajar con redes TCP/IP.
Después de completar la sección de opciones generales,
se le preguntará si quiere incluir soporte para varios tipos de dispositivos,
como controladoras SCSI o tarjetas de sonido. El cursor le indicará qué
opciones están disponibles. Puede pulsar ? para obtener
una descripción de la opción en la que se encuentre. Siempre tiene la
opción de sí (y) para incluir dicho componente de forma
estática en el núcleo, o no (n) para excluir el
componente completamente. Aparte puede ver la opción de módulo (m)
para que dicho componente sea compilado como un módulo cargable.
Los módulos necesitan ser cargados antes para que puedan ser usados,
ésto es útil para controladores de componentes que no usa muy a menudo.
La siguiente lista de preguntas trata sobre el soporte de red.
El juego exacto de opciones de configuración cambia constantemente debido
al continuo desarrollo. Una lista típica de las opciones ofrecidas por la mayoría
de las versiones del núcleo en torno a las 2.0 y 2.1 puede ser ésta:
*
* Network device support
*
Network device support (CONFIG_NETDEVICES) [Y/n/?] |
Debe responder a esta cuestión con y si quiere
usar cualquier tipo de dispositivo de red,
ya sea Ethernet, SLIP, PPP, o el que sea. Cuando conteste a la
pregunta cony, el soporte para los dispositivos
Ethernet será activado automáticamente. Deberá responer a otras
preguntas si quiere habilitar el soporte de otros tipos de controladores de red:
PLIP (parallel port) support (CONFIG_PLIP) [N/y/m/?] y
PPP (point-to-point) support (CONFIG_PPP) [N/y/m/?] y
*
* CCP compressors for PPP are only built as modules.
*
SLIP (serial line) support (CONFIG_SLIP) [N/y/m/?] m
CSLIP compressed headers (CONFIG_SLIP_COMPRESSED) [N/y/?] (NEW) y
Keepalive and linefill (CONFIG_SLIP_SMART) [N/y/?] (NEW) y
Six bit SLIP encapsulation (CONFIG_SLIP_MODE_SLIP6) [N/y/?] (NEW) y |
Estas cuestiones conciernen a varios protocolos de la capa de enlace que Linux soporta.
PPP y SLIP le permiten transportar datagramas IP a través de líneas serie.
PPP es usado actualmente por un grupo de protocolos para enviar
el tráfico de la red a través de líneas serie. Algunos de los protocolos
que forman PPP gestionan la manera de poderse autentificar en el servidor,
mientras otros gestionan el modo en que ciertos protocolos son transportados
por el enlace—PPP no esta limitado a transportar solo datagrama TCP/IP;
además de este protocolo también puede transportar otros como el IPX.
Si responde y o m al soporte para SLIP,
le serán preguntadas tres cuestiones que trataremos más abajo. La opción de
comprimir las cabeceras permite el soporte para CSLIP, una técnica
que comprime las cabeceras TCP/IP a solo 3 pequeños bytes. Recuerde
que esta opción del núcleo no activa automáticmente el CSLIP; simplemente
provee las funciones necesarias al núcleo para ello. La opción Keepalive and
linefill causa que el soporte de SLIP genere periódicamente actividad
en la línea para prevenir que ésta sea desconectada por inactividad. La
opción Six bit SLIP encapsulation le permite ejecutar
SLIP sobre líneas y circuitos que no son capaces de transmitir el grupo
de 8-bit de datos correctamente. Esto es similar al uuencoding o la técnica
binhex usada para enviar ficheros binarios por e-mail.
PLIP proporciona una forma de enviar datagramas IP a través de una conexión
por puerto paralelo. Esto es usado comúnmente para comunicarse con PCs que usan DOS.
En el hardware tíipico de PC, PLIP puede ser más rápido que PPP o SLIP, pero
requiere mucha más CPU para funcionar, además cuando la tasa de transferencia
sea buena, otras tareas en la máquina podrían volverse más lentas.
A medida que se desarrollan más controladores, la lista de preguntas en esta
sección se hace mayor. Si desea compilar un núcleo que se pueda usar en varias
máquinas, o si su máquina tiene más de un tipo de tarjeta de red instalada,
puede activar más de un controlador:
.
.
Ethernet (10 or 100Mbit) (CONFIG_NET_ETHERNET) [Y/n/?]
3COM cards (CONFIG_NET_VENDOR_3COM) [Y/n/?]
3c501 support (CONFIG_EL1) [N/y/m/?]
3c503 support (CONFIG_EL2) [N/y/m/?]
3c509/3c579 support (CONFIG_EL3) [Y/m/n/?]
3c590/3c900 series (592/595/597/900/905) "Vortex/Boomerang" support/
(CONFIG_VORTEX) [N/y/m/?]
AMD LANCE and PCnet (AT1500 and NE2100) support (CONFIG_LANCE) [N/y/?]
AMD PCInet32 (VLB and PCI) support (CONFIG_LANCE32) [N/y/?] (NEW)
Western Digital/SMC cards (CONFIG_NET_VENDOR_SMC) [N/y/?]
WD80*3 support (CONFIG_WD80x3) [N/y/m/?] (NEW)
SMC Ultra support (CONFIG_ULTRA) [N/y/m/?] (NEW)
SMC Ultra32 support (CONFIG_ULTRA32) [N/y/m/?] (NEW)
SMC 9194 support (CONFIG_SMC9194) [N/y/m/?] (NEW)
Other ISA cards (CONFIG_NET_ISA) [N/y/?]
Cabletron E21xx support (CONFIG_E2100) [N/y/m/?] (NEW)
DEPCA, DE10x, DE200, DE201, DE202, DE422 support (CONFIG_DEPCA) [N/y/m/?]/
(NEW)
EtherWORKS 3 (DE203, DE204, DE205) support (CONFIG_EWRK3) [N/y/m/?] (NEW)
EtherExpress 16 support (CONFIG_EEXPRESS) [N/y/m/?] (NEW)
HP PCLAN+ (27247B and 27252A) support (CONFIG_HPLAN_PLUS) [N/y/m/?] (NEW)
HP PCLAN (27245 and other 27xxx series) support (CONFIG_HPLAN) [N/y/m/?]/
(NEW)
HP 10/100VG PCLAN (ISA, EISA, PCI) support (CONFIG_HP100) [N/y/m/?] (NEW)
NE2000/NE1000 support (CONFIG_NE2000) [N/y/m/?] (NEW)
SK_G16 support (CONFIG_SK_G16) [N/y/?] (NEW)
EISA, VLB, PCI and on card controllers (CONFIG_NET_EISA) [N/y/?]
Apricot Xen-II on card ethernet (CONFIG_APRICOT) [N/y/m/?] (NEW)
Intel EtherExpress/Pro 100B support (CONFIG_EEXPRESS_PRO100B) [N/y/m/?]/
(NEW)
DE425, DE434, DE435, DE450, DE500 support (CONFIG_DE4X5) [N/y/m/?] (NEW)
DECchip Tulip (dc21x4x) PCI support (CONFIG_DEC_ELCP) [N/y/m/?] (NEW)
Digi Intl. RightSwitch SE-X support (CONFIG_DGRS) [N/y/m/?] (NEW)
Pocket and portable adaptors (CONFIG_NET_POCKET) [N/y/?]
AT-LAN-TEC/RealTek pocket adaptor support (CONFIG_ATP) [N/y/?] (NEW)
D-Link DE600 pocket adaptor support (CONFIG_DE600) [N/y/m/?] (NEW)
D-Link DE620 pocket adaptor support (CONFIG_DE620) [N/y/m/?] (NEW)
Token Ring controlador support (CONFIG_TR) [N/y/?]
IBM Tropic chipset based adaptor support (CONFIG_IBMTR) [N/y/m/?] (NEW)
FDDI controlador support (CONFIG_FDDI) [N/y/?]
Digital DEFEA and DEFPA adapter support (CONFIG_DEFXX) [N/y/?] (NEW)
ARCnet support (CONFIG_ARCNET) [N/y/m/?]
Enable arc0e (ARCnet "Ether-Encap" packet format) (CONFIG_ARCNET_ETH)/
[N/y/?] (NEW)
Enable arc0s (ARCnet RFC1051 packet format) (CONFIG_ARCNET_1051)/
[N/y/?] (NEW)
.
. |
Finalmente, en la sección de los sistemas de ficheros, el script de configuración le
preguntará si desea soporte para NFS (networking file system), el sistema de ficheros en
red. NFS le permite exportar sistemas de ficheros en varios hosts, haciendo que los
ficheros aparezcan como si estuvieran en un disco duro normal y corriente conectado
al host.
NFS file system support (CONFIG_NFS_FS) [y] |
Describiremos el NFS con detalle en Capítulo 14.
Linux 2.0.0 marcó un cambio significativo en el trabajo en red de GNU/Linux. Muchas
características formaron parte estándar del núcleo, como el soporte para IPX.
También fueron añadidas y hechas configurables un buen número de opciones.
Muchas de esas opciones son usadas sólo en circunstancias muy especiales
y no vamos a tratarlas en detalle. El Redes COMO tratará probablemente
lo que no está tratado aquí. Vamos a listar unas cuantas opciones útiles en
esta sección, y explicaremos cuando debe usar cada una.
Networking options --->
[*] TCP/IP networking |
[*] IP: forwarding/gatewaying |
- Virtual hosting
Estas opciones permiten configurar más de una dirección IP para
una única interfaz. Esto es útil si quiere hacer
“virtual hosting,” (alojamiento virtual),
con una sola máquina que puede ser configurada para escuchar y actuar
como si esta fuera varias máquinas separadas entre sí, cada una con su
propia configuración de red. Más adelante hablaremos acerca del IP aliasing:
[*] Network aliasing
<*> IP: aliasing support |
- Accounting
Esta opción le permite recolectar los datos en el caudal del tráfico IP
enviados o recibidos en su máquina (trataremos esto con más detalle en
Capítulo 10 ):
- PC hug
Esta opción evita incompatibilidades con algunas versiones de PC/TCP,
una implementación comercial de TCP/IP basada en DOS para PCs. Si
activa esta opción, todavía será capaz de comunicarse con máquinas
UNIX normales, pero bajará el rendimiento cuando el enlace sea
lento.
--- (it is safe to leave these untouched)
[*] IP: PC/TCP compatibility mode |
- Diskless booting
Esta función activa el Protocolo de Resolución de Direcciones Inverso
(RARP). RARP se utiliza en clientes sin disco y terminales X para pedir su dirección IP al
arrancar. Deberá activar RARP si planea ofrecer este tipo de servicios. Un pequeño programa
llamado rarp, incluido con las utilidades de red estándares, se usa
para añadir entradas a la tabla RARP del núcleo:
- MTU
Cuando enviamos datos sobre TCP, el núcleo tiene que dividir éstos en varios bloques
de datos para pasarlos al nivel IP. El tamaño de estos bloques es llamado la
Unidad Maxima de Transmisión (Maximum Transmission Unit),
o MTU. Para los nodos accesibles a través de una red local como una Ethernet,
se usa un MTU tan alto como la máxima longitud permitida para los paquetes Ethernet
—1,500 bytes. Cuando enrutamos IP sobre una WAN como Internet, es
preferible usar datagramas de menor tamaño para asegurarnos de que no necesitan
ser partidos de nuevo a lo largo de la ruta mediante el proceso llamado
fragmentación IP .[2] El núcleo es capaz de determinar automáticamente el MTU más bajo de una ruta IP y configurar
automáticamente una conexión TCP para usar éste. Este comportamiento es activado
por defecto. Si contesta con y a esta opción, esta característica será
deshabilitada.
Si desea usar un tamaño de paquete menor para enviar datos a nodos específicos
(porque, por ejemplo, los datos irán a través de un enlace SLIP), puede hacer ésto
usando la opción mss de la orden route,
que está descrita brevemente al final del capítulo:
[ ] IP: Disable Path MTU Discovery (normally enabled) |
- Security feature
El protocolo IP soporta una característica llamada Source Routing
Source Routing le permite especificar la ruta que un datagrama debe seguir
mediante la grabación por usted mismo de la ruta dentro del datagrama.
Esto fue alguna vez útil antes de que los protocolos de enrutamiento como
RIP y OSPF se hicieran usuales. Pero hoy día es considerado una amenaza
de seguridad debido a que puede facilitar a los atacantes inteligentes una forma de
rodear ciertos tipos de cortafuegos evitando la tabla de enrutamiento de un enrutador.
Normalmente deseará filtrar la procedencia de los datagramas externos enrutados,
por lo que esta opción está activada normalmente.
[*] IP: Drop source routed frames |
- Novell support
Esta opción activa el soporte para IPX, el protoco de transmisión para redes
que usa Novell. GNU/Linux podría funcionar fácilmente como un enrutador IPX
y su soporte es útil en entornos donde tiene servidores de ficheros Novell.
El sistema de ficheros NCP también requiere tener el soporte de IPX activado
en el núcleo; si desea añadir o montar sus sistemas de ficheros Novell
deberá activar esta opción (hablaremos más sobre IPX y el sistema de ficheros
NCP en Capítulo 15):
- Amateur radio
Estas tres opciones seleccionadas dan soporte para los tres protocolos de Radio
soportados por Linux: AX.25, NetRom y Rose (No vamos a describirlos en este
libro, pero puede encontrar más informacion en el AX25 HOWTO):
<*> Amateur Radio AX.25 Level 2
<*> Amateur Radio NET/ROM
<*> Amateur Radio X.25 PLP (Rose) |
Linux soporta otro tipo de controlador: el controlador vacío (dummy). la siguiente
pregunta aparece hacia el comienzo de la sección de controladores de dispositivos:
<*> Dummy net controller support |
El controlador vacío no hace realmente gran cosa, pero es bastante útil en
nodos aislados o conectados mediante PPP/SLIP. Es básicamente una interfaz
enmascarada del bucle local. En nodos que tienen PPP/SLIP pero no
otras interfaces de red, es necesario tener una interfaz que contínuamente gestione
las direcciones IP. Ésto se tratará con más detalle en
Sección 5.7.7 en
Capítulo 5. Recuerde que actualmente puede obtener el mismo
resultado usando la característica IP alias y configurando sus direcciones IP como
alias en la interfaz de bucle local.