Administración y configuración de los servicios en red

De Sistemas Operativos II

Contenido

La red en sistemas GNU/Linux

Los sistemas GNU/Linux disponen de un conjunto de comandos que permiten la configuración puntual de parámetros de red. Las configuraciones realizadas puntualmente mediante los comandos no persisten al realizar la reinicialización del sistema operativo. A mayores de estos comandos, existen ciertos ficheros de configuración que permiten la realización de configuraciones que, de forma contraria a los cambios realizados por los comandos, son persistentes.

La configuración de dispositivos de red requiere en primera instancia, disponer de un kernel con el soporte para el dispositivo concreto bien sea en forma de módulo o en el propio kernel. Normalmente, sistemas como Ubuntu ejecutan una autodetección del hardware durante el inicio permitiendo que se detecten los dispositivos de red (y otros) cargando automáticamente aquellos módulos que fuera necesario necesarios.

Tal como se ha visto anteoriormente, para comprobar que se han cargado los módulos que implementan los drivers del hardware de red se pueden emplear los comandos lsmod, lspci y lsusb. Si el hardware se ha detectado correctamente, las tarjetas de red deberían aparecer ejecutando el comando ifconfig -a. El comando ifconfig que se encuentra en el directorio /sbin el cual sólo se incluye en el PATH del usuario root por contener este último aplicaciones específicas para la administración del sistema. Por lo tanto para ejecutar ifconfig empleando un usuario sin privilegios es necesario especificar la ruta completa /sbin/ifconfig/). ifconfig puede ser empleado por usuarios sin privilegios para mostrar la configuración (nunca para modificarla).

Entre los comandos más importantes para la configuración de red se encuentra el comando ifconfig que permite obtener un listado de las interfaces (dispositivos) de red habilitadas y su configuración. La opción -a permite mostrar los dispositivos de red aunque no se encuentren habilitados. A continuación se muestra un ejemplo de configuración de interfaces.

# ifconfig
eth0      Link encap:Ethernet  HWaddr 16:db:60:6a:2e:f9  
          inet addr:193.147.86.249  Bcast:193.147.86.255  Mask:255.255.255.0
          inet6 addr: fe80::14db:60ff:fe6a:2ef9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5792487 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1469383 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:854447384 (814.8 MiB)  TX bytes:598874140 (571.1 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:21514397 errors:0 dropped:0 overruns:0 frame:0
          TX packets:21514397 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:4012167286 (3.7 GiB)  TX bytes:4012167286 (3.7 GiB)

El resultado del anterior comando indica que existen dos interfaces de red (eth0 y lo) y sus configuraciones. Por otro lado indica el tráfico transmitido y recibido desde que han sido habilitadas. Sin embargo, la opción -a puede indicar que existen dispositivos que, siendo reconocidos por el sistema operativo, no se encuentran habilitados como el siguiente ejemplo.


# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 16:db:60:6a:2e:f9  
          inet addr:193.147.86.249  Bcast:193.147.86.255  Mask:255.255.255.0
          inet6 addr: fe80::14db:60ff:fe6a:2ef9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5795265 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1469707 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:854799918 (815.2 MiB)  TX bytes:599093164 (571.3 MiB)

eth1      Link encap:Ethernet  HWaddr ba:b6:b0:be:43:b5  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:21517205 errors:0 dropped:0 overruns:0 frame:0
          TX packets:21517205 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:4013306969 (3.7 GiB)  TX bytes:4013306969 (3.7 GiB)

Normalmente, existen tres tipos de interfaces en linux (dispositivos):

  1. Las interfaces (dispositivos) ethernet: estos dispositivos se configuran y manejan usando exclusivamente ifconfig.
  2. Las interfaces (dispositivos) inalámbricos: a estos dispositivos el kernel les asigna un nombre wlanX donde X es un número que se asigna consecutivamente a cada dispositivo que haya detectado el sistema. Estos dispositivos se configuran y manejan con las utilidades iwconfig e iwlist.
  3. La interfaz de loopback: Siempre está presente en todos los equipos y se reconoce porque su nombre es lo y tiene asignada la dirección IP 127.0.0.1/8. El /8 es una notación comunmente usada en sistemas y redes y hace referencia al número de bits activos de la máscara. Dado que el número de bits activos en la máscara es 8, esta sólo puede ser 255.0.0.0.

Configuración no persistente de interfaces ethernet

Para cualquier operación de configuración y administración de las interfaces de red se empleará el comando ifconfig como administrador (sesión interactiva como administrador con sudo -s o simplemente usando sudo).

Para deshabilitar y/o habilitar una interfaz de red se usaran los siguientes comandos (asumiendo que eth0 es la interfaz):

# ifconfig eth0 down

# ifconfig eth0 up

Para cambiar o definir la configuración para la interfaz de red (eth0 en el ejemplo con la dirección IP 192.168.1.1/24) se empleará una sintaxis similar a la usada en el siguiente ejemplo.

# ifconfig eth0 192.168.1.1 netmask 255.255.255.0

En el mismo comando es posible realizar un cambio de configuración y la habilitación del interfaz de red usando la siguiente sintaxis:

# ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up

Estas son las operaciones habituales de configuración de interfaces. Para cualquier otra operación, se consultará el manual de la aplicación ('man ifcnofig').

Una vez establecida la dirección IP y la máscara de subred para una determinada interfaz, será necesario configurar adecuadamente la tabla de enrutamiento para lograr que la configuración de red funcione correctamente. En este sentido, las tablas de enrutamiento permiten especificar la interfaz de red por la cual se puede alcanzar una determinada red y, en el caso de ser necesario, la puerta de enlace con dicha red. Por otra banda se puede especificar la puerta de enlace por defecto para el acceso a redes no previstas en la tabla de enrutamiento. Normalmente, al especificar una configuración de red para un dispositivo de red (por ejemplo al configurar eth0 con la dirección IP 192.168.1.12/24) ya se incluye una ruta de forma automática que permite acceder desde la interfaz configurada a la red (en el ejemplo se crearía la ruta 192.168.1.0/24 mediante el dispositivo eth0). Sin embargo, es necesario establecer la ruta a otras redes de forma manual así como la ruta por defecto que especifica normalmente la pasarela que da acceso a Internet.

Para mostrar y modificar la tabla de rutas se empleará el comando route (/sbin/route) que, en el caso de modificación, deberá ser ejecutado como usuario root (considerar el uso de sudo, su, etc.). Para mostrar la tabla de rutas sólo es necesario introducir el comando route sin argumentos aunque se suele emplear el flag -n para indicar que no se realicen resoluciones de las direcciones IP y, por lo tanto, obtener una salida más rápida y en forma de direcciones ip del comando. Nota: también se puede obtener la tabla de enrutamiento con el comando netstat -nr

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.3.2     0.0.0.0         255.255.255.255 UH    0      0        0 tun0
192.168.3.0     192.168.3.2     255.255.255.0   UG    0      0        0 tun0
192.168.2.0   0.0.0.0         255.255.255.0   U     0      0        0 eth1
193.147.87.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         193.147.87.1    0.0.0.0         UG    0      0        0 eth0

# netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.3.2     0.0.0.0         255.255.255.255 UH        0 0          0 tun0
192.168.3.0     192.168.3.2     255.255.255.0   UG        0 0          0 tun0
192.168.2.0   0.0.0.0         255.255.255.0   U         0 0          0 eth1
193.147.87.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0
0.0.0.0         193.147.87.1    0.0.0.0         UG        0 0          0 eth0

Para añadir una ruta a una red (por ejemplo 192.168.2.0/24) a través de un dispositivo de red (por ejemplo eth1) se ejecutará el siguiente comando route add -net 192.168.2.0 netmask 255.255.255.0 eth1. Dado que al establecer la configuración IP para un dispositivo se añade automáticamente una ruta para acceder a esta red, y que, para poder acceder a una red a través de una interfaz de red sin atravesar una puerta de enlace, dicha interfaz de red debe estar configurada con una IP de la misma red, la ejecución del comando especificado anteriormente sólo se realizará si se ha borrado previamente la ruta. Por otro lado, si para acceder a la red 192.168.4.0/24 a través del dispositivo eth1 es necesario usar una puerta de enlace (que debe estar necesariamente en las redes alcanzables por la interfaz eth1) 192.168.2.58, se incluiría la siguiente ruta:

# route add -net 192.168.4.0 netmask 255.255.255.0 gw 192.168.2.58 eth1
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.3.2     0.0.0.0         255.255.255.255 UH    0      0        0 tun0
192.168.4.0     192.168.2.58  255.255.255.0   UG    0      0        0 eth1
192.168.3.0     192.168.3.2     255.255.255.0   UG    0      0        0 tun0
192.168.2.0   0.0.0.0         255.255.255.0   U     0      0        0 eth1
193.147.87.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         193.147.87.1    0.0.0.0         UG    0      0        0 eth0

Para borrar rutas de la tabla de enrutamiento se usa la misma sintaxis que para añadir sustituyendo add por del. Ejemplo route del -net 192.168.4.0 netmask 255.255.255.0 gw 192.168.2.58 eth1.

Para establecer la ruta por defecto (en la que se configura habitualmente la pasarela que da acceso a Internet) se usa una sintaxis muy similar usando la configuración default. A continuación se muestra un ejemplo de uso.

# route add default gw 193.147.87.1 eth0

Finalmente, dado que es necesario configurar el uso del servicio DNS (Domain Name System) se editará el fichero /etc/resolv.conf para incluir los DNS correspondientes y el dominio de búsqueda por defecto. Así se usarán líneas nameserver para especificar cada uno de los servidores de nombres que se usarán, una línea search para especificar los sufijos de búsqueda anexados automáticamente, y una línea domain para especificar el dominio al que pertenece el equipo. Para competar la información sobre configuración DNS se puede ejecutar man resolv.conf. A continuación se muestra un fichero /etc/resolv.conf de ejemplo:

# cat /etc/resolv.conf
domain uvigo.es
search uvigo.es
nameserver 193.146.32.86 #DNS from UVigo
nameserver 193.146.32.228
nameserver 8.8.8.8 #DNS from google

Cuando se desean configurar interfaces (dispositivos) de red mediante el uso de servidores DHCP (Dynamic Host Configuration Protocol) se usará el comando dhclient especificando como argumento el nombre de la interfaz que se desea configurar mediante DHCP. Es importante tener en cuenta la necesidad de disponer de un servidor DHCP en la red que ofrezca configuraciones válidas para los equipos de red. Normalmente las configuraciones ofrecidas por servidores DHCP incluyen la configuración de DNS y tabla de rutas. En caso de no incluirlo habrá que realizar estas configuraciones a mayores.

# dhclient eth0

Configuración no persistente de interfaces inalámbricas

Para configurar dispositivos inalámbricos se usan los comandos iwconfig, iwlist, iwpriv y los incluídos en el kit wpasupplicant que permiten la definición específica de parámetros de red y la asociación del dispositivo a una determinada red inalámbrica. La configuración de los parámetros IP se realiza de la misma forma que los dispositivos ethernet (Revisar la documentación del correspondiente apartado).

El comando iwpriv permite habilitar o deshabilitar características específicas de los dispositivos habilitadas a nivel de driver (por ejemplo habilitar el soporte de alta potencia en dispositivos con capacidad para emitir microondas con mayor energía) características del driver r8187.

La configuración de conexiones de dispositivos de red inalámbricos a redes abiertas o de tipo WEP (Wired Equivalent Privacy) se puede realizar de forma muy sencilla mediante los comandos iwconfig e iwlist. El comando iwlist permite obtener listas de redes WEP y abiertas disponibles y determinar algunas configuraciones del dispositivo de red como la frecuencia usada, la velocidad de conexión o el canal en el que se encuentra configurado el dispositivo. Normalmente, iwlist se usa únicamente para recopilar las redes wifi disponibles. Para esta tarea se ejecutará el comando:

# iwlist wlan0 scanning 
wlan0     Scan completed :
          Cell 01 - Address: 00:08:AB:A4:DC:5A
                    ESSID:"prueba"
                    Mode:Master
                    Frequency:2.432GHz
                    Quality:0/92  Signal level:-94 dBm  Noise level:-99 dBm
                    Encryption key:on
                    Bit Rate:1Mb/s
                    Bit Rate:2Mb/s
                    Bit Rate:5.5Mb/s
                    Bit Rate:11Mb/s

Una vez detectada una red WEP o abierta a la que se desea conectar, se usará el comando iwconfig para conectar la interfaz inalámbrica a dicha red.

sudo iwconfig wlan0 essid prueba

Además, cuanto Encryption key tenga el valor on habrá que especificar la clave WEP lo cual se hará con el siguiente comando:

sudo iwconfig wlan0 key clave

En el caso de redes WPA (Wifi Protected Access), la configuración resultará más compleja debiendo emplear las herramientas proporcionadas en el paquete wpasupplicant. Por lo tanto, para estos efectos habrá que instalar dicho paquete mediante apt-get install wpasupplicant wireless-tools. Una vez instalado wpasuplicant, se creará un fichero de configuración mediante la herramienta wpa_passphrase especificando el SSID de la red (en el ejemplo prueba) y la clave de acceso (en el ejemplo 'clave'):

# wpa_passphrase prueba claveclave > /root/wpa.conf

Este comando genera un fichero /root/wpa.conf con el ssid y la clave compartida tal como el siguiente:

network={
	ssid="prueba"
	#psk="claveclave"
	psk=fd5b6196092b2860a1c0e45e3b28b235f96aa8b57dd55bf5c3f16ca77f9d0ea9
}

Finalmente, asumiendo el driver de conexion WPA wext (comprobar el soporte de dispositivos y drivers en la página oficial de wpasupplicant), la interfaz de red wlan0 y el fichero de configuración generado, se realizará la conexión con el siguiente comando:

# wpa_supplicant -Dwext -iwlan0 -c/root/wpa.conf

Con estos sencillos pasos la interfaz de red se conecta a la red inalámbrica restando únicamente activar la interfaz y establecer su configuración IP con los comandos que se han introducido anteriormente con los comandos ifconfig y dhclient.

Configuración persistente de interfaces y rutas

Para configurar interfaces de red de forma persistente (y que se cargue la configuración cada vez que se inicia el equipo) se usa el fichero /etc/network/interfaces. El script de inicio /etc/init.d/networking es el encargado de desplegar la configuración de este fichero durante el arranque del ordenador. Este fichero tiene una estructura similar a la siguiente:

auto lo

iface lo inet loopback 

auto eth0
iface eth0 inet static
      address 192.168.2.40
      netmask 255.255.255.0
      network 192.168.2.0
      broadcast 192.168.1.255
      gateway 192.168.2.1

auto eth1
iface eth1 inet dhcp

auto wlan0
iface wlan0 inet static
      wireless-essid prueba
      wireless-key clave
      address 192.168.3.40
      netmask 255.255.255.0
      network 192.168.3.0
      broadcast 192.168.1.255
      gateway 192.168.3.1

auto wlan1
iface wlan1 inet dhcp
      wireless-essid prueba2
      wireless-key clave

En el fichero anterior se indica que se cargarán automáticamente las configuraciones de todos los dispositivos lo, eth0 y eth1... etc. (auto lo, auto eth0, auto eth1'...'). La interfaz lo corresponde con la interfaz de loopback y se configura siendo con una dirección de internet (TCP-IP) de loopback (127.0.0.1). La interfaz eth0 se configura con una dirección estática y una máscara de subred (192.168.2.40/24), que pertenecen a la red (192.168.2.0) que tiene dirección de broadcast 192.168.1.255 y en la tabla de rutas, la puerta de enlace por defecto será la 192.168.2.1. Finalmente, la interfaz de red eth1 se configura mediante el protocolo DHCP de forma automática. En el caso de configuraciones de redes abiertas o WEP, se usarán sintaxis similares a las establecidas para las configuraciones de las interfaces wlan0 y wlan1 de los cuales, el primero se configura con dirección estática y el segundo mediante el protocolo DHCP.

En el caso de redes WPA, se sustituirán las configuraciones de los dispositivos wlan0 y wlan1 por la siguiente:

auto wlan0
iface wlan0 inet static
       wpa-ssid prueba
       wpa-psk fd5b6196092b2860a1c0e45e3b28b235f96aa8b57dd55bf5c3f16ca77f9d0ea9
       address 192.168.3.40
       netmask 255.255.255.0
       network 192.168.3.0
       broadcast 192.168.1.255
       gateway 192.168.3.1

auto wlan0
iface wlan0 inet dhcp
       wpa-ssid prueba2
       wpa-psk fd5b6196092b2860a1c0e45e3b28b235f96aa8b57dd55bf5c3f16ca77f9d0ea9

donde fd5b6196092b2860a1c0e45e3b28b235f96aa8b57dd55bf5c3f16ca77f9d0ea9 es la pre-shared key (psk) generada con el comando wpa_passphrase prueba claveclave.

IP aliasing

Con GNU-Linux es posible disponer de varias direcciones IP (incluso de distintas redes) colocadas en una misma interfaz de red. Así por ejemplo, es posible implementar un enrutador (una puerta de enlace) usando únicamente un único dispositivo de red. Obviamente las dos redes IP que enrutará Linux deben usar el mismo medio físico (cable) poder realizar el enrutamiento con una misma tarjeta de red.

En un mismo medio físico (cable, por ejemplo) podrían convivir dos redes IP (por ejemplo 192.168.1.0/24 y 192.168.2.0/24). Esto no plantea problema físico ni lógico alguno de forma que se podrán conectar al cable equipos que pertenezcan a la primera red y otros que pertenezcan a la segunda sin que haya ninguna interferencia ni problema de transmisión. Obviamente, aunque dos redes IP compartan el mismo medio físico, de forma lógica y acorde con las reglas de TCP-IP, no será posible la comunicación entre un equipo de la primera red y un equipo de la segunda a menos que exista un enrutador entre ambas redes.

Gracias al IP aliasing, para poder implementar un equipo enrutador entre ambas redes, no será necesario disponer de dos dispositivos de red. La primera regla básica de un enrutador es que para poder enrutar tráfico entre dos redes el enrutador debe participar en ambas redes. Para ello, se puede crear un álias de la interfaz de red eth0 llamado eth0:0 de forma que eth0 participa en la primera red y eth0:0 participa en la segunda red. La creación de un alias se realiza con el comando ifconfig y consiste únicamente en definir una configuración IP para él. Ver el siguiente ejemplo:

# ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up
# ifconfig eth0:0 192.168.2.1 netmask 255.255.255.0 up

Una vez definida la configuración para la interfaz de red y su alias, para implementar un router se activará el reenvío IP.

# echo 1 > /proc/sys/net/ipv4/ip_forward

Finalmente, será necesario configurar en la tabla de rutas de las distintas redes, la puerta de enlace para alcanzar cada una de las redes (a excepción del router que puede alcanzar las dos redes por definición). Así en los equipos pertenecientes a la red 192.168.1.0/24 habrá que indicar que para alcanzar la red 192.168.2.0/24 habrá que usar la pasarela 192.168.1.1 y en los equipos pertenecientes a la red 192.168.2.0/24 habrá que indicar que para alcanzar la red 192.168.1.0/24 habrá que usar la pasarela 192.168.2.1.

Para borrar un alias de red sólo es necesario deshabilitarlo con el comando ifconfig: ifconfig eth0:0 down.

Routing

El routing consiste en la técnica que permite en reenvío de paquetes a través de otras interfaces para realizar comunicaciones entre dos redes IP distintas. Activar el routing es tan sencillo como ejecutar el comando:

# echo 1 > /proc/sys/net/ipv4/ip_forward

Enmascaramiento

El enmascaramiento de paquetes es una técnica que se aplica especialmente para compartir conexiones de Internet entre equipos de una red privada. Supongamos que tenemos un equipo con una conexión a Internet y una conexión a una red local privada 192.168.2.0/24. Los equipos de la red privada no pueden acceder a Internet porque las direcciones de la red son de uso privado y existen millones de redes 192.168.2.0/24 así que es imposible realizar el encamientamiento a esta red. ¿Cómo se puede compartir entonces la conexión? La técnica del enmascaramiento consiste en que el router cede su IP pública en el momento del routing a la petición del equipo de la red interna (haciendo un cambio en la cabecera correspondiente). Cuando se recibe respuesta a la petición IP, el router es capaz de restaurar de nuevo la dirección IP original de la petición y entregar de forma trasparence la respuesta al equipo que origina la petición.

Para realizar esta operación se usa el firewall de linux (iptables, ipchains o ipfwadm dependiendo del kernel). En los kernels 2.6 se usa el comando iptables para modificar el chain POSTROUTING de la tabla nat de Netfilter (el firewall de Linux 2.6). El comando sería el siguiente:

# iptables -t nat -I POSTROUTING -s 192.168.2.0/24 -j MASQUERADE

Este comando significa que habilite el enmascaramiento en todas las peticiones que provengan de la red 192.168.2.0/24. La tabla de firewaling y el chain son conceptos que se enseñarán en la sección sobre firewalling. En el caso del enmascaramiento es necesario usar la tabla nat con el chain POSTROUTING.

iproute 2

Paulatinamente se están sustituyendo los comandos usados tradicionalmente para configurar la red por la suite iproute2. Esta suite es un conjunto de utilidades que permite la administración de la red de una forma sencilla, práctica y más intuitiva. Esta suite está xa disponible en Ubuntu e será o reemplado das utilidades ifconfig, route, etc. No obstante, es necesario tener en cuenta que existen aún multitud de equipos que no disponen de la suite iproute2. En estos equipos habrá que seguir usando los comandos originales. En la asignatura de redes de computadores, los alumnos usarán fundamentalmente iproute2 constituyendo una magnífica oportunidad para desarrollar sus conocimientos en esta suite sin olvidar las herramientas originales.

En la web se puede encontar el Linux Advanced Routing & Traffic Control HOWTO que pretende ser un manual intensivo de cómo manejar la red en GNU Linux de forma avanzada. Buscando en la red hemos encontrado esta traducción al español.

Otras utilidades

Una herramienta muy interesante a la hora de configurar y elaborar redes es ipcalc. Esta herramienta permite el cálculo sencillo de redes IPv4. Para usarla, simplemente hay que instalar el paquete ipcalc mediante el comando apt-get install ipcalc. A continuación se muestra un ejemplo sencillo de uso.

$ sudo apt-get install ipcalc
[sudo] password for moncho: 
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes NUEVOS:
  ipcalc
0 actualizados, 1 se instalarán, 0 para eliminar y 50 no actualizados.
Necesito descargar 26,4kB de archivos.
Se utilizarán 131kB de espacio de disco adicional después de esta operación.
Des:1 http://ftp.debian.org lenny/main ipcalc 0.41-1 [26,4kB]
Descargados 26,4kB en 0s (77,9kB/s)
Seleccionando el paquete ipcalc previamente no seleccionado.
(Leyendo la base de datos ...  
64501 ficheros y directorios instalados actualmente.)
Desempaquetando ipcalc (de .../archives/ipcalc_0.41-1_all.deb) ...
Procesando disparadores para man-db ...
Configurando ipcalc (0.41-1) ...
$ ipcalc 192.168.1.32/27
Address:   192.168.1.32         11000000.10101000.00000001.001 00000
Netmask:   255.255.255.224 = 27 11111111.11111111.11111111.111 00000
Wildcard:  0.0.0.31             00000000.00000000.00000000.000 11111
=>
Network:   192.168.1.32/27      11000000.10101000.00000001.001 00000
HostMin:   192.168.1.33         11000000.10101000.00000001.001 00001
HostMax:   192.168.1.62         11000000.10101000.00000001.001 11110
Broadcast: 192.168.1.63         11000000.10101000.00000001.001 11111
Hosts/Net: 30                    Class C, Private Internet

Monitorización de la red e identificación básica de problemas

Herramientas gráficas

Etherape es un paquete Ubuntu que incluye la herramienta etherape que permite la visión den tiempo real del tráfico que se está produciendo en una red. Permite, de forma muy intuitiva, detectar problemas en la red relativos a sobretráfico, etc.

WireShark es el antiguo Ethereal capaz de monitorizar el tráfico de red, ver cabeceras, etc. Este sofware es estudiado en la asignatura de Redes para enseñar a los alumnos las estructuras de los paquetes ip.

Herramientas en consola

La herramienta ping es una herramienta fundamental para comprobar si dos ordenadores se pueden comunicar. Hay que tener en cuenta que algunos operadores de Internet cortan mediante firewalls la comunicación del protocolo ICMP impidiendo el uso de esta herramienta.

La herramienta traceroute permite ver la ruta seguida por un paquete para llegar desde un equipo a otro y los retardos que se pueden producir entre estos paquetes.

La herramienta tcpdump permite ver el tráfico manejado por un interfaz de red. Es una herramienta muy intersante ya que permite la definición de filtros para eliminar de la salida ciertos paquetes. Se recomienda usar la opción -n (do not resolve) para obtener más rápidamente los paquetes.

La herramienta tshark es el reemplazo de wireshark para consola.

La herramienta iptraf permite ver en tiempo real el tráfico manejado por las interfaces de red.

La herramienta nmap permite buscar en equipos remotos servicios (puertos) que están activos. Además, empleando una técnica de envío de paquetes IP imposibles (con combinaciones de flags que resultan imposibles o no están contempladas en los RFC) y observando la respuesta de los distintos sistemas operativos, es capaz de determinar el sistema operativo remoto.

Despliegue básico de firewalls con iptables

Una de las mayores ventajas del uso de GNU/Linux y otros sistemas operativos de código abierto es su facilidad para el despliegue de firewalls. En el caso de GNU Linux ha habido históricamente 3 generaciones de firewalls:

  • ipfwadm: proveniente de los kernels 2.0.x
  • ipchains: proviende de los kernels 2.2.x
  • netfilter: proviene de los kernels 2.4 y se sigue usando en los nuevos kernels 2.6

Para administrar los firewalls actuales se usa el comando iptables. El firewall de netfilter incorpora, con respecto a ipchains, el concepto de tabla (especificado con la opción -t). Las tablas sirven para organizar las operaciones que se realizan con el tráfico. Así, ipchains incorpora 3 tablas:

  • Filter: Es la tabla usada para descartar paquetes, responder negativamente a su aceptación (mediante ICMP)y realizar el log de los mismos. Es la tabla por defecto así que no hay que especificar nada para incluir reglas en esta tabla (-t filter).
  • Nat: Es la tabla que se usa cuando se desea incluir reglas para modificar la dirección IP o el puerto de origen y destino de los paquetes (-t nat)
  • Mangle: Es la tabla que se usa para incluir reglas que permiten modificar datos de los paquetes que no sean los de nat (-t mangle).

Cada una de las tablas se encuentra estructurados en chains (cadenas). Todas las reglas deben situarse en una tabla y un chain. Así por ejemplo existen los siguientes chains:

  • Filter:
    • INPUT: Reglas para filtrar paquetes de entrada
    • OUTPUT: Reglas para filtrar paquetes de salida
    • FORWARD: Reglas para filtrar paquetes de routing
  • Nat:
    • PREROUTING: Reglas a aplicar antes del routing
    • POSTROUTING: Reglas a aplicar después del roting
  • Mangle: Contiene todos los chains incluídos en filter y Nat

OpenSSH

OpenSSH es una potente herramienta para la administración remota de equipos, trasferencia de ficheros y acceso a los sistemas de red. Ver [1].

Instalación

Para instalar SSH (cliente y servidor) simplemente es necesario teclear el comando apt-get install ssh como usuario administrador (por ejemplo usando sudo). La instalación del servidor implica la creación de un par de claves con un algoritmo asimétrico (generalmente DSA) que permitirán posteriormente identificar unívocamente al equipo servidor cuando se realicen conexiones remotas. Si se quiere instalar únicamente el cliente o el servidor se considerará instalar únicamente el paquete openssh-client o openssh-server respectivamente (válido en Ubuntu).

Uso de OpenSSH para sesiones remotas

OpenSSH se puede emplear como reemplazo de ciertos clientes de sesión remota como telnet o rlogin. Estos últimos poseían el defecto de que todas las comunicaciones se realizaban de forma no encriptada. El uso de programas como ettercap permite obtener claves de usuarios que emplean este tipo de protocolos de una forma sencilla. Por este motivo el empleo de ciertos esquemas criptográficos para las comunicaciones por red es recomendable.

Para realizar una conexión con un servidor ssh se emplea el comando ssh. Ejemplo: ssh moncho@so2.atopa.me.

Identificación unívoca del equipo

Para identificar unívocamente al equipo servidor, el servidor genera un par de claves. La primera vez que un cliente se conecta no puede reconocer si el servidor es realmente el servidor al que se quiere conectar. Es por ello que el cliente ssh indica que existe un riesgo potencial de estar conectado a otro equipo distinto. Si se confirma la acción de conexión, el cliente almacena en ~/.ssh/known_hosts la clave pública del servidor remoto. En las siguientes conexiones, el cliente es capaz de verificar que se está conectando al mismo servidor que la primera vez. Para ello ssh implementa un protocolo de desafío por el cual encipta un texto aleatorio con la clave pública del servidor. El servidor será el seleccionado con el cliente si tiene la clave privada que desencripta el desafío del cliente y es capaz de enviar al cliente el texto original aleatorio descifrado.

References

Plantilla:Reflist

Herramientas personales