Difference between revisions of "Netctl (Español)"
(→Automatizar las conexiones: Actualizar) |
(→Eduroam: Actualizar) |
||
Line 183: | Line 183: | ||
)</nowiki> | )</nowiki> | ||
}} | }} | ||
+ | |||
+ | === Bonding === | ||
+ | |||
+ | De [https://www.kernel.org/doc/Documentation/networking/bonding.txt kernel documentation]: | ||
+ | |||
+ | :''El controlador bonding de Linux proporciona un método para agregar múltiples interfaces de red en una sola interfaz lógica «vinculada». El comportamiento de la interfaz ''bonded'' depende de la modalidad. En términos generales, las modalidades proporcionan tanto una espera activa como servicios de equilibrio de carga. Además, permite llevar a cabo un monitoreo integral del enlace'.'' | ||
+ | |||
+ | ==== Equilibrar la carga ==== | ||
+ | |||
+ | Para utilizar bonding con netctl, se necesita un paquete adicional disponible en los repositorios oficiales: {{Pkg|ifenslave}}. | ||
+ | |||
+ | Copie el archivo {{ic|/etc/netctl/examples/bonding}} a la carpeta {{ic|/etc/netctl/bonding}}, y modifíquelo, por ejemplo, como se indica a continuación: | ||
+ | |||
+ | {{hc|/etc/netctl/bonding|2= | ||
+ | Description='Bond Interface' | ||
+ | Interface='bond0' | ||
+ | Connection=bond | ||
+ | BindsToInterfaces=('eth0' 'eth1') | ||
+ | IP=dhcp | ||
+ | IP6=stateless}} | ||
+ | |||
+ | Ahora se puede desactivar y detener su configuración antigua y establecer ''bonding'' para que se inicie automáticamente. Para cambiar al nuevo perfil, por ejemplo bonding, ejecute: | ||
+ | |||
+ | # netctl switch-to bonding | ||
+ | |||
+ | {{Nota|Para cambiar la modalidad de bonding (el predeterminado es round robin) para, por ejemplo, activar la copia de seguridad. | ||
+ | |||
+ | {{Nota|Este sistema utiliza la política de round-robin, que es el valor predeterminado para el controlador {{ic|bonding}}. Véase [https://www.kernel.org/doc/Documentation/networking/bonding.txt official documentation] para obtener más detalles.}} | ||
+ | |||
+ | {{Sugerencia|Para comprobar el estado y la modalidad de bonding, ejecute: {{bc|$ cat /proc/net/bonding/bond0}}}} | ||
+ | |||
+ | ==== Conexión cableada -> Sustituir por conexión inalámbrica en caso de fallo ==== | ||
+ | |||
+ | Este ejemplo describe cómo usar ''bonding'' como respaldo de la red inalámbrica para cuando la red cableada se cae, sirve también para detectar la presencia de cualquier conexión de red e iniciar dhcpcd cuando una o ambas redes se conecten. | ||
+ | |||
+ | Necesitaremos los paquetes {{Pkg|ifplugd}}, {{Pkg|ifenslave}}, y {{Pkg|wpa_supplicant}} disponibles en los repositorios oficiales. | ||
+ | |||
+ | Primero, configuraremos el controlador {{ic|bonding}} para usar {{ic|active-backup}}: | ||
+ | |||
+ | {{hc|/etc/modprobe.d/bonding.conf|2= | ||
+ | options bonding mode=active-backup | ||
+ | options bonding miimon=100 | ||
+ | options bonding primary=eth0 | ||
+ | options bonding max_bonds=0 | ||
+ | }} | ||
+ | |||
+ | La opción {{ic|max_bonds}} evita obtener el error {{ic|Interface bond0 already exists}}. | ||
+ | |||
+ | Luego, configuraremos un perfil de netctl para subordinar las dos interfaces del hardware: | ||
+ | |||
+ | {{hc|/etc/netctl/failover|2= | ||
+ | Description='A wired connection with failover to wireless' | ||
+ | Interface='bond0' | ||
+ | Connection=bond | ||
+ | BindsToInterfaces=('eth0' 'wlan0') | ||
+ | IP='no' | ||
+ | SkipNoCarrier='no' | ||
+ | }} | ||
+ | |||
+ | Activamos el perfil en el arranque: | ||
+ | |||
+ | # netctl enable failover | ||
+ | |||
+ | Configuraremos ''wpa_supplicant'' para asociarla con redes conocidas. Esto se puede hacer con un perfil netcfg (recuerde usar {{ic|1=IP='no'}}), con un servicio ''wpa_supplicant'' funcionando constantemente, o bajo demanda con ''wpa_cli''. Las maneras para hacer esto están tratadas en la página de [[WPA_supplicant (Español)|wpa_supplicant]]. | ||
+ | |||
+ | Crearemos una acción ''ifplugd'' para asignar DHCP automáticamente en la interfaz vinculada: | ||
+ | |||
+ | {{hc|/etc/ifplugd/bond_dhcp.action|2= | ||
+ | #!/bin/sh | ||
+ | |||
+ | case "$2" in | ||
+ | up) | ||
+ | systemctl start "dhcpcd@$1.service" && exit 0 | ||
+ | ;; | ||
+ | down) | ||
+ | systemctl stop "dhcpcd@$1.service" && exit 0 | ||
+ | ;; | ||
+ | *) | ||
+ | echo "Wrong arguments" > /dev/stderr | ||
+ | ;; | ||
+ | esac | ||
+ | exit 1 | ||
+ | }} | ||
+ | |||
+ | y la haremos ejecutable: | ||
+ | |||
+ | # chmod +x /etc/ifplugd/bond_dhcp.action | ||
+ | |||
+ | A continuación, crearemos el servicio de [[Systemd (Español)|systemd]] que inicie ''ifplugd'' para {{ic|bond0}}: | ||
+ | |||
+ | {{hc|/etc/systemd/system/net-auto-bonded@.service|2= | ||
+ | [Unit] | ||
+ | Description=Provides automatic dhcp resolution for bonded failover connection | ||
+ | Requires=netctl@failover.service | ||
+ | After=netctl@failover.service | ||
+ | |||
+ | [Service] | ||
+ | ExecStart=/usr/bin/ifplugd -i %i -r /etc/ifplugd/bond_dhcp.action -fIns | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=multi-user.target | ||
+ | }} | ||
+ | |||
+ | Activamos el servicio net-auto-bonded y reiniciamos: | ||
+ | |||
+ | # systemctl enable net-auto-bonded@bond0.service | ||
+ | # reboot | ||
+ | |||
+ | A partir de ahora, si tenemos una conexión por cable e inalámbrica conectadas a la misma red, es probable que podamos desconectar y reconectar la conexión por cable sin perder la conectividad. ¡En la mayoría de los casos, incluso la transmisión de música se realizará sin saltos! |
Revision as of 17:18, 18 September 2013
zh-CN:NetctlTemplate:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary end Netctl es la apuesta de Arch Linux para sustituir a netcfg. Netctl supone el futuro (y el presente) de la gestión de conexiones de red a través de la consola en Arch Linux.
Contents
Instalación
El paquete netctl está disponible en los repositorios oficiales. Netctl sustituirá a netcfg una vez se instale en el equipo.
netctl y netcfg son paquetes incompatibles y conflictivos. Si los perfiles de las conexiones de red no están correctamente configurados, lo más probable es que el usuario se quede sin conexión a internet después de instalar netctl.
systemctl --type=service
para asegurarse de que ningún otro servicio de configuración de red está en ejecución. La presencia de varios servicios de gestión de redes entrarán en conflicto.Bibliografía altamente recomendada
Se ha puesto mucho empeño e interés en redactar unas páginas man muy completas. Se recomienda encarecidamente a los usuarios que estén interesados en usar netctl que lean las siguientes páginas man antes de lanzarse a probarlo:
Configuración
El uso de netctl
va dirigido a controlar y observar a fondo el estado de los servicios de systemd que gestionan los perfiles de las conexiones de red. El paquete incluye varios ficheros de configuración ejemplo para ayudar al usuario a la hora de configurar sus conexiones de red. Dichos ejmplos de ficheros de configuración de perfiles se encuentran en el directorio /etc/netctl/examples/
. Entre las configuraciones más típicas se pueden encontrar las siguientes:
- ethernet-dhcp
- ethernet-static
- wireless-wpa
- wireless-wpa-static
Para usar un fichero ejemplo de un perfil de una conexión de red hay que copiar el fichero en cuestión de /etc/netctl/examples/<nombre del perfil de conexión de red>
al directorio /etc/netctl/<nombre del perfil de conexión de red>
y editarlo para configurarlo de acuerdo con las necesidades específicas de cada usuario:
# cp /etc/netctl/examples/wireless-wpa /etc/netctl/mi-wireless-wpa
Una vez que se ha creado el perfil de configuración para una conexión de red concreta hay que intentar establecer la conexión usando dicho perfil. Para ello:
# netctl start <nombre del perfil de la conexión de red>
En caso de obtener un error al ejecutar el comando anterior, es posible acceder a una explicación detallada de lo que ha provocado el fallo. Para ello se pueden usar los comandos journalctl -xn
y netctl status <nombre del perfil de la conexión de red>
. Una vez que se ha encontrado el fallo tan sólo hay que hacer las correcciones pertinentes en el perfil de la conexión de red y volver a intentarlo.
Automatizar las conexiones
Si solo se está usando un perfil de conexión de red (por interfaz) o se desea cambiar de perfil manualmente, el método básico es el acertado. Los ejemplos más comunes son relativos a los servidores, estaciones de trabajo, routers, etc.
Si se necesita cambiar entre varios perfiles con frecuencia, utilice el método del cambio automático de perfiles. Los ejemplos más comunes son los ordenadores portátiles.
Método básico
Con este método, se puede comenzar un solo perfil con dirección estática por interfaz. Primero compruebe manualmente que el perfil se puede iniciar con éxito, y después actívelo usando la orden:
# netctl enable nombre del perfil de la conexión de red
Esto creará y activará un servicio de systemd, servicio que se iniciará cuando arranque el equipo. Los cambios en el archivo de este perfil no se transmitirán automáticamente a dicho archivo de servicio. Si se realizan cambios, es necesario volver a activar el perfil con la orden:
# netctl reenable nombre del perfil de la conexión de red
Cambio automático de perfiles
netctl ofrece dos servicos especiales de systemd para la conmutación automática de perfiles:
- Para las interfaces cableadas:
netctl-ifplugd@interfaz.service
. El uso de estos perfiles de netctl se intercambian cuando se enchufa/desenchufa el cable de red. - Para las interfaces inalámbricas:
netctl-auto@interfaz.service
. El uso de estos perfiles de netctl se intercambian al pasar del rango de una red dentro del alcance de rango de otra red.
net-auto-wireless.service
y net-auto-wired.service
para estos fines.Primero instale los paquetes necesarios:
- El paquete wpa_actiond es necesario para usar
netctl-auto@interfaz.service
. - El paquete ifplugd es necesario para usar
netctl-ifplugd@interfaz.service
.
Ahora configure todos los perfiles que netctl-auto@interfaz.service
o netctl-ifplugd@interfaz.service
desea que inicien.
Si algún perfil inalámbrico no se inicia automáticamente por netctl-auto@interfaz.service
, tiene que agregar explícitamente la variable ExcludeAuto=yes
para ese perfil. Puede utilizar la variable Priority=
para establecer la prioridad de algún perfil cuando existen varios perfiles disponibles. netctl-ifplugd@interfaz.service
preferirá perfiles que utilicen DHCP. Para preferir un perfil con una dirección IP estática, puede utilizar la variable AutoWired=yes
. Consulte netctl.profile(5)
para obtener más detalles.
Una vez que ha establecido y comprobrado que sus perfiles funcionan correctamente, slo tiene que activar estos servicios utilizando systemctl:
# systemctl enable netctl-auto@interfaz.service # systemctl enable netctl-ifplugd@interfaz.service
Migración de netcfg a netctl
netctl
se vale del directorio /etc/netctl
para almacenar los distintos perfiles de las conexiones de red en lugar de /etc/network.d
, (el cual era el directorio en el cual netcfg
almacenaba los perfiles de las conexiones de red).
Para migrar de netcfg a netctl es necesario, al menos, lo siguiente:
- Mover los perfiles de las conexiones de red al nuevo directorio.
- Renombrar las variables de dichos ficheros perfil de conexiones de red de acuerdo con las instrucciones en netctl.profile(5). La gran mayoría tan sólo han pasado de tener todo en letras mayúsculas a tener sólo la primera letra. Un ejemplo: CONNECTION= pasa a ser Connection=.
- Para la configuración de la IP estática asegúrese de que las variables Address= tienen una máscara de red después de la IP (por ejemplo, Address=('192.168.1.23/24' '192.168.1.87/24') en el perfil de ejemplo).
- Si configura un perfil para una red inalámbrica siguiendo el ejemplo de
wireless-wpa-configsection
, tenga en cuenta que ello sobreescribe las opciones dewpa_supplicant
definidas antes de los corchetes. Para una conexión a una red inalámbrica oculta, agreguescan_ssid=1
a las opciones enwireless-wpa-configsection
;Hidden=yes
si no funciona allí. - Quitar las comillas de las variables de las distintas interfaces y otras variables que no necesitan de forma estricta las comillas. Esto no es más que una cuestión de estilo.
- Ejecutar
netctl enable <nombre del perfil de la conexión de red>
para cada uno de los perfiles de conexión de red en la antigua línea NETWORKS. «last» ya no tiene la función que tenía. Para más infomación leer netctl.special(7). - Usar
netctl list
/netctl start <nombre del perfil de la conexión de red>
en lugar de netcfg-menu. No obstante, wifi-menu seguirá disponible. - Puede ser una buena idea usar
systemctl --type=service
para asegurarse que ningún otro servicio que pueda configurar la red está en ejecución. La existencia de múltiples servicios de gestión de redes entrarían en conflicto. - A diferencia de
netcfg
,netctl
, por defecto, no levanta un NIC cuando este no está conectado a otro NIC potencialmente abierto. Para resolver este problema, añadaSkipNoCarrier=yes
al final del archivo de perfil/etc/netctl/profile-file
.
Contraseñas encriptadas (PSK de 256-bits)
Los usuarios que no quieran tener sus contraseñas guardadas en texto plano tienen la posibilidad de generar una clave precompartida o PSK —del inglés, Pre-Shared Key— con encriptación de 256-bits, que se calcula a partir de la frase de contraseña («passphrase») y el nombre de la red («SSID») utilizando algoritmos estándar.
- Método 1: Utilice
wifi-menu -o
para crear un archivo de configuración en la carpeta/etc/netctl
. - Método 2: Configuración manual como sigue. Si la contraseña no funciona, intente eliminar
\"
en Key= (véase la nota de abajo).
Para ambos métodos es recomendable el uso de la orden chmod 600 /etc/netctl/<config_file>
, a fin de evitar el acceso a la contraseña por parte de otros usuarios.
A continuación, se generará la PSK con encriptación de 256-bits usando wpa_passphrase:
Usage: wpa_passphrase [nombre de la red a la que queremos conectar o ssid] [clave precompartida o passphrase]
$ wpa_passphrase archlinux freenode
En otra consola, copiar el fichero ejemplo de perfil de conexión de red wireless-wpa
de /etc/netctl/examples
al directorio /etc/netctl
.
# cp /etc/netctl/examples/wireless-wpa /etc/netctl/wireless-wpa
Será necesario editar el fichero /etc/netctl/wireless-wpa
con el editor de texto que prefiera el usuario y añadir la clave precompartida encriptada o Encrypted Pre-shared Key que se ha generado previamente con wpa_passphrase a la variable Key
del perfil de conexión de red.
Una vez terminada la edición del perfil de conexión de red wireless-wpa
que contiene la PSK con encriptación de 256-bits, debería quedar algo así:
/etc/netctl/wireless-wpa
Description='Una conexión inalámbrica WPA encriptada usando una PSK con encriptación de 256-bits' Interface=wlp2s2 Connection=wireless Security=wpa IP=dhcp ESSID=archlinux Key=\"64cf3ced850ecef39197bb7b7b301fc39437a6aa6c6a599d0534b16af578e04a
- Hay que asegurarse de usar las directrices especiales sin entrecomillar o special non-quoted rules para la variable
Key=
que se encuentran al final de la página man netctl.profile(5). - La clave que se pone en la configuración de perfil es suficiente para conectarse a una red WPA-PSK, lo que significa que este procedimiento solo sirve para ocultar la contraseña o passphrase a la lectura humana, pero no evita que cualquier usuario con permisos de lectura a este archivo pueda conectarse a la red. Debemos preguntarnos si hay alguna utilidad en este procedimiento, ya que usar la misma contraseña para todo suele ser una medida de seguridad muy pobre.
Soporte técnico
Hilo del foro en inglés en el que se anuncia la incorporación oficial de netctl a Arch Linux: https://bbs.archlinux.org/viewtopic.php?id=157670
Consejos y trucos útiles
Sustituir 'netcfg current'
A fecha de abril del año 2013, todavía no existe una alternativa similar a 'netcfg current' para netctl. Si se estaba usando por algún motivo, como puede ser una barra de estado de un gestor de ventanas tiling, ahora se puede obtener la misma información con:
# netctl list | sed -n 's/\* //p'
o, cuando se utilice netctl-auto
para conectarse:
# wpa_cli -i interface status | sed -n 's/^id_str=//p'
Eduroam
Para conectarse a una red inalámbrica en la universidad, es muy probable que necesita un perfil con este aspecto (probado en Freiburg, Germany):
/etc/netctl/wlan0-eduroam
Description='Eduroam-profile for <user>' Interface=wlan0 Connection=wireless Security=wpa-configsection IP=dhcp WPAConfigSection=( 'ssid="eduroam"' 'proto=RSN' 'key_mgmt=WPA-EAP' 'pairwise=CCMP' 'auth_alg=OPEN' 'eap=PEAP' 'identity="<user>"' 'password="<password>"' )
Bonding
- El controlador bonding de Linux proporciona un método para agregar múltiples interfaces de red en una sola interfaz lógica «vinculada». El comportamiento de la interfaz bonded depende de la modalidad. En términos generales, las modalidades proporcionan tanto una espera activa como servicios de equilibrio de carga. Además, permite llevar a cabo un monitoreo integral del enlace'.
Equilibrar la carga
Para utilizar bonding con netctl, se necesita un paquete adicional disponible en los repositorios oficiales: ifenslave.
Copie el archivo /etc/netctl/examples/bonding
a la carpeta /etc/netctl/bonding
, y modifíquelo, por ejemplo, como se indica a continuación:
/etc/netctl/bonding
Description='Bond Interface' Interface='bond0' Connection=bond BindsToInterfaces=('eth0' 'eth1') IP=dhcp IP6=stateless
Ahora se puede desactivar y detener su configuración antigua y establecer bonding para que se inicie automáticamente. Para cambiar al nuevo perfil, por ejemplo bonding, ejecute:
# netctl switch-to bonding
{{Nota|Para cambiar la modalidad de bonding (el predeterminado es round robin) para, por ejemplo, activar la copia de seguridad.
bonding
. Véase official documentation para obtener más detalles.Conexión cableada -> Sustituir por conexión inalámbrica en caso de fallo
Este ejemplo describe cómo usar bonding como respaldo de la red inalámbrica para cuando la red cableada se cae, sirve también para detectar la presencia de cualquier conexión de red e iniciar dhcpcd cuando una o ambas redes se conecten.
Necesitaremos los paquetes ifplugd, ifenslave, y wpa_supplicant disponibles en los repositorios oficiales.
Primero, configuraremos el controlador bonding
para usar active-backup
:
/etc/modprobe.d/bonding.conf
options bonding mode=active-backup options bonding miimon=100 options bonding primary=eth0 options bonding max_bonds=0
La opción max_bonds
evita obtener el error Interface bond0 already exists
.
Luego, configuraremos un perfil de netctl para subordinar las dos interfaces del hardware:
/etc/netctl/failover
Description='A wired connection with failover to wireless' Interface='bond0' Connection=bond BindsToInterfaces=('eth0' 'wlan0') IP='no' SkipNoCarrier='no'
Activamos el perfil en el arranque:
# netctl enable failover
Configuraremos wpa_supplicant para asociarla con redes conocidas. Esto se puede hacer con un perfil netcfg (recuerde usar IP='no'
), con un servicio wpa_supplicant funcionando constantemente, o bajo demanda con wpa_cli. Las maneras para hacer esto están tratadas en la página de wpa_supplicant.
Crearemos una acción ifplugd para asignar DHCP automáticamente en la interfaz vinculada:
/etc/ifplugd/bond_dhcp.action
#!/bin/sh case "$2" in up) systemctl start "dhcpcd@$1.service" && exit 0 ;; down) systemctl stop "dhcpcd@$1.service" && exit 0 ;; *) echo "Wrong arguments" > /dev/stderr ;; esac exit 1
y la haremos ejecutable:
# chmod +x /etc/ifplugd/bond_dhcp.action
A continuación, crearemos el servicio de systemd que inicie ifplugd para bond0
:
/etc/systemd/system/net-auto-bonded@.service
[Unit] Description=Provides automatic dhcp resolution for bonded failover connection Requires=netctl@failover.service After=netctl@failover.service [Service] ExecStart=/usr/bin/ifplugd -i %i -r /etc/ifplugd/bond_dhcp.action -fIns [Install] WantedBy=multi-user.target
Activamos el servicio net-auto-bonded y reiniciamos:
# systemctl enable net-auto-bonded@bond0.service # reboot
A partir de ahora, si tenemos una conexión por cable e inalámbrica conectadas a la misma red, es probable que podamos desconectar y reconectar la conexión por cable sin perder la conectividad. ¡En la mayoría de los casos, incluso la transmisión de música se realizará sin saltos!