When I factor out the bonded network configuration, your LXD profiles and containers look just like mine. There is an existing non-LXD bridge, a profile which describes it as "bridged", and containers which use that profile.

On my system, the NIC gets two IP addresses: one configured by the container (the desired static IP) and another configured using DHCP by LXD on the host. dhclient is not installed in the container.

This seems to be as described in
https://blog.simos.info/how-to-make-your-lxd-containers-get-ip-addresses-from-your-lan-using-a-bridge/
I thought that this showed the container getting an IP from the the LAN using network.services using DHCP, but I think that it is LXD getting the IP address.

It seems that there must something configured differently on the host.


On 2/12/20 8:08 AM, Michael Eager wrote:
On 2/11/20 4:57 PM, Joshua Schaeffer wrote:
Not sure this will help but I provided my configuration for LXD below. I use Ubuntu so you'd have to translate the configuration network configuration portions over to RedHat/CentOS. My containers' configure their own interfaces (static, dhcp, or whatever), LXD simply defines the interface. These are the basic steps that I do:

 1. On the LXD host I setup bridges based on the vlan's that I want a
    NIC to connect to. Those vlan interfaces use a bond in LACP mode. If
    you don't use vlan's or bond's in your setup then just create the
    bridge from a physical Ethernet device.
 2. I then create a profile for each bridge corresponding to a vlan.
 3. When I create a container I can assign those profiles (one or
    multiple) to create the network devices.
 4. Inside the container I configure the network device just like any
    other system; physical, VM, container, or otherwise.

I do not use LXD managed network devices. All my network devices are managed by the host operating system. Again, if you don't use vlan's or bond's then you can jump straight to creating a bridge.

Here's the details of the steps:

Step 1:
Create the network devices that the LXD containers will use.

lxcuser@blllxc02:~$ cat /etc/network/interfaces.d/01-physical-network.device
# This file contains the physical NIC definitions.

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

# Primary services interface.
auto enp3s0
iface enp3s0 inet manual
     bond-master bond-services

# Secondary services interface.
auto enp4s0
iface enp4s0 inet manual
     bond-master bond-services

lxcuser@blllxc02:~$ cat /etc/network/interfaces.d/02-bonded.device
# This file is used to create network bonds.

##################
# BONDED DEVICES #
##################

# Services bond device.
auto bond-services
iface bond-services inet manual
     bond-mode 4
     bond-miimon 100
     bond-lacp-rate 1
     bond-slaves enp3s0 enp4s0
     bond-downdelay 400
     bond-updelay 800

lxcuser@blllxc02:~$ cat /etc/network/interfaces.d/03-vlan-raw.device
# This file creates raw vlan devices.

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

# Tagged traffic on bond-services for VLAN 28
auto vlan0028
iface vlan0028 inet manual
     vlan-raw-device bond-services

# Tagged traffic on bond-services for VLAN 36
auto vlan0036
iface vlan0036 inet manual
     vlan-raw-device bond-services

# Tagged traffic on bond-services for VLAN 40
auto vlan0040
iface vlan0040 inet manual
     vlan-raw-device bond-services
...

lxcuser@blllxc02:~$ cat /etc/network/interfaces.d/04-bridge.device
# This file creates network bridges.

##################
# BRIDGE DEVICES #
##################

# Bridged interface for VLAN 28.
auto vbridge-28
iface vbridge-28 inet manual
     bridge_ports vlan0028
     bridge_stp off
     bridge_fd 0
     bridge_maxwait 0

# Bridged interface for VLAN 36.
auto vbridge-36
iface vbridge-36 inet manual
     bridge_ports vlan0036
     bridge_stp off
     bridge_fd 0
     bridge_maxwait 0

# Bridged interface for VLAN 40.
auto vbridge-40
iface vbridge-40 inet manual
     bridge_ports vlan0040
     bridge_stp off
     bridge_fd 0
     bridge_maxwait 0

Step 2:
Create profiles for the network devices. Technically not required but helps to setup new containers much more quickly.

lxcuser@blllxc02:~$ lxc profile list
+----------------------+---------+
|         NAME         | USED BY |
+----------------------+---------+
| 1500_vlan_dns_dhcp   | 5       |
+----------------------+---------+
| 28_vlan_virt_mgmt    | 15      |
+----------------------+---------+
| 40_vlan_ext_core_svc | 0       |
+----------------------+---------+
| 44_vlan_ext_svc      | 4       |
+----------------------+---------+
| 48_vlan_ext_cloud    | 0       |
+----------------------+---------+
| 80_vlan_int_core_svc | 2       |
+----------------------+---------+
| 84_vlan_int_svc      | 4       |
+----------------------+---------+
| 88_vlan_int_cloud    | 0       |
+----------------------+---------+
| 92_vlan_storage      | 0       |
+----------------------+---------+
| default              | 15      |
+----------------------+---------+

lxcuser@blllxc02:~$ lxc profile show 28_vlan_virt_mgmt
config: {}
description: ""
devices:
   mgmt_net:
     name: veth-mgmt
     nictype: bridged
     parent: vbridge-28
     type: nic
name: 28_vlan_virt_mgmt

Step 3:
Create the container with the correct profile(s) to add the network device(s) to the container.

lxcuser@blllxc02:~$ lxc init -p default -p 28_vlan_virt_mgmt -p 44_vlan_ext_svc ubuntu:18.04 bllmail02

Step 4:
Connect to the container and setup the interface the same way you setup any other system. The example below is set to manual but just change to however you want to setup your device.

lxcuser@blllxc02:~$ lxc exec bllmail02 -- cat /etc/network/interfaces.d/51-container-network.device
auto veth-mgmt
iface veth-mgmt inet manual
...

auto veth-ext-svc
iface veth-ext-svc inet manual
...

lxcuser@blllxc02:~$ lxc exec bllmail02 -- ip link show veth-mgmt
316: veth-mgmt@if317: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
     link/ether 00:16:3e:f6:e5:ec brd ff:ff:ff:ff:ff:ff link-netnsid 0
lxcuser@blllxc02:~$ lxc exec bllmail02 -- ip -4 addr show veth-mgmt
316: veth-mgmt@if317: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link-netnsid 0
     inet 10.2.28.129/22 brd 10.2.31.255 scope global veth-mgmt
        valid_lft forever preferred_lft forever

lxcuser@blllxc02:~$ lxc exec bllmail02 -- ip link show veth-ext-svc
314: veth-ext-svc@if315: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
     link/ether 00:16:3e:21:ac:dc brd ff:ff:ff:ff:ff:ff link-netnsid 0
lxcuser@blllxc02:~$ lxc exec bllmail02 -- ip -4 addr show veth-ext-svc
314: veth-ext-svc@if315: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link-netnsid 0
     inet 192.41.41.85/26 brd 192.41.41.127 scope global veth-ext-svc
        valid_lft forever preferred_lft forever

--
Thanks,
Joshua Schaeffer

Thanks.

That's a lot to unpack and translate from Ubuntu to CentOS.

-- Mike Eager


_______________________________________________
lxc-users mailing list
lxc-users@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-users

_______________________________________________
lxc-users mailing list
lxc-users@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-users

Reply via email to