MACVLAN= in .nspawn file vs command line results in /sys/class/net showing host interfaces
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
systemd (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Bionic |
New
|
Undecided
|
Unassigned | ||
Disco |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
I have machine with the following nspawn file:
--
[Network]
MACVLAN=laneth0
[Exec]
PrivateUsers=false
--
if I start it with systemctl start systemd-
If I start manually with systemd-nspawn -M name -b, I seem to correctly get a new network namespace (ip link output in container is correct), but ls /sys/class/net shows the host's interfaces.
The difference turns out to be that starting with systemctl uses a default command line which includes --private-network; the MACVLAN= in the config file should imply this, but instead it seems I'm getting "half" a private network, with the namespace correctly set but /sys not.
Having a quick poke around, I suspect
https:/
may have 'accidentally' fixed this - it moves
if (arg_private_
from parse_argv to verify_arguments which is called later.
This bug causes netplan to fail as well as it rummages around in /sys/class/net.
If the planets ever align appropriately, I will try to come up with a patch to 237 for bionic, but I don't recommend anyone holds their breath..
ProblemType: Bug
DistroRelease: Ubuntu 18.04
Package: systemd-container 237-3ubuntu10.25
Uname: Linux 4.19.13-
ApportVersion: 2.20.9-0ubuntu7.6
Architecture: amd64
CurrentDesktop: XFCE
Date: Sun Aug 25 17:54:50 2019
InstallationDate: Installed on 2018-03-22 (521 days ago)
InstallationMedia: Xubuntu 18.04 LTS "Bionic Beaver" - Alpha amd64 (20180306.1)
SourcePackage: systemd
UpgradeStatus: No upgrade log present (probably fresh install)
The "obvious fix" (attached) does indeed solve the problem - haven't done enough testing as of yet to be sure there are no weird consequences.