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:

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:

  1. Liberar cualquier dirección IP asociada en este momento a la interfaz de red:

     root@servidor:~# ip addr flush dev eth0 up
    
  2. Deter la interfaz de red:

     root@servidor:# ip link set dev eth0 down
    
  3. Asignar la dirección IP y mascara de red:

     root@servidor:# ip addr add 192.168.3.94/16 dev eth0
    
  4. Actualizar la tabla de ruteo para indicar la puerta de enlace:

     root@servidor:# ip route add 192.168.0.1/16 dev eth0
    
  5. Reiniciar la interfaz de red:

     root@servidor:# ip link set dev eth0 up
    
  6. Configurar el servidor de nombre de dominio (DNS):

     root@servidor:# echo nameserver 192.168.0.1 > /etc/resolv.conf
    

Configuración dinámica

  1. Liberar cualquier dirección IP asociada en este momento a la interfaz de red:

     root@servidor:# ip addr flush dev eth0 up
    
  2. Deter la interfaz de red:

     root@servidor:# ip link set dev eth0 down
    
  3. 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:

  1. Detener a dhclient:

     root@servidor:# dhclient -r -pf /root/dhclient.pid
    
  2. 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:

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
  1. 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
    
  2. 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=...
     }
    
  3. 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
  1. 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
     }
    
  2. 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

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:

  1. Se ingresa el nombre de host o Nombre de equipo:

    images/01.png

    Cabe mencionar que el localhost es un nombre de host asociado a la interfaz de red virtual lo o loopback.

  2. Se ingresa el nombre de dominio, relacionado a la idea detras de DNS (Domain Name System o Sistema de nombres de dominio)

    images/02.png

    Podría ser cualquier otro valor pero por cuestiones de simplicidad se sugiere hacer uso de localdomain.

  3. Selecciona la opción de loopback para configurar por default y únicamente a la interfaz lo o de loopback.

    images/03.png

  4. Se te indica la dirección IP y la mascara de red a usar para la interfaz lo:

    images/04.png

  5. Se te indica la aceptación de la configuración básica de la red.

    images/05.png

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:

  1. Deten la ejecución del proceso demonio o servidor de NetworkManager:

     root@servidor:~# bash /etc/rc.d/rc.networkmanager stop
    
  2. 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:

  1. 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
    
  2. Inicia al proceso demonio o servidor de Wicd:

     root@servidor:~# /etc/rc.d/rc.wicd start
    
  3. 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:

  1. Deten la ejecución del proceso demonio o servidor de Wicd:

     root@servidor:~# bash /etc/rc.d/rc.wicd stop
    
  2. 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:

  1. 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
    
  2. Inicia al proceso demonio o servidor de NetworkManager:

     root@servidor:~# /etc/rc.d/rc.networkmanager start
    
  3. 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.