Herramientas personales

Configuración de interfaces de red

De Proyectos GULIX

Tabla de contenidos

Como controla el kernel GNU/Linux las interfaces de red

En muchos sistemas operativos Unix los dispositivos de red tienen correspondencias en el directorio /dev. Esto no pasa en Linux. Los dispositivos de red se crean de forma dinámica y por tanto no requieren de la presencia de ficheros de dispositivo. En la mayoría de los casos los dispositivos de red son creados automáticamente por el controlador de dispositivos mientras se inicia y localiza el hardware.

Por ejemplo, el controlador Ethernet crea interfaces eth[0..n] secuencialmente según va encontrado tarjetas Ethernet. La primera tarjeta que encuentra es eth0, la segunda eth1, etc.

Sin embargo, en algunos casos, de los que slip y ppp son ejemplos notables, los dispositivos de red son creados por la acción de algún programa de usuario. Se aplica la misma numeración secuencial de dispositivos, pero no se crean al arrancar. La razón es que al contrario que con los dispositivos Ethernet, el número de dispositivos ppp o slip puede variar durante la actividad de la máquina.


Un equipo Linux puede tener diversas interfaces de red (NIC, Network Interface Card), El Kernel controla los nombres de las interfaces dependiendo el tipo de interfaz sea o del driver que estas estén utilizando, así las interfaces podrían ser llamadas de la siguiente forma

* Loopback: lo. 
* Ethernet: eth0, eth1...
* Modem: ppp0, ppp1...
* Wi-Fi: wlan0, wlan1... ( en este caso algunos drivers privativos cambian el nombre de la interfaz,
                           como por ejemplo atheros utiliza athX )
* BlueTooth: hci0, hci1...
* Token Ring: tr0, tr1...


Para listar las interfaces de red disponibles en una máquina GNU/Linux, es posible hacerlo con el comando:

ifconfig -a

Ejemplo de interfaces disponibles en una máquina GNU/Linux

dalacost@urano:~$ sudo ifconfig -a
eth0      Link encap:Ethernet  direcciónHW 00:1d:72:56:dc:f0  
         ACTIVO DIFUSIÓN MULTICAST  MTU:1500  Métrica:1
         Paquetes RX:52 errores:0 perdidos:0 overruns:0 frame:0
         Paquetes TX:70 errores:0 perdidos:0 overruns:0 carrier:0
         colisiones:0 long.colaTX:1000 
         Bytes RX:18090 (18.0 KB)  TX bytes:10684 (10.6 KB)
         Interrupción:27 Dirección base: 0x6000 

eth2      Link encap:Ethernet  direcciónHW 00:21:00:1b:6b:ed  
          Direc. inet:192.168.0.20  Difus.:192.168.0.255  Másc:255.255.255.0
          Dirección inet6: fe80::221:ff:fe1b:6bed/64 Alcance:Enlace
          ACTIVO DIFUSIÓN FUNCIONANDO MULTICAST  MTU:1500  Métrica:1
          Paquetes RX:460756 errores:0 perdidos:0 overruns:0 frame:2030962
          Paquetes TX:382780 errores:64 perdidos:0 overruns:0 carrier:0
          colisiones:0 long.colaTX:1000 
          Bytes RX:558308874 (558.3 MB)  TX bytes:47980208 (47.9 MB)
          Interrupción:21 

lo        Link encap:Bucle local  
          Direc. inet:127.0.0.1  Másc:255.0.0.0
          Dirección inet6: ::1/128 Alcance:Anfitrión
          ACTIVO LOOPBACK FUNCIONANDO  MTU:16436  Métrica:1
          Paquetes RX:1717 errores:0 perdidos:0 overruns:0 frame:0
          Paquetes TX:1717 errores:0 perdidos:0 overruns:0 carrier:0
          colisiones:0 long.colaTX:0 
          Bytes RX:112999 (112.9 KB)  TX bytes:112999 (112.9 KB)

pan0      Link encap:Ethernet  direcciónHW da:90:27:8e:6b:ac  
          DIFUSIÓN MULTICAST  MTU:1500  Métrica:1
          Paquetes RX:0 errores:0 perdidos:0 overruns:0 frame:0
          Paquetes TX:0 errores:0 perdidos:0 overruns:0 carrier:0
          colisiones:0 long.colaTX:0 
          Bytes RX:0 (0.0 B)  TX bytes:0 (0.0 B)

Configuración de interfaces de red mediantes comandos

Cuando hablamos de configurar una interfaz de red nos referimos al proceso de asignar direcciones lógicas ( una o varias) o parámetros a un dispositivo físico o virtual específico,

El comando necesario para realizar estas configuraciones es ifconfig

un ejemplo de como utilziar ifconfig:

ifconfig [PARAMETROS] <interfaz> [<dirección>] [PARAMETROS]
ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up

En el comando anterior lo que se ha configurado, es la interfaz de red eth0 con la dirección ip 192.168.0.1 y una máscara de subred 255.255.255.0, además se ha indicado que la tarjeta quedará en modo activo (up) después de la configuración.


Opciones de ifconfig

Para revisar todas las opciones de ifconfig, podemos ejecutar el comando ifconfig --help

root@urano:~# ifconfig --help
Uso:
  ifconfig [-a] [-v] [-s] <interfaz> [[<AF>] <dirección>]
  [add <address>[/<prefixlen>]]
  [del <address>[/<prefixlen>]]
  [[-]broadcast [<dirección>]] [[-]pointopoint [<dirección>]]
  [netmask <dirección>] [dstaddr <dirección>] [tunnel <dirección>]
  [outfill <NN>] [keepalive <NN>]
  [hw <HW> <dirección>] [metric <NN>] [mtu <NN>]
  [[-]trailers] [[-]arp] [[-]allmulti]
  [multicast] [[-]promisc]
  [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <tipo>]
  [txqueuelen <NN>]
  [[-]dynamic]
  [up|down] ...

  <HW>=Tipo de hardware.
  Lista de los posibles tipos de hardware:
    loop (Bucle local) slip (Línea serie IP) cslip (Línea serie IP VJ) 
    slip6 (Línea serie IP 6-bit) cslip6 (Línea serie IP VJ 6-bit) adaptive (Línea serie adaptativa IP) 
    strip (Metricom Starmode IP) ash (Ash) ether (Ethernet) 
    tr (Token Ring de 16/4 Mbps) tr (Token Ring de 16/4 Mbps (Nuevo)) ax25 (AMPR AX.25) 
    netrom (AMPR NET/ROM) rose (AMPR ROSE) tunnel (Túnel IPIP) 
    ppp (Protocolo punto a punto) hdlc ((Cisco)-HDLC) lapb (LAPB) 
    arcnet (ARCnet) dlci (Frame Relay DLCI) frad (Dispositivo de acceso Frame Relay) 
    sit (IPv6-en-IPv4) fddi (Interfaz de datos distribuidos por fibra) hippi (HIPPI) 
    irda (IrLAP) ec (Econet) x25 (X.25 genérico) 
    eui64 (EUI-64 Genérico) 
  <AF>=Familia de direcciones. Por defecto: inet
  Lista de posibles familias de direcciones:
    unix (Dominio UNIX) inet (DARPA Internet) inet6 (IPv6) 
    ax25 (AMPR AX.25) netrom (AMPR NET/ROM) rose (AMPR ROSE) 
    ipx (Novell IPX) ddp (Appletalk DDP) ec (Econet) 
    ash (Ash) x25 (CCITT X.25) 

descripción de opciones

-a Muestra todas las interfaces disponibles.
-s Muestra una lista corta con las interfaces.
-v Muestra más descripción cuando es necesaria.
<interfaz> Nombre de la interfaz
<dirección> Dirección que será asignada a la interfaz
<HW> Tipo de hardware asignado a la interfaz
<AF> Tipo de dirección que será asignada a la interfaz
up indica que la interfaz estará activa.
down indica que la interfaz estará desactivada


Ejemplos de configuración de interfaces mediantes comandos

Desactivar interfaz de red

ifconfig eth0 down

Crear una interfaz de red virtual

Revisar el apartado especialmente dedicado a esto.

ifconfig eth0:1 192.168.0.55

MAC Spoofing

Como cambiar la dirección MAC del dispositivo por una diferente en una interfaz de red llamada eth0:

ifconfig eth0 down
ifconfig eth0 hw ether 00:11:22:33:44:55 up


Especificar valor MTU diferente

La unidad máxima de transferencia (Maximum Transfer Unit - MTU) es un término que expresa el tamaño en bytes de la unidad de datos más grande que puede enviarse usando un Protocolo de Internet.

Para Ethernet, el tamaño máximo de un paquete a transmitir por transacción en TCP/IP por defecto es de 1500 bytes.

Para cambiar este valor:

ifconfig eth0 mtu XX

Dispositivos de red Inalámbricos ( wireless devices )

El comando iwconfig nos permite listar los dispositivos que tienen soporte inalámbrico:

root@urano:~# iwconfig 
lo        no wireless extensions.

eth0      no wireless extensions.

eth2      IEEE 802.11bg  ESSID:"Lacosox.org"  Nickname:""
          Mode:Managed  Frequency:2.427 GHz  Access Point: 00:14:78:53:43:98   
          Bit Rate=54 Mb/s   Tx-Power:32 dBm   
          Retry min limit:7   RTS thr:off   Fragment thr:off
          Power Managementmode:All packets received
          
pan0      no wireless extensions.


Comando iwlist

iwlist [interface] [opción]

Algunas opciones de iwlist:


scan: Nos mostrará información de todas las redes inalámbricas que nuestra tarjeta detecta. Obviamente en modo monitor dará cero resultados.

frequency: Nos mostrara los diferentes valores de frecuencia y su correspondencia en el numero de canal validos para nuestra tarjeta así como la frecuencia y el canal en el que se encuentra en esos momentos la tarjeta.

channel: Igual que el anterior

rate: Indica la velocidad de comunicación que nuestra tarjeta soporta así como la velocidad actual (mediante current bit rate)


Dispositivos de red Bluetooth

Bluetooth también permite crear redes WPAN (Wireless Personal Area Network, Red de Área Personal Inalámbrica),

Listar dispositivo Bluetooth soportados e instalados en el sistema

$ hciconfig

Comprobar que detecta el interfaz Bluetooth:

$ hcitool dev

Buscar dispositivos remotos (obtenemos la MAC del dispositivo):

$ hcitool scan

Investigar dispositivos remotos:

$ hcitool inq

Configuración de los DNS

Para establecer los servidores DNS que se encargarán de resolver los nombres, se debe editar el archivo /etc/resolv.conf

Este archivo debe contener la definición de los servidores, de la siguiente forma


nameserver 200.74.121.11
nameserver 190.160.0.11

Definición de nombres particulares

Editando el archivo /etc/hosts es posible asignar un nombre a una dirección específica.

ejemplo:

root@urano:~# ping router
ping: unknown host router
root@urano:~# cat /etc/hosts
127.0.0.1	localhost
127.0.1.1	urano
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
root@urano:~# echo '192.168.0.1 route' >> /etc/hosts
root@urano:~# cat /etc/hosts
127.0.0.1	localhost
127.0.1.1	urano
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
192.168.0.1 route
root@urano:~# ping route
PING route (192.168.0.1) 56(84) bytes of data.
64 bytes from route (192.168.0.1): icmp_seq=1 ttl=64 time=2.63 ms
64 bytes from route (192.168.0.1): icmp_seq=2 ttl=64 time=3.58 ms
^C

Interfaces de red virtuales

Las interfaces de red virtuales nos sirven para tener varias direcciones IP utilizando una misma tarjeta de red, y así ofrecer servicios en cada una estas direcciones. Esto puede hacerse usando una técnica llamada IP Aliasing

El descripción del comando a utilizar es :

ifconfig dispositivo:numero_interfaz_virtual ip/bits_libres_de_mascara


Para este ejemplo utilizaremos una red local. En éste caso, la IP maestra de la máquina es 192.168.0.1, y las direcciones IP virtuales son 192.168.0.20, 192.168.0.55, y 192.168.0.201. (Todas estas driecciones IP son privadas.).

Le asignaremos todas estas direcciones IP al mismo dispositivo físico, pero con dispositivos lógicos diferentes:


ifconfig eth0 192.168.0.1
ifconfig eth0:0 192.168.0.20
ifconfig eth0:1 192.168.0.55
ifconfig eth0:2 192.168.0.201


La máquina ahora estará recibiendo peticiones para las cuatro IPs. Esto se logró creando dispositivos de red virtuales para manejar las peticiones.

Enrutamientos

Configuración de la puerta de enlace

ejemplo de como cambiar la puerta de enlace mediante el comando route

root@urano:~# route
Tabla de rutas IP del núcleo
Destino         Pasarela        Genmask         Indic Métric Ref    Uso Interfaz
192.168.0.0     *               255.255.255.0   U     2      0        0 eth2
link-local      *               255.255.0.0     U     1000   0        0 eth2
default         192.168.0.11    0.0.0.0         UG    0      0        0 eth2
 
root@urano:~# route del default
 
root@urano:~# route
Tabla de rutas IP del núcleo
Destino         Pasarela        Genmask         Indic Métric Ref    Uso Interfaz
192.168.0.0     *               255.255.255.0   U     2      0        0 eth2
link-local      *               255.255.0.0     U     1000   0        0 eth2
 
root@urano:~# route add default gw 192.168.0.1

root@urano:~# route
Tabla de rutas IP del núcleo
Destino         Pasarela        Genmask         Indic Métric Ref    Uso Interfaz
192.168.0.0     *               255.255.255.0   U     2      0        0 eth2
link-local      *               255.255.0.0     U     1000   0        0 eth2
default         goliat.local    0.0.0.0         UG    0      0        0 eth2

El Cliente DHCP

DHCP significa Protocolo de Configuración Dinámica del Anfitrión (Dynamic Host Configuration Protocol). Es un protocolo muy usado para proporcionar automáticamente información como direcciones IP, máscaras de subred e información de encaminamiento ( enrutamientos ) entre computadores.

Si tu red usa DHCP, necesitarás un cliente DHCP para poder conectarte a ella mediante este protocolo. DHCP también se usa en la mayoría de las conexiones a internet mediante módems.

El cliente dhcp dhclient

dhclient es un client dhcp, distribuido en varias distribuciones GNU/Linux.

Posee un archivo de configuración en /etc/dhcp3/dhclient.conf con el siguiente contenido:


# Configuration file for /sbin/dhclient, which is included in Debian's
#	dhcp3-client package.
#
# This is a sample configuration file for dhclient. See dhclient.conf's
#	man page for more information about the syntax of this file
#	and a more comprehensive list of the parameters understood by
#	dhclient.
#
# Normally, if the DHCP server provides reasonable information and does
#	not leave anything out (like the domain name, for example), then
#	few changes must be made to this file, if any.
#

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;

send host-name "<hostname>";
#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
#send dhcp-lease-time 3600;
#supersede domain-name "fugue.com home.vix.com";
#prepend domain-name-servers 127.0.0.1;
request subnet-mask, broadcast-address, time-offset, routers,
	domain-name, domain-name-servers, domain-search, host-name,
	netbios-name-servers, netbios-scope, interface-mtu,
	rfc3442-classless-static-routes, ntp-servers;
#require subnet-mask, domain-name-servers;
#timeout 60;
#retry 60;
#reboot 10;
#select-timeout 5;
#initial-interval 2;
#script "/etc/dhcp3/dhclient-script";
#media "-link0 -link1 -link2", "link0 link1";
#reject 192.33.137.209;

#alias {
#  interface "eth0";
#  fixed-address 192.5.5.213;
#  option subnet-mask 255.255.255.255;
#}
 
#lease {
#  interface "eth0";
#  fixed-address 192.33.137.200;
#  medium "link0 link1";
#  option host-name "andare.swiftmedia.com";
#  option subnet-mask 255.255.255.0;
#  option broadcast-address 192.33.137.255;
#  option routers 192.33.137.250;
#  option domain-name-servers 127.0.0.1;
#  renew 2 2000/1/12 00:00:01;
#  rebind 2 2000/1/12 00:00:01;
#  expire 2 2000/1/12 00:00:01;
#}


Para solicitar una conexión a una red que cuente con dhcp, mediante dhclient, mirar el siguiente ejemplo:

dhclient <interfaz de red>
root@dalacostworkstation:~# dhclient eth0
Internet Systems Consortium DHCP Client V3.1.2
Copyright 2004-2008 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/

Listening on LPF/eth0/00:01:6c:14:4d:17
Sending on   LPF/eth0/00:01:6c:14:4d:17
Sending on   Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3
DHCPOFFER of 192.168.0.172 from 192.168.0.1
DHCPREQUEST of 192.168.0.172 on eth0 to 255.255.255.255 port 67
DHCPACK of 192.168.0.172 from 192.168.0.1
 * Reloading /etc/samba/smb.conf smbd only
   ...done.
bound to 192.168.0.172 -- renewal in 883035932 seconds.

El cliente dhcp pump

pump es un cliente dhcp relativamente viejo y la mayoría de las distribuciones GNU/Linux ha sido reemplazado por dhclient

ejemplo de uso de pump:

pump -i eth0 -h hostname

Leer más

Autores de este Resumen

--Dalacost 18:51 24 ene 2010 (UTC)


Buscar