我有一个在 VPC 内运行的 EC2 实例。我需要在该实例中启动的 LXC 容器内运行一项服务,并使该服务可供外界使用。
因此,我创建了一个网桥(br0
),并使用以下/etc/network/interfaces
文件获取10.0.3.1
与该网桥关联的 EC2()提供的 IP 地址:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet manual
auto br0
iface br0 inet dhcp
netmask 255.255.0.0
bridge_ports eth1
bridge_stp off
bridge_maxwait 0
post-up brctl setfd br0 0
这是我从中获得的信息ifconfig
:
br0 Link encap:Ethernet HWaddr 16:2b:ae:07:29:82
inet addr:10.0.3.1 Bcast:10.0.255.255 Mask:255.255.0.0
inet6 addr: fe80::142b:aeff:fe07:2982/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11 errors:0 dropped:0 overruns:0 frame:0
TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1026 (1.0 KB) TX bytes:1238 (1.2 KB)
eth0 Link encap:Ethernet HWaddr 16:2b:ae:0a:db:b6
inet addr:10.0.67.62 Bcast:10.0.255.255 Mask:255.255.0.0
inet6 addr: fe80::142b:aeff:fe0a:dbb6/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:229 errors:0 dropped:0 overruns:0 frame:0
TX packets:217 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:25889 (25.8 KB) TX bytes:23330 (23.3 KB)
Interrupt:27
eth1 Link encap:Ethernet HWaddr 16:2b:ae:07:29:82
inet6 addr: fe80::142b:aeff:fe07:2982/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:14 errors:0 dropped:0 overruns:0 frame:0
TX packets:17 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1222 (1.2 KB) TX bytes:1798 (1.7 KB)
Interrupt:28
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
这里的问题是我无法访问具有 IP 地址的 LXC 容器10.0.3.2
:
user@ip-10-0-67-62:~$ ping 10.0.3.2
PING 10.0.3.2 (10.0.3.2) 56(84) bytes of data.
From 10.0.67.62 icmp_seq=1 Destination Host Unreachable
...
如能得到有关如何调试此问题的任何提示或建议,我们将非常感激。
更新:输出来自ip route
:
$ ip route
default via 10.0.0.1 dev eth0 metric 100
10.0.0.0/16 dev eth0 proto kernel scope link src 10.0.67.62
10.0.0.0/16 dev br0 proto kernel scope link src 10.0.3.1
更新:输出来自iptables -nvL
:
$ iptables -nvL
Chain INPUT (policy DROP 13 packets, 416 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
2195 129K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8
88029 130M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 26680 packets, 1669K bytes)
pkts bytes target prot opt in out source destination
答案1
该桥将 lxc 容器与服务器主机连接起来,但没有网络输出。
因此,您可以使用 iptables 或隧道将流量从 eth0 转发到 br0。
您显示的 ip 是主机,客户系统具有您必须配置的其他 ip,容器是其他主机,具有与虚拟专用网络连接的其他网络接口。
internet <------>eth0 (主机) br0 <---虚拟专用网络 >---< eth0(容器)