我想在我的本地系统上模拟 Amazon EC2 元数据服务进行测试。在 EC2 中,它运行在169.254.169.254
. 我知道这是DHCP 失败时伪随机本地地址的指定范围,但亚马逊在他们的智慧中也将其用于此目的,所以我需要做同样的事情。
我正在使用 F19 Alpha。在早期的 Fedora 中,我可以简单地在环回设备上创建一个虚拟接口,就像lo:0
使用普通ifcfg-
脚本分配静态地址一样。现在,失败并显示“错误:连接激活失败:设备不受 NetworkManager 管理或不可用”。
(我正在运行 NetworkManager,但以前我是在它下面这样做的。)
是否正在寻找某种方法以lo:0
正确的方法继续我正在做的事情(如果是,如何?),还是有更好的方法?
要回答您的具体问题,您可以使用iproute2分配 IP 地址,如下所示:
sudo ip addr add 169.254.169.254/16 dev lo
Run Code Online (Sandbox Code Playgroud)
它只会向接口添加一个新 IP,无需使用 :0、:1 等别名。请注意,这将在重新启动后丢失。
为了快速模拟元数据服务,您可以像这样使用netcat:
while true; do sudo nc -l 169.254.169.254 80 <<< '"region" : "eu-west-1"'; test $? != 0 && break; done
Run Code Online (Sandbox Code Playgroud)
当这样询问时,这将为您提供区域:
curl -s http://169.254.169.254/latest/dynamic/instance-identity/document
Run Code Online (Sandbox Code Playgroud)
注意:根据来自 AWS的此文档页面的当前版本,元数据服务 IP 是链接本地地址,它指向有关它的维基百科文章。反过来,该页面指向RFC3927,其内容如下:
为此,在 IANA 注册了 IPv4 前缀 169.254/16。