在EC2上创build网桥会导致连接丢失

我想在我的EC2实例中创build一个桥梁并将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 

只要我重新启动networking或只是运行ifup br0 ,我就失去了连接到EC2的实例(即我无法SSH到它了)。

可能是什么原因?

当你添加一个接口到一个网桥时,真正的接口不应该有IP地址关联 – 他们应该被移动到网桥。 你的configuration应该是这样的:

 auto eth0 iface eth0 inet manual auto br0 iface br0 inet dhcp bridge_ports eth0 

这应该导致由EC2提供的IP地址被连接到br0。

但是,在EC2中运行桥梁并不是很有用(不知道VPC,但是如果你不在VPC上),因为你没有完全的第二层访问权限,不能暴露多个,任意IP到networking上。 如果源IP与实例的IP不匹配,则EC2networking将拒绝来自LXC容器的数据包。

你可能想要做的是为LXC容器创build一个桥梁,但不包含eth0。 然后在eth0和网桥之间configurationIP转发,在传出连接上使用SNAT,以便EC2只能看到实例的IP。