Como a AWS configura o endereço 169.254.169.254 em uma instância?

4

A AWS usa 169.254.169.254 como um endereço local de link, que você pode usar para extrair metadados sobre a instância, ou seja:

curl link

Como / onde esse IP é configurado na instância? Eu posso ver uma rota para isso se eu fizer um "ip route". E se eu "netcat -Cvz 169.254.169.254 80", eu posso obter uma conexão. No entanto, eu não vejo a instância escutando em lugar algum se eu fizer um "netstat -ntlp". Se eu tentar se conectar a outra porta, "netcat -Cvz 169.254.169.254 22", ele falhará. Na verdade, eu tenho o que parece ser um serviço Apache conflitante sendo executado em 0.0.0.0:80. Então parece que esse endereço está se referindo a um host externo. Estaria apontando para o hipervisor?

    
por blindsnowmobile 08.06.2016 / 02:44

1 resposta

2

A maioria das distribuições de linux já irá criar uma rota Zeroconf, o que provavelmente é o motivo pelo qual a Amazon imaginou que eles "emprestariam" aquele endereço IP em particular. Por exemplo, se você instalar o CentOS 7, então, "fora da caixa", sua Ethernet principal receberá uma rota adicionada:

/ etc / sysconfig / scripts de rede / 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

Não há dúvida de que coisas semelhantes existem no debian, ubuntu, etc ...

Você pode se perguntar como funciona quando nenhum dos seus endereços de interface local está na sub-rede correta, mas na verdade o Linux não liga muito para isso. Alguns servidores geram um endereço Zeroconf local usando apenas números aleatórios conforme a RFC3927, caso em que eles usarão o endereço gerado. De qualquer forma não deve fazer muita diferença, desde que a coisa em 169.254.169.254 esteja feliz em responder.

    
por 20.07.2017 / 09:44