当前位置: 首页 > 知识库问答 >
问题:

如何设置通过局域网通信的LXD容器

法和安
2023-03-14

我有一套连接到局域网的服务器。我能够在机器上安装和使用LXD容器,但就我的一生而言,我无法在网络上看到这些容器。我已尝试跟踪这些URL,但没有成功:

  • https://www.simpleprecision.com/ubuntu-16-04-lxd-networking-simple-bridge/
  • https://www.stgraber.org/2016/10/27/network-management-with-lxd-2-3/
  • https://www.simpleprecision.com/ubuntu-16-04-lxd-networking-simple-bridge/

我的服务器设置如下:

  1. eth0-连接到互联网的硬件网卡
  2. eth1-连接到局域网的硬件网卡

如果我试图通过lxdbr0在eth1设备上设置网桥,则容器在LAN上不可见。如果我尝试手动设置桥接br0设备,桥接到eth1并使用DHCP,则设备无法启动。

我的/etc/网络/接口如下所示:

iface lo inet loopback

# The primary network interface
iface eth0 inet static
    address x.x.x.x
    netmask 255.255.255.224
    gateway x.x.x.x

iface eth1 inet static
    address 192.168.0.61/23

iface br0 inet dhcp
    bridge_ports eth1
    bridge-ifaces eth1
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

auto lo eth0 eth1 br0

是否可以创建在LAN上可见并可以连接到internet的容器?

lxdv2。Ubuntu 16.04上的7

共有1个答案

有睿
2023-03-14

是的,这是很有可能的。我还没有充分利用LXD 2.3中引入的所有新网络功能,因此我无法对此进行任何讨论,但看起来您需要一个非常简单的网络布局,因此这些功能甚至可能无法发挥作用。我做了一些类似于您的网络布局的事情。我的所有服务器中都有4个NIC。前两个我加入了一个绑定并放在我的管理网络上,后两个我加入了一个延迟(另一个绑定)并用于所有LXD流量。我有多个VLAN,所以我的LAG被设置为中继端口,我为我想要连接的每个VLAN创建VLAN设备。然后,我将这些VLAN设备放入实际容器使用的网桥中。

除去所有绑定和原始VLAN设备,您基本上拥有相同的设置:一个NIC用于管理LXD主机,一个桥接器用于LXD容器通信。我不使用默认的lxcbr0设备,但所有概念都应该相同。

首先定义将成为网桥一部分的NIC。在您的情况下,看起来您只使用了一个NIC(eth1)。您需要将NIC设置为手动。不要给它分配地址。

auto eth1
iface eth1 inet manual

下一步定义网桥,同样我不会在这里定义IP地址。我更喜欢在容器内分配所有容器的IP。将桥接器也设置为手动。当容器启动时,它将启动设备。

auto br0
iface br0 inet manual
  bridge_ports eth1
  bridge_stp off
  bridge_fd 0
  bridge_maxwait 0

现在,您所要做的就是在容器的概要文件中使用此桥。

lxduser@lxdhost:~$ lxc profile show default
name: default
config: {}
description: ""
devices:
  eth0:
    name: eth0
    nictype: bridged
    parent: br0

现在启动容器并编辑网络html" target="_blank">配置。例如,在基于Debian的系统中,您可以编辑/etc/network/interfaces(在容器中)。在基于Red Hat的系统中,您可以编辑/etc/sysconfig/network scripts/ifcfg-eth0(在容器中)。下面是Debian示例。

auto eth0
iface eth0 inet dhcp

只要DHCP在eth1(在您的LXD主机上)插入的网络上工作,那么容器就应该获得一个地址,并且可以在该网络上路由。为了访问internet,必须将eth1插入具有internet访问权限的子网,它不依赖于容器。

如果您想要在不同的VLAN上放置容器,想要在主机上实现容错,或者两者兼而有之,那么这需要更多的设置。我在我的LXD主机上使用下面的配置文件。

############################
# PHYSICAL NETWORK DEVICES #
############################

# Management network interface
auto enp2s0f0
iface enp2s0f0 inet static
    address 10.1.31.36/24
    gateway 10.1.31.1
    dns-nameserver 10.1.30.2 10.1.30.3 75.75.75.75
    dns-search harmonywave.com

#iface enp2s0f0 inet6 dhcp

# Second network interface
auto enp2s0f1
iface enp2s0f1 inet manual

# LXD slave interface (1)
auto enp3s0f0
iface enp3s0f0 inet manual
    bond-master bond1

# LXD slave interface (2)
auto enp3s0f1
iface enp3s0f1 inet manual
    bond-master bond1

##########################
# BONDED NETWORK DEVICES #
##########################

# Bond network device
auto bond1
iface bond1 inet manual
    bond-mode 4
    bond-miimon 100
    bond-lacp-rate 1
    bond-slaves enp3s0f0 enp3s0f1
    bond-downdelay 400
    bond-updelay 800

####################
# RAW VLAN DEVICES #
####################

# Tagged traffic on bond1 for VLAN 10
iface bond1.10 inet manual
    vlan-raw-device bond1

# Tagged traffic on bond1 for VLAN 20
iface bond1.20 inet manual
    vlan-raw-device bond1

# Tagged traffic on bond1 for VLAN 30
iface bond1.30 inet manual
    vlan-raw-device bond1

# Tagged traffic on bond1 for VLAN 31
iface bond1.31 inet manual
    vlan-raw-device bond1

# Tagged traffic on bond1 for VLAN 42
iface bond1.42 inet manual
    vlan-raw-device bond1

# Tagged traffic on bond1 for VLAN 50
iface bond1.50 inet manual
    vlan-raw-device bond1

# Tagged traffic on bond1 for VLAN 90
iface bond1.90 inet manual
    vlan-raw-device bond1

##########################
# BRIDGE NETWORK DEVICES #
##########################

# Bridged interface for VLAN 10
auto br0-10
iface br0-10 inet manual
    bridge_ports bond1.10
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0    

# Bridged interface for VLAN 20
auto br0-20
iface br0-20 inet manual
    bridge_ports bond1.20
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0    

# Bridged interface for VLAN 30
auto br0-30
iface br0-30 inet manual
    bridge_ports bond1.30
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

# Bridged interface for VLAN 31
auto br0-31
iface br0-31 inet manual
    bridge_ports bond1.31
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

# Bridged interface for VLAN 42
auto br0-42
iface br0-42 inet manual
    bridge_ports bond1.42
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

# Bridged interface for VLAN 50
auto br0-50
iface br0-50 inet manual
    bridge_ports bond1.50
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

# Bridged interface for VLAN 90
auto br0-90
iface br0-90 inet manual
    bridge_ports bond1.90
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

让我们来分析一下。首先我定义物理NIC。这是物理网络设备部分。对于第一个NIC,我的和你的没有什么不同(eth0代表你,enp2s0f0代表我)。我只是静态地定义它并给它一个地址。我在管理网络上为此NIC分配了一个地址。我用于集装箱运输的第三个和第四个NIC。我想延迟使用LACP,所以我将设备定义为手动设备,并将其作为“bond1”的从属设备。

接下来,我定义了我的债券装置。这是BONDED NETWORK DEVICES部分。在这种情况下,集装箱运输只有一个键。再次,我将其设置为手动,并将键合模式定义为4(LACP)。可以很容易地设置不同类型的键(主动-被动、主动-主动等)。

接下来,因为第三个和第四个NIC物理连接到交换机上的中继端口,所以我必须指定dot1Q,以便实际标记流量。我为容器可能所在的每个VLAN创建一个原始VLAN设备。我附加了一个。XX,其中“XX”是VLAN ID。这不再是必需的,我这样做只是为了便于识别。然后用“vlan原始设备”节标记设备。这是原始VLAN设备的部分。

最后,在网桥网络设备部分中,我为每个VLAN设备创建网桥。这就是容器实际使用的内容。同样,我将其设置为手动,而不定义容器内部定义的IP地址。

现在我所要做的就是将我想要的VLAN上的任何网桥分配给一个容器。为了简化并避免配置每个容器,我只是为每个网桥/VLAN创建一个配置文件。例如,这里是我的VLAN 31配置文件。

lxduser@lxdhost:~$ lxc profile show 31_vlan_int_server
name: 31_vlan_int_server
config: {}
description: ""
devices:
  eth0:
    name: eth0
    nictype: bridged
    parent: br0-31
    type: nic

然后,我只需将此配置文件分配给VLAN31上我想要的任何容器。此时,我可以将容器的/etc/network/interfaces文件设置为dhcp(如果在该VLAN上启用了dhcp),或者为其提供作为该VLAN一部分的静态IP地址。

整个网络布局如下所示。

容器使用桥接器内的veth设备(由LXD创建)。主机也将原始vlan设备添加到网桥中,它们都使用实际的绑定设备,而实际的绑定设备又使用物理NIC。

最后,关于您无法连接到internet的问题,请确保您的容器使用的网桥可以访问internet。我喜欢采取逐步排除故障的方法。

  • 确保eth1有互联网接入。暂时删除任何键和桥配置,并直接在主机上使用eth1。将它从手动更改为静态,并给它一个IP地址。
    • 在主机上可以ping网卡的IP地址吗?
      • 是的?NIC正在工作,继续故障排除。没有吗?NIC设置不正确,其他一切都会失败。
      • 是吗?开关设置正确,继续故障排除。不连接到网络时出现问题。盒子本身可能存在静态路由问题,交换机可能存在问题
      • 是吗?布线工作正常,请继续进行故障排除。不主机上可能存在网关配置错误。路由器可能有问题。盒子上的静态路由可能存在问题(请选择最后的网关
      • 是的?DNS解析设置正确,继续故障排除。没有吗?DNS解析的问题。检查 /etc/resolv.conf或解析vconf设置。

      如果一切顺利,那么您应该能够连接到您的容器(在将网桥设置回手动并删除静态IP之后)。如果没有,则获取容器上的地址(静态或DHCP),并重复步骤1中的子步骤。

 类似资料:
  • 光环板之间可以组成局域网,组成局域网的设备之间可以相互通讯,使用一个光环板就可以控制其他光环板。 用光环板A控制光环板B 让我们新建一个项目,使用两块光环板,实现用光环板A控制光环板B。 启动光环板A的局域网 1. 选择“设备”,添加光环板。用USB数据线将光环板与电脑相连,点击“连接”,连接设备。 2. 启用上传模式 3. 添加事件类积木 当光环板启动时,和局域网类积木 建立名为(mesh1)的

  • 问题内容: 想要连接到通过LAN连接的另一台PC上的数据库。我可以使用带有C:\ Users …这样的字符串的sql server db,但是我无法使用(\\ Server \ c \ user …)这样的字符串进行连接,但我尝试将db文件移动到“我的文档”中我得到这个错误。 我收到以下错误消息:尝试为文件(\\ SERVER \ Users \ Jeswills \ Documents \ TB

  • 我已经使用MongoDB C#驱动程序以编程方式创建了一个新的文档集合。 现在,我想以编程方式创建和构建索引。我该怎么做呢?

  • 问题内容: 我正在测试一个Web应用程序。在主页的导航菜单中,单击节点后, 将调用javascript 函数。我查找了此功能,该页面将在重定向到目标 页面之前设置。 那么,如何为每个请求在JMeter中设置cookie? 问题答案: 在BeanShell预处理器中,放入: 请注意,使用JSR223 PreProcessor + Groovy + Caching会更好地提高 性能

  • 我在Java中开发了一个使用TCP/IP进行聊天的应用程序。到目前为止,它在同一台机器上运行服务器和客户机时可以完成这项工作,但是我想让它在局域网上工作。 我发现我将在我的路由器上使用端口转发,与我在客户端中使用的端口相同 在我的Virgin媒体集线器路由器上,我用(4444)端口转发了我使用的端口,协议是TCP到我机器的本地IP(192.168.0.21)。我还确保没有端口被阻塞。 对于防火墙,

  • 我是apache poi的新手,正在使用poi将一些数据写入docx文件。最近我遇到了一个字体问题,希望任何人能给我一些帮助。 我用一个名为empty的空word文件开始写作。docx,如下所示。 空荡荡的。docx默认字体为“Arial”,这意味着如果您添加任何内容,只要您不手动更改字体,他们将继承此字体。 但在我填写内容并将其写入新的docx文件后,默认字体改为“Century”。 我想把它改