AWS使用169.254.169.254作为链接本地地址,您可以使用它来获取有关该实例的元数据,即:
curlhttp://169.254.169.254/latest/meta-data/
这个IP在实例上如何/在哪里configuration? 我可以看到一个路由,如果我做一个“IP路由”。 如果我“netcat -Cvz 169.254.169.254 80”,我可以得到一个连接。 但是,如果我执行“netstat -ntlp”,实际上并没有看到实例正在侦听。 如果我尝试连接到另一个端口“netcat -Cvz 169.254.169.254 22”,则失败。 事实上,我似乎有一个冲突的Apache服务运行在0.0.0.0:80。 所以看起来这个地址是指外部主机。 它会指向pipe理程序吗?
大多数Linux发行版本已经创build了一个Zeroconf路由,这可能就是为什么Amazon认为他们会“借用”这个特定的IP地址。 例如,如果你安装了CentOS 7,那么“开箱即用”的主要以太网将会添加一个路由:
在/ etc / sysconfig / network中的脚本/ ifup的-ETH
# Add Zeroconf route. if [ -z "${NOZEROCONF}" -a "${ISALIAS}" = "no" -a "${REALDEVICE}" != "lo" ]; then ip route add 169.254.0.0/16 dev ${REALDEVICE} metric $((1000 + $(cat /sys/class/net/${REALDEVICE}/ifindex))) scope link fi
毫无疑问,类似的东西存在于Debian,Ubuntu的等…
您可能想知道,当您的本地接口地址都不在正确的子网中时,它是如何工作的,但实际上Linux并不关心太多。 一些服务器根据RFC3927使用随机数生成本地Zeroconf地址,在这种情况下,它们将使用生成的地址。 无论哪种方式应该没有什么区别,只要在169.254.169.254的东西很乐意回答。