lunes, 26 de enero de 2009

Comandos de creación de red

Comandos de configuración de red

Los comandos más importantes para configurar la red son:
  • ifconfig: configuración del interfaz de red
  • route: configuración del routing
  • netstat: información de la red

Comando ifconfig

Muestra y configura una interfaz de red:
$ /sbin/ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:12:43:A6:05:5C
inet addr:193.144.84.77 Bcast:193.144.84.255 Mask:255.255.255.0
inet6 addr: fe80::211:43ff:fea6:55c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1035446 errors:0 dropped:0 overruns:0 frame:0
TX packets:1053062 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:196973192 (187.8 MiB) TX bytes:270128587 (257.6 MiB)
Interrupt:169
  • Sintaxis:
    ifconfig [opciones] [interfaz]
    ifconfig interfaz [configuración] [up|down]
  • Opciones de visualización:
    • -a muestra todas las interfaces , incluso las inactivas
    • -s muestra información resumida (igual que netstat -i)
  • En las opciones de configuración se indica entre otras cosas la IP, máscara de red y dirección de broadcast:
# ifconfig eth0 193.144.84.77 netmask 255.255.255.0 broadcast 193.144.84.255 up
  • ifconfig permite también configurar el estado del interfaz, por ejemplo, cambiar el MTU, poner modo promiscuo, activar/desactivar ARP, cambiar su dirección hardware (si el dispositivo lo permite), etc.
    # ifconfig eth0 mtu 500
    # ifconfig eth0 -noarp
    # ifconfig eth0 hw ether 52:54:00:12:34:56
  • ver el manual de ifconfig para más información

Otros comandos relacionados


Otros comandos de configuración de interfaz son:

  • ifup/ifdown activan/desactivan un interfaz de red
    # ifdown eth0
  • iwconfig configura un interfaz wireless
    # iwconfig eth1 essid "Mi Red"

Comando route

Permite modificar la tabla de routing, mostrando, añadiendo o borrando rutas
  • muestra las rutas definidas
  • permite añadir/borrar rutas estáticas
  • permite definir un gateway de salida por defecto para conectarnos al exterior
  • permite configurar el sistema para que actúe como un router

Mostrar una tabla de routing



Se usa route [-n -e -ee] (equivale a netstat -r)
$ /sbin/route -n -ee
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface MSS Window irtt
193.144.84.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0 0 0
0.0.0.0 193.144.84.1 0.0.0.0 UG 0 0 0 eth0 0 0 0
  • Opciones:
    • -n usa direcciones IP en vez de nombres
    • -e emplea el mismo formato que netstat -r
    • -ee salida larga
  • Los flags indican el estado de la ruta
    • U la interfaz está activa (Up)
    • H el destino es una estación (Host)
    • G la ruta usa una pasarela (Gateway)
    • D ruta creada dinámicamente por un demonio de encaminamiento o un mensaje ICMP de redirección
    • M ruta modificada dinámicamente
    • R ruta rehabilitada
    • ! ruta rechazada
  • De las siguientes columnas, algunas no se usan
    • Metric distancia (normalmente en saltos) al destino
    • Ref número de referencias a la ruta (no usado en linux)
    • Use número de consultas para la ruta
    • MSS (Maximum Segment Size) tamaño máximo del segmento para las conexiones TCP en esa ruta
    • Window Tamaño predeterminado de la ventana para las conexiones TCP en esa ruta
    • irtt (Initial Round Trip Time) valor inicial del temporizador TCP

Añadir/borrar rutas estáticas



Se usa
route [add|del] [default] [-net|-host] target [netmask Nm] [gw Gw] [opciones] [[dev] If]
Ejemplo: suponer que tenemos la configuración del dibujo, y queremos crear la tabla de rutas para el host Internet

  • Añadir la ruta para la red 192.168.0.0/24 en eth1
route add -net 192.168.0.0 netmask 255.255.255.0 dev eth1
  • Añadir la ruta por defecto
    route add default gw 10.0.2.2
  • Añadir una ruta para la red 172.16.0.0/24, usando como pasarela en host con IP 192.168.0.1
route add -net 172.16.0.0 netmask 255.255.255.0 gw 192.168.0.1
  • El host pasarela tiene que permitir routing entre sus interfaces; pasa eso debemos activar el ip_forward:
    # echo 1 > /proc/sys/net/ipv4/ip_forward

Otras opciones de configuración

Linux permite otras opciones para configurar la red, como definir alias de IP o configurar opciones sobre el tráfico

Alias de IP

  • Permite configurar múltiples direcciones IP a un único dispositivo de red
    • podemos soportar varias subredes IP en una misma Ethernet
    • los alias se indican como dispositivo:número
  • Ejemplo:
# ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up
# route add -net 192.168.1.0 netmask 255.255.255.0 eth0
# ifconfig eth0:0 192.168.10.1 netmask 255.255.255.0 up
# route add -net 192.168.10.0 netmask 255.255.255.0 eth0:0

Opciones del IP



Linux permite configurar diversas opciones sobre el tráfico IP
  • los cambios pueden hacerse mediante el comando sysctl, escribiendo en los archivos del directorio /proc/sys/net/ipv4 o de forma permanente en el fichero /etc/sysctl.conf
  • algunos de estos estos archivos tienen un 0 (opción desactivada) o un 1 (opción activada)
  • otros pueden tener un valor
  • algunas de las opciones son:
    • ip_forward si 1 permite routing entre interfaces (por defecto 0)
    • ip_default_ttl el tiempo de vida por defecto de los paquetes (por defecto 64 ms)

Información de la red: comando netstat

netstat muestra las conexiones de red, tablas de routing y estadísticas de interfaz
  • Formato:
    netstat [tipo de información] [opciones]
  • Algunos tipos de información:
    • (nada) muestra la lista de sockets abiertos
    $ netstat
    Active Internet connections (w/o servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State
    tcp 0 0 jumilla.dec.usc.e:58946 aiff.usc.es:telnet ESTABLISHED
    tcp 0 0 jumilla.dec.usc.e:43658 ulla.dec.usc.es:1301 ESTABLISHED
    tcp 0 0 jumilla.dec.usc.e:35346 sd.cesga.es:ssh ESTABLISHED
    tcp 0 0 jumilla.dec.usc.es:ssh ulla.dec.usc.es:1688 ESTABLISHED
    tcp 0 0 jumilla.dec.usc.es:ssh teneguia.dec.usc.:35161 ESTABLISHED
    Active UNIX domain sockets (w/o servers)
    Proto RefCnt Flags Type State I-Node Path
    unix 8 [ ] DGRAM 15368 /dev/log
    unix 2 [ ] DGRAM 194110 @/org/kernel/udev/udevd
    unix 2 [ ] DGRAM 15671 @/var/run/hal/hotplug_socket
    • --route, -r muestra las tablas de rutas (igual que route admite los flags -n, -e y -ee)
    • --interface, -i muestra un resumen del estado de las interfaces de red (igual que ifconfig -s)
      $ netstat -i
      Kernel Interface table
      Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
      eth0 1500 0 5110292 0 0 0 5011769 0 0 0 BMRU
      • MTU (Maximum Transmission Unit): tamaño máximo del datagrama
      • Met: valor de la métrica para esa interfaz
      • RX/TX paquetes recibidos/transmitidos
      • OK/ERR/DRP/OVR paquetes transmitidos correctamente (OK), erróneos (ERR), descartados por falta de recursos (DRP, drop) y perdidos por desbordamiento (OVR, overrun)
      • Las banderas (flags) indican el estado del interfaz:
        • B: dirección de difusión activa
        • L: la interfaz es un dispositivo de bucle local (loopback)
        • P: se reciben todos los paquetes (modo promiscuo)
        • O: ARP desactivado para este interfaz
        • M: el interfaz permite multicast
        • A: el interfaz recibe todos los paquetes multicast en la red (allmulti)
        • R: la interfaz funciona (running)
        • U: la interfaz está activa (up)
      • Este estado puede cambiarse con ifconfig:
        # ifconfig eth0 promisc # Modo promiscuo
        # ifconfig eth0 -arp # Desactiva ARP
    • --statistics, -s muestra estadísticas para cada protocolo de red
        $ netstat -s
      Ip:
      5001746 total packets received
      7479 forwarded
      0 incoming packets discarded
      4894721 incoming packets delivered
      ......
  • Cada uno de los modos anteriores tienen diferentes opciones
  • Algunas opciones válidas para varios tipos son:
    • --numeric o -n muestra información numérica en vez de nombres para IPs, puertos, etc.
    • --continuous o -c imprime la información solicitada de forma continua
    • --extend o -e muestra información extendida (con -ee aún más información)
  • Para más información ver la página del manual

Otros comandos de red

Comando arp

  • arp manipula la cache de ARP:
    • muestra la tabla ARP
    • borra entradas
    • añade entradas manualmente
Ejemplo:
# arp
Address HWtype HWaddress Flags Mask Iface
almansa.dec.usc.es ether 00:0D:56:6F:E6:90 C eth0
193.144.84.1 ether 00:E0:63:93:26:E5 C eth0
teneguia.dec.usc.es ether 00:C0:4F:A1:5D:89 C eth0
  • Flag: C dirección completa, M dirección añadida manualmente
Algunas opciones:
  • -i interfaz muestra las entradas para el interfaz indicado
  • -a hostname muestra las entradas para el host especificado
  • -d hostname borra las entradas para el host especificado
  • -s hostname hw_addr añade manualmente una entrada para el host especificado con la dirección hardware indicada
  • -n interfaz no hace traducción de IPs a nombres

Comando ping

  • Muestra la disponibilidad de conexión y la velocidad de transmisión con un host remoto:
$ ping 193.144.84.1
PING 193.144.84.1 (193.144.84.1) 56(84) bytes of data.
64 bytes from 193.144.84.1: icmp_seq=1 ttl=255 time=0.420 ms
64 bytes from 193.144.84.1: icmp_seq=2 ttl=255 time=0.396 ms
64 bytes from 193.144.84.1: icmp_seq=3 ttl=255 time=0.368 ms
  • ping envía paquetes ICMP (ECHO_REQUEST) al destino y espera respuesta, midiendo el RTT
  • muchos firewalls bloquean el tráfico ICMP por lo que el ping no funciona
Algunas opciones:
  • -b permite ping a una dirección de broadcast
  • -c COUNT para después de enviar COUNT paquetes ECHO_REQUEST
  • s packetsize especifica el número de bytes a enviar (por defecto 56)

Comando traceroute

  • Muestra la ruta que sigue un paquete hasta llegar a destino
$ traceroute www.elpais.es
traceroute to a1749.g.akamai.net (130.206.192.32), 30 hops max, 40 byte packets
1 rutfis (193.144.64.1) 1.070 ms 0.688 ms 0.927 ms
2 * * *
3 10.56.5.1 (10.56.5.1) 57.463 ms 2.021 ms 1.923 ms
4 193.144.79.72 (193.144.79.72) 2.507 ms 16.280 ms 2.080 ms
5 GE2-0-0.EB-Santiago0.red.rediris.es (130.206.204.21) 25.681 ms 2.068 ms 1.965 ms
6 GAL.SO2-0-0.EB-IRIS4.red.rediris.es (130.206.240.33) 10.959 ms 10.665 ms 10.710 ms
7 130.206.220.59 (130.206.220.59) 20.277 ms 10.781 ms 10.470 ms
8 a130-206-192-32.deploy.akamaitechnologies.com (130.206.192.32) 11.011 ms 23.482 ms 12.185 ms
  • traceroute utiliza el campo TTL de la cabecera IP para obtener respuestas ICMP TIME_EXCEEDED de los host por los que pasa el paquete (envía paquetes UDP)
  • los sistemas pueden no enviar mensajes de tiempo excedido: aparecen *
  • si los firewalls bloquean el tráfico ICMP no veremos nada
  • otros programas similares:
    • traceproto: permite especificar el protocolo a usar (TCP, UDP, ICMP) y el puerto a tracear (por defecto 80)
    • tcptraceroute: envía paquetes TCP SYN para evitar problemas con firewalls

Comandos host, dig, nslookup

  • Permiten obtener la dirección IP de un sistema a partir del nombre o viceversa:
    $ host www.elpais.es
    www.elpais.es is an alias for elpais.es.edgesuite.net.
    elpais.es.edgesuite.net is an alias for a1749.g.akamai.net.
    a1749.g.akamai.net has address 130.206.192.38
    a1749.g.akamai.net has address 130.206.192.32
  • nslookup está desaprobado (deprecated) y no se recomienda su uso

Comando mii-tool

  • Permite ver y/o configurar el estado de la unidad MMI (Media Independent Interface) de la tarjeta de red
    • Ethernet usa MII para autonegociar la velocidad de enlace y el modo duplex
    # mii-tool -v eth0
    eth0: negotiated 100baseTx-FD flow-control, link ok
    product info: vendor 00:08:18, model 16 rev 0
    basic mode: autonegotiation enabled
    basic status: autonegotiation complete, link ok
    capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
    advertising: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
    link partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
    # mii-tool --force=100baseTx-HD eth0
    # mii-tool eth0
    eth0: 100 Mbit, half duplex, link ok