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.
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.