Manual Gentoo Linux amd64: Configuración de redes

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Handbook:AMD64/Full/Networking and the translation is 100% complete.


The following networking portion of the handbook describes 'advanced' network configuration for systems running the OpenRC init system utilizing netifrc as the network management system.

For systems running systemd, readers should review see the networking portion of the systemd article.

Comenzando

Esta guía de redes da por supuesto que el usuario tiene el sistema correctamente configurado y ha determinado el nombre o nombres de las interfaces físicas de red. El nombre de interfaz de red en el sistema es generado en base a la posición de la tarjeta de red dentro del bus. Debido a esto es posible que haya variaciones en los nombres de las interfaces incluyendo: eno0, ens1, wlan0, enp1s0, etc. Cada sistema puede tener un nombre de interfaz ligeramente diferente. En adelante, se asume que el nombre de la interfaz a configurar es eth0, aunque con cualquiera de los nombres mencionados funcionaría.

Para comenzar a configurar su tarjeta de red, necesitamos que el sistema RC (guiones de inicio) de Gentoo la reconozca. Esto se hace creando un enlace simbólico desde net.lo a net.eth0 (o el nombre que tenga la interfaz de red en su sistema) en /etc/init.d.

root #cd /etc/init.d
root #ln -s net.lo net.eth0

El sistema RC de Gentoo ahora conoce la interfaz. También necesita saber cómo configurar la nueva interfaz. Todas las interfaces de red son configuradas en el archivo /etc/conf.d/net. A continuación se muestra un ejemplo de configuración para DHCP y direcciones estáticas.

ARCHIVO /etc/conf.d/netEjemplo de configuración de red
# Para DHCP
config_eth0="dhcp"
  
# Para una IP estática usando notación CIDR
config_eth0="192.168.0.7/24"
routes_eth0="default via 192.168.0.1"
dns_servers_eth0="192.168.0.1 8.8.8.8"
  
# Para una IP estática usando notación de máscara de red
config_eth0="192.168.0.7 netmask 255.255.255.0"
routes_eth0="default via 192.168.0.1"
dns_servers_eth0="192.168.0.1 8.8.8.8"
Nota
Si no especifica una configuración para la interfaz entonces se asume el uso de DHCP.
Nota
CIDR (Classless InterDomain Routing). Originariamente, las direcciones IPv4 fueron clasificadas en A, B, o C. Esta clasificación temprana no tuvo en cuenta la gran popularidad que obtendría Internet, y ahora corre el riesgo de no tener suficientes direcciones únicas. CIDR es un esquema de direccionamiento que permite que una dirección IP designe muchas direcciones IP. Una dirección IP CIDR es igual que una dirección IP normal excepto que termina con una barra invertida seguida de un número; por ejemplo: 192.168.0.0/16. CIDR se describe en RFC 1519.

Ahora que ya hemos configurado nuestra interfaz, podemos iniciarla o detenerla utilizando las siguientes órdenes:

root #/etc/init.d/net.eth0 start
root #/etc/init.d/net.eth0 stop
Importante
Cuando esté solucionando problemas con la red, échele una mirada a /var/log/rc.log. A no ser que haya configurado la variable rc_logger a NO en /etc/rc.conf, encontrará información almacenada en este archivo de registro acerca de las actividades al arrancar.

Ahora que ya ha iniciado y detenido la interfaz de red, quizá quiera que comience automáticamente cuando Gentoo arranca. Aquí tiene cómo hacerlo.

root #rc-update add net.eth0 default
root #rc
Nota
La última orden rc indica a Gentoo que inicie todos los guiones en el nivel de ejecución actual que todavía no se hayan sido iniciado.





Configuración Avanzada

La variable config_eth0 es el corazón de la configuración de una interfaz. Es una lista de instrucciones de alto nivel para configurar la interfaz (eth0 en este caso). Cada orden en la lista de instrucciones se ejecuta de manera secuencial. La interfaz será evaluada como OK si, al menos, un orden funciona.

Aquí tiene una lista de instrucciones integradas:

Valor Descripción
null No hacer nada
noop Si la interfaz está funcionando y existe una dirección entonces aborta la configuración con éxito
Una dirección IPv4 o IPv6 Añade la dirección a la interfaz
dhcp, adsl o apipa (o un valor propio perteneciente a un módulo de terceras partes) Ejecuta el módulo que proporciona la ofrece DHCP que se puede mediante dhcpcd, dhclient o pump.

Si una orden falla, puede especificar un valor de retorno (fallback). El retorno tiene que coincidir exactamente con la estructura de la configuración.

Puede encadenar estos valores. A continuación se muestran algunos ejemplos reales.

ARCHIVO /etc/conf.d/netEjemplos de configuración
# Añadir tres direcciones IPv4
config_eth0="192.168.0.2/24
192.168.0.3/24
192.168.0.4/24"
  
# Añadir una dirección IPv4 y dos IPv6
config_eth0="192.168.0.2/24
4321:0:1:2:3:4:567:89ab
4321:0:1:2:3:4:567:89ac"
  
# Mantener la dirección asignada por el núcleo, a menos que la
# interfaz se caiga, entonces asignar otra vía DHCP. Si DHCP falla entonces
# añadir una dirección estática determinada mediante APIPA
config_eth0="noop
dhcp"
fallback_eth0="null
apipa"
Nota
Cuando se utiliza el módulo ifconfig y se añade más de una dirección, se crean alias de interfaz para cada dirección extra. De esta manera los dos ejemplos anteriores tendrán interfaces eth0, eth0:1 y eth0:2. No se puede hacer nada especial con estas interfaces ya que el núcleo y otros programas simplemente tratan eth0:1 y eth0:2 como eth0.
Importante
¡La orden de retorno es importante! Si no especificamos la opción null, la orden apipa se ejecutaría solo si la orden noop falla.

Dependencias de red

Los guiones en /etc/init.d/ pueden depender de una interfaz de red específica o, simplemente, de "net" (red). Todos los interfaces de red en el sistema de inicio de Gentoo proporcionan algo llamado "net".

Si, en /etc/rc.conf, la variable rc_depend_strict se establece en YES, entonces todas las interfaces de red que proporcionan "net" deben estar activas antes de que se asuma que se cumple una dependencia de "net". En otras palabras, si un sistema tiene net.eth0 y net.eth1 y un script de inicio depende de "net", ambos deben estar habilitados.

Por otro lado, si está configurado rc_depend_strict="NO", entonces la dependencia de "net" se considera cumplida al momento de estar activo al menos uno de los interfaces de red.

Pero, ¿y qué pasa si net.br0 depende de net.eth0 y net.eth1? net.eth1 podría ser un dispositivo inalámbrico o ppp que necesita configurarse antes de añadirse al puente. Esto no puede hacerse en /etc/init.d/net.br0 ya que es un enlaces simbólico a net.lo.

La respuesta es definir un ajuste rc_net_{interface}_need en /etc/conf.d/net:

ARCHIVO /etc/conf.d/netAñadir una dependencia de net.br0
rc_net_br0_need="net.eth0 net.eth1"

Lo anterior no es suficiente. Los guiones de inicio de Gentoo utilizan una dependencia virtual llamada "net" para informar al sistema cuando está disponible la conexión a red. Claramente, en el caso de arriba la conexión a red debería marcarse como disponible cuando net.br0 está funcionando, no cuando lo están las otras. Por lo que tenemos que indicar también esto en /etc/conf.d/net:

ARCHIVO /etc/conf.d/netActualizar las dependencias y provisiones para los servicios de red
rc_net_eth0_provide="!net"
rc_net_eth1_provide="!net"

Para una lectura más detallada sobre dependencias, consulte la sección Guiones de Inicio en el manual de Gentoo. Se puede encontrar más información acerca de /etc/rc.conf en los comentarios dentro del propio archivo.

Nombres de variables y valores

Los nombres de variables son dinámicos. Normalmente sigue la estructura variable_${interface|mac|essid|apmac}. Por ejemplo, la variable dhcpcd_eth0 guarda los valores para las opciones de dhcpcd para eth0 y dhcpcd_essid los valores para dhcpcd cuando cualquier interfaz se conecta al ESSID "essid".

Sin embargo, no hay ninguna regla que indique que los nombre de las interfaces sean ethx. De hecho, muchas interfaces inalambricas tienen nombres como wlanx, rax o ethx. También, algunas interfaces definidas por el usuario como pueden ser puentes puede tener cualquier nombre. Para hacer la vida un poco más interesante, los puntos de acceso inalámbricos pueden tener nombres con caracteres no alfanuméricos - esto es importante porque se pueden configurar los parámetros de red por ESSID.

La desventaja de todo esto es que Gentoo usa variables bash para la red - y bash no puede utilizar nada fuera de caracteres alfanuméricos ingleses. Para solucionar esta limitación cambiamos cada carácter que no sea alfanumérico inglés por un carácter _.

Otra desventaja de bash es el contenido de las variables - algunos caracteres necesitan especificarse de manera especial. Esto se hace utilizando \ (la barra invertida) delante del carácter. A continuación tenemos una lista de caracteres especiales que necesitamos indicar de esta manera: ", ' y \.

En este ejemplo utilizamos un ESSID inalámbrico ya que puede contener un amplio abanico de caracteres. Deberemos utilizar ESSID My "\ NET:

ARCHIVO /etc/conf.d/netNombre de variable
# Esto funciona, pero el dominio no es válido
dns_domain_My____NET="My \"\\ NET"

Lo que hay arriba configura el dominio dns a My "\ NET cuando una tarjeta inalámbrica se conecta a un AP cuyo ESSID es My "\ NET.

Nombrado de las interfaces de red

Cómo funciona

Los nombres de la interfaces de red no se obtienen de forma arbitraria: el núcleo Linux y el gestor de dispositivos (la mayoría de sistemas utilizan udev como gestor de dispositivos, aunque existen otros) obtiene el nombre de la interfaz mediante una serie de reglas prefijadas.

Cuando se detecta una interfaz en un sistema, el núcleo Linux recolecta los datos disponibles para esa tarjeta de red. Estos datos incluyen:

  • El nombre registrado de tarjeta de red (en la propia interfaz) y que más tarde se podrá obtener a través del valor de ID_NET_NAME_ONBOARD.
  • La ranura en la cual se ha insertado la tarjeta de red y que más tarde se podrá obtener a través del valor de ID_NET_NAME_SLOT.
  • La ruta a través de la cual se accede a la tarjeta de red y que más tarde se podrá obtener a través del valor de ID_NET_NAME_PATH.
  • La dirección MAC de la tarjeta (que ofrece el fabricante) que más tarde se podrá obtener mediante el valor de ID_NET_NAME_MAC.

Basándose en esta información, el gestor de dispositivos decide como nombrar a las interfaces presentes en el sistema. Por defecto, utiliza el primero de las tres primeras variables que se muestran arriba (ID_NET_NAME_ONBOARD, _SLOT o _PATH). Por ejemplo, si se encuentra un valor para ID_NET_NAME_ONBOARD y éste es eno1, entonces la interfaz de red se llamará eno1.

Si sabe el nombre de su interfaz, puede ver los valores de las variables mediante la orden udevadm:

root #udevadm test-builtin net_id /sys/class/net/enp3s0 2>/dev/null
ID_NET_NAME_MAC=enxc80aa9429d76
ID_OUI_FROM_DATABASE=Quanta Computer Inc.
ID_NET_NAME_PATH=enp3s0

Como la primera (y realmente la única) de las tres variables es ID_NET_NAME_PATH, su valor se utiliza para nombrar al interfaz de red. Si ninguna de las variables tienen valor, entonces el sistema utiliza los nombres que ofrece el núcleo (eth0, eth1, etc.)

Utilizar el nombrado al viejo estilo del núcleo

Antes de este cambio, era el núcleo el que ponía los nombres a las tarjetas de red, dependiendo del orden en el que se cargaran sus controladores (entre otras, probablemente oscuras razones). Este comportamiento se puede aún activar definiendo el parámetro net.ifnames=0 en el gestor de arranque.

Usar sus propios nombres

La idea detrás de este cambio en el nombrado es la de no confundir a la gente y hacer los cambios de nombre de forma fácil. Suponga que tiene dos interfaces que se llamarían eth0 y eth1. Una se utiliza para acceder a la red a través de cable y la otra es inalámbrica. Con el soporte para el nombrado de interfaces, puede llamarlas lan0 (cableada) y wifi0 (inalámbrica, es mejor evitar usar los nombres anteriores bien conocidos como eth* y wlan* ya que todavía pueden parecerse a los nombres que hemos sugerido).

Todo lo que necesita ahora es encontrar los parámetros para las tarjetas y utilizar esta información para definir su propia regla de nombrado:

root #udevadm test-builtin net_id /sys/class/net/eth0 2>/dev/null
ID_NET_NAME_MAC=enxc80aa9429d76
ID_OUI_FROM_DATABASE=Quanta Computer Inc.
root #vim /etc/udev/rules.d/70-net-name-use-custom.rules
# El primero utiliza la información MAC y el número 70- para que se lance antes que otras reglas de red
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="c8:0a:a9:42:9d:76", NAME="lan0"
root #vim /etc/udev/rules.d/76-net-name-use-custom.rules
# El segundo utiliza la información de ID_NET_NAME_PATH y el número 76- para estar entre los dos
# 75-net-*.rules y 80-net-*.rules
SUBSYSTEM=="net", ACTION=="add", ENV{ID_NET_NAME_PATH}=="enp3s0", NAME="wifi0"

Debido a que las reglas se disparan antes de la regla por defecto (las reglas se disparan en orden alfanumérico, por lo que la 70 se lee antes que la 80), los nombres ofrecidos en el fichero de reglas se utilizarán en lugar de los que se usan por defecto. El número asignado al fichero debería estar entre 76 y 79 (las variables de entorno se definen mediante una regla que comienza por 75 y el nombrado por defecto lo realiza una regla con el número 80).





Módulos de Red

Los guiones netifrc ofrecen ahora soporte para guiones modulares de red, lo cual significa que se puede añadir fácilmente soporte para nuevos tipos de interfaces y módulos de configuración mientras se mantiene la compatibilidad con los actuales.

Los módulos se cargan por defecto si el paquete que los requiere está instalado. Si especifica un modulo aquí que no tiene su paquete instalado, entonces obtendrá un error acerca del paquete que necesita instalar. Lo ideal sería que solamente use la configuración con módulos si tiene dos o más paquetes que proporcionen el mismo servicio y necesita marcar su preferencia de uno sobre los otros.

Nota
Todas las configuraciones que aquí se comentan, son almacenadas en /etc/conf.d/net a menos que se especifique lo contrario.
ARCHIVO /etc/conf.d/netDefiniciones de módulos
# Preferir ifconfig sobre iproute2
modules="ifconfig"
  
# También se puede especificar otros módulos para una interfaz
# En este caso preferimos a dhclient sobre dhcpcd
modules_eth0="dhclient"
  
# También podemos especificar módulos que no queremos utilizar -
# por ejemplo, puede querer utilizar un suplicante o linux-wlang-ng
# para controlar la configuración inalámbrica, pero querer seguir
# configurando la red por ESSID asociado.
modules="!iwconfig"

Manejadores de interfaces

Proporcionamos dos manejadores de interfaces: ifconfig e iproute2. Hará falta uno de estos para cualquier tipo de configuración de red.

Ambos se instalan por defecto como parte del perfil del sistema. El paquete iproute2 es el más potente y flexible.

Ya que ifconfig e iproute2 hacen cosas muy parecidas, nos permitimos usar la misma configuración básica para ambos. Los ejemplos a continuación funcionarán sin importar qué módulo tenga instalado.

ARCHIVO /etc/conf.d/netEjemplos de diferentes posibilidades de configuración
config_eth0="192.168.0.2/24"
config_eth0="192.168.0.2 netmask 255.255.255.0"
  
# También podemos especificar la dirección de difusión
config_eth0="192.168.0.2/24 brd 192.168.0.255"
config_eth0="192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255"

DHCP

El DHCP es un medio para obtener información de red (dirección IP, servidores DNS, puerta de enlace, etc) de un servidor DHCP. Si existe un servidor DHCP en su red, apenas tendrá que decirle a cada cliente que utilice DHCP y el servidor se encargará de configurar el resto. Por supuesto, tendrá que configurar otras cosas la red inalámbrica, el ppp, etc. u otros si hacen falta antes de poder utilizar DHCP.

DHCP puede ser proporcionado por dhclient o dhcpcd. Cada módulo DHCP tiene sus pros y sus contras - aquí tiene un pequeño resumen:

Módulo DHCP Paquete Pros Contras
dhclient net-misc/dhcp Creado por la ISC, la misma gente que hacen el software dns BIND. Muy configurable. Configuración excesivamente complicada, software bastante hinchado, no se puede obtener servidores NTP desde DHCP, no envía el nombre de host por defecto. Ya no es mantenido.
dhcpcd net-misc/dhcpcd Durante mucho tiempo ha sido la opción por defecto en Gentoo, no depende de herramientas externas, activamente desarrollada por Gentoo. Puede ser un poco lento a veces, aún no se puede usar como demonio cuando el tiempo de concesión de la dirección es infinito.

Si tiene más de un cliente DHCP instalado, hará falta especificar cuál utilizar - sino, utilizaremos dhcpcd por defecto, si está disponible.

Para enviar opciones específicas al módulo dhcp, utilizamos module_eth0="..." (cambiar "modulo" por el nombre del módulo dhcp que se vaya a utilizar - por ejemplo: dhcpcd_eth0).

Tratamos de hacer que el servicio DHCP sea relativamente agnóstico, de manera que soportamos las siguientes órdenes usando la variable dhcp_eth0. Por defecto no se configuran ninguno de ellos:

release
Libera la dirección IP para ser reutilizada
nodns
No sobreescribir el /etc/resolv.conf
nontp
No sobreescribir el /etc/ntp.conf
nonis
No sobreescribir el /etc/yp.conf
ARCHIVO /etc/conf.d/netEjemplo de configuración DHCP
# Solamente necesita hacerlo si tiene más de un módulo
instalado
modules="dhcpcd"
  
config_eth0="dhcp"
dhcpcd_eth0="-t 10" # Espera agotada (timeout) después de 10
dhcp_eth0="release nodns nontp nonis" # Solamente obtenga la dirección IP
Nota
dhcpcd envía el nombre de máquina al servidor DHCP por defecto así que no necesita especificarlo más.
ARCHIVO /etc/conf.d/netSample DHCPv6 configuration
# Only needed if more than one DHCP module is installed
modules="dhclient"
  
config_eth0="dhcpv6"
# To use both DHCPv4 and DHCPv6 on a dual-stack network, remove the above line and uncomment the following lines
#config_eth0="dhcp
#dhcpv6"
</div>

<div lang="en" dir="ltr" class="mw-content-ltr">
# To pass runtime arguments to dhclient for DHCPv6
dhclientv6_eth0="-t 10" # Timeout after 10 seconds
</div>

<div lang="en" dir="ltr" class="mw-content-ltr">
# Set generic DHCPv6 options
dhcpv6_eth0="release nodns nontp nonis nogateway nosendhost"

ADSL con PPPoE/PPPoA

Primero instalamos el software ADSL:

root #emerge --ask net-dialup/ppp

Segundo, cree el guión de red PPP y el guión de red para la interfaz ethernet que se utilizará con PPP:

root #ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0
root #ln -s /etc/init.d/net.lo /etc/init.d/net.eth0

Asegúrese de configurar rc_depend_strict a YES en /etc/rc.conf.

Ahora necesitamos configurar /etc/conf.d/net.

ARCHIVO /etc/conf.d/netUna configuración básica PPPoE
config_eth0=null (Especifique su intefaz ethernet)
config_ppp0="ppp"
link_ppp0="eth0" (Especifique su intefaz ethernet)
plugins_ppp0="pppoe"
username_ppp0='user'
password_ppp0='password'
pppd_ppp0="
noauth
defaultroute
usepeerdns
holdoff 3
child-timeout 60
lcp-echo-interval 15
lcp-echo-failure 3
noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp"
  
rc_net_ppp0_need="net.eth0"

También puede configurar su password en /etc/ppp/pap-secrets.

ARCHIVO /etc/ppp/pap-secretsEjemplo de pap-secrets
# Ojo: el * es importante
"username"  *  "password"

Si utiliza PPPoE con un modem USB necesitará instalar br2684ctl. Por favor, lea /var/db/repos/gentoo/net-dialup/speedtouch-usb/files/README para conseguir la información de cómo configurarlo adecuadamente.

Importante
Por favor, lea con detenimiento la sección sobre ADSL y PPP en /usr/share/doc/netifrc-*/net.example.bz2. Contiene muchas explicaciones mucho más detalladas de las configuraciones que su instalación PPP podría necesitar.

APIPA Direccionamiento Privado Automático (Automatic Private IP Addressing)

APIPA intenta encontrar una dirección libre en el rango 169.254.0.0-169.254.255.255 haciendo arping a direcciones aleatorias en ese rango para el interfaz. Si no se obtiene respuesta, se asigna esa dirección al interfaz.

Esto es útil solamente en redes donde no hay servidor DHCP y no hay conexión directa a Internet y que todos los demás computadores también usen APIPA.

Para obtener soporte de APIPA, hacer emerge de net-misc/iputils con el ajuste USE arping o net-analyzer/arping.

ARCHIVO /etc/conf.d/netConfiguración APIPA
# Intentar DHCP primero - y si falla, entonces usar APIPA
config_eth0="dhcp"
fallback_eth0="apipa"
  
# Usar únicamente APIPA
config_eth0="apipa"

Bonding

El "Bonding" se utiliza para incrementar el ancho de banda de la red o para mejorar la capacidad de recuperación ante fallos del hardware. Si tiene dos interfaces de red en la misma red puede unirlas de modo que sus aplicaciones solo vean un interfaz pero en realidad están usando ambas.

Hay varias formas de configurar el bonding. Algunas de ellas como el modo 802.3ad LACP requieren un soporte y configuración adicionales en el concentrador de la red. Para saber más de las opciones específicas eche un vistazo a su copia de /usr/src/linux/Documentation/networking/bonding.txt.

En primer lugar, elimine la configuración de las interfaces que van a participar.

ARCHIVO /etc/conf.d/netEliminar la configuración de las interfaces
config_eth0="null"
config_eth1="null"
config_eth2="null"

A continuación defina el bonding entre las interfaces:

ARCHIVO /etc/conf.d/netDefinir el bonding
slaves_bond0="eth0 eth1 eth2"
config_bond0="192.168.100.4/24"
# Elija el modo y configuraciónes adicionales que correspondan a sus necesidades
mode_bond0="balance-alb"

Elimine los servicios net.eth* de los niveles de ejecución, cree un servicio net.bond0 y añádalo al nivel de ejecución adecuado.

Puentes (soporte para 802.1d)

Los puentes se usan para unir redes. Por ejemplo, puede tener un servidor conectando a internet vía modem ADSL y una tarjeta inalámbrica para que otros computadores se conecten al internet por medio del modem ADSL. Se puede crear un puente para unir ambos interfaces.

ARCHIVO /etc/conf.d/netConfigurar un puente
# Configure el puente - para más detalles vea "man brctl"
bridge_forward_delay_br0=0
bridge_hello_time_br0=200
bridge_stp_state_br0=1
  
# Para agregar puertos al puente br0
bridge_br0="eth0 eth1"
  
# Hará falta configurar los puertos a valores nulos para no iniciar dhcp
config_eth0="null"
config_eth1="null"
  
# Finalmente, déle una dirección al puente - para esto puede usar DHCP también
config_br0="192.168.0.1/24"
  
# Hacer depender de eth0 y eth1 ya que pueden requerir configuración adicional
rc_net_br0_need="net.eth0 net.eth1"
Importante
Para usar algunas configuraciones de puente, tal vez tenga que consultar la documentación de Configuración por medio de variables.
Importante
Cuando se utilizan puentes utilizando IPv6, SLAAC necesita que STP esté a 1, tal y como se muestra en el ejemplo de arriba.

Dirección MAC

Si lo requiere, también puede cambiar la dirección MAC de los interfaces por medio del archivo de configuración de red.

ARCHIVO /etc/conf.d/netEjemplo de cambio de una dirección MAC
# Establecer una dirección MAC de un interfaz
mac_eth0="00:11:22:33:44:55"
  
# Para cambiar aleatoriamente solo los últimos 3 bytes
mac_eth0="random-ending"
  
# Para cambiar aleatoriamente entre tipos de conexión
# físicamente iguales (por ejemplo: fibra óptica, cobre, inalámbrica),
# para todos los proveedores
mac_eth0="random-samekind"
  
# Para cambiar aleatoriamente entre cualquier tipo físico de
# conexión (por ejemplo fibra óptica, cobre, inalámbrica),
# para todos los proveedores
mac_eth0="random-anykind"
  
# Generación completamente aleatoria -
# ADVERTENCIA: algunas direcciones MAC generadas de esta manera
# tal vez NO se comporten de la forma esperada
mac_eth0="random-full"

Haciendo túneles

No se requiere hacer emerge de paquete alguno para túneles, ya que el manejador del interfaz se encarga de esto.

ARCHIVO /etc/conf.d/netConfiguración de túneles
# Para túneles GRE
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"
  
# Para túneles IPIP
iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"
  
# Para configurar el interfaz
config_vpn0="192.168.0.2 peer 192.168.1.1"

VLAN (soporte para 802.1q)

Para dar soporte a VLAN, asegúrese de que se ha instalado sys-apps/iproute2 y también que se utiliza iproute2 como módulo de configuración en lugar de ifconfig.

Las redes virtuales son un grupo de dispositivos de red que se comportan como si estuviesen conectados a un solo segmento de red - aunque no lo estén. Miembros de una VLAN solo pueden ver miembros de la misma VLAN, aunque no compartan la misma red física.

Para configurar VLANs, en primer lugar especifique los números de VLAN en /etc/conf.d/net del siguiente modo:

ARCHIVO /etc/conf.d/netEspecificar los números VLAN
vlans_eth0="1 2"

A continuación, configure el interfaz para cada VLAN:

ARCHIVO /etc/conf.d/netConfigurar la interface para cada VLAN
config_eth0_1="172.16.3.1 netmask 255.255.254.0"
routes_eth0_1="default via 172.16.3.254"
  
config_eth0_2="172.16.2.1 netmask 255.255.254.0"
routes_eth0_2="default via 172.16.2.254"

Las configuraciones específicas se VLAN se realizan con vconfig del siguiente modo:

ARCHIVO /etc/conf.d/netConfigurar las VLANs
vlan1_name="vlan1"
vlan1_ingress="2:6 3:5"
eth0_vlan1_egress="1:2"
Importante
Para usar algunas configuraciones de VLAN, tal vez haga falta consultar la documentación de Configuración por medio de variables.




Introducción

Las redes inalámbricas en Linux, normalmente se configuran de forma fácil. Hay tres formas de realizar esta configuración: clientes gráficos, interfaces en modo texto y la línea de comandos.

La forma más fácil es usar el cliente gráfico, una vez haya instalado un entorno de escritorio. La mayoría de clientes gráficos, como NetworkManager, son bastante autoexplicativos. Ofrecen una interfaz del tipo apuntar y hacer clic que le conectan a una red en cuestión de segundos.

Nota
NetworkManager ofrece utilidades con interfaz en modo texto además de la interfaz gráfica principal. Haga emerge del paquete net-misc/networkmanager con el ajuste USE ncurses habilitado. La utilidad nmtui es particularmente útil para aquéllos que no usan un entrono de escritorio basado en X o Wayland, pero quieren una herramienta fácil de usar que no requiera editar manualmente archivos de configuración.

Sin embargo, si no quiere usar un cliente gráfico, puede configurar la red inalámbrica con la línea de comandos, editando unos pocos ficheros de configuración. Esto toma un poco más de tiempo, pero también requiere de menos paquetes que descargar e instalar. Ya que los clientes gráficos son en su mayoría autoexplicativos (con capturas de pantalla útiles en sus páginas oficiales), nos centraremos en las alternativas de línea de comandos.

Hay tres herramientas que permiten configurar la red inalámbrica desde la línea de comandos: net-wireless/iw, net-wireless/wireless-tools y net-wireless/wpa_supplicant. De estas tres, net-wireless/wpa_supplicant es la preferida. Es importante recordar que se pueden configurar las redes locales de forma global, no dependiendo de la interfaz.

net-wireless/iw, el sucesor de net-wireless/wireless-tools, soporta casi todas las tarjetas y controladores, pero no puede conectar a puntos de acceso WPA. Si las redes ofrecen solo cifrado WEP o están abiertas, entonces net-wireless/iw gana por su simplicidades sobre otras herramientas.

Algunas tarjetas inalámbricas están desactivadas por defecto. Para activarlas, por favor, consulte la documentación de su hardware. Algunas de estas tarjetas se pueden desbloquear mediante la aplicación rfkill. Si es éste el caso, utilice rfkill list para ver las tarjetas disponibles y rfkill unblock INDICE para activar la funcionalidad inalámbrica. En otro caso, puede que tenga que desbloquear la tarjeta inalámbrica mediante un botón, conmutador o combinación especial de teclas en su ordenador portátil.

WPA supplicant

El proyecto WPA supplicant proporciona una paquete que permite a los usuarios conectarse a puntos de acceso habilitados con WPA.

root #emerge --ask net-wireless/wpa_supplicant
Importante
Debe activar CONFIG_PACKET en su kernel para que funcione wpa_supplicant. Para ver si está habilitado en su kernel actual, pruebe:
root #zgrep CONFIG_PACKET /proc/config.gz
root #grep CONFIG_PACKET /usr/src/linux/.config
Nota
Dependiendo de sus ajustes USE, wpa_supplicant puede instalar una interfaz gráfica escrita en Qt5, que se integrará de forma adecuada con KDE. Pare tenerla, habilite USE="qt5" para el paquete net-wireless/wpa_supplicant.

Ahora debemos configurar /etc/conf.d/net para elegir wpa_supplicant sobre wireless-tools (si ambos están instalados, wireless-tools será usado por defecto).

ARCHIVO /etc/conf.d/netForzar el uso de wpa_supplicant
# Preferir wpa_supplicant sobre wireless-tools
modules="wpa_supplicant"
Nota
Si está usando el controlador host-ap, hará falta colocar el interfaz en modo gestionado (Managed mode) antes de poder usarlo correctamente con wpa_supplicant. Para esto puede usar iwconfig_eth0="mode managed" en /etc/conf.d/net.

A continuación configure el propio wpa_supplicant (que es algo más difícil dependiendo de cuán seguros sean los puntos de acceso inalámbricos). A continuación mostramos un ejemplo simplificado extraido de /usr/share/doc/wpa_supplicant-<versión>/wpa_supplicant.conf.gz, parte del paquete wpa_supplicant.

ARCHIVO /etc/wpa_supplicant/wpa_supplicant.confEjemplo simplificado
# No cambie la siguiente línea, a riesgo que no funcione
ctrl_interface=/var/run/wpa_supplicant
  
# Asegúrese que sólo root puede leer la configuración de WPA
ctrl_interface_group=0
  
# Permítale a wpa_supplicant encargarse del barrido y selección de los PA
ap_scan=1
  
# Caso sencillo: WPA-PSK, frase ASCII como contraseña PSK, permitir todas las encriptaciones válidas
network={
  ssid="simple"
  psk="contraseña muy secreta"
  # A mayor prioridad, más rápido nos conectaremos
  priority=5
}
  
# Igual que el ejemplo anterior, pero barriendo para un SSID específico (para los PAs que rechazan
#  transmitir el SSID)
network={
  ssid="segundo ssid"
  scan_ssid=1
  psk="contraseña muy secreta"
  priority=2
}
  
# Solamente estamos usando WPA-PSK. Se acepta cualquier encriptación válida
network={
  ssid="ejemplo"
  proto=WPA
  key_mgmt=WPA-PSK
  pairwise=CCMP TKIP
  group=CCMP TKIP WEP104 WEP40
  psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
  priority=2
}
  
# Conexión sin encriptar (sin WPA, o IEEE 802.1X)
network={
  ssid="prueba-solotexto"
  key_mgmt=NONE
}
  
# Conexión con clave WEP compartida (sin WPA, o IEEE 802.1X)
network={
  ssid="prueba-wep-estatica"
  key_mgmt=NONE
  # Claves entre comillas son claves ASCII
  wep_key0="abcde"
  # Claves sin comillas son claves hexadecimales
  wep_key1=0102030405
  wep_key2="1234567890123"
  wep_tx_keyidx=0
  priority=5
}
  
# Conexión con clave WEP compartida (sin WPA, o IEEE 802.1X) usando 
# autentificación con clave compartida IEEE 802.11
network={
  ssid="prueba2-wep-estática"
  key_mgmt=NONE
  wep_key0="abcde"
  wep_key1=0102030405
  wep_key2="1234567890123"
  wep_tx_keyidx=0
  priority=5
  auth_alg=SHARED
}
  
# Red IBSS/ad-hoc con WPA-None/TKIP
network={
  ssid="prueba adhoc"
  mode=1
  proto=WPA
  key_mgmt=WPA-NONE
  pairwise=NONE
  group=TKIP
  psk="contraseña secreta"
}

Wireless tools

Configuración inicial y modo gestionado

El proyecto wireless tools provee una manera genérica para configurar los interfaces inalámbricos básicos hasta el nivel de seguridad WEP. Aunque WEP es un sistema de seguridad débil, también es el más prevalente.

La configuración de Wireless Tools está controlada por algunas variables principales. El archivo ejemplo de configuración a continuación deberá describir todo lo requerido. Algo para mantener presente es que si no hay ninguna configuración quiere decir "conectarse al punto de acceso sin encriptación que tenga la señal más fuerte" - de manera que siempre tratará de conectarse con lo que sea.

root #emerge --ask net-wireless/wireless-tools
Nota
A pesar de que net-wireless/iw es la herramienta actual para la configuración inalámbrica, net-misc/netifrc previa a la versión 0.6.0 no funciona con los nuevos comandos. Es necesario utilizar net-wireless/wireless-tools con netifrc en versiones previas. Para mas información consulte la documentación sobre nombres de variables.
ARCHIVO /etc/conf.d/netEjemplo usando iwconfig
# Preferir iwconfig sobre wpa_supplicant
modules="iwconfig"
  
# Configure las claves WEP para los APs ESSID1 y ESSID2
# Pueden configurarse hasta 4 claves WEP, pero solo una puede
# estar activa a la vez, así que tenemos un índice por defecto
# de [1] para la clave [1] y luego otra vez para cambiar la clave activa a [1]
# Hacemos esto en caso que defina otros ESSIDs para usar claves WEP que no sean 1
#
#
# El prefijar la clave con s: significa que es una clave ASCII porque sino es una clave hexadecimal
#
# enc open especifica seguridad abierta (máxima seguridad)
# enc restricted especifica seguridad restringida (menos segura)
key_ESSID1="[1] s:aquisuclave key [1] enc open"
key_ESSID2="[1] aaaa-bbbb-cccc-dd key [1] enc restricted"
  
# Los ejemplos a continuación solo funcionan una vez que se haya barrido para los APs disponibles
  
# A veces se registra más de un AP, así que hará falta definir
# un orden de preferencia para conectarse
preferred_aps="'ESSID1' 'ESSID2'"

Afinamiento en la selección de APs

Puede agregar opciones adicionales para afinar la selección de APs, pero normalmente esto no hace falta.

Puede decidirse por conectarse solamente a APs preferidos o no. Por defecto, si falla todo lo configurado y nos podemos conectar a un AP no encriptado, entonces se hará. Esto puede ser controlado con la variable associate_order (orden para asociación). Sigue una tabla de valores y como estos ejercen este control.

Valor Descripción
any (cualquiera) Comportamiento por defecto
preferredonly (solo preferidos) Solamente nos conectaremos a PAs visibles en la lista de preferidos
forcepreferred (obligado a preferidos) Nos conectaremos obligatoriamente a los PAs en el orden preferido aunque no se encuentren en un barrido
forcepreferredonly (solamente preferidos obligados) No barrer buscando PAs - solo tratar de conectar a cada uno en orden
forceany (obligar a cualquiera) Igual que forcepreferred y además se conecta a cualquier otro disponible

Finalmente podemos hacer una lista negra de PAs (blacklist_aps) y seleccionar un único PA (unique_ap). blacklist_aps funciona de manera similar a preferred_aps. unique_ap es un valor si o no (yes o no) que determina si un segundo interfaz inalámbrico se puede conectar al mismo punto de acceso que el primer interfaz.

ARCHIVO /etc/conf.d/netEjemplo de blacklist_aps y de unique_ap
# A veces nunca queremos conectarnos a algunos PAs
blacklist_aps="'ESSID3' 'ESSID4'"
  
# Si tiene más de una tarjeta inalámbrica, puede determinar
# que cada interfaz se asocie al mismo PA o no
# Los valores son "yes" y "no"
# El valor por defecto es "yes"
unique_ap="yes"

Modos Ad-Hoc y Master

Si desea establecerse como un nodo Ad-Hoc al no lograr conectarse a algún PA en modo gestionado, puede hacerlo también.

ARCHIVO /etc/conf.d/netUsar modo ad-hoc en caso de no conectar en modo gestionad
adhoc_essid_eth0="Nodo Adhoc"

También es posible conectarse a redes ad-hoc o funcionar en modo master para convertirse en PA.

ARCHIVO /etc/conf.d/netEjemplo de configuración ad-hoc/master
# Establezca el modo - que puede ser managed (por defecto), ad-hoc o master
# No todos los drivers soportan todos los modos
mode_eth0="ad-hoc"

# Establezca el ESSID del interfaz
# En modo gestionado, esto obliga a la interfaz a intentar conectarse al
# ESSID especificado solamente
essid_eth0="Nodo Adhoc"
  
# Se usaría el canal 3 si no se estableciera otro como a continuación
channel_eth0="9"
Importante
A continuación citamos la BSD documentación de wavelan encontrada en la documentación de NetBSD. Existen 14 canales posibles; Se nos informa que los canales 1-11 son legales para Norteamérica , los canales 1-13 para la mayor parte de Europa, los canales 10-13 para Francia y sólo el canal 14 para Japón. En caso de duda, por favor eche un vistazo a la documentación que acompaña la tarjeta o punto de acceso. Asegúrese que el canal que selecciona es el mismo qu el del PA (o de la otra tarjeta en caso de ser red ad-hoc). Para las tarjetas vendidas en Norteamérica y la mayor parte de Europa, es el canal 3 por defecto; en Francia el 11 y en el Japón es el 14.

Solucionar problemas con wireless tools

Existen más variables que sirven para ayudar a configurar y operar una red inalámbrica por problemas ambientales o del driver. Aquí presentamos una tabla de otras cosas para intentar.

Nombre de la variable Valor por defecto Descripción
iwconfig_eth0 Vea la página man de iwconfig para detalles acerca de qué enviar a iwconfig
iwpriv_eth0 Vea la página man de iwpriv para detalles acerca de qué enviar a iwpriv
sleep_scan_eth0 0 La cantidad en segundos a dormir antes de intentar un barrido. Esto hace falta cuando el driver/firmware requiere de más tiempo para activarse antes de poder usarlos.
sleep_associate_eth0 5 La cantidad en segundos a esperar para que el interfaz se asocie con el PA antes de continuar al siguiente.
associate_test_eth0 MAC Algunos drivers no resetean la dirección MAC asociada a una inválida cuando pierden la señal o intentan asociarse. Algunos drivers no resetean el nivel de calidad cuando pierden la señal o intentan asociarse. La configuraciones válidas son MAC, quality y all.
scan_mode_eth0 Algunos drivers tienen que hacer el barrido en modo ad-hoc, así que, si falla el barrido, intente configurar aquí como ad-hoc.
iwpriv_scan_pre_eth0 Envía algunas órdenes iwpriv al interfaz antes del barrido. Consulte la página man de iwpriv para más detalles.
iwpriv_scan_post_eth0 Envía algunas órdenes iwpriv al interfaz después del barrido. Vea la página man de iwpriv para más detalles.

Definir la configuración de la red por ESSID

A veces, se necesita una dirección IP estática cuando se conecta a un ESSID1 y cuando lo hace a ESSID2, se utiliza DHCP.

Nota
Esto funciona sin importar si usa WPA Supplicant o Wireless Tools
Importante
Necesitará consultar la documentación variable name.
ARCHIVO /etc/conf.d/netReemplazar configuración de red por ESSID
config_ESSID1="192.168.0.3/24 brd 192.168.0.255"
routes_ESSID1="default via 192.168.0.1"
  
config_ESSID2="dhcp"
fallback_ESSID2="192.168.3.4/24"
fallback_route_ESSID2="default via 192.168.3.1"
  
# Podemos definir servidores DNS y otras cosas también
# NOTA: DHCP reemplazará esta configuración a menos que se le indique que no debe hacerlo
dns_servers_ESSID1="192.168.0.1 192.168.0.2"
dns_domain_ESSID1="algun.dominio"
dns_search_domains_ESSID1="buscador.este.dominio buscador.aquel.dominio"
  
# Reemplace usando la dirección MAC del PA
# Esto es muy útil si usa distintas ubicaciones con el mismo ESSID
config_001122334455="dhcp"
dhcpcd_001122334455="-t 10"
dns_servers_001122334455="192.168.0.1 192.168.0.2"





Enganche con las funciones estándar

Se pueden definir cuatro funciones en /etc/conf.d/net, que pueden ser llamadas antes o después de las operaciones de inicio/parada (start/stop). Sus nombres se componen empezando con el nombre de interfaz, de manera que una función puede controlar múltiples interfaces.

Los valores de retorno de las funciones preup() y predown() deben ser 0 (éxito) indicando que la configuración o la desconfiguración de los interfaces pueden continuar. Si preup() devuelve un valor distinto de cero, se detendrá la configuración del interfaz. Si predown() devuelve un valor distinto de cero, no se permite que el interfaz continúe desconfigurándose.

Los valores de retorno de las funciones postup() y postdown() serán ignorados, ya que no hay nada que hacer si hay indicación de algún fallo.

${IFACE} es el interfaz que será encendido/apagado, ${IFVAR} es ${IFACE} convertido a un nombre de variable válido según bash.

ARCHIVO /etc/conf.d/netEjemplo de funciones pre/post up/down
preup() {
  # Comprobación del enlace de la interfaz antes de activarla.
  # Esto solamente funciona con algunos interfaces de red y necesita
  # que el paquete ethtool este instalado.
  if ethtool ${IFACE} | grep -q 'Link detected: no'; then
    ewarn "${IFACE} no tiene enlace, configuración abortada"
    return 1
  fi
  
  # Recordar devolver 0 si todo fue correcto
  return 0
}
  
predown() {
  # Por defecto en el guión de inicio se comprueba si el sistema (root) está montado por NFS y en ese caso
  # no permitir que las interfaces se desactiven. Tenga en cuenta que, si
  # especifica una función predown() sobreescribirá está regla.
  # Aquí la tiene en caso de que todavía quiera utilizarla...
  if is_net_fs /; then
    eerror "El sistema de archivos raiz (root) está montado desde la red -- no se puede detener ${IFACE}"
    return 1
  fi
  
  # Recordar devolver 0 si todo fue correcto
  return 0
}
  
postup() {
  # Esta función podría utilizarse, por ejemplo, para
  # registrarse en un servicio dinámico de DNS. Otra posibilidad
  # sería enviar un correo cada vez que la interfaz se conecta.
       return 0
}
  
postdown() {
  # Esta función está aquí mayormente para redondear ...
  # ún no hemos pensado en algo interesante que pueda hacer
  return 0
}
Nota
Para mayor información acerca de escribir sus propias funciones, agradecemos lea /usr/share/doc/netifrc-*/net.example.bz2.

Enganche con las funciones de wireless tools

Nota
Esto no funcionará con WPA Supplicant aunque las variables ${ESSID} y ${ESSIDVAR} están disponibles en la función postup().

Se pueden definir dos funciones en /etc/conf.d/net que se ejecutan antes y después de la función asociada referida. Estas funciones se nombran antecediéndole el nombre del interfaz, de manera que la misma función puede controlar múltiples interfaces.

El valor devuelto por la función preassociate() debe ser 0 (éxito) para indicar que la configuración o desconfiguración del interfaz puede continuar. Si la función preassociate() devuelve un valor distinto de cero, se interrumpirá la configuración del interfaz.

El valor devuelto por la función postassociate() se ignora, ya que no hay nada que hacer si llegase a indicarse una falla.

A ${ESSID} se le asigna el ESSID exacto del PA al cual se está conectando, ya que ${ESSIDVAR} es ${ESSID}, convertido a un nombre de variable permitido por bash.

ARCHIVO /etc/conf.d/netfunciones de pre/post asociación
preassociate() {
  # A continuación se agregan 2 variables de configuración leap_user_ESSID
  # y leap_pass_ESSID. Cuando ambos estén configurados para el ESSID
  # ejecutamos el guión LEAP de CISCO.
  
  local user pass
  eval user=\"\$\{leap_user_${ESSIDVAR}\}\"
  eval pass=\"\$\{leap_pass_${ESSIDVAR}\}\"
  
  if [[ -n ${user} && -n ${pass} ]]; then
    if [[ ! -x /opt/cisco/bin/leapscript ]]; then
      eend "Para tener soporte LEAP, haga emerge net-misc/cisco-aironet-client-utils"
      return 1
    fi
    einfo "Esperando autenticación LEAP en  \"${ESSID//\\\\//}\""
    if /opt/cisco/bin/leapscript ${user} ${pass} | grep -q 'Login incorrect'; then
      ewarn "Error al conetactar con ${user}"
      return 1
    fi
  fi
  
  return 0
}
  
postassociate() {
  # Esta función existe mayormente para completar ...
  # no he pensado en algo interesante para hacer aquí todavía
  
  return 0
}
Nota
Las variables ${ESSID} y ${ESSIDVAR} no están disponibles en las funciones predown() y postdown().
Nota
Para mayor información acerca de cómo escribir sus propias funciones, agradecemos lea /usr/share/doc/netifrc-*/net.example.bz2.




Gestión de la red

Si el ordenador está en continuo movimiento, no siempre tendrá un cable ethernet conectado o un punto de acceso disponible. También, puede querer que la red funcione automáticamente cuando un cable ethernet se conecte o se encuentre un punto de acceso.

En este capítulo veremos como se puede hacer esto.

Nota
Esto documento solamente habla sobre ifplugd, pero hay alternativas como netplug. netplug es una alternativa ligera a ifplugd, pero confía en que tus controladores de red del núcleo funcionen correctamente, cosa que muchas veces no es así.

ifplugd

ifplugd es un demonio que arranca y para las interfaces de red cuando un cable se conecta o se desconecta. También puede gestionar la detección de asociación a un punto de acceso o cuando uno nuevo entra dentro del radio de detección.

root #emerge --ask sys-apps/ifplugd

La configuración de ifplugd es bastante clara. El archivo de configuración se encuentra en /etc/conf.d/net. Ejecute man ifplugd para obtener más detalles sobre las variables disponibles. Además, puede consultar más ejemplos en /usr/share/doc/netifrc-*/net.example.bz2.

ARCHIVO /etc/conf.d/netEjemplo de configuración de ifplug
# Sustituya eth0 con la interfaz que quiera monitorizar
ifplugd_eth0="..."
  
# Para monitorizar una interfaz inalámbrica
ifplugd_eth0="--api-mode=wlan"

Además, para manejar múltiples conexiones de red, quizá quiera instalar una herramienta que facilita el trabajo con múltiples configuraciones y servidores DNS. Es realmente útil cuando se recibe la dirección IP via DHCP.

root #emerge --ask net-dns/openresolv

Consulte man resolvconf para aprender más cosas sobre sus características.



Warning: Display title "Manual Gentoo Linux amd64: Configuración de redes" overrides earlier display title "Manual:AMD64/Todo/Redes".