Pildora1 Interfaces

Configuración de la red en Debian GNU/Linux Vamos a ver cómo configurar las interfaces/tarjetas de red en sistemas Debia

Views 121 Downloads 45 File size 278KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Configuración de la red en Debian GNU/Linux Vamos a ver cómo configurar las interfaces/tarjetas de red en sistemas Debian GNU/Linux a través del fichero interfaces. Normalmente, los equipos de los usuarios (hosts) se configuran de forma dinámica a través de algún programa de interfaz gráfica, y los servidores, al necesitar de IP fijas y configuraciones más específicas, se suelen configurar de forma estática desde la consola. Detección de las tarjetas de red Antes de configurar las tarjetas de red, éstas deben haber sido detectadas por el kernel y haberse cargado correctamente los módulos correspondientes para su manejo. Podemos consultar con el comando dmesg, los mensajes que el kernel mostró al arrancar el sistema, pero como sólo nos interesa los relacionados con las tarjetas de red, en este caso de tipo ethernet, filtramos sólo las líneas que contenga el texto eth: # dmesg | grep eth [ 1.703665] e1000 0000:00:03.0: eth0: (PCI:33MHz:32-bit) 08:00:27:93:ff:13 [ 1.703671] e1000 0000:00:03.0: eth0: Intel(R) PRO/1000 Network Connection [ 11.684947] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX [ 11.686082] ADDRCONF(NETDEV_UP): eth0: link is not ready [ 11.686101] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 22.208445] eth0: no IPv6 routers present [19228.344206] e1000: eth0 NIC Link is Down [19234.356477] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX [29238.719257] ADDRCONF(NETDEV_UP): eth0: link is not ready [29238.721456] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX [29238.721839] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [29249.568108] eth0: no IPv6 routers present Como podemos observar, no hay ningún tipo de error, por lo que el kernel detecta correctamente a las tarjetas de red, en este caso, sólo hay una, eth0. Podemos comprobar con el comando lsmod, que el módulo del kernel que maneja a la tarjeta (e1000) está cargado. Este comando muestra todos los módulos cargados por el kernel, si conocemos el nombre del módulo podríamos hacer un filtro como en el comando anterior: # lsmod Module Size Used by vboxsf 32542 1 bnep 17288 2 libata 125014 4 libahci,ahci,ata_piix,ata_generic scsi_mod 135037 4 libata,sd_mod,sr_mod,sg e1000 80417 0 usb_common 12338 1 usbcore Anexo: Los mensajes que el kernel va generando en el arranque del sistema, se guardan en el fichero /var/log/dmesg, y el comando dmesg muestra el contenido de este fichero. Algunas opciones de este comando son las siguientes: Comando

Significado

dmesg --help dmesg -h

Muestra una breve ayuda, con las opciones del comando y los valores posibles que pueden llevar algunas de ellas.

dmesg -C dmesg --clear

Borrar todos los mensajes del buffer de memoria, los mensajes siguen estando en el fichero /var/log/dmesg.

dmesg -k dmesg -f kern

Restringe la salida a los mensaje sólo del kernel

dmesg -f lista

Restringe la salida a los tipos especificados. (dmesg -f kern,daemon)

dmesg -l lista

Restringe la salida a los niveles especificados (dmesg -l err,warn)

pág. 1

Configuración desde el escritorio GNOME Los equipos de los clientes (hosts), se configurarán de forma dinámica a través del servicio DHCP. Esta configuración se realizará a través del software denominado Network Manager, el cual necesita de la instalación de los paquetes: • •

network-manager network-manager-gnome

Desde el script /etc/init.d/network-manager puede controlarse este proceso: # /etc/init.d/network-manager Usage: /etc/init.d/network-manager {start|stop|restart|force-reload|status} # /etc/init.d/network-manager status [ ok ] NetworkManager is running.

Hay que tener en cuenta que si deseamos hacer una configuración de la red como en los servidores, a través del fichero /etc/network/interfaces, se producirán problemas si no desinstalamos los dos paquetes anteriores, la configuración de la red sólo puede hacerse de una de las dos formas. Para que Network Manager pueda configurar una tarjeta de red no puede haber ninguna línea que haga referencia a ella en el fichero /etc/network/interfaces. Si las hubiera, se deben comentar o eliminar y a continuación reiniciar el demonio: $ /etc/init.d/network-manager restart Configuración a bajo nivel Es posible hacer una configuración de la red con los comandos ifconfig, route e ip, es lo que se denomina configuración a bajo nivel, pero esta configuración no se mantiene al reiniciar el sistema. Los comandos ifconfig y route (paquete net-tools) están hoy en día en desuso y han sido sustituidos por el uso del comando ip (paquete iproute). Usaremos estos comandos para obtener información de la red y no para configurarla. Para ver la configuración de las interfaces de red activas, ejecutamos: # ifconfig eth0 Link encap:Ethernet HWaddr 08:00:27:28:42:d2 inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe28:42d2/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2933 errors:0 dropped:0 overruns:0 frame:0 TX packets:837 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:657635 (642.2 KiB) TX bytes:126005 (123.0 KiB) 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:215 errors:0 dropped:0 overruns:0 frame:0 TX packets:215 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:14304 (13.9 KiB) TX bytes:14304 (13.9 KiB)

pág. 2

Se podrían ver todas las interfaces de red que tiene el sistema, tanto las activas (llevan la palabra UP) como las desactivas (no llevan la palabra UP), para lo cual, ejecutamos: # ifconfig -a eth0 Link encap:Ethernet HWaddr 08:00:27:28:42:d2 inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe28:42d2/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:44 errors:0 dropped:0 overruns:0 frame:0 TX packets:83 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:13149 (12.8 KiB) TX bytes:10400 (10.1 KiB) eth1

Link encap:Ethernet HWaddr 08:00:27:37:d8:06 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:12 errors:0 dropped:0 overruns:0 frame:0 TX packets:12 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:720 (720.0 B) TX bytes:720 (720.0 B)

Podemos ver una estadística de la información enviada y recibida por las interfaces activas: # ifconfig -s Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR eth0 1500 0 53 0 00 83 0 0 lo 16436 0 12 0 00 12 0 0 # ifconfig -a -s Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR eth0 1500 0 55 0 00 85 0 0 eth1 1500 0 0 0 00 0 0 0 lo 16436 0 12 0 00 12 0 0

TX-OK TX-ERR TX-DRP TX-OVR Flg 0 BMRU 0 LRU TX-OK TX-ERR TX-DRP TX-OVR Flg 0 BMRU 0 BM 0 LRU

Podemos ver los datos de una interfaz concreta: # ifconfig eth0 eth0 Link encap:Ethernet HWaddr 08:00:27:28:42:d2 inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe28:42d2/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:62 errors:0 dropped:0 overruns:0 frame:0 TX packets:85 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:16187 (15.8 KiB) TX bytes:10582 (10.3 KiB) # ifconfig eth1 eth1 Link encap:Ethernet HWaddr 08:00:27:37:d8:06 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)

pág. 3

Para mostrar la tabla arp usamos el comando arp: # arp Address HWtype HWaddress Flags Mask 192.168.1.1 ether 38:72:c0:b5:1f:23 C # arp -a ? (192.168.1.1) at 38:72:c0:b5:1f:23 [ether] on eth0

Iface eth0

Para mostrar las tablas de enrutamiento usamos el comando route: # route -n Kernel IP routing table Destination Gateway 0.0.0.0 192.168.1.1 192.168.1.0 0.0.0.0

Genmask Flags Metric Ref Use Iface 0.0.0.0 UG 0 0 0 eth0 255.255.255.0 U 0 0 0 eth0

La opción -n hace que se muestren todos los datos de forma numérica y no se intente hacer traducción de IP a nombre, con lo que funciona más rápido que obviando la opción. También se puede utilizar la orden ip para obtener la información de la red. Así, para ver la lista de tarjetas que hay instaladas en el sistema, con su dirección MAC y si están activas o no, ejecutamos: # ip link show 1: lo: mtu 16436 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 08:00:27:28:42:d2 brd ff:ff:ff:ff:ff:ff 3: eth1: mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000 link/ether 08:00:27:37:d8:06 brd ff:ff:ff:ff:ff:ff El parámetro show puede suprimirse, en la orden anterior y en las sucesivas, se asume por defecto. Para ver las direcciones IP de las tarjetas: # ip address show 1: lo: mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:28:42:d2 brd ff:ff:ff:ff:ff:ff inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0 inet6 fe80::a00:27ff:fe28:42d2/64 scope link valid_lft forever preferred_lft forever 3: eth1: mtu 1500 qdisc noop state DOWN qlen 1000 link/ether 08:00:27:37:d8:06 brd ff:ff:ff:ff:ff:ff Para ver la tabla arp: # ip neighbour show 192.168.1.1 dev eth0 lladdr 38:72:c0:b5:1f:23 REACHABLE Para ver la tabla de enrutamiento: # ip route show default via 192.168.1.1 dev eth0 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 pág. 4

El demonio de la red El demonio de la red se gestiona desde el script /etc/init.d/networking: # /etc/init.d/networking Usage: /etc/init.d/networking {start|stop|reload|restart|force-reload} Es posible reiniciar toda la configuración de la red parando éste demonio y poniéndolo en marcha: # /etc/init.d/networking stop [ ok ] Deconfiguring network interfaces...done. # /etc/init.d/networking start [ ok ] Configuring network interfaces...done. Con el comando service podemos hacer lo mismo, evitando recordar el directorio donde se encuentra el servicio, que puede variar entre distribuciones: # service networking Usage: /etc/init.d/networking {start|stop|reload|restart|force-reload} # service networking stop [ ok ] Deconfiguring network interfaces...done. # service networking start [ ok ] Configuring network interfaces...done. El nombre físico de las tarjetas de red El sistema asigna por defecto unos nombres únicos a las tarjetas de red. Las tarjetas ethernet suelen denominarse eth0, eth1, etc., las tarjetas wifi reciben el nombre de wlan0, wlan1, etc. A estos nombres se les denomina "nombres físicos de la tarjeta de red", y se encuentran en el fichero /etc/udev/rules.d/70-persistent-net.rules, desde el cual se pueden cambiar si quisiéramos. El formato de este fichero exige que cada interfaz de red esté definida en una sola línea y que las direcciones MAC estén en minúscula. Es habitual manipular el fichero anterior cuando una tarjeta de red se estropea y la sustituimos por otra. La nueva tarjeta, al tener una MAC diferente, recibe un nombre físico distinto a la estropeada, por lo que tenemos dos opciones, o modificamos la configuración de la red para adaptarla al nuevo nombre de la tarjeta o cambiamos el nombre físico de la nueva tarjeta, para que se llame como la antigua. Un ejemplo de contenido del fichero /etc/udev/rules.d/70-persistent-net.rules es el siguiente: # cat /etc/udev/rules.d/70-persistent-net.rules # This file was automatically generated by the /lib/udev/write_net_rules # program, run by the persistent-net-generator.rules rules file. # # You can modify it, as long as you keep each rule on a single # line, and change only the value of the NAME= key. # PCI device 0x8086:/sys/devices/pci0000:00/0000:00:08.0 (e1000) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:37:d8:06", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1" # PCI device 0x8086:/sys/devices/pci0000:00/0000:00:09.0 (e1000) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:af:b5:31", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2" # PCI device 0x8086:/sys/devices/pci0000:00/0000:00:03.0 (e1000) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:28:42:d2", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" Cuando este fichero no existe, los nombres físicos de las tarjetas se asignan al azar y puede que entre distintos arranques del sistema los nombre varíen, haciendo que la tarjeta que antes era la eth0 ahora sea la eth2, por ejemplo, y acarreando los consecuentes problemas en la configuración de la red. pág. 5

En Debian, el script /lib/udev/write_net_rules (se ejecuta al arrancar el sistema) es el que genera el fichero /etc/udev/rules.d/70persistent-net.rules siguiendo las reglas indicadas en el fichero /lib/udev/rules.d/75-persistent-net-generator.rules. Este último fichero, suele llevar una regla que evita que el 70-persistent-net.rules se cree cuando Debian se virtualiza, concretamente, cuando se virtualiza con VirtualBox, esta regla es: ENV{MATCHADDR}=="08:00:27:*",

ENV{MATCHADDR}=""

que como se ve, lleva el número que VirtualBox pone en sus tarjetas de red en la parte del fabricante de la dirección MAC. Simplemente comentando esta línea, y reiniciando el sistema, el fichero 70-persistent-net.rules se generará. # ENV{MATCHADDR}=="08:00:27:*",

ENV{MATCHADDR}=""

/etc/network/interfaces El fichero /etc/network/interfaces se utiliza para definir los nombres lógicos de interfaces de redes, a los que se le asociará una configuración determinada. El comando ifup es el encargado de relacionar una interfaz física con una interfaz lógica. El contenido de este fichero está formado por líneas de diferentes tipos: •

Líneas auto: sirven para especificar las interfaces físicas que se activarán cuando se ejecute el comando ifup -a, el cual se ejecuta automáticamente al arrancar el sistema, por lo que especifica las tarjetas que automáticamente se activarán desde el inicio. Se pueden poner todas las líneas de este tipo que se deseen y en cada línea pueden ir más de una tarjeta física, simplemente separándolas con un espacio. auto eth0 eth2 eth3 auto eth1

En las líneas anteriores la interfaz física eth0 se asocia con configuración de la interfaz lógica eth0, la eth1 con la eth1, etc. • •

Líneas allow-auto: son equivalentes a las líneas auto. Líneas allow-hotplug: son parecidas a las líneas auto. Las interfaces físicas que aparecen en estas líneas se activan cuando se producen eventos hotplug en las intefaces de red, como la detección de la tarjeta por parte del kernel, la conexión del cable de red, etc. Cuando se producen estos eventos, el sistema ejecuta el comando ifup asociado a la tarjeta de red involucrada. Igualmente se asocian con una configuración lógica del mismo nombre. allow-hotplug eth0 eth2 eth3 allow-hotplug eth1

• •

Líneas iface: sirven para definir nombres lógicos de interfaces de red junto con su configuración particular. Líneas mapping: sirven para definir cómo se asociará automáticamente una interfaz física a una lógica de entre un grupo de éstas. Líneas #: sirven para especificar comentarios. Líneas que acaban en \: sirven para extender la configuración de la línea anterior.

• •

Ejemplo: $ cat /etc/network/intefaces auto lo iface lo inet loopback allow-hotplug eth0 iface eth0 inet dhcp allow-hotplug eth1 iface eth0 inet static address 192.168.11.100 netmask 255.255.255.0 gateway 192.168.11.1

pág. 6

Las líneas iface tiene la siguiente sintaxis: iface ... donde será un nombre lógico de interfaz de red, normalmente será el valor inet para especificar una configuración IPv4, pero también puede ser inet6 (IPv6) o ipx (IPX), aunque no los usaremos. El valor de indica el método de configuración de la interfaz y depende del valor de , para el caso de la familia inet los métodos son: • • •

loopback: usado sólo para la interfaz lo (bucle local). static: usado para asignar una dirección ip fija. dhcp: usado para asignar una dirección dinámica.

Las opciones finales van a depender de la familia y del método. Las dos primeras líneas que debe haber en el fichero /etc/network/interfaces son: auto lo iface lo inet loopback las cuales activan la interfaz lo (bucle local), que usaremos para la realización de pruebas. El método static, usado para asignar una ip fija a una interfaz de red, tiene las siguientes opciones: Opción

Ejemplo

Significado

address dirección-IP

address 192.168.10.15

Establece la dirección IP.

netmask máscara

netmask 255.255.255.0

Establece la máscara de la dirección IP.

gateway dirección-IP

gateway 192.168.10.1

Establece la puerta de enlace. En un equipo sólo puede haber una puerta de enlace, o lo que es lo mismo, sólo puede haber una regla por defecto de enrutamiento.

network dirección-IP-de-red

network 192.168.10.0

Establece la dirección de la red a la que pertenece la dirección IP (opcional).

broadcast dirección-IP-de-broadcast

broadcast 192.168.10.2555

Establece la dirección de broadcast de la red (opcional).

hwaddress ether 00:01:04:1b:2C:1F

Establece la dirección MAC de la tarjeta. Para las tarjetas ethernet se debe poner la palabra ether como tipo de la interfaz.

pre-up comando

pre-up echo...

Ejecuta comando antes de que la tarjeta se configure con el comando ifup. Si el comando falla, ifup aborta, imprime un mensaje de error y la tarjeta no se marca como configurada.

up comando

up sleep 2 ; route add...

Ejecuta comando durante la configuración de la tarjeta con el comando ifup.

post-up route add...

Ejecuta comando después de que la tarjeta se configure con el comando ifup. Si el comando falla, ifup aborta, imprime un mensaje de error y la tarjeta no se

hwaddress tipo-interfaz dirección-MAC

post-up comando

pág. 7

marca como configurada aunque haya sido configurada.

pre-down comando

pre-down route del...

Ejecuta comando antes de que la tarjeta se desconfigure con el comando ifdown. Si el comando falla, ifdown aborta, imprime un mensaje de error y la tarjeta se marca como desconfigurada aunque no haya sido desconfigurada.

down comando

down sleep 2 ; route del...

Ejecuta comando durante la desconfiguración de la tarjeta con el comando ifdown.

post-down echo...

Ejecuta comando después de que la tarjeta se desconfigure con el comando ifdown. Si el comando falla, ifdown aborta, imprime un mensaje de error y la tarjeta no se marca como desconfigurada.

post-down comando

Las opciones pre-up, up, post-up, pre-down, down y post-down tienen las siguientes características: • • • • •

Son opcionales. Son opciones válidas para cualquier familia y método. Pueden repetirse cuantas veces queramos. Se ejecutan cada una en su momento, y dentro del mismo tipo, en el orden de aparición en el fichero. Se puede asegurar que siempre se ejecuta correctamente el comando añadiendo el sufijo "|| true" (true es un comando que no hace nada y tiene como código de salida el valor 0, false es el comando contrario, es decir, tiene como código de salida el valor 1, y tampoco hace nada).

Existe otra posibilidad de ejecutar comandos cuando una tarjeta de red se está activando o desactivando, además de las líneas up, down, etc. del fichero /etc/network/interfaces. Ésta consiste en introducir scripts dentro de cualquiera de los directorios: • • • •

/etc/network/if-down.d /etc/network/if-post-down.d /etc/network/if-pre-up.d /etc/network/if-up.d

que equivalen a los momentos down, post-down, pre-up y up, respectivamente. El método dhcp, usado para asignar una ip dinámica a la interfaz de red, tiene las siguientes opciones con el mismo significado anterior: • hwaddress • pre-up, up, post-up • pre-down, down, post-down • Activacion/desactivación de la tarjeta de red ifup En el fichero /etc/udev/rules.d/70-persistent-net.rules están los nombres de las interfaces físicas, en el fichero /etc/network/interfaces están los nombres de las interfaces lógicas con sus correspondientes configuraciones asociadas, lo que falta es asociar una interfaz física con una interfaz lógica para así configurarla, y esto se hace con el comando ifup (paquete ifupdown). La sintaxis del comando ifup es la siguiente: ifup [opción...] interfaz-física[=interfaz-lógica]... pág. 8

Si ejecutamos las instrucción: # ifup eth1 se activa la interfaz física eth1 con la configuración de la interfaz lógica del mismo nombre, es decir, eth1. Si quisiéramos activar la interfaz eth2 con la configuración de la interfaz lógica de nombre oficina, ejecutaríamos: # ifup eth2=oficina También es posible levantar todas las tarjetas que se hayan especificado en las líneas auto de /etc/network/interfaces: # ifup -a o también: # ifup --allow=auto Todas las tarjetas de red que estén en líneas allow-hotplug, pueden levantarse ejecutando: # ifup --allow=hotplug Es posible ver la asociación actual entre tarjetas físicas y lógicas consultando el contenido del fichero /etc/network/run/ifstate: # cat /etc/network/run/ifstate lo=lo eth0=eth0 A veces, este fichero no es consistente, por ejemplo, si activamos una tarjeta con ifup y la desactivamos con ifconfig; en estos casos, si usamos las órdenes ifup e ifdown obtenemos errores y no se ejecutan. Esto obliga a usar la opción --force con ifup o ifdown, con lo que la orden se ejecutará independientemente de lo que se diga en el fichero /etc/network/run/ifstate. # ifup --force eth0

ifdown La orden ifdown es la encargada de desconfigurar las interfaces de red. Su sintaxis es la siguiente: ifdown [opción...] interfaz-física... Por ejemplo, para desactivar la interfaz física eth0 ejecutaríamos: # ifdown eth0 Todas las interfaces físicas activas pueden desconfigurarse ejecutando: # ifdown -a pág. 9

ifquery El comando ifquery permite consultar las opciones de configuración de una interfaz física que esté activa o de una interfaz lógica del fichero /etc/network/interfaces, la cual no es necesario que esté asociada a una interfaz física. # ifquery eth0 address: 192.168.1.100 netmask: 255.255.255.0 gateway: 192.168.1.1 network: 192.168.1.0 broadcast: 192.168.1.255

Pasos para modificar la configuración de la tarjeta de red Para modificar la configuración de una tarjeta de red hay que seguir en orden los siguientes pasos: 1. 2. 3.

Desactivar la interfaz física de red ejecutando ifdown. Se desconfigurará en base a los parámetros que haya en el fichero /etc/network/interfaces para su interfaz lógica asociada. Editar el fichero /etc/network/interfaces. Activar la tarjeta física de red ejecutando ifup. Se configurará en base a los parámetros que haya en el fichero /etc/network/interfaces para la interfaz lógica asociada.

DNS - /etc/resolv.conf En el fichero /etc/resolv.conf es donde pondremos los servidores de nombres (DNS) que utilizará el equipo. Esto se hace introduciendo líneas con el siguiente formado: nameserver ip-servidor-dns Cada una de estas líneas sólo lleva la dirección de un único servidor DNS, si queremos poner más de uno, se repetirían líneas nameserver. Los servidores DNS se utilizarán en el orden en el que aparecen en el fichero. # cat /etc/resolv.conf nameserver 87.216.1.65 nameserver 87.216.1.66

Router - /etc/sysctl.conf Una de las posibilidades que nos ofrece GNU/Linux es la de poder actuar como enrutador, es decir, recibir paquetes, decidir la ruta de estos y reenviarlos por cualquiera de las interfaces de red existentes. Para hacerlo, necesitamos modificar el parámetro del kernel denominadoip_forward. El fichero de configuración /etc/sysctl.conf se utiliza para pasarle al kernel parámetros de configuración en tiempo de ejecución y que estos se conserven en sucesivos arranques del sistema. Es equivalente a cambiar valores en los archivos del directorio virtual /proc/sys, sólo que con este último método los cambios se pierden al apagar el sistema. El nombre completo del parámetro que debemos modificar para que el equipo funcione como router se denomina net.ipv4.ip_forward, y su valor debe ser 1. Para que este cambio se mantenga al reiniciar el sistema, editamos el fichero /etc/sysctl.conf, buscamos el parámetro, y cambiamos el valor cero por el valor uno: net.ipv4.ip_forward = 1

pág. 10

Tras este cambio reiniciamos el sistema y el equipo ya funcionará como router. Pero podemos hacer el cambio en caliente y ahorrarnos el reinicio. Hay varias formas de hacer esto: •

Directamente poniendo el 1 en el fichero del directorio /proc/sys que se encarga de este parámetro. La forma de descubrir el fichero relacionado con un parámetro concreto del fichero /etc/sysctl.conf es siempre la misma. Todos los ficheros están en /proc/sys, y los puntos del parámetro separan directorios hasta el último que separa el nombre del fichero, de esta manera, el fichero que buscamos es el /proc/sys/net/ipv4/ip_forward. Podemos ponerlo a 1 de la siguiente forma:

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

Con el comando sysctl podemos cambiar el valor de los parámetros del kernel de la siguiente manera:

# sysctl -w net.ipv4.ip_forward=1 •

También podemos cargar todos los parámetros del fichero /etc/sysctl.conf ejecutando:

# sysctl -p Otros usos del comando sysctl son los siguiente: •

Para ver todos los parámetros

# sysctl -a •

Para ver sólo los parámetros que contengan con una expresión regular:

# sysctl -a --patter net.ipv4 •

Para ver un parámetro concreto:

# sysctl net.ipv4.ip_forward •

Para cargar los parámetros del kernel que hay en un fichero:

# sysctl -p fichero

Añadir enrutamiento El enrutamiento estático que fuese necesario introducir en el equipo lo haremos con en comando route o ip desde las configuraciones de las interfaces lógicas en el fichero /etc/network/interfaces. Sintaxis para añadir una regla de enrutamiento: •

con el comando route cualquiera de las siguientes: route add -net dirección-red netmask máscara-red gw dirección-puerta-enlace dev tarjeta-red route add -net dirección-red/prefijo gw dirección-puerta-enlace dev tarjeta-red



con el comando ip: ip route add dirección-red/prefijo via dirección-puerta-enlace dev tarjeta-red

pág. 11

Sintaxis para borrar una regla de enrutamiento: •

con el comando route cualquiera de las siguientes: route del -net dirección-red netmask máscara-red gw dirección-puerta-enlace dev tarjeta-red route del -net dirección-red/prefijo gw dirección-puerta-enlace dev tarjeta-red



con el comando ip: ip route del dirección-red/prefijo via dirección-puerta-enlace dev tarjeta-red

Los comandos anteriores, normalmente, se colocarán en la configuración lógica asociada con la interfaz de salida de la regla de enrutamiento y en estos casos, el parámetro dev puede suprimirse. Las comandos que crean las reglas se ejecutarán en el momento up o post-up, y los que borran las reglas, en el momento predown o down. Ejemplo: iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 network 192.168.1.0 broadcast 192.168.1.255 up ip route add 11.0.0.0/8 via 192.168.1.1 down ip route del 11.0.0.0/8 via 192.168.1.1 En el ejemplo anterior el comando ip se asume dev eth0.

NAT Si queremos que un equipo GNU/Linux que hace de router, también realice la operación de NAT, debemos usar el comando iptables de la siguiente forma en el momento de la activación de la tarjeta que va a hacer NAT: post-up iptables -t nat -A POSTROUTING -o tarjeta-que-hace-nat -j MASQUERADE Cuando la tarjeta se desactive, se debe eliminar la regla anterior: pre-down iptables -t nat -D POSTROUTING -o tarjeta-que-hace-nat -j MASQUERADE (Este apartado se explica completamente en el tema del cortafuegos netfilter/iptables)

pág. 12

Chequeo de la red Chequeo de la red ping El comando ping permite verificar si una máquina remota responde, para lo que utiliza el protocolo ICMP (Internet Control Message Protocol), un protocolo similar a UDP pero más simple, ya que no posee identificación de puertos, y que se utiliza para mensajes de control y error. Funciona enviando paquetes ICMP ECHO_REQUEST (pings). Para comprobar si una máquina responde, ejecutamos: # ping www.google.es PING www.google.es (173.194.45.23) 56(84) bytes of data. 64 bytes from lis01s06-in-f23.1e100.net (173.194.45.23): icmp_req=1 ttl=55 time=62.5 ms 64 bytes from lis01s06-in-f23.1e100.net (173.194.45.23): icmp_req=2 ttl=55 time=63.9 ms 64 bytes from lis01s06-in-f23.1e100.net (173.194.45.23): icmp_req=3 ttl=55 time=64.6 ms 64 bytes from lis01s06-in-f23.1e100.net (173.194.45.23): icmp_req=4 ttl=55 time=62.4 ms ^C --- www.google.es ping statistics --4 packets transmitted, 4 received, 0% packet loss, time 3005ms rtt min/avg/max/mdev = 62.410/63.390/64.653/0.946 ms Por defecto, el comando no se detiene y hay que detenerlo pulsando . Es posible enviar un número exacto de ping usando la opción -c: # ping -c 2 173.194.45.31 PING 173.194.45.31 (173.194.45.31) 56(84) bytes of data. 64 bytes from lis01s06-in-f31.1e100.net (173.194.45.31): icmp_req=1 ttl=55 time=62.1 ms 64 bytes from lis01s06-in-f31.1e100.net (173.194.45.31): icmp_req=2 ttl=55 time=62.1 ms --- www.google.es ping statistics --2 packets transmitted, 2 received, 0% packet loss, time 1000ms rtt min/avg/max/mdev = 62.169/62.183/62.197/0.014 ms

traceroute El comando traceroute permite determinar la ruta tomada por un paquete para alcanzar su destino, ya sea en Internet o en la red local. # traceroute -n www.google.es traceroute to www.google.es (173.194.45.31), 30 hops max, 60 byte packets 1 192.168.1.1 1.896 ms 1.572 ms 1.385 ms 2 87.219.96.1 38.215 ms 42.062 ms 41.903 ms 3 10.255.19.254 44.205 ms 45.638 ms 47.184 ms 4 212.106.217.62 58.301 ms 62.190 ms 212.106.217.98 74.502 ms 5 212.106.217.61 66.000 ms 212.106.217.97 65.852 ms 212.106.217.61 69.138 ms 6 212.106.217.2 65.511 ms 64.692 ms 212.106.216.254 75.904 ms 7 72.14.235.18 68.609 ms 72.14.235.20 51.150 ms 212.106.217.2 49.472 ms 8 72.14.235.20 56.653 ms 216.239.49.243 66.759 ms 72.14.235.18 50.403 ms 9 216.239.49.243 65.279 ms 65.751 ms 216.239.49.249 62.839 ms 10 173.194.45.31 62.249 ms 209.85.254.70 67.098 ms 68.856 ms La opción -n evita que el comando traceroute traduzca las IPs a sus correspondientes nombres usando DNS; así conseguimos que funcione más rápido.

pág. 13

mtr El comando mtr (paquete mtr) combina los resultados de traceroute y ping, permitiendo diagnosticar la conexión a un equipo. Puede usarse en modo consola con la opción -r o en modo gráfico sin opciones: # mtr -r -n -c 4 www.google.es HOST: debian Loss% 1.|-- 192.168.1.1 0.0% 2.|-- 87.219.96.1 0.0% 3.|-- 10.255.19.254 0.0% 4.|-- 212.106.217.98 0.0% | `|-- 212.106.217.62 5.|-- 212.106.217.97 0.0% 6.|-- 212.106.217.2 0.0% 7.|-- 72.14.235.18 0.0% 8.|-- 216.239.49.249 0.0% 9.|-- 209.85.254.70 0.0% 10.|-- 173.194.45.24 0.0%

Snt Last Avg Best Wrst StDev 4 0.9 1.2 0.9 1.5 0.3 4 37.8 37.3 36.9 37.8 0.4 4 50.8 54.3 39.0 87.0 22.5 4 57.6 54.9 53.4 57.6 1.9 4 54.9 60.1 53.2 78.5 12.3 4 52.2 51.9 51.5 52.2 0.3 4 52.5 52.3 51.9 53.0 0.5 4 63.2 62.8 61.5 64.0 1.1 4 65.3 65.8 64.7 67.1 1.0 4 63.1 64.4 63.1 66.0 1.2

La opción -n hace que el comando funcione más rápido, pues no traduce las IPs a nombres, y la opción -c indica el número de pings que se enviarán (igual que en la orden ping). Si ejecutamos: # mtr -n www.google.es &

nos sale la interfaz gráfica:

nslookup El comando nslookup (Name System Lookup) es una herramienta que permite consultar un servidor de nombres y obtener información relacionada con el dominio o el host y así diagnosticar los eventuales problemas de configuración que pudieran haber surgido en el DNS. # nslookup www.google.es Server: 87.216.1.65 Address: 87.216.1.65#53 Non-authoritative answer: Name: www.google.es Address: 173.194.45.31 Name: www.google.es Address: 173.194.45.23 Name: www.google.es Address: 173.194.45.24

pág. 14

De modo predeterminado, el comando nslookup realiza las consultas al servidor de nombres primario configurado en la máquina. Sin embargo, es posible consultar un servidor de nombres específico: # nslookup www.google.es - 87.216.1.66 Server: 87.216.1.66 Address: 87.216.1.66#53 Non-authoritative answer: Name: www.google.es Address: 173.194.45.31 Name: www.google.es Address: 173.194.45.23 Name: www.google.es Address: 173.194.45.24

host El comando host es similar al comando nslookup, y nos va a hacer una traducción de nombres. # host www.google.es www.google.es has address 173.194.45.31 www.google.es has address 173.194.45.24 www.google.es has address 173.194.45.23 www.google.es has IPv6 address 2a00:1450:4004:803::1017

host El comando host es similar al comando nslookup, y nos va a hacer una traducción de nombres. # host www.google.es www.google.es has address 173.194.45.31 www.google.es has address 173.194.45.24 www.google.es has address 173.194.45.23 www.google.es has IPv6 address 2a00:1450:4004:803::1017

dig El comando dig (Domain Information Groper) permite realizar consultas a los servidores DNS, por lo que, al igual que host y nslookup, nos será muy útil para comprobar si el DNS está correctamente configurado en nuestra máquina. Permite comprobar tanto el mapeo de nombres a IPs como el mapeo inverso de IPs a nombres, pero sólo sirve para Internet, ya que no mira en /etc/hosts (sólo utiliza /etc/resolv.conf). Además, nos da el tiempo que tarda en hacerse la traducción. # dig www.google.es ; DiG 9.8.4-rpz2+rl005.12-P1 www.google.es ;; global options: +cmd ;; Got answer: ;; ->>HEADERHEADERHEADER