El caché ARP existe de una forma u otra en cada host que se comunica vía IP sobre Ethernet. La caché contiene el mapeo entre la dirección IP y la dirección de Control de Acceso a los Medios (MAC) de Ethernet. Si cambias un adaptador Ethernet en un host llamado SERVER-1 o reemplazas SERVER-1 por un hardware más nuevo o más rápido, todos los hosts en el segmento Ethernet local que se comunican con SERVER-1 necesitarán que se actualice su caché ARP. SERVIDOR-1 puede enviar un paquete ARP gratuito que debería actualizar todos los hosts pero como es Ethernet existe la posibilidad de que el paquete ARP se corrompa o simplemente se caiga, por lo que no se puede confiar en él.
Las entradas de la caché ARP en la pila STCP en OpenVOS tienen una duración de 10 minutos, es decir, después de 10 minutos se borran automáticamente y se añadirán de nuevo la próxima vez que se necesite enviar un paquete. Cuando se muestra el caché ARP, muestra el tiempo que queda para cada entrada. Así que el peor escenario es que después de cambiar el SERVIDOR-1 tomará 10 minutos para que el viejo (incorrecto) mapeo expire y se agregue un nuevo (correcto) mapeo. Durante ese tiempo la comunicación con el SERVIDOR-1 no será posible.
Puedes borrar una entrada dada con el comando arp - delete. La figura 1 muestra una instancia del comando arp que muestra la dirección MAC y el tiempo de vida seguido del comando arp -delete para borrar la entrada y otra instancia del comando arp que muestra que ya no hay una entrada en la caché.
arp 192.168.50.5 Dirección de Internet Dirección MAC Tipo de vida 192.168.50.5 00-04-96-1F-67-0C temp 6 min listo 14:01:30 arp - borrar 192.168.50.5 Cartografía para 192.168.50.5 suprimida listo 14:01:39 arp 192.168.50.5 arp: sin cartografía para 192.168.50.5 listo 14:01:44 |
Figura 1 - Comandos "arp" y "arp -delete" |
La vieja pila TCP_OS tenía un comando arp -flush que borraba todas las entradas del caché ARP. Si tienes más de una entrada para borrar, puede ser más fácil (menos escribir) borrarlas todas. Dado que las entradas se añaden automáticamente a medida que se necesitan, el único inconveniente es que se producen algunos paquetes extra en la red y un retraso adicional (mientras se repobla la caché ARP) en el envío del primer paquete. Desde el punto de vista del mecanógrafo no hay ningún inconveniente.
La pila de STCP no tiene una opción de descarga
---------------------------------- arp --------------------------------- nombre del anfitrión: -todo: no -red: -borrar: no -set: no mac_addr: |
Figura 2 - Formulario de comando arp STCP |
Así que escribí una breve macro (figura 3) para hacerlo. La macro redirige la salida del arp -all a un archivo en el directorio de procesos, luego analiza el archivo para extraer las direcciones IP y llama al arp -delete con cada dirección. Para cuando termine algunas de las entradas estarán de vuelta pero todas habrán sido refrescadas con el mapeo actual.
y arp_flush.cm comienza aquí & & Versión 1.00 11-04-17 & [email protected] & & Este guión borra la caché del arp borrando individualmente cada entrada. & Para cuando esté hecho, algunas entradas estarán de vuelta. & & Este software se proporciona "TAL CUAL", SIN NINGUNA GARANTÍA O Y CUALQUIER APOYO DE CUALQUIER TIPO. El AUTOR EXCLUSIVAMENTE RENUNCIA CUALQUIER IMPLICACIÓN Y GARANTÍAS DE COMERCIABILIDAD O IDONEIDAD PARA CUALQUIER PROPÓSITO EN PARTICULAR. Este descargo de responsabilidad se aplica, a pesar de cualquier representación verbal de cualquier ...y la clase proporcionada por el autor o cualquier otra persona. & &set_string ARCHIVO (directorio_de_proceso)>arp_list attach_default_output &FILE& arp -todo separar_salida_por_ defecto &set LÍNEA 2 &label otra vez &set LINE (calc &LINE& + 1) &set_string IP (substr (contenidos &ARCHIVO& & LÍNEA& -mantener) 1 16) Si (fin_de_archivo &ARCHIVO&) = 1 &entonces &retorno &si (longitud X&IP&) = 1 &luego &retorno arp - borrar &IP& &goto otra vez & y arp_flush.cm termina aquí |
Figura 3 - macro de comando arp_flush |
La figura 4 muestra una instancia del comando arp -all para ver lo que hay en la caché del arp, luego una ejecución del macro arp_flush seguida de otra instancia del arp -all, nótese que todas las vidas en el segundo arp -all son de 10 minutos. Eliminé muchas de las líneas de la primera salida de arp -all y arp_flush para reducir el espacio requerido.
arp -todo Dirección de Internet Dirección MAC Tipo de vida 10.10.1.200 00-90-E8-1F-4B-EA temp 8 mins 192.168.50.1 00-04-96-19-0B-20 temperatura 10 min. 192.168.50.4 00-04-96-35-3F-B5 temperatura 1 min. 192.168.50.2 00-04-96-20-C7-EC temp 4 mins 192.168.50.19 00-0C-29-6B-CA-AE temp 6 mins 192.168.50.21 00-23-54-79-C5-81 temp 7 mins . . . . . 192.168.51.252 00-50-56-BB-4D-8C temp 5 mins 192.168.51.253 00-0C-29-86-AD-CC temp 3 mins listo 13:46:14 arp_flush Cartografía para 10.10.1.200 suprimida Cartografía para 192.168.50.1 suprimida Cartografía para 192.168.50.4 suprimida Cartografía para 192.168.50.2 suprimida Cartografía para 192.168.50.19 suprimida Cartografía para 192.168.50.21 suprimida . . . . . . . Cartografía para 192.168.51.252 suprimida Cartografía para 192.168.51.253 suprimida listo 13:46:23 arp -todo Dirección de Internet Dirección MAC Tipo de vida 192.168.50.2 00-04-96-20-C7-EC temp 10 mins 192.168.51.4 00-04-FC-01-02-3E temp 10 mins 192.168.51.11 00-00-A8-80-80-4A temp. 10 min. 192.168.51.49 00-50-56-46-08-2C temp 10 mins 192.168.51.50 00-23-54-52-18-6E temp 10 mins 192.168.51.76 00-23-54-52-1B-F5 temp 10 mins 192.168.51.100 00-0C-29-A9-85-44 temp 10 mins 192.168.51.128 00-00-A8-43-52-22 temperatura 10 minutos 192.168.51.158 00-26-B9-BC-B7-37 temp 10 mins 192.168.51.180 5C-26-0A-06-BD-29 temp 10 mins 192.168.51.203 00-00-A8-C0-86-A1 temp 10 mins listo 13:46:27 |
Figura 4 - Ejecución de la macro del comando arp_flush |