我当前的环境如下;在Windows 10中,我在Hyper-V中安装了Ubuntu 16.04,这个托管的Ubuntu连接到本地网络10.10.10.*,其中Ubuntu的IP是10.10.10.1,Windows的IP是10.10.10.100。他们看到对方,一切都很好。在 Ubuntu 中,我有 LXC/LXD 容器(nginx、postgres 和 nodejs 服务),对于这些容器,我桥接了名为 chyrrybr0 的网络,地址为 10.10.0.*,因此当前环境如下所示:
我可以从容器 ping Windows,但无法从 Windows ping 或连接到容器。所以,我的问题如下:我怎样才能向容器添加新的网络接口,这样我就可以将静态 IP 地址设置为 10.10.10.*?
我正在尝试创建一个网络,如下所示:
编辑:我能够添加新的 eth1 接口。首先,在 Ubuntu 主机中运行lxc network attach eth1 postgres eth1
,然后在 postgres 容器中添加网络接口配置10-win-network.cfg
和内容
auto eth1
iface eth1 inet static
address 10.10.10.5
netmask 255.255.255.0
但是,从现在开始,我无法 ping 通位于 10.10.10.100 ( 100% packet loss
) 的 Windows 主机以及位于 10.10.10.1 ( icmp_seq=1 Destination Host Unreachable
) 的 Ubuntu 主机。但是 ping 10.10.0.249(cherrybr0 的 Ubuntu 主机的 IP 地址)是成功的。我缺少什么?
答案1
我不知道你是否能够解决这个问题,但我最近遇到了类似的问题(“如何从我的笔记本电脑外部访问在本地笔记本电脑上运行的容器?”),我只是将静态路由添加到我家的路由器...
脚步:
- 例如,在单独的网络上运行所有容器
172.18.0.0/16
。所有这些容器都将位于一个 IP 后面172.18.0.1
,例如,我们称之为这台机器Ship
(因为它有容器..呵呵)。 - 你的
Ship
还必须有一个本地 IP,例如192.168.1.xxx
,这是您的路由器知道的地址。 172.18.0.0
在您的路由器(或 Windows 计算机,如果那是您的路由器)上,将网络子掩码的静态路由添加255.255.0.0
到您的Ship
s192.168.1.xxx
。
瞧,现在您可以172.18.0.xxx
从本地网络上的任何地方(包括您的 Windows 机器)调用您的容器 ( )