diff options
author | Jesús <heckyel@hyperbola.info> | 2021-05-08 18:56:37 -0500 |
---|---|---|
committer | Jesús <heckyel@hyperbola.info> | 2021-05-08 18:56:37 -0500 |
commit | 890686afec1e3528db3e8ea5e360d44b763536b5 (patch) | |
tree | 2b0553498302bf9eac86c63013a4b472c053efa0 | |
parent | 35192dc549e0cd97d09fd4a092d29b0f0bacdc6a (diff) | |
download | cl-890686afec1e3528db3e8ea5e360d44b763536b5.tar.lz cl-890686afec1e3528db3e8ea5e360d44b763536b5.tar.xz cl-890686afec1e3528db3e8ea5e360d44b763536b5.zip |
Add "Cómo agregar o eliminar una entrada ARP estática en GNU+Linux" article
-rw-r--r-- | content/articles/como-agregar-o-eliminar-una-entrada-arp-estatica-en-gnu-linux.md | 192 |
1 files changed, 192 insertions, 0 deletions
diff --git a/content/articles/como-agregar-o-eliminar-una-entrada-arp-estatica-en-gnu-linux.md b/content/articles/como-agregar-o-eliminar-una-entrada-arp-estatica-en-gnu-linux.md new file mode 100644 index 0000000..79dde88 --- /dev/null +++ b/content/articles/como-agregar-o-eliminar-una-entrada-arp-estatica-en-gnu-linux.md @@ -0,0 +1,192 @@ +Author: Anonymous +Category: education +Date: 2021-05-08 05:00 +Slug: como-agregar-o-eliminar-una-entrada-arp-estatica-en-gnu-linux +Tags: arp, arp estática, arp quitar +Title: Cómo agregar o eliminar una entrada ARP estática en GNU+Linux + +ARP (abreviatura de "Protocolo de resolución de direcciones") es un +protocolo de red que se utiliza para asignar una dirección de red IP +a una dirección MAC de hardware correspondiente. + +Cuando el host X quiere comunicarse con el host Y, X primero transmite +una solicitud ARP en su red local para obtener la dirección MAC de Y. + +Una vez que X recibe la respuesta ARP que contiene la dirección MAC +de Y, X usa la información para construir tramas Ethernet +destinadas a Y. + +La información de mapeo de direcciones IP/MAC así obtenida se +almacena en caché en la tabla ARP local, de modo que el proceso de +consulta ARP se puede omitir posteriormente. + +Pueden surgir problemas cuando, por cualquier motivo, el host X no +recibe respuestas ARP para un host de destino Y con el que desea +comunicarse. En otros casos, las respuestas ARP entran, pero +contienen una dirección MAC asociada con un host Z incorrecto. + +Tales respuestas ARP corruptas resultarán en secuestro de tráfico, +donde el tráfico que debería haber sido enviado a Y termina +llegando al host Z. + +Al tratar con este tipo de situaciones anormales inducidas por ARP, +es útil poder agregar entradas ARP estáticas manualmente en la +tabla ARP almacenada en caché local. Cuando se encuentra una +dirección MAC de un host de destino Y en la tabla ARP local, +no es necesario enviar solicitudes ARP. + +## Agregar una entrada ARP estática a la tabla ARP local + + :::console + $ doas arp -s 10.0.0.2 00:0c:29:c0:94:bf + +Este comando le dice a la tabla ARP local que el host con la +dirección IP 10.0.0.2 tiene la dirección MAC 00:0c:29:c0:94:bf. +Una vez que haya configurado una entrada ARP estática, +puede verificar que + + :::console + $ arp -a -n + +salida: + + :::bash + ? (192.168.10.47) at e0:db:55:ce:13:f1 [ether] on eth0 + ? (192.168.10.1) at 00:e0:b1:cb:07:30 [ether] on eth0 + ? (10.0.0.2) at 00: 0c: 29: c0: 94: bf [ether] PERM on eth1 + +Como puede ver arriba, la entrada ARP configurada estáticamente +aparece correctamente, marcada como "PERM" en la tabla ARP. + +## Eliminar una entrada ARP estática de la tabla ARP local + + :::console + $ doas arp -d 10.0.0.2 + +Verificar: + + :::console + $ arp -a -n + +salida: + + :::bash + ? (135.112.29.47) at e0:db:55:ce:13:f1 [ether] on eth0 + ? (135.112.29.1) at 00:e0:b1:cb:07:30 [ether] on eth0 + ? (10.0.0.2) at <incomplete> on eth1 + +Tenga en cuenta que cualquier entrada de ARP agregada por el +comando arp en tiempo de ejecución como el anterior no +permanece de manera persistente entre los reinicios. +Para agregar una entrada ARP estática de forma permanente, +lo que puede hacer es cargar entradas ARP desde un archivo +externo automáticamente cuando una interfaz de red está +activa. Para eso, primero cree un archivo que contenga +entradas ARP estáticas. + + :::console + $ doas nano -w /etc/ethers + +Entrada de ejemplo: + + :::bash + 00:0c:29:c0:94:bf 10.0.0.2 + 00:0c:59:44:f0:a0 10.0.0.5 + . . . . + +El comando `arp` le permite cargar cualquier archivo +externo usando la opción `-f`. + + :::console + $ doas arp -f /etc/ethers + +Ahora debe configurar el comando anterior para que +se ejecute automáticamente cuando una interfaz de red +determinada (por ejemplo, eth0) esté activa. +Hay formas específicas de distribución para ejecutar +un comando de inicio para interfaces de red. +A continuación se muestran ejemplos específicos +de la distribución. + +Aquí supongo que no está utilizando NetworkManager en +su sistema GNU con Linux. Entonces, si está utilizando +NetworkManager, primero tendrá que deshabilitarlo. + +En Trisquel o Debian, agregue la siguiente entrada +en `/etc/network/interfaces`: + + :::bash + iface wlan0 inet dhcp + . . . + post-up arp -f /etc/ethers + +En CentOS, RHEL o Fedora, escriba el siguiente script ejecutable: + + :::console + $ doas nano -w /sbin/ifup-local + +Entrada: + + :::bash + #!/bin/sh + if [[ "$1" == "eth0" ]] + then + arp -f /etc/ethers + else + #DO_NOTHING + fi + +Asignamos persmisos de ejecución: + + :::console + $ doas chmod +x /sbin/ifup-local + +Tengo algunos dispositivos IP bastante tontos en una subred +con un servidor Trisquel, y el servidor recibe datos de +transmisión de cada dispositivo. Me he encontrado con un +problema en el sentido de que cuando se emite una solicitud +ARP al dispositivo mientras está transmitiendo datos +al servidor, la solicitud se ignora, la entrada de caché +se agota y el servidor deja de recibir la transmisión. + +Entonces, para evitar que el servidor envíe solicitudes ARP +a estos dispositivos por completo, me gustaría agregar +una entrada ARP estática para cada uno, algo como + + :::console + $ doas arp -i eth2 -s ip.of.the.device mac:of:the:device + +Pero estas entradas ARP "estáticas" se pierden si la red +está deshabilitada/habilitada o si se reinicia el servidor. + +¿Cuál es el mejor lugar para agregar automáticamente estas +entradas, preferiblemente en algún lugar que las vuelva a +agregar cada vez que se abra la interfaz eth2? + +Realmente no quiero tener que escribir un script que +monitoree la salida de arp y vuelva a agregar las +entradas de caché si faltan. + +Edite para agregar cuál fue mi script final: + +Escribí este archivo: + + :::console + $ doas nano -w /etc/network/if-up.d/add-my-static-arp + +Con el contenido: + + :::bash + #!/bin/sh + arp -i eth0 -s 192.168.0.4 00:50:cc:44:55:55 + arp -i eth0 -s 192.168.0.5 00:50:cc:44:55:56 + arp -i eth0 -s 192.168.0.6 00:50:cc:44:55:57 + +Y luego, obviamente, agregue el permiso para permitir +que se ejecute: + + :::console + $ doas chmod +x /etc/network/if-up.d/add-my-static-arp + +Y estas entradas arp se agregarán o volverán a agregar +manualmente cada vez que se abra cualquier interfaz de red. |