Red
La configuración de una interfaz de red Ethernet (o por cable) en Slackware Linux se realiza mediante el
comando netconfig
, sin embargo se darán las instrucciones usando los comandos estandares dentro de cualquier
distribución de GNU/Linux actual.
Por otro lado se darán las instrucciones de la configuración de una tarjeta de red inalámbrica, aún cuando su correcta configuración depende de otros factores (driver/firmware actualizado y configuración del punto de acceso inalámbrico a conectarse).
El nombre de una interfaz de red puede variar de computadora a computadora y de distribución GNU/Linux a distribución GNU/Linux. Lo anterior en base al esquema de nombramiento usado por la distribución GNU/Linux.
Slackware Linux aún sigue manteniendo el esquema de nombramiento "clásico" para las interfaces de red: ethX, wlanX, athX, etc.
Puedes leer más sobre la anterior observación en:
- Fedora 15: adiós a los dispositivos ethX
- Fedora 15 cambiará el esquema de nombres para las NICs
- Consistent Network Device Naming
- Predictable Network Interface Names
En el presente documento hago uso de la palabra Ethernet para designar una red o interfaz de red por cable, mientras que hago uso de Wireless para designar una red o interfaz de red inalámbrica pero debe tomarse en cuenta que una red Wireless es una red Ethernet.
Interfaces de red detectadas por el kernel Linux:
Con
lspci
:root@servidor:~# lspci | grep -i net 00:19.0 Ethernet controller: Intel Corporation Ethernet Connection (3) I218-V (rev 03) 03:00.0 Network controller: Intel Corporation Wireless 7265 (rev 61)
En base al contenido del directorio
/sys/class/net
:root@servidor:~# file /sys/class/net/* /sys/class/net/eth0: symbolic link to ../../devices/pci0000:00/0000:00:19.0/net/eth0 /sys/class/net/lo: symbolic link to ../../devices/virtual/net/lo /sys/class/net/wlan0: symbolic link to ../../devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0
Con
ip
:root@servidor:~# ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000 link/ether 18:9d:0c:c8:4e:6f brd ff:ff:ff:ff:ff:ff 3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether 90:c6:44:e8:71:90 brd ff:ff:ff:ff:ff:ff
Del resultado obtenido:
- lo es una interfaz de loopback (virtual, físicamente no existe). Usualmente esta interfaz está asociada a localhost.
- eth0 es una interfaz de red Ethernet.
- wlan0 es una interfaz de red Wireless.
Para obtener el controlador (driver o módulo y posiblemente el firmware) usado por el kernel Linux:
Con
lspci
:root@servidor:~# lspci -k | grep -A 3 -Ei '(Ethernet|Network) controller' 00:19.0 Ethernet controller: Intel Corporation Ethernet Connection (3) I218-V (rev 03) Subsystem: Lenovo Ethernet Connection (3) I218-V Kernel driver in use: e1000e Kernel modules: e1000e -- 03:00.0 Network controller: Intel Corporation Wireless 7265 (rev 61) Subsystem: Intel Corporation Wireless-N 7265 Kernel driver in use: iwlwifi Kernel modules: iwlwifi
Con
ethtool
:root@servidor:~# ethtool -i eth0 driver: e1000e version: 3.2.6-k firmware-version: 0.2-3 expansion-rom-version: bus-info: 0000:00:19.0 supports-statistics: yes supports-test: yes supports-eeprom-access: yes supports-register-dump: yes supports-priv-flags: no root@servidor:~# ethtool -i wlan0 driver: iwlwifi version: 4.4.14 firmware-version: 16.242414.0 expansion-rom-version: bus-info: 0000:03:00.0 supports-statistics: yes supports-test: no supports-eeprom-access: no supports-register-dump: no supports-priv-flags: no
Del resultado obtenido:
Los drivers usados son:
- e1000e: para eth0, Ethernet.
- iwlwifi: para wlan0, Wireless.
Para obtener más información sobre los drivers:
root@servidor:~# modinfo e1000e | grep -Ev '(alias|parm):' filename: /lib/modules/4.4.14/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko version: 3.2.6-k license: GPL description: Intel(R) PRO/1000 Network Driver author: Intel Corporation, <linux.nics@intel.com> srcversion: 73DD21C4B96AB714F3916AF depends: ptp intree: Y vermagic: 4.4.14 SMP mod_unload root@servidor:~# modinfo iwlwifi | grep -Ev '(alias|parm):' filename: /lib/modules/4.4.14/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko license: GPL author: Copyright(c) 2003- 2015 Intel Corporation <ilw@linux.intel.com> description: Intel(R) Wireless WiFi driver for Linux firmware: iwlwifi-100-5.ucode firmware: iwlwifi-1000-5.ucode firmware: iwlwifi-135-6.ucode firmware: iwlwifi-105-6.ucode firmware: iwlwifi-2030-6.ucode firmware: iwlwifi-2000-6.ucode firmware: iwlwifi-5150-2.ucode firmware: iwlwifi-5000-5.ucode firmware: iwlwifi-6000g2b-6.ucode firmware: iwlwifi-6000g2a-5.ucode firmware: iwlwifi-6050-5.ucode firmware: iwlwifi-6000-4.ucode firmware: iwlwifi-7265D-13.ucode firmware: iwlwifi-7265-13.ucode firmware: iwlwifi-3160-13.ucode firmware: iwlwifi-7260-13.ucode firmware: iwlwifi-8000-13.ucode depends: cfg80211 intree: Y vermagic: 4.4.14 SMP mod_unload
Determinar el tipo de interfaz de red:
Con
iwconfig
para determinar que interfaz de red es Wireless:root@servidor:~# iwconfig lo no wireless extensions. wlan0 IEEE 802.11bgn ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=0 dBm Retry short limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:on eth0 no wireless extensions.
Solo wlan0 tiene las extensiones (caracteristicas) de una tarjeta inalámbrica.
En base al contenido del directorio
/sys/class/net
:root@servidor:~# ls -god /sys/class/net/*/wireless drwxr-xr-x 2 0 Aug 15 23:40 /sys/class/net/wlan0/wireless/ root@servidor:~# ls -god /sys/class/net/*/*802* lrwxrwxrwx 1 0 Aug 15 22:45 /sys/class/net/wlan0/phy80211 -> ../../ieee80211/phy0/
802 hace mención a IEEE 802.11, el estándar que define tanto la capa física y capa de enlace de datos (modelo OSI) para una red de área local inalámbrica (WLAN).
Actual configuración de las interfaces de red:
root@servidor:~# ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000 link/ether 18:9d:0c:c8:4e:6f brd ff:ff:ff:ff:ff:ff 3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 90:c6:44:e8:71:90 brd ff:ff:ff:ff:ff:ff
Del resultado obtenido:
- La interfaz de red lo está configurada con dirección IP 127.0.0.1 y mascara de red 255.0.0.0 u /8 (en notación CIDR).
- Las interfacez de red eth0 y wlan0 no están configuradas.
Configuración de interfaz de red Ethernet
La configuración de una interfaz de red depende del tipo de red e interfaz a usar siendo esto lo que define que toda información requerimos para llevar a cabo la configuración.
Configuración estática
Partiendo de la siguiente información:
- Dirección IP: 192.168.3.94
- Máscara de red (Netmask): 255.255.0.0 o 16
- Puerta de enlace (Gateway): 192.168.0.1
- Nombre de dominio (Domain name):
- Servidor de nombre de dominio (DNS): 192.168.0.1
se puede llevar a cabo la configuración con los siguientes pasos:
Liberar cualquier dirección IP asociada en este momento a la interfaz de red:
root@servidor:~# ip addr flush dev eth0 up
Deter la interfaz de red:
root@servidor:# ip link set dev eth0 down
Asignar la dirección IP y mascara de red:
root@servidor:# ip addr add 192.168.3.94/16 dev eth0
Actualizar la tabla de ruteo para indicar la puerta de enlace:
root@servidor:# ip route add 192.168.0.1/16 dev eth0
Reiniciar la interfaz de red:
root@servidor:# ip link set dev eth0 up
Configurar el servidor de nombre de dominio (DNS):
root@servidor:# echo nameserver 192.168.0.1 > /etc/resolv.conf
Configuración dinámica
Liberar cualquier dirección IP asociada en este momento a la interfaz de red:
root@servidor:# ip addr flush dev eth0 up
Deter la interfaz de red:
root@servidor:# ip link set dev eth0 down
Obtener una dirección de IP por DHCP mediante el cliente
dhclient
lo que reiniciará la interfaz de red:root@servidor:# dhclient -v -4 -pf /root/dhclient.pid eth0 Internet Systems Consortium DHCP Client 4.3.4 Copyright 2004-2016 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Listening on LPF/eth0/52:54:00:00:ee:08 Sending on LPF/eth0/52:54:00:00:ee:08 Sending on Socket/fallback DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 8 DHCPREQUEST on eth0 to 255.255.255.255 port 67 DHCPOFFER from 172.16.16.1 DHCPACK from 172.16.16.1 bound to 172.16.16.108 -- renewal in 2147483648 seconds.
Para desactivar la interfaz de red:
Detener a
dhclient
:root@servidor:# dhclient -r -pf /root/dhclient.pid
Deter la interfaz de red:
root@servidor:# ip link set dev eth0 down
Configuración de una interfaz de red Wireless
Autenticación
La autenticación de un nodo que desea formar parte de una red inalámbrica depende del método de autenticación usado por la red inalámbrica. Existen al menos 3 métodos de autenticación conocidos/disponibles al público:
- WPA (Wi-Fi Protected Access) / WPA2 (Wi-Fi Protected Access 2)
- WEP (Wired Equivalent Privacy)
- Abierta / Sin contraseña
Se cuenta con wpa_supplicant para la autenticación en redes inalámbricas WPA2, WPA y WEP en GNU/Linux así como en otros sistemas operativos tipo Unix.
Por cuestiones de seguridad se recomienda hacer uso de WPA2, quedando desaconsejado el uso de WPA y WEP
WPA / WPA2
El archivo /etc/wpa_supplicant.conf
puede servir como punto de inicio para crear un archivo de configuración propio en /root/wpa_supplicant.conf
:
root@servidor:~# cat /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=root
root@servidor:~# cp /etc/wpa_supplicant.conf /root
Se genera la información necesaria para la autenticación: la llave de autenticación:
root@servidor:~# wpa_passphrase 'Nombre de la red inalámbrica' 'Contraseña de la red inalámbrica' >> /root/wpa_supplicant.conf
Se hacen los ajustes necesarios en
/root/wpa_supplicant.conf
para indicar el nombre de la red inalámbrica a la cual conectarse y el prótocolo a usar para la autenticación: WPA2 (proto=WPA WPA2
) o WPA (proto=WPA RSN
):root@servidor:~# cat /root/wpa_supplicant.conf ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=root eapol_version=1 ap_scan=1 fast_reauth=1 network={ scan_ssid=0 ssid="Nombre de la red inalámbrica" proto=WPA RSN key_mgmt=WPA-PSK pairwise=CCMP TKIP group=CCMP TKIP psk=... }
Se inicia a wpa_supplicant indicandole el archivo de configuración a usar, el driver y la interfaz de red:
root@servidor:~# wpa_supplicant -B -P wpa_supplicant.pid -d -c /root/wpa_supplicant.conf -D wext -i wlan0 wpa_supplicant v2.5 random: Trying to read entropy from /dev/random Successfully initialized wpa_supplicant Initializing interface 'wlan0' conf '/root/wpa_supplicant.conf' driver 'wext' ctrl_interface 'N/A' bridge 'N/A' Configuration file '/root/wpa_supplicant.conf' -> '/root/wpa_supplicant.conf' Reading configuration file '/root/wpa_supplicant.conf' ... EAPOL: External notification - portValid=1 EAPOL: External notification - EAP success=1 EAPOL: SUPP_PAE entering state AUTHENTICATING EAPOL: SUPP_BE entering state SUCCESS EAP: EAP entering state DISABLED EAPOL: SUPP_PAE entering state AUTHENTICATED EAPOL: Supplicant port status: Authorized EAPOL: SUPP_BE entering state IDLE EAPOL authentication completed - result=SUCCESS RTM_NEWLINK: operstate=1 ifi_flags=0x11043 ([UP][RUNNING][LOWER_UP]) RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added WEXT: if_removed already cleared - ignore event EAPOL: startWhen --> 0 EAPOL: disable timer tick
Para obtener el estado actual de la autenticación:
root@servidor:~# wpa_cli status Selected interface 'wlan0' bssid=7c:b1:5d:d6:43:30 freq=0 ssid=Nombre de la red inalámbrica id=0 mode=station pairwise_cipher=CCMP group_cipher=TKIP key_mgmt=WPA2-PSK wpa_state=COMPLETED address=90:c6:44:e8:71:90 uuid=f913e93a-71e9-5327-9095-87e9377876bb
WEP
Pendiente...
Abierta / Sin contraseña
El archivo /etc/wpa_supplicant.conf
puede servir como punto de inicio para crear un archivo de configuración propio en /root/wpa_supplicant.conf
:
root@servidor:~# cat /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=root
root@servidor:~# cp /etc/wpa_supplicant.conf /root
Se hacen los ajustes necesarios en
/root/wpa_supplicant.conf
para indicar el nombre de la red inalámbrica a conectarse y que no se hará uso de algun método de autenticación:root@servidor:~# cat /root/wpa_supplicant.conf ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=root eapol_version=1 ap_scan=1 fast_reauth=1 network={ ssid="Nombre de la red inalámbrica" key_mgmt=NONE }
Se inicia a wpa_supplicant indicandole el archivo de configuración a usar, el driver y la interfaz de red:
root@servidor:~# wpa_supplicant -B -P wpa_supplicant.pid -d -c /root/wpa_supplicant.conf -D wext -i wlan0 wpa_supplicant v2.5 random: Trying to read entropy from /dev/random Successfully initialized wpa_supplicant Initializing interface 'wlan0' conf '/root/wpa_supplicant.conf' driver 'wext' ctrl_interface 'N/A' bridge 'N/A' Configuration file '/root/wpa_supplicant.conf' -> '/root/wpa_supplicant.conf' Reading configuration file '/root/wpa_supplicant.conf' ...
Para obtener el estado actual de la autenticación:
root@servidor:~# wpa_cli status Selected interface 'wlan0' bssid=7c:b1:5d:d6:43:30 freq=0 ssid=Nombre de la red inalámbrica id=0 mode=station key_mgmt=NONE wpa_state=COMPLETED address=90:c6:44:e8:71:90 uuid=f913e93a-71e9-5327-9095-87e9377876bb
Dirección de IP
Una vez autenticado en la red inalámbrica puede configurar la dirección IP estática o dinámica siguiente los mismos pasos expuesto para Ethernet, tomando en cuenta que la interfaz de red inalámbrica es wlan0, no eth0.
Nombre de host
El archivo de texto plano /etc/hosts
permite asociar una dirección IPv4 o IPv6 con un nombre de host:
root@servidor:~# cat /etc/hosts
# For loopbacking.
127.0.0.1 localhost
127.0.0.1 servidor.localdomain servidor
# End of hosts.
De tal forma que al hacer ping a servidor se obtiene una respuesta:
root@servidor:~ # ping -c 4 servidor
PING servidor (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.031 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.037 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.049 ms
64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.059 ms
--- servidor ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2997ms
rtt min/avg/max/mdev = 0.031/0.044/0.059/0.010 ms
root@servidor:~ # ping -c 4 servidor.localdomain
PING servidor (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.044 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.024 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.046 ms
64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.040 ms
--- servidor ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2997ms
rtt min/avg/max/mdev = 0.024/0.038/0.046/0.010 ms
Lecturas
- Configuración de red en CentOS y Red Hat™ Enterprise Linux
- Configuración de redes en debian / Lo que se avecina
- WPA supplicant y WPA supplicant (Español)).
Wicd y NetworkManager
Slackware Linux incluye el script de shell llamado netconfig
:
root@servidor:~ # which netconfig
/sbin/netconfig
root@servidor:~ # file /sbin/netconfig
/sbin/netconfig: POSIX shell script, ASCII text executable
root@servidor:~ # head -5 /sbin/netconfig
#!/bin/sh
# A script to do basic network configuration.
# Mostly written by Patrick Volkerding <volkerdi@slackware.com>.
# Modified to use /etc/rc.d/rc.inet1.conf Tue Aug 26 16:51:48 PDT 2003 <pjv>
netconfig
permite crear el archivo /etc/rc.d/rc.inet1.conf
con la información necesaria para configurar una interfaz de red
al momento de que inicie el sistema operativo mediante el script de shell /etc/rc.d/rc.inet1
.
Por cuestiones del uso cotidiano de una computadora, como una laptop, y de un entorno de escritorio, como Xfce o KDE, el uso
de netconfig
puede ser insuficiente. Slackware Linux incluye a Wicd y a NetworkManager para facilitar la configuración
de las interfaces de red.
Como sugerencia, Wicd sería usado en Xfce, Window Maker, FluxBox, etc. mientras que NetworkManager para KDE.
Previo uso de Wicd o NetworkManager, solo uno de ellos sería usado, recomendaria hacer uso de netconfig
por última vez:
Se ingresa el nombre de host o Nombre de equipo:
Cabe mencionar que el localhost es un nombre de host asociado a la interfaz de red virtual lo o loopback.
Se ingresa el nombre de dominio, relacionado a la idea detras de DNS (Domain Name System o Sistema de nombres de dominio)
Podría ser cualquier otro valor pero por cuestiones de simplicidad se sugiere hacer uso de localdomain.
Selecciona la opción de loopback para configurar por default y únicamente a la interfaz lo o de loopback.
Se te indica la dirección IP y la mascara de red a usar para la interfaz lo:
Se te indica la aceptación de la configuración básica de la red.
Wicd
Wicd, un acrónimo que siginfica "demonio de conexión de interfaz inalámbrica", es una utilidad de software de código abierto para gestionar redes inalámbricas y cableadas en Linux. Wicd provee una interfaz sencilla para conectarse a alguna red con una amplia variedad de ajustes y configuraciones. - Wikipedia
Wicd ya forma parte de Slackware Linux y los paquetes relacionados a él son:
root@servidor:~# ls -1 /var/log/packages/ | grep -i wicd
wicd-1.7.4-x86_64-2
wicd-kde-0.3.0_bcf27d8-x86_64-2
Importante: desactiva a NetworkManager si harás uso de Wicd:
Deten la ejecución del proceso demonio o servidor de NetworkManager:
root@servidor:~# bash /etc/rc.d/rc.networkmanager stop
Quita los permisos de ejecución al script de init de NetworkManager:
root@servidor:~# chmod -x /etc/rc.d/rc.networkmanager
Para hacer uso de Wicd:
Asigna permisos de ejecución al script de init (escrito en Bash)
/etc/rc.d/rc.wicd
:root@servidor:~# chmod +x /etc/rc.d/rc.wicd
Inicia al proceso demonio o servidor de Wicd:
root@servidor:~# /etc/rc.d/rc.wicd start
Como usuario alumno ejecuta el cliente gráfico de Wicd y configura las interfacez de red de acuerdo a tus necesidades:
alumno@servidor:~$ wicd-client
NetworkManager
NetworkManager es una utilidad de software para simplificar el uso de redes de computadoras en Linux y otros sistemas operativos basados en Unix. Red Hat inició el proyecto NetworkManager en 2004 con el objetivo de permitir que los usuarios de Linux hacer frente con mayor facilidad a las necesidades de redes modernas, en particular, de redes inalámbricas. - Wikipedia
NetworkManager ya forma part de Slackware Linux y los paquetes relacionados a él son:
root@servidor:~# ls -1 /var/log/packages/ | grep -i network.*manager
NetworkManager-1.2.2-x86_64-2
network-manager-applet-1.2.2-x86_64-1
Importante: desactiva a Wicd si harás uso de NetworkManager:
Deten la ejecución del proceso demonio o servidor de Wicd:
root@servidor:~# bash /etc/rc.d/rc.wicd stop
Quita los permisos de ejecución al script de init de Wicd:
root@servidor:~# chmod -x /etc/rc.d/rc.wicd
Para hacer uso de NetworkManager:
Asigna permisos de ejecución al script de init (escrito en Bash)
/etc/rc.d/rc.networkmanager
:root@servidor:~# chmod +x /etc/rc.d/rc.networkmanager
Inicia al proceso demonio o servidor de NetworkManager:
root@servidor:~# /etc/rc.d/rc.networkmanager start
Como usuario alumno configura las interfacez de red de acuerdo a tus necesidades:
En KDE ya debe existir un applet o ícono que indique el estado actual de la conexión de red en la barra de tareas.
En Xfce puedes ejecutar el comando nm-applet.