我想在我的 EC2 实例中创建一个网桥并将 IP 地址与其关联。
给定默认/etc/network/interfaces
文件:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
我只是在最后添加了以下内容:
auto br0
iface br0 inet static
address 10.0.3.1
netmask 255.255.255.0
bridge_ports eth0
bridge_stp off
bridge_maxwait 0
post-up brctl setfd br0 0
一旦我重新启动网络或者只是运行ifup br0
,我就会失去与 EC2 实例的连接(即我无法再通过 SSH 进入它)。
可能是什么原因?
答案1
当你将接口添加到网桥时,实际接口不应再具有关联的 IP 地址 - 它们应移至网桥。你的配置应如下所示:
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet dhcp
bridge_ports eth0
这应该会导致 EC2 提供的 IP 地址附加到 br0。
然而,在 EC2 中运行网桥并不是很有用(不确定 VPC 是否如此,但如果您不在 VPC 上,那肯定是有用的),因为您没有对网络的完全第 2 层访问权限,并且无法将多个任意 IP 暴露到网络上。如果源 IP 与实例的 IP 不匹配,EC2 网络将拒绝来自 LXC 容器的数据包。
您可能想要做的是为 LXC 容器创建一个网桥,但其中没有 eth0。然后在 eth0 和网桥之间配置 IP 转发,并在传出连接上使用 SNAT,以便 EC2 仅看到实例的 IP。