gpt4 book ai didi

lxc - 如何设置通过LAN进行通信的LXD容器

转载 作者:行者123 更新时间:2023-12-04 17:22:22 28 4
gpt4 key购买 nike

我有一组连接到局域网的服务器。我可以在一台机器上安装和使用LXD容器,但是我一生都无法在网络上看到这些容器。我试图遵循这些网址,但无济于事:


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/


我的服务器设置如下:


eth0-连接到Internet的硬件NIC
eth1-连接到LAN的硬件NIC


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

我的/ etc / network / interfaces看起来像这样:

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的容器​​?

Ubuntu 16.04上的LXD v2.7

最佳答案

是的,这很有可能。我还没有体验过LXD 2.3中引入的所有新网络功能,因此我无法对其中的任何功能进行讨论,但是看起来您想要一个非常简单的网络布局,因此这些功能甚至可能都不会发挥作用。我所做的事情与您的网络布局有些相似。我所有的服务器中都有4个NIC。我将前两个放入绑定并放置在管理网络中,后两个放入LAG(另一个绑定)并用于所有LXD通信。我有多个VLAN,因此将我的LAG设置为中继端口,并为每个我希望能够连接的VLAN创建VLAN设备。然后,我将这些VLAN设备放入实际容器使用的桥中。

除去所有绑定设备和原始VLAN设备,您的设置基本上是相同的:一个用于管理LXD主机的NIC,一个用于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


现在启动您的容器并编辑网络配置。例如,在基于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。这是 PHYSICAL NETWORK DEVICES部分。您的第一个NIC(您的eth0对我来说enp2s0f0)与您的没有什么不同。我只是静态定义它并给它一个地址。我在管理网络上为此网卡分配了一个地址。我用于容器通信的第三个和第四个NIC。我想在LAG中使用LACP,因此我将设备定义为手动设备,并将它们作为“ bond1”的从设备。

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

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

最后,在 BRIDGE NETWORK DEVICES部分中,为每个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


然后,我只是将此配置文件分配给我要在VLAN 31上使用的任何容器。这时,我可以将容器的/ etc / network / interfaces文件设置为dhcp(如果在该VLAN上启用了DHCP),或者给它一个静态IP地址,是该VLAN的一部分。

整个网络布局看起来像这样。

LXD Multi-VLAN setup

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

关于连接问题

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


确保eth1可以访问互联网。临时删除所有绑定和网桥配置,并直接在主机上使用eth1。将其从手动更改为静态,并为其提供IP地址。


您可以在主机上ping NIC的IP地址吗?


是? NIC正在工作,请继续进行故障排除。没有?网卡设置不正确,其他所有操作都会失败。

在主机上,您可以ping通同一子网中的另一台主机吗?


是?切换设置正确,请继续进行故障排除。没有?问题连接到网络。包装盒本身可能存在静态路由问题,交换机可能存在问题。

您可以在主机上ping其他子网上的计算机(尝试 ping 8.8.8.8)吗?


是?路由工作正常,请继续进行故障排除。没有?主机上可能的网关配置错误。路由器可能的问题。框上的静态路由可能存在问题(请检查最后使用的网关)。

您可以解析DNS地址(尝试 ping www.google.com)吗?


是? DNS解析设置正确,请继续进行故障排除。没有? DNS解析问题。检查/etc/resolv.conf或resolvconf设置。


如果静态设置时eth1上的所有功能均正常运行,则说明NIC正常运行。下一步是将eth1更改为手动,从其中删除静态IP,然后重新创建网桥。现在,在网桥本身上分配静态IP地址,并重复步骤1中的所有子步骤。


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

关于lxc - 如何设置通过LAN进行通信的LXD容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41826430/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com