Debo admitirlo esta es una de mis debilidades…
hasta ahora
Aclaro que si se configurar de forma estática todo lo relacionado a redes en un servidor Linux, sin embargo todo lo hago a través del paquete ip o el difunto net-tools y esto a veces me traía problemas cuando NetworkManager estaba activo.
nmcli viene integrado en el paquete networkmanager superior a la versión 0.8.1, actualmente en, diría todas, las distribuciones tenemos disponible mínimo desde la versión 1.30 por lo que no deberías tener problema para usar esta utilidad.
Nmcli nos permite administrar distintos perfiles de red, a nivel de servidores no hay mucha diferencia ya que se suele manejar siempre el mismo direccionamiento, pero en laptops hay una gran diferencia ya que dada la movilidad siempre puede variar el direccionamiento IP que usemos.
Para esto, nmcli crea los archivos de configuración directamente en la ruta /etc/sysconfig/network-scripts/ifcfg-<nombre del perfil>, esto en la familia red hat ya que es lo que estoy estudiando, en otras distribuciones basadas en debian puede estar en /etc/network/interfaces aunque a veces hay que trabajar también con el archivo /etc/NetworkManager/NetworkManager.conf
En esta entrada veremos
- Como ver los parámetros de los perfiles
- Como modificar los parámetros
- Como crear perfiles nuevos
- Como eliminar perfiles
ver los parámetros de los perfiles
Para ver los perfiles que tenemos configurados podemos usar
nmcli connection show
o
nmcli con s
con cualquiera de estos comandos podemos ver algo como esto
Como ven en mi caso tengo 2 perfiles llamados
- eth0
- Conexión cableada 1
Si miramos en el directorio mencionado anteriormente /etc/sysconfig/network-scripts dentro de todos los archivo veremos el archivos de configuración correspondiente a eth0, en el caso de la Conexión cableada 1, no aparece nada debido a que la interfaz aun no ha sido configurada, y tampoco ha recibido una IP por DHCP
podemos ver los detalles de cada conexión ya sea mirando el archivo del perfil correspondiente o usando nmcli de la siguiente forma
nmcli connection show <nombre del perfil|uuid>
o su forma abreviada
nmcli con s <nombre del perfil|uuid>
en nuestro caso veremos el perfil de eth0 por lo que usaremos
nmcli con s eth0
y tendremos una salida como esta
con todos los detalles del perfil, podemos usar pipelines para filtrar la salida a solo lo que necesitemos. Por ejemplo:
para saber si el perfil esta configurado para iniciar automáticamente
nmcli con s eth0| grep autoconnect
para ver si usa dhcp o no
nmcli con s ens18 | grep method
auto significa dhcp, static o manual significa que no esta utilizando dhcp
para ver las IP en v4 y v6 en los casos que se asigno IP estática
nmcli con s eth0 | grep address
En este caso, como la interfaz eth0 esta con IP dinámica, esta no aparecerá en este apartado, ya que básicamente la salida de este comando es el contenido del archivo de configuración correspondiente.
para ver a que interfaz esta asociado un perfil
nmcli con s eth0 | grep interface
En este caso el comando no tiene mucha utilidad debido a que el perfil se llama igual que la interfaz, pero podemos configurar un perfil con otro nombre que no este relacionado con el nombre de la interfaz
También podemos ver el estado de las interfaces físicas con nmcli usando
nmcli dev status
o su forma abreviada
nmcli d s
Aquí nos mostrará el perfil asociado a cada interfaz. Ojo y no confundirse con el «desconectado» de la interfaz eth1, esto no significa que físicamente no exista una conexión, solo significa que no esta siendo usada por ningún perfil, como pueden ver en la salida del comando ip link show eth1
Como modificar los parámetros
Para modificar algún valor de un perfil ya creado, usamos la siguiente sintaxis
nmcli con mod <nombre perfil> <parametros a modificar> <nuevo valor>
Por ejemplo, vamos a cambiar la cantidad de intentos de reconexión del perfil eth0
primero veremos que valor tiene actualmente con
nmcli con s eth0 | grep connection.autoconnect-retries
Como ven, el valor esta configurado en -1, es el valor por defecto e indica que intentará conectarse de forma infinita
Para modificar este valor usaremos la sintaxis anterior, el parámetro será connection.autoconnect-retries y el nuevo valor que le daremos será de 3
#sudo nmcli con m eth0 connection.autoconnect-retries 3
Como pueden ver, al ejecutar el comando con permisos de sudo, si todo sale bien, no entregará ningún mensaje y aplicará directamente el cambio como podemos ver en la segunda línea
También podemos ver este cambio en el correspondiente archivo de configuración
Desharemos esta configuración para ver como cambia nuestro entorno
Ahora volveremos a hacer el mismo cambio, pero esta vez lo haremos directamente en el archivo de configuración
Como pueden ver, a pesar que el archivo de configuración del perfil ha sido editado, el cambio no se ve reflejado en nmcli, esto es debido a que, para que nmcli lea los cambios en el archivo de configuración debemos ejecutar previamente
# nmcli con reload
y una vez hecho esto ya podemos ver los cambios
Respecto a las propiedades que podemos modificar, como habrán imaginado son casi todas las que obtenemos al ejecutar
nmcli conn s <nombre del perfil|uuid>
Por lo que tenemos un tip muy simple y que nos ayuda bastante que consiste en primero ver los parámetros y luego solo copiar y pegar toda la linea, sin el valor.
Los parámetros que más he visto que se modifican son:
- connection.autoconnect
- ipv4.method
- ipv4.dns
- ipv4.dns-search
- ipv4.dns-options
- ipv4.dns-priority
- ipv4.addresses
- ipv4.gateway
- ipv4.routes
Un punto importante es que los cambios, a pesar que los podemos visualizar, la mayoría de las veces debemos reiniciar el servicio NetworkManager para que surtan efecto
Como crear perfiles nuevos
Para crear un perfil basta con utilizar el siguiente comando
nmcli con add con-name <nombre nuevo perfil> type <tipo de interfaz > ifname <interfaz física>
Y tendremos nuestro nuevo perfil, como se imaginarán este perfil no tiene ninguna configuración adicional, como podremos ver en el archivo de configuración respectivo
type -h
Error: tipo de conexión incorrecto: «-h» no está entre [6lowpan, 802-11-olpc-mesh (olpc-mesh), 802-11-wireless (wifi), 802-3-ethernet (ethernet), adsl, bluetooth, bond, bridge, cdma, dummy, generic, gsm, infiniband, ip-tunnel, macsec, macvlan, ovs-bridge, ovs-interface, ovs-port, pppoe, team, tun, vlan, vpn, vxlan, wifi-p2p, wimax, wireguard, wpan, bond-slave, bridge-slave, team-slave]
sudo nmcli con add con-name Mi-Perfil type ethernet ifname eth1
Como pueden ver en la siguiente imagen, al crear un nuevo perfil, automáticamente este aparece tanto en el listado de conexiones de nmcli como en el directorio de los archivos de configuración
También podemos añadir valores cuando creamos nuestro perfil, para ello basta con ir agregando las propiedades y su valor, todo separado por espacios, por ejemplo vamos a crear el perfil «Estático» con ip 172.16.1.129/24, gateway 172.16.1.254, dns 208.67.222.222. Para eso ejecutamos
sudo nmcli con add con-name Estático type ethernet ifname eth1 ipv4.method manual ipv4.addresses 172.16.1.129/24 ipv4.gateway 172.16.1.254 ipv4.dns 208.67.222.222
Como ven con un solo comando pudimos configurar los parámetros más comunes para una conexión.
Como eliminar perfiles
Para borrar un perfil solo tenemos que ejecutar
nmcli con del <nombre del perfil|uuid>
y listo
También tenemos la opción de eliminar el archivo del perfil desde el directorio /etc/sysconfig/network-scripts/ifcfg-<nombre del perfil>
rm /etc/sysconfig/network-scripts/ifcfg-Estático
Sin embargo al hacerlo de esta forma debemos recargar la configuración de nmcli para que elimine correctamente el perfil
nmcli con rel
Y con eso terminamos este post, recuerden que si les quedan dudas las pueden colocar en los comentarios que los leeré y si se junta un buen número de dudas puede que salga un segundo post