Routed network has no IP address

Hello,

I’m a complete newbie to this so please forgive me if my question is pathetically naïve!

Firstly let me show you a simple working example using a standard image:

**$ lxc launch ubuntu:20.04 myrouted --profile default --profile routed_139**
Creating myrouted
Starting myrouted
**$ lxc list**

+----------+---------+------------------------+------+-----------+-----------+
|   NAME   |  STATE  |          IPV4          | IPV6 |   TYPE    | SNAPSHOTS |
+----------+---------+------------------------+------+-----------+-----------+
| myrouted | RUNNING | 192.168.111.139 (eth0) |      | CONTAINER | 0         |
+----------+---------+------------------------+------+-----------+-----------+

Everything looks good and I can use my shiny new routed network container.

Now I delete my new container and in its place create a routed network container from my customised base image:

**$ lxc stop myrouted**
**$ lxc deleted myrouted**
**$ lxc launch lxc-base-image myrouted --profile default --profile routed_139**
**$ lxc list**

+----------+---------+------+------+-----------+-----------+
|   NAME   |  STATE  | IPV4 | IPV6 |   TYPE    | SNAPSHOTS |
+----------+---------+------+------+-----------+-----------+
| myrouted | RUNNING |      |      | CONTAINER | 0         |
+----------+---------+------+------+-----------+-----------+

My new container is running but without an IP!

Any assistance would be greatly received.

Regards,

More info

**$ lxc info myrouted**
Name: myrouted
Location: none
Remote: unix://
Architecture: x86_64
Created: 2021/02/17 12:44 UTC
Status: Running
Type: container
Profiles: default, routed_139
Pid: 3840780
Ips:
  eth0: inet6   fe80::a0fc:6aff:fea0:4bb3       veth7546271e
  lo:   inet    127.0.0.1
  lo:   inet6   ::1
Resources:
  Processes: 60
  Disk usage:
    root: 36.70MB
  CPU usage:
    CPU usage (in seconds): 14
  Memory usage:
    Memory (current): 261.32MB
    Memory (peak): 323.67MB
  Network usage:
    eth0:
      Bytes received: 9.40kB
      Bytes sent: 4.09kB
      Packets received: 59
      Packets sent: 23
    lo:
      Bytes received: 5.09kB
      Bytes sent: 5.09kB
      Packets received: 58
      Packets sent: 58
**$ lxc config show myrouted**
architecture: x86_64
config:
  image.architecture: amd64
  image.description: Ubuntu focal amd64 (20210122_07:42)
  image.name: ubuntu-focal-amd64-default-20210122_07:42
  image.os: ubuntu
  image.release: focal
  image.serial: "20210122_07:42"
  image.variant: default
  volatile.base_image: 60b8e27ea62b58adfc2cd5090200fe96da8b6df825c074cb8e8e59e89a0a5f55
  volatile.eth0.host_name: veth7546271e
  volatile.eth0.hwaddr: 00:16:3e:a1:76:c2
  volatile.eth0.last_state.created: "false"
  volatile.eth0.name: eth0
  volatile.idmap.base: "0"
  volatile.idmap.current: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":1000000000},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":1000000000}]'
  volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":1000000000},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":1000000000}]'
  volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":1000000000},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":1000000000}]'
  volatile.last_state.power: RUNNING
  volatile.uuid: cf084bcb-3a04-4b03-a616-59b7cafd84e0
devices: {}
ephemeral: false
profiles:
- default
- routed_139
stateful: false
description: ""
**$ lxc image info lxc-base-image**
Fingerprint: 60b8e27ea62b58adfc2cd5090200fe96da8b6df825c074cb8e8e59e89a0a5f55
Size: 2205.42MB
Architecture: x86_64
Type: container
Public: no
Timestamps:
    Created: 2021/02/09 13:14 UTC
    Uploaded: 2021/02/09 13:14 UTC
    Expires: never
    Last used: 2021/02/17 12:44 UTC
Properties:
    release: focal
    serial: 20210122_07:42
    variant: default
    architecture: amd64
    description: Ubuntu focal amd64 (20210122_07:42)
    name: ubuntu-focal-amd64-default-20210122_07:42
    os: ubuntu
Aliases:
    - lxc-base-image
Cached: no
Auto update: disabled
Profiles:
    - default

Can you show the output of lxc config show <instance> --expanded for the problem container.

Also inside the problem container, can you show output of ip a and ip r, as well as on the host.

I suspect the network configuration system inside your container is wiping the IP and routes added by LXD before the container starts.

Thanks for replying so quickly:

$ lxc config show myrouted --expanded
architecture: x86_64
config:
image.architecture: amd64
image.description: Ubuntu focal amd64 (20210122_07:42)
image.name: ubuntu-focal-amd64-default-20210122_07:42
image.os: ubuntu
image.release: focal
image.serial: “20210122_07:42”
image.variant: default
user.network-config: |
version: 2
ethernets:
eth0:
addresses:
- 192.168.111.139/32
nameservers:
addresses:
- 8.8.8.8
search: []
routes:
- to: 0.0.0.0/0
via: 169.254.0.1
on-link: true
volatile.base_image: 60b8e27ea62b58adfc2cd5090200fe96da8b6df825c074cb8e8e59e89a0a5f55
volatile.eth0.host_name: vethabfdd8cb
volatile.eth0.hwaddr: 00:16:3e:9b:de:70
volatile.eth0.last_state.created: “false”
volatile.eth0.name: eth0
volatile.idmap.base: “0”
volatile.idmap.current: ‘[{“Isuid”:true,“Isgid”:false,“Hostid”:1000000,“Nsid”:0,“Maprange”:1000000000},{“Isuid”:false,“Isgid”:true,“Hostid”:1000000,“Nsid”:0,“Maprange”:1000000000}]’
volatile.idmap.next: ‘[{“Isuid”:true,“Isgid”:false,“Hostid”:1000000,“Nsid”:0,“Maprange”:1000000000},{“Isuid”:false,“Isgid”:true,“Hostid”:1000000,“Nsid”:0,“Maprange”:1000000000}]’
volatile.last_state.idmap: ‘[{“Isuid”:true,“Isgid”:false,“Hostid”:1000000,“Nsid”:0,“Maprange”:1000000000},{“Isuid”:false,“Isgid”:true,“Hostid”:1000000,“Nsid”:0,“Maprange”:1000000000}]’
volatile.last_state.power: RUNNING
volatile.uuid: d9c0965e-3a97-407b-bd86-fe8693cdcc68
devices:
eth0:
ipv4.address: 192.168.111.139
nictype: routed
parent: enp7s0
type: nic
root:
path: /
pool: default
type: disk
ephemeral: false
profiles:

  • default
  • routed_139
    stateful: false
    description: “”

From inside the container:
# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0@if35: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 92:b4:17:4d:f3:37 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::90b4:17ff:fe4d:f337/64 scope link
valid_lft forever preferred_lft forever

# ip r - returns nothing

From the host:
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether f0:2f:74:16:5f:7c brd ff:ff:ff:ff:ff:ff
inet 192.168.111.137/24 brd 192.168.111.255 scope global noprefixroute enp7s0
valid_lft forever preferred_lft forever
inet6 fe80::f22f:74ff:fe16:5f7c/64 scope link
valid_lft forever preferred_lft forever
3: wlp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 50:2b:73:d9:02:28 brd ff:ff:ff:ff:ff:ff
inet6 fd65:76f8:30e8:1:4e6:c012:ecb:2cb4/64 scope global temporary dynamic
valid_lft 576939sec preferred_lft 58360sec
inet6 fd65:76f8:30e8:1:ec3:5050:59fc:5e27/64 scope global temporary deprecated dynamic
valid_lft 490721sec preferred_lft 0sec
inet6 fd65:76f8:30e8:1:abec:5337:94d0:37b2/64 scope global temporary deprecated dynamic
valid_lft 404502sec preferred_lft 0sec
inet6 fd65:76f8:30e8:1:c26:af4f:c8e2:8a2c/64 scope global temporary deprecated dynamic
valid_lft 318284sec preferred_lft 0sec
inet6 fd65:76f8:30e8:1:b05f:33db:ae0e:bf3e/64 scope global temporary deprecated dynamic
valid_lft 232065sec preferred_lft 0sec
inet6 fd65:76f8:30e8:1:d57d:6a9b:5f3:612c/64 scope global temporary deprecated dynamic
valid_lft 145846sec preferred_lft 0sec
inet6 fd65:76f8:30e8:1:3640:f87d:36fe:acf1/64 scope global mngtmpaddr noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::b412:a972:e6d5:6bd4/64 scope link noprefixroute
valid_lft forever preferred_lft forever
4: lxdbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 00:16:3e:3f:9a:f7 brd ff:ff:ff:ff:ff:ff
inet 10.237.207.1/24 scope global lxdbr0
valid_lft forever preferred_lft forever
inet6 fe80::216:3eff:fe3f:9af7/64 scope link
valid_lft forever preferred_lft forever
35: vethabfdd8cb@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether fe:34:52:56:d4:ac brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 169.254.0.1/32 scope global vethabfdd8cb
valid_lft forever preferred_lft forever
inet6 fe80::fc34:52ff:fe56:d4ac/64 scope link
valid_lft forever preferred_lft forever

$ ip r
default via 192.168.111.1 dev enp7s0 proto static metric 100
10.237.207.0/24 dev lxdbr0 proto kernel scope link src 10.237.207.1 linkdown
192.168.111.0/24 dev enp7s0 proto kernel scope link src 192.168.111.137 metric 100
192.168.111.139 dev vethabfdd8cb scope link

Try replacing /etc/netplan/10-lxc.yaml inside the container with:

network:
  version: 2
  ethernets:
    eth0:
      addresses:
        - 192.168.111.139/32
      nameservers:
        addresses:
          - 8.8.8.8
        search: []
      routes:
        - to: 0.0.0.0/0
          via: 169.254.0.1
          on-link: true

And then run:

sudo netplan apply

It looks like your cloud init config didn’t work, did you use the cloud variant image?

Works! Awesome - thank you so much!

No, I used a standard image.