我想在本地系统上模拟 Amazon EC2 元数据服务进行测试。在 EC2 中,它运行在169.254.169.254
.我明白这是指定的DHCP 失败时伪随机本地地址的范围,但亚马逊以他们的智慧也将其用于此目的,所以我需要做同样的事情。
我正在使用 F19 Alpha。在早期的 Fedora 中,我可以简单地在环回设备上创建一个虚拟接口,例如lo:0
使用普通脚本为其分配静态地址ifcfg-
。现在,失败了“错误:连接激活失败:设备不受 NetworkManager 管理或不可用”。
(我正在运行 NetworkManager,但之前我是在它下面执行此操作的。)
是否正在寻找某种方法以lo:0
正确的方法继续我正在做的事情(如果是,如何?),还是有更好的方法?
答案1
要回答您的具体问题,您可以使用ip路由2像这样分配IP地址:
sudo ip addr add 169.254.169.254/16 dev lo
它只会向接口添加一个新的 IP,不需要使用:0、:1 等别名。请注意,重启后这将丢失。
并快速模拟您可以使用的元数据服务网猫像这样:
while true; do sudo nc -l 169.254.169.254 80 <<< '"region" : "eu-west-1"'; test $? != 0 && break; done
当这样询问时,这将为您提供区域:
curl -s http://169.254.169.254/latest/dynamic/instance-identity/document
笔记:根据AWS 中此文档页面的当前版本元数据服务IP是一个链路本地地址,它指向维基百科关于它的文章。反过来该页面指向RFC3927其中写着:
为此,IPv4 前缀 169.254/16 已向 IANA 注册。
答案2
好久没用Fedora了,不过应该和CentOS还是很相似的。我在 CentOS 6 上做了这个。
复制/etc/sysconfig/network-scripts/ifcfg-lo
到/etc/sysconfig/network-scripts/ifcfg-lo:1
您的新配置应如下所示:
DEVICE=lo:1
IPADDR=169.254.169.254
NETMASK=255.0.0.0
ONBOOT=yes
NAME=loopback1
重新启动网络服务service network restart
。
好机会我的朋友!