es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

wget resuelve a una dirección IP diferente que el host.

Tengo un script de shell en el que uso host para obtener la IP del sitio objetivo y actualizar ufw para permitir el tráfico saliente hacia esa IP. Sin embargo, cuando hago la llamada posterior a wget a la misma URL base, se resuelve a una IP diferente y, por lo tanto, es bloqueada por ufw. Solo para probar, intenté hacer ping a la URL y retornó una tercera IP diferente.

Estamos bloqueando todo el tráfico saliente por defecto en ufw y solo habilitamos lo que necesitamos para salir, por lo que necesito que el script actualice la IP correcta para poder descargar el contenido con wget. La IP en cada instancia (host vs wget) es consistentemente la misma, pero retornan valores diferentes entre sí, por lo que no creo que sea simplemente un problema de DNS. ¿Cómo obtengo una IP consistente para actualizar el firewall y garantizar que la solicitud posterior de wget se realice correctamente? Deshabilité el firewall como prueba y pude descargar desde la URL de manera exitosa, por lo que el problema definitivamente está en obtener una IP consistente a la que apuntar.

HOSTNAME=<nombre del="" sitio="" para="" resolver="">
LOGFILE=<ruta del="" archivo="" de="" registro="">
Current_IP=$(host $HOSTNAME | head -n 1 | cut -d " " -f 4)

<h1>esto muestra el valor correcto</h1>

echo $Current_IP

if [ ! -f $LOGFILE ]; then
    /usr/sbin/ufw allow out from any to $Current_IP
    echo $Current_IP > $LOGFILE
    echo Nueva dirección IP encontrada y registrada >> ./download.log
else

Old_IP=$(cat $LOGFILE)
if [ "$Current_IP" = "$Old_IP" ] ; then
    echo La dirección IP no ha cambiado >> ./download.log
else
    /usr/sbin/ufw delete allow out from any to $Old_IP
    /usr/sbin/ufw allow out from any to $Current_IP
    echo $Current_IP > $LOGFILE
    echo La dirección IP se actualizó en ufw >> ./download.log
fi
fi

Después de actualizar el firewall, una llamada posterior de wget a HOSTNAME intenta conectarse a una IP diferente a la que se acaba de actualizar.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema podría ser debido al almacenamiento en caché de DNS, donde el resolutor de DNS está devolviendo una dirección IP diferente a la esperada. Para obtener una dirección IP consistente, podrías intentar omitir el resolutor de DNS y especificar la dirección IP directamente en el script de shell. Otra opción sería reducir el TTL (tiempo de vida) del registro DNS a un valor más bajo, para que expire más rápido y se actualice con mayor frecuencia. También podrías intentar usar otro resolutor de DNS o limpiar la caché de DNS local antes de ejecutar el script para asegurarte de que se resuelve la IP correcta.

Comments are closed.