Documentación > Instalación > Módulos del Kernel
Instalación de los Módulos del Kernel
Índice
Introducción
Jool es cuatro binarios:
- Dos Módulos de Kernel que se ligan a Linux. Uno de ellos (
jool
) implementa Stateful NAT64, el otro (jool_siit
) implementa SIIT.
Son los encargados de traducir paquetes. - Una aplicación de Espacio de Usuario por módulo de kernel. Nombrados de igual manera:
jool
yjool_siit
Sirven para configurar a los respectivos módulos del kernel.
Este documento se enfocará en la instalación de los módulos del kernel. La instalación de las aplicaciones de configuración tienen su propio procedimiento.
Requerimientos
Debido a la variedad de kernels que existen, no es factible distribuir binarios de módulos de kernel, de modo que es necesario que se compilen localmente.
En segmentos de código venideros:
$
indica que el comando no requiere privilegios #
indica necesidad de permisos
Kernels Válidos
Jool soporta kernels de Linux a partir de la versión 3.0, y ha sido probado en varios incrementos.
El siguiente comando puede ser usado para consultar la versión del kernel actual:
$ /bin/uname -r
Paquetes básicos de compilación
Varias distribuciones ya los incluyen; omitir este paso en esos casos.
# apt-get install build-essential
# yum install gcc
# pacman -S base-devel
# zypper install gcc make
Encabezados del Kernel
Son dependencia de cualquier módulo y le indican a Jool los parámetros bajo los cuales fue compilado Linux. La mayoría de las distribuciones hostean estos archivos en sus repositorios.
# apt-get install linux-headers-$(uname -r)
# yum install kernel-devel
# yum install kernel-headers
# zypper install kernel-source
$ # Ver https://github.com/NICMx/NAT64/issues/158
Interfaces de Red
Es posible traducir paquetes a través de una sola interfaz de red, pero es más intuitivo comprender SIIT y NAT64 cuando se tienen dos: Una para IPv4 y otra para IPv6.
Por lo tanto, si se están utilizando estos documentos con fines educativos, se recomienda tener al menos dos interfaces:
$ ip link show
(...)
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 08:00:27:3d:24:77 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 08:00:27:ca:18:c8 brd ff:ff:ff:ff:ff:ff
DKMS
DKMS es un framework que se encarga de administrar módulos. Este es opcional pero recomendable, la razón se discute abajo en la sección Compilación e Instalación.
# apt-get install dkms
Ethtool
Ethtool es una utilería para configurar las tarjetas Ethernet, con ella se pueden visualizar y modificar sus parámetros.
# apt-get install ethtool
Obtención del código
Existen dos opciones:
- Releases oficiales en la página de descarga.
Su ventaja es que hacen más sencilla la instalación de las aplicaciones de usuario. - Release en desarrollo que están en el repositorio de GitHub.
Tiene la ventaja de que el último commit del branch master puede tener correcciones de errores menores que aún no están presentes en el último oficial.
Compilación e Instalación
Existen dos medios para instalar a Jool: Kbuild y DKMS.
Kbuild es un modo básico que simplemente se dedica a compilar e instalar el módulo para la versión actual del kernel. El Dynamic Kernel Module Support (DKMS) framework añade la posibilidad de que el módulo se adapte a actualizaciones de Linux (un módulo instalado con Kbuild requiere recompilación y reinstalación cada vez que se actualiza Linux).
Para todo propósito, ya sea para un ambiente de producción o prueba, es recomendadable preferir DKMS versus Kbuild.
Instalación mediante DKMS
$ unzip Jool-<versión>.zip
# dkms install Jool-<versión>
$ unzip NAT64-master.zip
# dkms install NAT64-master
Instalación mediante Kbuild
$ unzip Jool-<versión>.zip
$ cd Jool-<versión>/mod
$ make
# make install
$ unzip NAT64-master.zip
$ cd NAT64-master/mod
$ make
# make install
Notas:
Por razones de seguridad, desde el kernel 3.7 existe la opción y es una buena práctica de que los módulos instalados sean firmados.
Si el kernel no fue configurado para requerir esta característica,
make install
imprimirá el mensaje “Can’t read private key”, lo cual es una advertencia, no un error, y la instalación proseguirá sin cambios.Si acaso el kernel fue compilado para solicitar firmado de módulos, se requerirá comandos adicionales que será omitidos aquí.