# rm-rf.es | Administración de sistemas

Bitácora personal de un SysAdmin Gnu/Linux, Windows, BSD...

¿Qué es APIPA/zeroconf y cómo deshabilitarlo en CentOS/RHEL (169.254.x.y)?


Seguro que muchos os habéis fijado que tanto en sistemas Linux Debian, RHEL, etc como en Windows, algunas veces el propio sistema os asigna una IP del rango 169.254.x.y e incluso que ese rango aparece en la tabla de rutas incluso en circunstancias normales, junto con los que sabemos que tienen que estar ahí:

$ route -n
Tabla de rutas IP del núcleo
Destino         Pasarela        Genmask         Indic Métric Ref    Uso Interfaz
192.168.1.0     0.0.0.0         255.255.255.0   U     1      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0

Bien, hay que saber que se trata de la característica Automatic Private IP Address (APIPA), y es la asignación automática por parte del sistema operativo de una IP en ese rango (máscara de red 255.255.0.0) cuando no consigue contactar con el servidor DHCP que tiene que asignarnos una IP. En un hipotético caso de una red privada en la que fallara el servidor DHCP, esto permitiría que las máquinas conectadas a esa red tuvieran asignada una IP dentro del mismo rango y se pudieran comunicar, no así con el exterior ya que no se configura gateway.

Si queremos prescindir de esta funcionalidad en sistemas RHEL, CentOS, Scientific Linux, etc. Debemos añadir la directiva “NOZEROCONF=yes” al fichero “/etc/sysconfig/network”.

NOZEROCONF=yes

Después reiniciamos la red:

# /etc/init.d/network restart

Enrutar en Linux (route add/del)


Ayer expliqué cómo visualizar las tablas de rutas en Linux, pero no vimos cómo agregar nuevas rutas, modificarlas o borrarlas. Vamos a ver en una entrada rápida unos ejemplos básicos del comando route que nos enseñarán a modificar la tabla de rutas. Partimos de esta base:

$ route -n
Tabla de rutas IP del núcleo
Destino         Pasarela        Genmask         Indic Métric Ref    Uso Interfaz
192.168.1.0     0.0.0.0         255.255.255.0   U     1      0        0 eth0
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0

Vamos a añadir una nueva ruta cuyo destino tenga la red 169.255.0.0/16. Todo tráfico contra esa red será redirigido a la interfaz eth0 y usará la puerta de enlace (gateway) 192.168.1.1:

$ sudo route add -net 169.255.0.0/16 gw 192.168.1.1 dev eth0
$ route -n
Tabla de rutas IP del núcleo
Destino         Pasarela        Genmask         Indic Métric Ref    Uso Interfaz
192.168.1.0     0.0.0.0         255.255.255.0   U     1      0        0 eth0
169.255.0.0     192.168.1.1     255.255.0.0     UG    0      0        0 eth0
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0

Para eliminar esta ruta en lugar de route add usamos route del:

$ sudo route del -net 169.255.0.0/16 eth0

También podríamos enrutar tráfico de una LAN sin necesidad de pasar por una gateway:

$ sudo route add -net 169.255.0.0/16 dev eth0

O establecer la gateway (puerta de enlace) por defecto. Será utilizada en caso de no haber otra regla efectiva por delante:

$ sudo route add default gw 192.168.2.1

Como siempre, para más información:

$ man route

Recordad que estos cambios no son persistentes a reinicios, tendréis que añadir los comandos a /etc/rc.local.

Routing Tables: ‘netstat -rn’ y ‘route -n’


Algo importante en los sistemas Linux (o Unix) y todo lo relacionado con networking es conocer el estado y configuración de las tablas de rutas IP (routing tables), que nos indican cómo y a través de donde se envía un paquete en las distintas redes.

Para visualizar la tabla de rutas tenemos dos posibilidades, utilizar el comando netstat -rn o route -n, ambos nos ofrecen la misma salida:

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0

Las tres primeras columnas nos indican, por un lado las redes de destino (Destination), la puerta de enlace que utilizan (Gateway) y la máscara de red (Genmask). En las Flags vemos “U”, que significa que la interfaz de red está levantada y G que indica que esa ruta utiliza la puerta de enlace. 0.0.0.0 es tratado como un wildcard (también se suele representar con un *) y especifica el destino a cualquier red no especificada.

Explicando la salida del comando route anterior, vemos en primer lugar que todo paquete dirigido a las redes 192.168.1.0/255.255.255.0 y 169.254.0.0/255.255.0.0 serán enviados a través de redes LAN (vemos que no hay flag de gateway) por lo que no harán uso de puerta de enlace. En cambio todo paquete con destino 0.0.0.0, es decir, el resto de redes sí que pasará por nuestra puerta de enlace 192.168.1.1. Todas estas rutas trabajan bajo la interfaz de red eth0, si tuviéramos más interfaces levantadas aparecerían marcadas como ethX en la columna Iface.

Snort: FATAL ERROR: OpenPcap() device eth0 open: bind: Network is down


Es común encontrar este error al tratar de arrancar Snort en una instalación nueva, es debido a que en el fichero de arranque (/etc/init.d/snort) por defecto tiene configurado para esnifar en la interfaz eth0, si utilizamos otra interfaz de red para ello encontraremos el error.

Para solucionarlo, acceded al script de configuración y cambiar el parámetro que indico a continuación especificando la interfaz de red que esnifará:

vi /etc/init.d/snort
----------------------------------------------------------
# Specify your network interface here
INTERFACE=eth0
----------------------------------------------------------

Una vez cambiado reiniciamos snort:

/etc/init.d/snort restart

Configurar tarjetas de Red en FreeBSD con sysinstall


Sysinstall es una utilidad de FreeBSD que podemos ejecutar en modo terminal para realizar diversas configuraciones del sistema post-instalación. Hoy vamos a ver como configurar las tarjetas de red:

En primer lugar ejecutamos sysinstall:

$ sysinstall

Sysinstall

Una vez estemos dentro, accedemos a la sección Configure, y después a Networking, donde accederemos a la configuración de las interfaces de red (Interfaces), y veremos algo similar a lo siguiente:

SysInstall, interfaces de red

Ahora seleccionaremos la interfaz que deseemos configurar. Una vez seleccionada, en primera instancia nos preguntará dos cosas:

1) ¿Queremos activar el soporte IPV6?

 User Confirmation Requested
       Do you want to try IPv6 configuration of the interface?

                              Yes   [ No ]

2) ¿ Queremos activar DHCP ?

               User Confirmation Requested
        Do you want to try DHCP configuration of the interface?

                              Yes   [ No ]

En nuestro caso, no queremos ninguna de las dos cosas, vamos a configurar una tarjeta de red con configuración IPV4 y direccionamiento estático:

Configuracion red FREEBSD

Nos podremos mover entre elementos con la tecla [TAB], paso a describiros cada una de las opciones:

Host: El nombre de la máquina (fully-qualified hostname)
Domain: El nombre del dominio en el que la máquina se encuentra.
IPv4 Gateway: Puerta de enlaceault gateway or default route.
Name server: Servidor de nombres que usará el equipo
IPv4 address: La IP estática de la interfaz de red.
Netmask: La máscada de red.

Una vez configurado todo, simplemente vamos con la tecla [TAB] hasta el Ok y presionamos ENTER:

     User Confirmation Requested
        Would you like to Bring Up the ed0 interface right now?

                             [ Yes ]   No

Nos dice si queremos levantar la interfaz de red, si la levantamos comenzará a responder.