Introducción
Configurar
los parámetros de red en GNU/Linux requiere se entiendan perfectamente los
fundamentos de IP versión 4 y saber cómo utilizar cualquier editor de texto
simple.
En
CentOS y Red Hat™ Enterprise Linux, que utilizan núcleo de Linux versión 2.6,
la detección de las tarjetas de red es automática mientras se trate de
dispositivos soportados. Para consultar la lista de dispositivos compatibles,
visitehardware.redhat.com.
Procedimientos
Nombres
de los dispositivos.
Las
más recientes versiones de CentOS, Fedora™ y Red Hat™ Enterprise Linux utilizan
un nuevo esquema para los nombres de los dispositivos de red. Los nombres se
basan sobre su ubicación física con la finalidad de facilitar su
identificación. Los dispositivos de red integrados a la tarjeta madre utilizan
el esquema em[1,2,3,4...]; los dispositivos PCI utilizan el esquema p[ranura
PCI]p[puerto ethernet] y —en el caso de dispositivos virtuales--[ranura
PCI]p[puerto ethernet]_[interfaz virtual]. Ejemplos:
- Ø em1
corresponde al primer dispositivo de red integrado en la tarjeta madre.
- Ø
em2 corresponde al segundo dispositivo
de red integrado en la tarjeta madre.
- Ø
em3 corresponde al tercer dispositivo de
red integrado en la tarjeta madre.
- Ø
p1p1 corresponde al primer dispositivo
de red en la primera ranura PCI, primer puerto ethernet.
- Ø
p2p1 corresponde al primer dispositivo
de red en la segunda ranura PCI, primer puerto ethernet.
- Ø
p3p1 corresponde al primer dispositivo
de red en la tercera ranura PCI, primer puerto ethernet.
- Ø
p3p2 corresponde al primer dispositivo
de red en la tercera ranura PCI, segundo puerto ethernet.
- Ø p3p2_1
corresponde al primer dispositivo de red en la tercera ranura PCI, segundo
puerto ethernet, primer dispositivo virtual.
El
nuevo esquema de nombres sólo aplica para sistemas que implementan SMBIOS
versión 2.6 y tablas 9 y 41. Puede cotejarse la versión de SMBIOS ejecutando
como usuario root el siguiente mandato:
Biosdecode
Pueden
determinarse los dispositivos de red presentes en el sistema revisando el
contenido del directorio /sys/class/net/:
ls
/sys/class/net/
Puede
consultarse la asignación de nombres de dispositivos de red presentes en el
sistema, a través del archivo /etc/udev/rules.d/70-persistent-net.rules.
vim
/etc/udev/rules.d/70-persistent-net.rules
Si
se dispone de SMBIOS 2.6 y tablas 41 y 9, para hacer uso del nuevo esquema de
nombres en sistemas que fueron actualizados desde una versión anterior de
CentOS, Fedora™ y Red Hat™ Enterprise Linux, sólo es necesario eliminar este
archivo y reiniciar el sistema.
NetworkManager.
A
partir de CentOS 5 y Red Hat™ Enterprise Linux 5, se incluye NetworkManager
como una implementación alternativa para la gestión de parámetros de red desde
la interfaz de usuario. En éstos, NetworkManager viene desactivado de modo
predeterminado.
En
CentOS 6 y Red Hat™ Enterprise Linux 6, NetworkManager viene activo de modo
predeterminado, salvo que se haga la instalación mínima o la instalación básica
de servidor.
Si
se desea impedir que NetworkManager gestione algún dispositivo de red en
particular y que éste sea gestionado por el servicio network, edite el archivo
de configuración correspondiente al dispositivo a utilizar. Asumiendo que se
trata del dispositivo eth0, ejecute:
vim
/etc/sysconfig/network-scripts/ifcfg-eth0
Modifique
el valor del parámetro NM_CONTROLLED y establezca “No” como valor de éste. Ejemplo:
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
HWADDR=44:87:FC:AA:DD:2D
NM_CONTROLLED=no
IPADDR=192.168.70.101
NETMASK=255.255.255.128
GATEWAY=192.168.70.1
DOMAIN=dominio.tld
DNS1=8.8.8.8
DNS2=8.8.4.4
Para
aplicar los cambios, ejecute lo siguiente:
service
network restart
En
adelante, mientras esté establecido NM_CONTROLLED=no en la configuración del
dispositivo de red, NetworkManager ignorará ésta por completo.
Si
quiere prescindir del uso de NetworkManager, también se puede desactivar por
completo este servicio, siendo que su uso sólo tiene sentido en una computadora
portátil que se conecta a múltiples redes inalámbricas o bien un sistema
escritorio donde se quiere permitir al usuario regular poder controlar los
dispositivos de red. Para desactivar NetworkManager, ejecute lo siguiente:
chkconfig NetworkManager off
service NetworkManager stop
Asignación de
parámetros de red.
Nombre
del anfitrión (HOSTNAME).
Edite
el archivo /etc/hosts:
vim
/etc/hosts
Respete
la configuración de la resolución de retorno del sistema. Añada el nombre de
anfitrión del sistema y asocie éste a alguna de las direcciones IP locales. Ejemplo:
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.70.101 nombre.dominio.tld nombre
El
nombre del anfitrión (hostname) debe ser un FQDN (acrónimo de Fully Qualified Domain Name o Nombre de Dominio
Plenamente Calificado) resuelto por un servidor de nombres de domino (DNS).
Puede definir éste editando el archivo/etc/sysconfig/network:
vim
/etc/sysconfig/network
Cambie
el valor del parámetro HOSTNAME por el nombre de anfitrión que corresponda.
Tome en cuenta que el nombre de anfitrión deberá estar resuelto cuando menos en
el archivo /etc/hosts, y, si es posible, también en un servidor DNS.
NETWORKING=yes
HOSTNAME=nombre.dominio.tld
A
partir de CentOS 6 y Red Hat™ Enterprise Linux 6, el parámetro HOSTNAME puede
ser establecido en el archivo de configuración de cualquier dispositivo de red
del sistema (por ejemplo /etc/sysconfig/network-scripts/ifcfg-eth0), en lugar
del archivo /etc/sysconfig/network.
Asumiendo
que se utilizará el dispositivo eth0, edite el archivo
/etc/sysconfig/network-scripts/ifcfg-eth0:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
Ejemplo:
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
NM_CONTROLLED=no
IPADDR=192.168.70.101
NETMASK=255.255.255.128
GATEWAY=192.168.70.1
HOSTNAME=nombre.dominio.tld
Para
aplicar los cambios, ejecute lo siguiente:
service
network restart
Dirección
IP, máscara de sub-red y puerta de enlace.
Los
valores de los parámetros de red se asignan a través de los parámetros
BOOTPROTO para definir static si se utilizará una dirección IP estática o bien
dhcp si se asignará la dirección IP a través de un servidor DHCP, IPADDR para
definir la dirección IP, NETMASK para definir la máscara de sub-red en formato
octal y GATEWAY para definir la puerta de enlace.
Asumiendo
que se utilizará el dispositivo eth0, edite el archivo /etc/sysconfig/network-scripts/ifcfg-eth0:
vim
/etc/sysconfig/network-scripts/ifcfg-eth0
Ejemplo:
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
NM_CONTROLLED=no
IPADDR=192.168.70.101
NETMASK=255.255.255.128
GATEWAY=192.168.70.1
En
lugar del parámetro NETMASK con un valor octal, puede utilizar el parámetro
PREFIX y definir la máscara de sub-red en formato CIDR.
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
NM_CONTROLLED=no
IPADDR=192.168.70.101
PREFIX=25
GATEWAY=192.168.70.1
Los
valores de los parámetros anteriores son proporcionados por el administrador de
la red local en donde se localice el sistema que esté siendo configurado o bien
definidos de acuerdo a una planificación previamente establecida. El
administrador de la red deberá proporcionar una dirección IP disponible (IPADDR)
y una máscara de la sub-red (NETMASK o PREFIX).
Para
aplicar los cambios, ejecute lo siguiente:
service
network restart
Servidores
de nombres.
Hay
dos parámetros a configurar: dominio de búsqueda predeterminado y al menos un
servidor de nombres. En CentOS 6 yRed Hat™ Enterprise Linux 6, se pueden
establecer añadiendo al archivo de configuración de cualquier dispositivo de
red, los parámetros DOMAIN, DNS1, DNS2 y DNS3.
Asumiendo
que se utilizará el dispositivo eth0, edite el archivo /etc/sysconfig/network-scripts/ifcfg-eth0:
vim
/etc/sysconfig/network-scripts/ifcfg-eth0
Ejemplo:
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
NM_CONTROLLED=no
IPADDR=192.168.70.101
PREFIX=25
GATEWAY=192.168.70.1
DOMAIN=dominio.tld
DNS1=8.8.8.8
DNS2=8.8.4.4
Para
aplicar los cambios, ejecute lo siguiente:
service
network restart
Lo
anterior actualizará automáticamente el archivo /etc/resolv.conf con el
contenido que corresponda.
En
CentOS 5 y Red Hat™ Enterprise Linux 5 (y versiones anteriores de éstos), edite
al archivo /etc/resolv.conf:
vim
/etc/resolv.conf
Establezca
o confirme los servidores del sistema de resolución de nombres de dominio
(DNS). Ejemplo:
search
dominio.tld
nameserver
8.8.8.8
nameserver
8.8.4.4
Si
se modifica directamente el archivo /etc/resolv.conf los cambios aplican de
manera inmediata, sin necesidad de reiniciar el servicio network.
Rutas
estáticas.
Las
rutas estáticas se pueden añadir ejecutando el mandato ip, utilizando la
siguiente sintaxis:
ip
route add [red]/[máscara] via [puerta-de-enlace] dev [dispositivo]
En
el siguiente ejemplo se definirá la ruta estática hacia la red 192.168.3.0 con
máscara de 25 bit (255.255.255.128), puerta de enlace a través de la dirección
IP 172.16.1.36 y a través del dispositivo de red eth1:
ip route add 192.168.3.0/25
via 172.16.1.36 dev eth1
Es
un requisito que la puerta de enlace de destino sea alcanzable desde el
dispositivo utilizado. Será imposible establecer una ruta estática si es
imposible alcanzar la puerta de enlace necesaria. Si sólo se ejecuta el mandato
ip y se reinicia el servicionetwork, los cambios se perderán.
Si
se requiere establecer las rutas estáticas adicionales para obtener
conectividad con otras redes y que las configuraciones correspondientes sean
permanentes, se pueden generar archivos para cada dispositivo de red que sea
necesario, en donde se establecen los valores para puerta de enlace, red a la
que se quiere acceder y la máscara de sub-red correspondiente. Los archivos se
deben generar dentro del directorio /etc/sysconfig/network-scripts/ como
route-[dispositivo] y deben llevar el siguiente formato:
GATEWAY0=nnn.nnn.nnn.nnn
ADDRESS0=nnn.nnn.nnn.nnn
NETMASK0=nnn.nnn.nnn.nnn
En
lugar del parámetro NETMASK, se puede utilizar el parámetro PREFIX, definiendo
la máscara en formato CIDR. Ejemplo:
GATEWAY0=nnn.nnn.nnn.nnn
ADDRESS0=nnn.nnn.nnn.nnn
PREFIX0=nn
Por
ejemplo, imaginemos que nos encontramos dentro de la red 192.168.70.0/25 y se
requiere establecer conectividad con las redes 172.16.2.0 y 172.16.3.0, con
máscaras 255.255.255.240 (28 bit), a través de las puertas de enlace o
enrutadores o encaminadores con direccines IP 192.168.1.2 y 192.168.1.3,
correspondientemente para cada red citada, a través del primer dispositivo
Ethernet del anfitrión local (eth0).
Genere
el archivo /etc/sysconfig/network-scripts/route-eth0 utilizando un editor de
texto:
vim
/etc/sysconfig/network-scripts/route-eth0
La
configuración para el escenario descrito arriba, sería la siguiente:
GATEWAY0=192.168.1.2
ADDRESS0=172.16.2.0
PREFIX0=28
GATEWAY1=192.168.1.3
ADDRESS1=172.16.3.0
PREFIX1=28
Para
aplicar los cambios y poder hacer las comprobaciones correspondientes, ejecute
lo siguiente:
service
network restart
Función
de Reenvío de paquetes para IP versión 4.
Si
dispone de al menos 2 dispositivos de red y se tiene planeado implementar un
NAT o DNAT, se debe habilitar el reenvío de paquetes para IP versión 4. Esto se
realiza editando el archivo /etc/sysctl.conf y estableciendo 1 para activar o
bien dejar 0para mantener inactivo:
vim
/etc/sysctl.conf
Y
cambiando net.ipv4.ip_forward = 0 por net.ipv4.ip_forward = 1:
net.ipv4.ip_forward
= 1
Para
aplicar el cambio, sin reiniciar el sistema, sólo es necesario ejecutar lo
siguiente:
sysctl -w
net.ipv4.ip_forward=1
Herramientas
para el intérprete de mandatos.
Después
de haber configurado todos los parámetros de red deseados, reinicie el servicio
network, ejecutando lo siguiente:
service
network restart
Para
comprobar la conectividad, se puede ejecutar el mandato ping hacia cualquier
dirección de la red local para tal fin.
ping
-c3 192.168.70.1
La
opción -c3 indica que sólo se harán 3 pings hacia la dirección IP de destino.
Para
ver la información de todos los dispositivos de red del sistema, se ejecuta lo
siguiente:
ip
addr show
En
el pasado, lo anterior se hacía utilizando el mandato ifconfig.
Para
ver la información de un dispositivo de red específico, eth0 en el siguiente
ejemplo, se ejecuta lo siguiente:
ip
addr show eth0
En
el pasado, lo anterior se hacía utilizando el mandato ifconfig eth0.
Para
ver la información de estado de todos los dispositivos de red del sistema, se
ejecuta lo siguiente:
ip
link show
Para
ver la información de estado de de un dispositivos de red en particular, eth0
en el siguiente ejemplo, se ejecuta lo siguiente:
ip
link show eth0
Para
detener un dispositivo de red, eth0 en el ejemplo, se ejecuta lo siguiente:
ip
link set eth0 down
En
el pasado, lo anterior se hacía utilizando el mandato ifdown eth0.
Para
iniciar un dispositivo de red, eth0 en el ejemplo, se ejecuta lo siguiente:
ip
link set eth0 up
En
el pasado, lo anterior se hacía utilizando el mandato ifup eth0.
Para
eliminar todos los parámetros de red de un dispositivo específico, eth0 en el
ejemplo, se ejecuta lo siguiente.
ip
addr flush dev eth0
Para
añadir una dirección IP a un dispositivo, eth0 en el siguiente ejemplo, se
ejecuta lo siguiente.
ip
addr add 192.168.70.61/25 dev eth0
Para
eliminar una dirección IP a un dispositivo, eth0 en el siguiente ejemplo, se
ejecuta lo siguiente.
ip
addr del 192.168.70.61/25 dev eth0
Las
rutas estáticas se pueden comprobar utilizando el siguiente mandato:
ip
route list
En
el pasado, lo anterior se hacía utilizando el mandato route.
Para
eliminar todas las rutas estáticas dependientes sólo del dispositivo eth0, se
ejecuta lo siguiente:
ip
route flush dev eth0
Para
cambiar o establecer la puertas de enlace predeterminada del sistema,
192.168.70.1 en el siguiente ejemplo, a través del dispositivo eth0, se ejecuta
lo siguiente:
ip route add default via
192.168.70.1 dev eth0
Para
comprobar si hay resolución de nombres, se puede realizar una consulta hacia
los servidores DNS definidos para el sistema, utilizando:
host
dominio.tld
Direcciones
IP secundarias
Las
direcciones IP secundarias sirven para que el sistema responda para más de una
dirección IP a través del mismo dispositivo de red. Son útiles en los casos en
los cuales se tiene un servicio de hospedaje de páginas de Internet y se desea
que cada sitio tenga su propia dirección IP. También son útiles en los muros
cortafuegos donde se quiere que un conjunto de equipos salgan hacia Internet
enmascarados con una dirección IP (una LAN, por ejemplo) y otro conjunto de
equipos lo hagan con una dirección IP distinta (una DMZ, por ejemplo).
El
primer paso es modificar los parámetros IPADDR y NETMASK de la dirección IP principal,
precediendo a éstos el número cero:
IPADDR0=192.168.70.101
NETMASK0=255.255.255.128
Añada
la dirección IP secundaria y la máscara de sub-red con los parámetros IPADDR1 y
NETMASK1 (o bien PREFIX1 si prefiere el formato CIDR) del siguiente modo:
IPADDR0=192.168.70.101
NETMASK0=255.255.255.128
IPADDR1=192.168.70.31
NETMASK1=255.255.255.128
Para
agregar otra dirección IP secundaria, se añade otro conjunto de parámetros
IPADDR y NETMASK, precedidos con el siguiente número consecutivo:
IPADDR0=192.168.70.101
NETMASK0=255.255.255.128
IPADDR1=192.168.70.31
NETMASK1=255.255.255.128
IPADDR2=192.168.70.41
NETMASK2=255.255.255.128
Puede
utilizar PREFIX en lugar de NETMASK, definiendo la máscara de sub-red en
formato CIDR.
IPADDR0=192.168.70.101
PREFIX0=25
IPADDR1=192.168.70.31
PREFIX1=25
IPADDR2=192.168.70.41
PREFIX2=25
Para
aplicar los cambios y poder hacer las comprobaciones correspondientes, ejecute
lo siguiente:
service
network restart
La
comprobación, al ejecutar el mandato ip addr show, deberá regresar algo como lo
siguiente
1: lo:
<LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd
00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6
::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0:
<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen
1000
link/ether 00:23:5a:4b:e8:43 brd
ff:ff:ff:ff:ff:ff
inet 192.168.70.101/25 brd 192.168.70.127
scope global eth0
inet 192.168.70.31/25 scope global
secondary eth0
inet 192.168.70.41/25 scope global
secondary eth0
inet6 fe80::223:5aff:fe4b:e843/64 scope
link
valid_lft forever preferred_lft forever
La
función Zeroconf.
De
modo predeterminado y a fin de permitir la comunicación entre dos diferentes
sistemas a través de un cable RJ45 cruzado (crossover), el sistema tiene
habilitado Zeroconf, también conocido como Zero Configuration Networking o
Automatic Private IP Addressing (APIPA). Es un conjunto de técnicas que
automáticamente gestionan la asignación de direcciones IP sin necesidad de
configuración de servidores especiales. Permite a usuarios sin conocimientos de
redes conectar computadoras, impresoras en red y otros artículos entre sí.
Sin
Zeroconf los usuarios sin conocimientos tendrían que configurar servidores
especiales como DHCP y DNS para poder establecer conectividad entre dos
equipos.
Estando
habilitado Zeroconf, se mostrará un registro en la tabla de rutas estáticas
para la red 169.254.0.0 al ejecutar el mandato ip route list:
ip
route list
Lo
anterior devolverá una salida similar a la siguiente:
192.168.70.0/25 dev
eth0 proto kernel scope link
src 192.168.70.101
169.254.0.0/16 dev eth0 scope link
metric 1002
default
via 192.168.70.1 dev eth0
Si
se desea desactivar Zeroconf, edite el archivo /etc/sysconfig/network:
vim
/etc/sysconfig/network
Añada
el parámetro NOZEROCONF con el valor yes:
NETWORKING=yes
HOSTNAME=nombre.dominio.tld
NOZEROCONF=yes
Al
terminar, reinicie el servicio network, a fin de que surtan efecto los cambios:
service
network restart
Para
comprobar, ejecute de nuevo con el mandato ip route list:
ip
route list
Lo
anterior deberá devolver una salida similar a la siguiente, en la cual la ruta
para Zeroconf ha desaparecido:
192.168.70.0/25 dev
eth0 proto kernel scope link
src 192.168.70.101
default
via 192.168.70.1 dev eth0
Una
vez hecho lo anterior, existen dos servicios en el sistema en CentOS y Red Hat™
Enterprise Linux 5 y versiones posteriores, que se pueden desactivar puesto que
sirven para establecer la comunicación a través de Zeroconf, estos
sonavahi-daemon y avahi-dnsconfd. Desactivar estos dos servicios ahorrará
tiempo en el arranque y se consumirán algunos pocos menos recursos de sistema.
chkconfig avahi-dnsconfd off
chkconfig avahi-daemon off
service avahi-dnsconfd stop
service avahi-daemon stop
Muchas
aplicaciones y componentes para el modo gráfico dependen de Zeroconf para su
correcto funcionamiento. Por tanto, es poco conveniente desactivar este soporte
en un sistema de escritorio.