jueves, 15 de octubre de 2015

Configuración de red en CentOS 7

Configuración de red en CentOS 7

Para configurar la red en CentOS 7 hay dos formas: utilizano asistente gráfico, o bien utilizando la línea de comandos.
Configurar la red a través de un asistente
Lo primero es ejecutar el comando nmcli d para la identificación rápida de las interfaces de red instaladas en el sistema


[milton@localhost ~]$ nmcli d
DISPOSITIVO  TIPO      ESTADO       CONNECTION
enp0s3       ethernet  conectado    enp0s3    
lo           loopback  sin gestión  --    

Al ejecutar este comando, podemos ver que tenemos una interfaz de red llamada "enp0s3".
A partir de aquí, los pasos son los siguientes:
Configuración por DHCP
  1. Ejecutar el comando nmtui y aparecerá un asistente dando varias opciones. Elegimos la opción "Edit a connection".


  1. A continuación, podremos ver los nombres de todas la interfaces. En nuestro caso, solamente hay una. Seleccionarla.
  2. Seleccionar la opción "Automatically connect"
  3. Hacer clic en "Ok" para cerrar el asistente.
  4. Reiniciar el servicio de red mediante el comando siguiente:

# systemctl restart network

  

NOTA: Si después de reiniciar el servicio de red comprobamos que no se ha actualizado la configuración de red, entonces reiniciaremos la interfaz. Por ejemplo, si la interfaz se llamase "eth0", “enp0s3” entonces los comandos a ejecutar serían los siguientes:

# ifdown eth0
# ifup eth0

# ifup enp0s3
# ifdown enp0s3

Actividad 1. Configura la interfaz de red de tu sistema por DHCP, empleando la interfaz gráfica. Después reinicia el servicio de red y comprueba que se ha asignado una dirección a tu interfaz.


# systemctl restart network


Jan  7 14:01:09 localhost NetworkManager: DHCPREQUEST on enp0s3 to 255.255.255.255 port 67 (xid=0x297925c2)
Jan  7 14:01:09 localhost NetworkManager: DHCPACK from 10.0.2.2 (xid=0x297925c2)
Jan  7 14:01:09 localhost dhclient[9318]: bound to 10.0.2.15 -- renewal in 39804 seconds.
Jan  7 14:01:09 localhost NetworkManager: bound to 10.0.2.15 -- renewal in 39804 seconds.
Jan  7 14:01:09 localhost NetworkManager[650]:  (enp0s3): DHCPv4 state changed preinit -> reboot
Jan  7 14:01:09 localhost NetworkManager[650]:    address 10.0.2.15
Jan  7 14:01:09 localhost NetworkManager[650]:    plen 24 (255.255.255.0)
Jan  7 14:01:09 localhost NetworkManager[650]:    gateway 10.0.2.2
Jan  7 14:01:09 localhost NetworkManager[650]:    server identifier 10.0.2.2
Jan  7 14:01:09 localhost NetworkManager[650]:    lease time 86400
Jan  7 14:01:09 localhost NetworkManager[650]:    nameserver '10.0.2.3'
Jan  7 14:01:09 localhost NetworkManager[650]:  Activation (enp0s3) Stage 5 of 5 (IPv4 Configure Commit) scheduled...

Configuración estática
  1. Ejecutar el comando nmtui y aparecerá un asistente dando varias opciones. Elegimos la opción "Edit a connection".


  1. A continuación, podremos ver los nombres de todas la interfaces. En nuestro caso, solamente hay una. Seleccionarla.

  1. Elegir la configuración manual en la sección "IPv4 CONFIGURATION".

  1. Insertar una dirección IP, una subred, un gateway y DNS.
  2. Seleccionar "Automatically connect".
  3. Presionar Ok y cerrar el asistente.
  4. Finalmente reiniciar el servicio de red con el siguiente comando:


# systemctl restart network

Actividad 2. Elige un direccionamiento IP adecuado para el segmento en el que se encuentra tu sistema. Después, configura la red de forma manual, y comprueba que tienes acceso a la red haciendo ping a tu puerta de enlace.

Configuración de red desde la línea de comandos
Configurar la red desde la línea de comandos supone conocer bien el archivo

de configuración de la interfaz de red. Dicho archivo
es /etc/sysconfig/network-scripts/ifcfg-enp0s3 (en mi caso). El contenido puede ser algo parecido a lo siguiente:

# vim /etc/sysconfig/network-scripts/ifcfg-enp0s3 


HWADDR="08:00:27:F7:77:FF"
TYPE="Ethernet"
BOOTPROTO="dhcp"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
NAME="enp0s3"
UUID="00a49dbf-26ca-4fbf-8be0-7e1ca6e5645e"
ONBOOT="yes"

Para configurar por DHCP
Para configurar la interfaz por DHCP, es preciso fijarse en las opciones BOOTPROTO y ONBOOT. Deben quedar del siguiente modo:


BOOTPROTO=”dhcp”
ONBOOT=”yes”

Después reiniciamos el servicio de red:


# systemctl restart network

Actividad 3. Asegúrate de que la interfaz de red está configurada por DHCP consultado el archivo correspondiente a la interfaz en el directorio /etc/sysconfig/network-scripts. Abre dicho archivo, y si la configuración no es por DHCP, entonces modifícalo para lo sea. Después reinicia el servicio.
Para configuración estática
De nuevo debemos encontrar las opciones BOOTPROTO y ONBOOT. Deben quedar del siguiente modo:


BOOTPROTO=static
ONBOOT=yes

A continuación debemos añadir las opciones IPADDRNETMASKGATEWAY y DNS1, como en el siguiente ejemplo:


IPADDR=192.168.1.40
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=80.58.61.250

Finalmente reiniciamos el servicio de red:


# systemctl restart network

Actividad 4. Asegúrate de que interfaz de red está configurada manualmente consultado el archivo correspondiente a la interfaz en el directorio /etc/sysconfig/network-scripts. Abre dicho archivo, y si la configuración no es estática, entonces modifícalo para lo sea. Después reinicia el servicio.

Nombrado de las interfaces de red

Tradicionalmente, las interfaces de red han sido nombradas como eth[0123...]. El inconveniente que tienen estos nombres es que no necesariamente tienen que ver con la tecnología del hardware instalado. Esto supone un problema en cuanto a averiguar que interfaz de red es cual cuando hay más de un tipo de hardware instalado. CentOS/RHEL 6 introdujo un nuevo esquema de nombrado, que con CentOS/RHEL 7 se aplica por defecto. Este esquema de nombrado determina el nombre de las interfaces de red con la idea de diferenciar fácilmente las interfaces, y que permanezcan consistentes en los diferentes arranques*
Las convenciones de nombrado son las siguientes:
Los dos primeros caracteres del nombre de la interfaz
  • en -- ethernet
  • sl -- línea serie
  • wl -- wlan
  • ww -- wwan
El resto del nombre de la interfaz:
  • o<número> - Número de interfaz integrada en la placa base.
  • s<número_ranura>[f<función>][d<id_dispositivo>] - Número de ranura de conexión en caliente.
  • x<MAC> - Direción MAC
  • p<bus>s<ranura>[f<función>][d<dev_id>] - Ubicación PCI
  • p<bus>s<ranura>[f<función>][u<puerto>][...][c<config>][i<interfaz>] - cadena de nombre de puerto USB


El inconveniente de este esquema de nombrado, es que a veces se vuelve más difícil de leer que los nombres tradicionales. Por ello puede aparecer el deseo o necesidad de cambiar el nombre de una interfaz, aplicando el esquema de nombrado tradicional.
Nombres de interfaces persistentes con reglas de nombrado UDEV
A continuación veremos cómo se utilizan las reglas UDEV de nombrado persistente de interfaces. Entender esto es necesario para poder renombrar las interfaces, tal y como se explica más adelante. Se puede consultar este punto en nombres-ifaces-persistentes.php
Cambiando el nombre de la interfaz
En primer lugar vamos a desactivar el esquema de nombrado predecible de CentOS/RHEL 7. Para ello, debemos pasar el parámetro net.ifnames=0 al kernel durante el arranque. Para hacer esto, editamos el archivo /etc/default/grub y añadimos la cadena "net.ifnames=0" en la línea correspondiente a GRUB_CMDLINE_LINUX. Debe quedar como se muestra a continuación:


GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="vconsole.keymap=es crashkernel=auto  vconsole.font=latarcyrheb-sun16 net.ifnames=0 rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

Para que esta nueva configuración tenga efecto en el próximo reinicio, recreamos el archivo grub.cfg:


 # grub2-mkconfig -o /boot/grub2/grub.cfg

Posteriormente, creamos una regla de nombrado de red en el archivo /etc/udev/rules.d/70-persistent-net.rules, añadiendo la siguiente línea:


SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:5b:39:e6:aa:df", ATTR{type}=="1", KERNEL=="eth*", NAME="redlocal0"

Para terminar, supongamos que el script de configuración de CentOS se llamaba ifcfg-enp0s8. Entonces, si hemos llamado a nuestra interfaz "redlocal0", lo que haremos será renombrar dhcio archivo a ifcfg-redlocal0. Además, debemos editar dicho archivo y modificar los parámetros NAME y DEVICE. Es decir, internamente el archivo (ahora renombrado a) ifcfg-redlocal0 contendrá algo como lo siguiente:


HWADDR="08:00:27:F7:77:FF"
DEVICE="redlocal0"
TYPE="Ethernet"
BOOTPROTO="dhcp"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
NAME="redlocal0"
UUID="00a49dbf-26ca-4fbf-8be0-7e1ca6e5645e"
ONBOOT="yes"

Finalmente, reiniciamos el sistema y el nombre de la interfaz debería haber cambiado.
Una vez cambiado el nombre de la interfaz
Es importante tener en cuenta que si el nombre anterior de la interfaz se emplea en algún archivo de configuración, debería ser actualizado al nuevo nombre. De este modo, el script para la interfaz en /etc/sysconfig/network-scripts/ debería ser modificado en este sentido.




Manual de YUM en CentOS 7

Introducción
Acerca de YUM.
YUM (Yellow Dog Updater, Modified) es una herramienta libre, escrita en Python, diseñada para gestión de paquetes en distribuciones de GNU/Linux que utilizan RPM. Fue desarrollado por Seth Vidal y otros colaboradores y es mantenido actualmente como parte del proyecto Linux@DUKE de la Universidad de Duke. Desde que Seth Vidal trabaja en Red Hat, Inc., programadores de dicha compañía están implicados en el desarrollo de yum y han mejorado mucho su funcionalidad y desempeño.
Actualmente es el gestor de paquetes de facto de ALDOS, CentOS, Fedora™ y Red Hata™ Enterprise Linux y otras distribuciones de GNU/Linux basadas sobre éstas.
Actualizar el sistema aplicando los más recientes parches de seguridad y correctivos, es hoy más fácil gracias a YUM. El infierno de resolver dependencias entre paquetes RPM terminó hace muchos años. A continuación, los procedimientos para utilizar yum y realizar fácilmente lo que algunos denominan «horrible, difícil y complicado
Procedimientos
Listados.
Lo siguiente listará todos los paquetes en la base de datos yum disponibles para instalación :
yum list available | less
Lo siguiente listará todos los paquetes instalados en el sistema:
yum list installed | less
Lo siguiente listará sólo las versiones instaladas en el sistema del paquete kernel:
yum list installed kernel
Lo siguiente listará todos los paquetes instalados en el sistema y que pueden (y deben) actualizarse:
yum list updates | less

Lo siguiente listará todos los paquetes instalados, disponibles y actualizaciones:
yum list all | less
Lo siguiente listará sólo los paquetes instalados, disponibles y actualizaciones cuyo nombre coincida con la expresión regular «*tools*»:
yum list *tools*
Lo siguiente mostrará la lista de todos los grupos de paquetes disponibles en los almacenes YUM:
yum grouplist
Búsquedas.
Realizar una búsqueda de algún paquete o expresión regular en la base de datos en alguno de los almacenes YUM configurados en el sistema:
yum search nombre-paquete
Ejemplo:
yum search cups
Consulta de información
Consultar la información contenida en un paquete en particular::
yum info nombre-paquete
Ejemplo:
yum info cups

Consultar la lista de paquetes que conforman un grupo de paquetes en particular:
yum groupinfo "Nombre del Grupo"
El valor de «Nombre del Grupo» es de acuerdo a la lista mostrada por la ejecución de yum grouplist.
Ejemplo:
yum groupinfo "Servidor Web"
Instalación de paquetes
Instalación de paquetes con resolución automática de dependencias y a partir de los almacenes en línea:
yum install nombre-paquete
Ejemplo:
yum install elinks
Instalación de paquetes con resolución automática de dependencias, sin verificación de firmas digitales y a partir de los almacenes en línea:
yum install --nogpgcheck nombre-paquete
Ejemplo:
yum install --nogpgcheck elinks
Instalación de paquetes con resolución automática de dependencias, a partir de los almacenes en línea y sin dialogo de confirmación:
  
yum -y install nombre-paquete
Ejemplo:
yum -y install elinks
Instalación de paquetes con resolución automática de dependencias y localizados en el sistema de archivos local:
yum localinstall ~/Descargas/paquete.rpm
Ejemplo:
yum localinstall google-talkplugin_current_x86_64.rpm
Instalación de paquetes con resolución automática de dependencias, localizados en el sistema de archivos local y sin dialogo de confirmación:
yum -y localinstall ~/Descargas/paquete.rpm
Ejemplo:
yum -y localinstall google-talkplugin_current_x86_64.rpm
Instalación de paquetes con resolución automática de dependencias, sin verificación de firmas digitales y localizados en el sistema de archivos local:
yum localinstall --nopgpcheck ~/Descargas/paquete.rpm
  
Ejemplo:
yum localinstall --nopgpcheck \
    google-talkplugin_current_x86_64.rpm
Instalación de grupos de paquetes con resolución automática de dependencias:
yum groupinstall "Nombre del Grupo"
El valor de «Nombre del Grupo» es de acuerdo a la lista mostrada por la ejecución de yum grouplist.
Ejemplo:
yum groupinstall "Servidor Web"
Instalación de grupos de paquetes con resolución automática de dependencias y sin dialogo de confirmación:
yum -y groupinstall "Nombre del Grupo"
Ejemplo:
yum -y groupinstall "Servidor Web"
De modo predeterminado, la instalación de grupos sólo incluirá los paquetes obligatorios y los predeterminados. Para instalar los paquetes opcionales, algo poco recomendado, edite el archivo /etc/yum.conf:
vim /etc/yum.conf
Añada la opción group_package_types con los valores default, mandatory, optional. Ejemplo:
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=3
group_package_types=default, mandatory, optional

#  This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
#  It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d
Desinstalación de paquetes
Evite utilizar la opción -y al desinstalar paquetes, a menos que se esté seguro de las consecuencias. Preferentemente siempre corrobore qué es lo que se va a desinstalar antes de responder Si o Yes.
Para llevar a cabo la desinstalación de paquetes, junto con todo aquello que dependa de éstos:
yum remove nombre-paquete
Ejemplo:
yum remove elinks
Para llevar a cabo la desinstalación de grupos de paquetes con resolución automática de dependencias:
yum groupremove "Nombre del Grupo"
El valor de «Nombre del Grupo» es de acuerdo a la lista mostrada por la ejecución de yum grouplist.
Ejemplo:
yum groupremove "Servidor Web"

  
Actualizar sistema.
Ejecute lo siguiente para actualizar el sistema:
yum update
Ejecute lo siguiente para actualizar el sistema sin dialogo de confirmación:
yum -y update
Ejecute lo siguiente para actualizar el sistema omitiendo los paquetes con dependencias rotas:
yum --skip-broken update
Ejecute lo siguiente para actualizar sólo un paquete en particular:
yum update nombre-paquete
Ejemplo:
yum update cups
Ejecute lo siguiente para actualizar sólo un paquete en particular sin dialogo de confirmación:
yum -y update nombre-paquete
Ejemplo:
yum -y update cups

La actualización de grupos de paquetes con resolución automática de dependencias utiliza la siguiente sintaxis:
yum groupupdate "Nombre del Grupo"
El valor de «Nombre del Grupo» es de acuerdo a la lista mostrada por la ejecución de yum grouplist.
Ejemplo:
yum groupupdate "Base de datos MySQL"
La sintaxis para la actualización de grupos de paquetes con resolución automática de dependencias y sin dialogo de confirmación corresponde a lo siguiente:
yum -y groupupdate "Nombre del Grupo"
Ejemplo:
yum -y groupupdate "Base de datos MySQL"
Limpieza del directorio de cache.
Yum deja como resultado de su uso metadatos —y a veces de paquetes por transacciones canceladas— dentro del directorio /var/cache/yum/. Cuando se establece la opción keepcache=1 en el archivo /etc/yum.conf los paquetes RPM instalados prevalecen en el interior y pueden ocupar mucho espacio.
Ejecute lo siguiente para realizar la limpieza de todo el cache de YUM (metadatos, paquetes, etc.):
yum clean all
  
Ejecute lo siguiente para eliminar sólo los metadatos:
yum clean metadata
Ejecute lo siguiente sólo para eliminar paquetes descargados:
yum clean packages
Verificación de la base de datos RPM.
Ejecute lo siguiente para verificar la base de datos de RPM en busca de dependencias rotas y otros problemas:
yum check

Comprobar paquetes que necesitan actualización:
yum check-update