У меня есть экземпляр EC2, работающий внутри VPC. Мне нужно запустить службу внутри контейнера LXC, запущенного в этом экземпляре, и сделать службу доступной для внешнего мира.
Поэтому я создал мост (br0
) и использовали следующие /etc/network/interfaces
файл, чтобы получить IP-адрес, предоставленный EC2 (10.0.3.1
) связанный с мостом:
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)
Проблема здесь в том, что я не могу связаться с контейнером LXC, у которого есть IP-адрес. 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
Этот мост соединяет контейнер lxc с хостами сервера, но не имеет сетевого выхода.
Таким образом, вы можете перенаправить трафик с eth0 на br0 с помощью iptables или туннелей.
IP-адреса, которые вы показываете, являются хостом, у гостевой системы есть другой IP-адрес, который вы должны настроить, контейнер - это другой хост, с другим сетевым интерфейсом, подключенным к виртуальной частной сети.
интернет <------> eth0 (хост) br0 <--- виртуальная частная сеть> --- <eth0 (контейнер)