wget 解析为与主机不同的 IP

wget resolves to a different IP than host

我有一个 shell 脚本,我在其中使用 host 获取目标站点的 IP 以更新 ufw 并允许到该 IP 的出站流量。然而,当我对同一个基础 URL 进行后续 wget 调用时,它解析为不同的 IP,因此被 ufw 阻止。只是为了测试,我尝试对 URL 执行 ping 操作,结果 return 使用了另一个不同的第三个 IP。

我们在 ufw 中默认阻止所有出站流量,并且只启用我们需要出站的流量,所以我需要脚本来更新正确的 IP,这样我就可以 wget内容。每个实例中的 IP(hostwget)始终相同,但它们 return 彼此的值不同,因此我认为这不仅仅是 DNS 问题。如何获得一致的 IP 来更新防火墙,以便后续的 wget 请求成功执行?作为测试,我禁用了防火墙,并且能够从 URL 成功下载,所以问题肯定在于获取一致的 IP 指向。

HOSTNAME=<name of site to resolve>
LOGFILE=<logfile path>
Current_IP=$(host $HOSTNAME | head -n 1 | cut -d " " -f 4)

#this echoes the correct value
echo $Current_IP

if [ ! -f $LOGFILE ]; then
    /usr/sbin/ufw allow out from any to $Current_IP
    echo $Current_IP > $LOGFILE
    echo New IP address found and logged >> ./download.log
else

    Old_IP=$(cat $LOGFILE)
    if [ "$Current_IP" = "$Old_IP" ] ; then
        echo IP address has not changed >> ./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 IP Address was updated in ufw >> ./download.log
    fi
fi

更新防火墙后,后续的 wgetHOSTNAME 会尝试访问与刚刚更新的不同的 IP。

原来区别是“www.”。当我解析 host 时,我没有使用 www,而当我使用 wget 时,我使用的是 www,因此他们为这个特定站点解析了不同的 IP。