Network Configuration on Linux

ifconfig & iwconfig & resolvectl & nmcli & networkctl & netplan

$ ip addr
$ ip route
$ sudo ip addr add 192.168.2.5/29 dev eno1
$ sudo ip link set eno1 up/down
$ sudo ip route add default via 192.168.2.1

List all PCI devices

$ lspci
$ lspci -vvv

Display Available Network Interfaces

$ ls /sys/class/net

NetworkManager or networkd?

$ sudo service systemd-networkd status		# Ubuntu V20.04
$ sudo service network-manager  status		# before Ubuntu V21.10
$ sudo service NetworkManager   status		# after  Ubuntu V21.10
$ netplan status
     Online state: online
    DNS Addresses: 127.0.0.53 (stub)
       DNS Search: <redacted>

●  1: lo ethernet UNKNOWN/UP (unmanaged)
      MAC Address: 00:00:00:00:00:00
        Addresses: 127.0.0.1/8
                   ::1/128
           Routes: ::1 metric 256

●  2: enp0s1 ethernet UP (networkd: enp0s1)
      MAC Address: <redacted> (<redacted>)
        Addresses: 192.168.64.2/24 (dhcp)
                   fd88:4b93:b031:f03e:80f0:d4ff:fe4f:15d3/64
                   fe80::80f0:d4ff:fe4f:15d3/64 (link)
    DNS Addresses: 192.168.64.1
                   fe80::6c7e:67ff:fe8c:8364
       DNS Search: <redacted>
           Routes: default via 192.168.64.1 from 192.168.64.2 metric 100 (dhcp)
                   192.168.64.0/24 from 192.168.64.2 metric 100 (link)
                   192.168.64.1 from 192.168.64.2 metric 100 (dhcp, link)
                   fd88:4b93:b031:f03e::/64 metric 100 (ra)
                   fe80::/64 metric 256

You can see that the main NIC enp0s1 is being managed by networkd.

After installing the network-manager package and setting the default renderer to NetworkManager, this is the only line that makes a difference in netplan status:

● 2: enp0s1 ethernet UP (unmanaged)

The main NIC enp0s1 is being managed by NetworkManager now.

$ sudo cat /run/systemd/network/10-netplan-enp0s3.network

ifconfig

$ sudo apt install net-tools
$ ifconfig
$ sudo ifconfig ens35 up/down

iwconfig

$ sudo apt install wireless-tools
$ iwconfig
$ sudo ifconfig wls34 up/down
$ sudo iwlist wls34 scan | grep ESSID
$ sudo apt install wpasupplicant
$ wpa_passphrase "ssid_name" "******" | sudo tee /etc/wpa_supplicant.conf
$ sudo wpa_supplicant -c /etc/wpa_supplicant.conf -i wls34

resolvectl

$ sudo resolvectl flush-caches

nmcli

$ sudo apt network-mamager
$ nmcli -v
$ nmcli d
$ sudo nmcli connection up/down ens33
$ sudo nmcli connection reload
$ sudo nmcli device show/status
$ sudo nmcli c / nmcli connection show
$ sudo nmcli c show --active

networkctl

$ networkctl
$ networkctl status
$ networkctl list

netplan

$ netplan status
$ sudo netplan generate		# Generating network configuration files.
$ sudo netplan --debug generate
$ sudo netplan apply
$ sudo netplan --debug apply
$ sudo netplan try		# Failure to roll back the previous configuration.

Ubuntu 22.04 LTS

$ sudo vim /etc/network/00-installer-config.yaml
$ sudo vim /etc/netplan/01-network-manager-all.yaml
network:
    ethernets:
      ens35:
        dhcp4: true
    version: 2 
    wifis:
      wls34:
	    dhcp4: true
        access-points:
          "ssid_name":
            password: "******"
network:
  version: 2
  renderer: networkd
  ethernets:
    ens35:
      dhcp4: no
      dhcp6: no
      optional: true
      addresses: [192.168.2.4/29]
      routes:
        - to: default
          via: 192.168.2.1
          metric: 50
      nameservers:
        addresses: [1.1.1.1,45.90.28.0]
  wifis:
    wls34:
      dhcp4: no
      dhcp6: no
      optional: true
	  addresses: [192.168.3.34/24]
	  routes:
        - to: default
          via: 192.168.3.1
          metric: 100
      nameservers:
        addresses: [1.1.1.1,45.90.28.0]
      access-points:
        "ssid_name":
          password: "******"

Netplan documentation

Ubuntu 24.04 LTS

$ sudo vim /etc/netplan/50-cloud-init.yaml

Notes

WARNING

Permissions for /etc/netplan/00-installer-config.yaml are too open. Netplan configuration should NOT be accessible by others.

$ sudo chmod 600 /etc/netplan/your_config_file.yaml

YAML file

There's a good reference full of practical examples

One other tip, yamllint can save you a lot of trouble.

$ sudo apt install yamllint
$ sudo dnf install yamllint
$ sudo pacman -S yamllint

$ yamllint /etc/netplan/01-netplan.yaml
comments powered by Disqus