Welcome to the Linux Foundation Forum!

NFS201 - Lab 35.1. Static Configuration of a Network Interface - is network manager trying to rule?

Thanks for providing an exercise that reminds me of the good ole times when /etc/network/interfaces was a one-stop-shop. The chapter also does a great job in justifying modern approaches, particularly the network manager configuration.

Using a Ubuntu system, the lab exercise didn't work as described, probably thanks to network manager. Here are the steps I performed:

heiko@LM20-heiko:~$ ip -4 a show enp1s0 
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 192.168.0.141/24 brd 192.168.0.255 scope global enp1s0
       valid_lft forever preferred_lft forever
heiko@LM20-heiko:~$ sudo ip l set enp1s0 down
heiko@LM20-heiko:~$ sudo vim /etc/network/interfaces

New content of /etc/network/interfaces:

interfaces(5) file used by ifup(8) and ifdown(8)

Include files from /etc/network/interfaces.d:

source-directory /etc/network/interfaces.d

auto enp1s0
iface enp1s0 inet static
address 192.168.0.139
netmask 255.255.255.0
gateway 192.168.0.1

Important: Without the "auto enp1s0" the whole exercise didn't work.
Here the next steps:

heiko@LM20-heiko:~$ sudo ip l set enp1s0 up
heiko@LM20-heiko:~$ ip -4 a show enp1s0 
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 192.168.0.141/24 brd 192.168.0.255 scope global enp1s0
       valid_lft forever preferred_lft forever

Bringing up the link interface doesn't read the interfaces file - still the old IP. What works is restarting networking.service:

heiko@LM20-heiko:~$ sudo systemctl restart networking.service 
heiko@LM20-heiko:~$ ip -4 a show enp1s0 
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 192.168.0.139/24 brd 192.168.0.255 scope global enp1s0
       valid_lft forever preferred_lft forever

That was the easy part. Unfortunately reversing these changes didn't go so smooth:

heiko@LM20-heiko:~$ sudo ip l set enp1s0 down
heiko@LM20-heiko:~$ sudo vim /etc/network/interfaces  # remove static iface config
heiko@LM20-heiko:~$ sudo systemctl restart networking.service 
heiko@LM20-heiko:~$ sudo ip l set enp1s0 up
heiko@LM20-heiko:~$ ip a show enp1s0 
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:e1:50:d7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.139/24 brd 192.168.0.255 scope global enp1s0
       valid_lft forever preferred_lft forever
    inet 192.168.0.141/24 brd 192.168.0.255 scope global secondary enp1s0
       valid_lft forever preferred_lft forever

I tried several ways, including defining my previous IP in the /etc/network/interfaces file. The result was always a secondary enp1s0 with the IP I wanted.

It needed a reboot to get things back to normal:

heiko@LM20-heiko:~$ ip -4 a show enp1s0 
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 192.168.0.141/24 brd 192.168.0.255 scope global noprefixroute enp1s0
       valid_lft forever preferred_lft forever

Is this network manager trying to rule the world?

If so, it's probably best to not use /etc/network/interfaces or other /etc config files for network configuration, but use the nmtui method.

Since networking is an important part of a sysadmin job, is nmtui acceptable (also for the exam?) or do we have to practice nmcli until the fingers bleed?

Comments

  • heiko_s
    heiko_s Posts: 99

    Did the exercise on Centos 8. Centos at least has a fully configured /etc/sysconfig/network-scripts/ifcfg-enp1s0 file.

    I tried restarting the NetworkManager.service but it didn't work. Reboot did the job. Is there another way (except reboot) to reload and start the current network configuration as defined in the ifcfg file?

  • luisviveropena
    luisviveropena Posts: 1,144

    Hi @heiko_s ,

    It seems you are right, as newer distributions are working with Network Manager and this also works with Netplan. I took a look to Ubuntu 18.04 LTS and instead /etc/network/interfaces it's working with /etc/netplan/, as /etc/netplan/01-network-manager-all.yaml I have by default.

    So, the work should be done in the Netplan way now. There are a couple of URLs that can be useful here:

    https://ubuntu.com/server/docs/network-configuration

    And

    https://netplan.io/faq

    I haven't tried with CentOS 7/8 yet, I'll do it later.

    Many regards,
    Luis.

  • coop
    coop Posts: 915

    Yes, ubuntu changed everything (and it is not clear for the better to many folks) in the flat file configuration under /etc/. This is exactly why the course emphasizes using nmtui or nmcli or the nm gui. In fact it says in a cautionary note at the beginning:

    "You can most easily do this exercise with nmtui or your system’s graphical interface. We will present a command line solution, but beware details may not exactly fit your distribution flavor or fashion."

    We probably need to just eliminate the command line solution and show with nmtui. Or do nothing, as we have already anticipated this kind of problem as a learning exercise. I'll think about it.

    Please note that LFS211 has an extended discussion about netplan, its relationship with network manager (which is often adversarial) and how to configure your system, which is one reason we did not get into it here as we don't want to be repetitive and there is a lot to cover.

    Also keep in mind the LFCS and LFCE exams (I am told) stay away from any features which are present in only one distribution (other than obvious important differences like apt vs yum vs zypper etc) Personally, I think netplan is a solution in search of a problem, but I don't know enough to defend that position, I would raise this more when you get to LFS211 and the course maintainer there is really an expert on all this, which I am not.

  • heiko_s
    heiko_s Posts: 99

    Thanks for the helpful responses, Luis and coop! In the meantime I started with LFS211 and I will bring up some questions/remarks in the respective forum.

    I'm very glad to hear about the exam not bringing up distro specific challenges, so I assume any tool including nmtui is fine (I'll practice nmcli as well). I wonder what netplan can do that the others can't? Will have a look at LFS211.

  • coop
    coop Posts: 915

    For a ways on Ubuntu 18.04 to go back to /etc/network/interfaces:

    [https://tweenpath.net/ubuntu-18-04-disable-netplan-switch-networking-etc-network-interfaces/

    https://renediepstraten.nl/?p=51

    There are many links out there if you search on "turn off netplan" , which tells you it has non-fans. Basically it chooses between Network Manager and networkd on management of devices. I think it is even easier to turn off than these pages tell you and you can manipulate specific devices rather than trash the whole thing. What netplan can do that you cannot do otherwise: it teaches you how to write .yaml files B):) I'll let fans comment. I'm sure there are some plusses, but it has failed to catch on with anyone but Ubuntu (which is not exactly an uncommon fate for Ubuntu-invented features).

  • luisviveropena
    luisviveropena Posts: 1,144
    edited July 2020

    Well, I'm not a netplan fan, but I was working on my Ubuntu 18.04 system and I found out that the netplan "renderer" by default is NetworkManager (and not networkd, which would let the configuration to the netplan files). So, in this case the config files are under /etc/NetworkManager/ . And then we can work the interfaces using nmtui and/or nmcli.

    Regards,
    Luis.

  • heiko_s
    heiko_s Posts: 99

    Thanks again to both. Yes, Ubuntu (and my Linux Mint derivate) is using Network Manager by default, which is configured in netplan's yaml file.

    I kind of wonder: Why would one need both netplan and network manager, both pre-installed?

  • luisviveropena
    luisviveropena Posts: 1,144

    Hi @heiko_s ,

    It seems it's by design, or at least that's what the distro says, hehehe. Look at the documentation here:

    https://netplan.io/design

    So, for some very specific cases, as wifi, netplan needs NetworkManager. I think it's under development yet, and also it hasn't been designed to work alone, in fact it needs networkd.

    I hope that helps.

    Many regards,
    Luis.

Categories

Upcoming Training