dhcpcd (Español)

Esta traducción de
dhcpcd
fue revisada el
2020-12-06
. Si existen
cambios
puede
actualizarla
o avisar al
equipo de traducción
.
Artículos relacionados
Configuración de red
Configuración de red inalámbrica
dhcpd
dhcpcd
es un cliente DHCP y DHCPv6. Actualmente es el cliente DHCP de código abierto que más características tiene, vea su
página
para una lista completa de características.
Nota
dhcpcd
de Roy Marples (DHCP
client
daemon) no es lo mismo que
dhcpd
de Internet Systems Consortium (DHCP
(server)
daemon).
Instalación
Instale
el paquete
dhcpcd
.
dhcpcd-ui
AUR
es una interfaz
GTK
del demonio
dhcpcd
, y opcionalmente
WPA supplicant
. Estas interfaces ofrecen un diálogo de configuración y la capacidad de introducir una contraseña para las redes inalámbricas.
dhcpcd-ui-patched
AUR
[
enlace roto
: package not found]
es una versión parcheada del paquete
dhcpcd-ui
AUR
. Esta utiliza AppIndicator en vez de GtkStatusIcon y compila con gtk3. Posee un icono nítido para la bandeja del sistema cuando se utiliza con
KDE
.
Iniciar
Para iniciar el demonio para
todas
las interfaces red,
Inicia/Activa
dhcpcd.service
.
Para iniciar el demonio para solo una interfaz específica de red,
Inicia/Activa
dhcpcd@
interfaz
.service
, donde
interfaz
se puede encontrar con
Configuración de red#Listar las interfaces de red
.
Es recomendable utilizar la unidad de la plantilla, vea
#dhcpcd y interfaces de red con systemd
para más detalles. En cualquier caso se le asignará una dirección IP dinámica. Para establecer una dirección IP estática, vea
#Perfil estático
.
Configuración
La configuración principal se hace en
/etc/dhcpcd.conf
. Vea
dhcpcd.conf(5)
para más detalles. Algunas de las opciones frecuentemente utilizadas están resaltadas abajo.
Ruta(s) estática DHCP
Si necesita añadir una ruta estática en el lado del cliente, añádelo a
/etc/dhcpcd.exit-hook
. En el ejemplo se observa un hook-script nuevo que añade una ruta estática a una subred VPN en
10.11.12.0/24
via a la puerta de entrada de la maquina a
192.168.192.5
:
/etc/dhcpcd.exit-hook
ip route add 10.11.12.0/24 via 192.168.192.5
Puedes añadir múltiples rutas en este archivo.
Identificador de cliente DHCP
El cliente DHCP puede identificarse de diferentes formas por el servidor:
hostname (o el valor del nombre del host enviado por el cliente),
por la dirección MAC del controlador de la interfaz de red con la que se está realizando la conexión, vinculado al
ID de Asociación de Identidad (IAID), que es una capa de abstracción para diferenciar usos/casos y/o interfaces en un solo host,
Identificador único de DHCP (DUID).
Para una descripción más extensa, vea
RFC 3315
.
Dependiendo de la configuración del servidor DHCP algunas opciones serán opcionales u obligatorias para solicitar una concesión de IP a DHCP.
Nota
La configuración por defecto de
dhcpcd
debería ser suficiente. La lista de identificadores son determinados automáticamente y solo se requiere cambiar la configuración manualmente en caso de experimentar problemas.
Si la configuración por defecto de
dhcpcd
falla al obtener una IP, las siguientes opciones están disponibles para usarse en
dhcpcd.conf
:
hostname
envia el nombre del host establecido en
/etc/hostname
clientid
envia la dirección MAC como identificador
iaid <interface>
deriva el IAID para utilizarlo en el detector DHCP. Se tiene que utilizar en un block de la interfaz (iniciada por
interface <interface>
, vea
[1]
), pero normalmente se utiliza la siguiente opción:
El disparador
duid
utiliza una combinación de DUID y IAID como identificador.
El valor DUID esta establecido en
/var/lib/dhcpcd/duid
. Para la eficiencia en la operación de concesión DHCP es importante que sea único para el sistema y se aplique a todas las interfaces de red iguales, mientras el IAID representa un identificador para cada interfaz del sistema (vea
RFC 4361
).
Tenga mucho cuidado en una red en funcionamiento con
DNS dinámicos
en asegurarse de que los tres IDs son únicos. Si se presenta valores duplicados DUID en el servidor DNS, por ejemplo, en el caso donde una máquina virtual ha sido clonada y el nombre del host y la MAC se han hecho únicos pero el DUID no se ha cambiado, cada cliente con el DUID duplicado requiere que el servidor elimine el predecesor del registro DNS.
Perfil estático
Los ajustes necesarios están explicados en
Configuración de red
. Normalmente incluye el nombre de la
interfaz de red
,
dirección IP
,
dirección del router
, y el
nombre del servidor
.
El perfil estático para
dhcpcd
se configura en
/etc/dhcpcd.conf
, por ejemplo:
/etc/dhcpcd.conf
interface eth0
static ip_address=192.168.0.10/24	
static routers=192.168.0.1
static domain_name_servers=192.168.0.1 8.8.8.8
Es posible realizar configuraciones más complicadas, por ejemplo combinar con la opción
arping
. Vea
dhcpcd.conf(5)
para más información.
Volver al perfil anterior
Es posible configurar un perfil estático dentro de
dhcpcd
y regresar al perfil anterior cuando el requerimiento de DHCP falle. Esto es particularmente útil para
máquinas sin monitor (en inglés)
, donde el perfil estático se puede utilizar como un perfil de "recuperación" para asegurarse de que siempre sea posible conectarse a la máquina.
El siguiente ejemplo configura un perfil
estático_eth0
con
192.168.1.23
como dirección IP,
192.168.1.1
como puerta y nombre de servidor, y hace que este perfil sea un respaldo para la interfaz
eth0
.
/etc/dhcpcd.conf
# define un perfil estático
profile static_eth0
static ip_address=192.168.1.23/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

# respaldo para el perfil estático en eth0
interface
eth0
fallback static_eth0
Hooks
dhcpcd
ejecuta todos los scripts que encuentra en
/usr/lib/dhcpcd/dhcpcd-hooks/
en un orden léxico. Vea
dhcpcd.conf(5)
y
dhcpcd-run-hooks(8)
para más información.
Nota
Cada script puede desactivarse utilizando la opción
nohook
en
dhcpcd.conf
.
La opción
env
se puede utilizar para establecer una variable de entorno para
todos
los hooks. Por ejemplo, puedes forzar el que el hook hostname siempre establezca en nombre del host con
env force_hostname=YES
.
10-wpa_supplicant
Activar este hook creando un enlace simbólico que asegura que siempre se utilice la versión actual, incluso después de actualizaciones:
# ln -s /usr/share/dhcpcd/hooks/10-wpa_supplicant /usr/lib/dhcpcd/dhcpcd-hooks/
El hook
10-wpa_supplicant
, si esta activado, ejecuta automáticamente
WPA supplicant (Español)
en las interfaces de red inalámbricas. Se inicia solo si:
Ningún proceso
wpa_supplicant
esta escuchando a esa interfaz.
existe un archivo de configuración
wpa_supplicant
.
dhcpcd
comprueba
/etc/wpa_supplicant/wpa_supplicant-
interface
.conf
/etc/wpa_supplicant/wpa_supplicant.conf
/etc/wpa_supplicant-
interface
.conf
/etc/wpa_supplicant.conf
por defecto, y en ese orden, pero se puede configurar un parche personalizado añadiendo
env wpa_supplicant_conf=
archivo_de_configuración_del_parche
en
/etc/dhcpcd.conf
.
Nota
El hook se para cuando encuentra el primer archivo de configuración, por lo tanto ha de tenerlo en cuenta si usted tiene bastantes archivos de configuración
wpa_supplicant
, de otra forma puede que al final
dhcpcd
utilice el archivo incorrecto.
Si
wpa_supplicant
maneja conexiones inalámbricas por si mismo, el hook puede crear eventos de conexiones no deseadas. Por ejemplo, si para
wpa_supplicant
el hook puede iniciar la interfaz otra vez. Incluso si utiliza
netctl-auto (en inglés)
,
wpa_supplicant
se inicia automáticamente con
/run/network/wpa_supplicant_
interface
.conf
por la configuración, por lo tanto iniciarlo otra vez desde el hook no es necesario y puede causar errores en el arranque al analizar el archivo
/etc/wpa_supplicant/wpa_supplicant.conf
, que solo contiene valores ficticios en la versión por defecto.
Para desactivar el hook elimine el link simbólico que añadiste o añade
nohook wpa_supplicant
en
dhcpcd.conf
.
Consejos y trucos
Acelerar DHCP deshabilitando la exploración ARP
Dhcpcd
contiene una implementación como recomendación del estándar DHCP (
RFC2131
sección 2.2) para comprobar vía ARP si la dirección IP asignada no esta realmente ocupada. Esto puede no ser útil en las redes domésticas, por lo tanto se puede ahorrar alrededor de 5 segundos en cada conexión añadiendo la siguiente linea a
/etc/dhcpcd.conf
:
noarp
Esto es equivalente si le pasa
--noarp
a
dhcpcd
, y desactiva la prueba ARP descrita, aumentando la velocidad de la conexiones a redes con DHCP.
Quitar el arrendamiento antiguo de DHCP
El archivo
/var/lib/dhcpcd/
interfaz
.lease
, donde
interfaz
es el nombre de la interfaz que tiene el arrendamiento, contiene la respuesta enviada por el servidor DHCP del actual arrendamiento de DHCP. Para una interfaz inalámbrica, el nombre del archivo es
/var/lib/dhcpcd/
interfaz
-
ssid
.lease
, donde
ssid
es el nombre de la red inalámbrica. Se usa para determinar el último arrendamiento del servidor, y su atributo
mtime
se usa para determinar cuando se ha resuelto. La última información de arrendamiento se usa para pedir la misma dirección IP previamente retenida en la red, si está disponible. Si no quiere eso, simplemente elimine este archivo.
Si el servidor DHCP aún le asigna la misma dirección IP, puede deberse a que está configurado para mantener la asignación estable y reconoce el requerimiento del id del cliente DHCP o DUID (vea
#Identificador de cliente DHCP
). Puedes probarlo parando
dhcpcd
y eliminando o renombrando
/var/lib/dhcpcd/duid
.
Dhcpcd
generará uno nuevo en la siguiente ejecución.
Tenga en cuenta que el DUID está destinado a ser un identificador persistente sobre los reinicios e interfaces. Si estás transfiriendo el sistema a un nuevo ordenador, preservar este archivo debería hacer que el ordenador se parezca al antiguo.
Diferentes IPs cuando se hace un arranque múltiple
Si está haciendo un arraque dual Arch y OS X o Windows y quiere que cada uno reciba direcciones IP distintas, puedes ejercer control sobre el arrendamiento de IPs especificando un DUID diferente para cada sistema operativo.
En Windows (en XP) el DUID debería estar guardado en
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\Dhcpv6DUID
registro clave.
En OS X es directamente accesible en
Network\adapter\dhcp preferences panel
.
Si está utilizando un servidor
dnsmasq
DHCP, los DUIDs diferentes pueden utilizar las reglas apropiadas
dhcp-host=
en su cpnfiguración.
/etc/resolv.conf
Si
resolvconf
está disponible en la información DNS se enviará a él, si no
dhcpcd
sobrescribirá automáticamente
/etc/resolv.conf
.
La sobreescritura de
/etc/resolv.conf
se puede parar desactivando el hook
/usr/lib/dhcpcd/dhcpcd-hooks/20-resolv.conf
. Para hacerlo añada lo siguiente a la última sección de
/etc/dhcpcd.conf
:
nohook resolv.conf
Alternativamente, puede crear un archivo llamado
/etc/resolv.conf.head
conteniendo sus servidores DNS.
Dhcpcd
antepone este archivo al comienzo de
/etc/resolv.conf
.
O puede configurar dhcpcd para  utilizar el mismo servidor DNS siempre. Para hacer esto, añade la siguiente linea al final de su
/etc/dhcpcd.conf
, donde
dns-server-ip-addressses
es una lista deparada por espacios de las direcciones IP DNS.
static domain_name_servers=
dns-server-ip-addresses
Por ejemplo, para establecer el servidor DNS de Google:
static domain_name_servers=8.8.8.8 8.8.4.4
Sugerencia
Cuando utilice
openresolv
los servidores DNS se pueden configurar en
/etc/resolvconf.conf
. De esta forma no se sobrescribirán por cualquier software que soporte
resolvconf
.
Solución de problemas
ID del cliente
Si está en una red con DHCPv4 
If you are on a network with DHCPv4 que filtra las IDs de los clientes basados en direcciones MAC, necesita cambiar la siguiente linea:
/etc/dhcpcd.conf
# Use el mismo DUID + IAID como se establece en DHCPv6 para el ID del cliente DHCPv4 igual que RFC4361. 
duid
A:
/etc/dhcpcd.conf
# Utilice la dirección de la interfaz del hardware para el ID del cliente (DHCPv4).
clientid
Si no, puede no obtener ningún arrendamiento  desde que el servidor DHCP no lea su ID del cliente
estilo-DHCPv6
correctamente. Vea
RFC 4361
para más información.
Comprobar un problema de DHCP soltando primero la IP
Puede ocurrir un problema cuando DHCP obtiene una asignación IP incorrecta, como que dos routers están enlazados juntos a una VPN. El router que está conectado a través de  la VPN puede haber asignado una dirección IP. Para arreglarlo, como root, suelte la dirección IP:
# dhcpcd -k
Luego pida una nueva:
# dhcpcd
Puede que tengas que ejecutar estos dos comandos varias veces.
Problemas con routers no obedientes
Para algunos routers (desobedientes), no podrá conectarse apropiadamente a no haya ser que comentes la linea
require dhcp_server_identifier
en
/etc/dhcpcd.conf
. Esto no debería causarle problemas a no ser que tenga múltiples servidores DHCP en su red (no es típico); vea
esta página
para más información.
dhcpcd y interfaces de red con systemd
dhcpcd.service
puede
activarse
sin especificar una interfaz. Esto puede, sin embargo, crear una condición en el arranque intentando aplicar un nombre predictivo de la interfaz de red con
system-udev
:
error changing net interface name wlan0 to wlp4s0: Device or resource busy"
Para evitarlo, habilita
dhcpcd
por interfaz que debería enlazar como se ha descrito en
#Iniciar
. La plantilla de abajo, sin embargo, no soporta la conexión en caliente de una conexión por cable y fallará si el cable de red no está conectado. Para tratar el fallo, vea
#Tiempo de espera
.
También es posible utilizar
denyinterfaces
o
allowinterfaces
en
dhcpcd.conf(5)
para parar dhcpcd vinculando a los nombres del kernel, por ejemplo
denyinterfaces wlan* eth*
Tiempo de espera
Si
dhcpcd
opera en una única interfaz y falla al obtener el arrendamiento (lease time) después de 30 segundos (por ejemplo cuando el servidor no está preparado o el cable no está conectado), saldrá con un error.
Para hacer que
dhcpcd
espere indefinidamente por una vez,
edite
la unidad y establece la opción
timeout
a
0
:
/etc/systemd/system/dhcpcd@.service.d/timeout.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dhcpcd -w -q
-t 0
%I
Para hacer que espere indefinidamente, deja que la unidad se reinicie después de salir:
/etc/systemd/system/dhcpcd@.service.d/dhcpcdrestart.conf
[Service]
Restart=always
Problemas conocidos
dhcpcd@.service causa un inicio lento
Por defecto
dhcpcd@.service
espera hasta obtener una dirección IP antes de pasar a segundo plano vía parámetro
-w
para
dhcpcd
. Si la unidad está habilitada, puede causar que en el arranque espere a obtener una dirección IP antes de continuar. Para arreglarlo, crea un
archivo de inserción
para la unidad con lo siguiente:
/etc/systemd/system/dhcpcd@.service.d/no-wait.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dhcpcd -b -q %I
Vea también
FS#49685
.
Véase también
dhcpcd(8)
dhcpcd.conf(5)