How to configure ethernet interface

1 Purpose[edit]

This article describes how to configure the Ethernet interface.
This article provides two ways to make it:

  • via ifconfig: to put quickly and temporary the Ethernet interface with static IP address.
  • via systemd: to change durably the Ethernet configuration with static IP address

2 Using Ifconfig tools[edit]

  • Connect an Ethernet cable and enjoy

At startup SSH daemon (sshd) and ifplugd daemon are automatically launched:

  • sshd (useful to perform ssh, scp)
  • ifplugd detect:
    • udhcpc is launched on cable detection to retrieve an IP address,

If a DHCP server is not available, one can set the Ethernet IP adress with :

 Board $> ifconfig eth0 uuu.xxx.yyy.zzz
Warning.png If there is some service such as systemd-networkd, NetworkManager, Connman , the configuration of Ethernet interface can change when the service see the change


To check if eth0 and the gateway are well configured, one can type:
 Board $>ifconfig
 Board $>route
In the console, a log similar to the one below should be displayed:
 Board $> ifconfig
 eth0      Link encap:Ethernet  HWaddr 00:80:E1:01:39:61  
           inet addr:10.48.1.172  Bcast:10.48.3.255  Mask:255.255.252.0
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:18 errors:0 dropped:0 overruns:0 frame:0
           TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000 
           RX bytes:3038 (2.9 KiB)  TX bytes:684 (684.0 B)
           Interrupt:103 
 STM32MP1 # route
 Kernel IP routing table
 Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
 default         lme-gw-vl802.lm 0.0.0.0         UG    10     0        0 eth0
 10.48.0.0       *               255.255.252.0   U     0      0        0 eth0

3 Using systemd-networkd service[edit]

Systemd-networkd is a network service provided by systemd.

3.1 Ethernet interface[edit]

Systemd-networkd provides a directory on which the Ethernet interface must be configured via configuration file: /lib/systemd/network.

 Board $> ls /lib/systemd/network
50-wired.network            52-static.network.static    80-container-vz.network
50-wired.network.static     80-container-host0.network  99-default.link 
51-wireless.network.sample  80-container-ve.network

ST provide some configurations file:

  • 50-wired.network: basic DHCP configuration for each ethX ethernet interface
  • 50-wired.network.static: example of basic DHCP configuration on which eth0 are exclude of list
  • 52-static.network.static: example of static IP configuration for eth0

3.2 Configuration file[edit]

Example of configuration:
DHCP configuration;

[Match]
Name=eth*

[Network]
DHCP=ipv4

Static IP configuration:

[Match]
Name=eth0

[Network]
DNS=192.168.72.254
Address=192.168.72.2/24
Gateway=192.168.72.254

[Match]

  • MACAddress= a whitespace-separated list of hardware addresses
  • Name= a white-space separated list of device names or expression (e.g. eth*).
  • Host= the machine hostname

[NETWORK]
[Network]

  • DHCP= enables the DHCP client, value can be: yes, no, ipv4, ipv6
  • DHCPServer= enables the DHCP server for this configuration
  • DNS= list DNS addresses in case of static configuration (you may specify several addresses)
  • IPForward= configures IP packet forwarding, value can be: ipv4 or ipv6
  • IPMasquerade= configures IP masquerading for the network interface. If enabled, packets forwarded from the network interface will be appear as coming from the local host. Takes a boolean argument. Implies IPForward=ipv4. Defaults to "no". Value can be yes or no.

All parameters are described on official documentation of systemd-networkd: [1]

3.3 DHCP configuration[edit]

DHCP configuration;

[Match]
Name=eth*

[Network]
DHCP=ipv4

All Ethernet interface are configured with DHCP client address.

3.4 STATIC configuration[edit]

Static configuration;
Add a new file 52-static.network with the following content
(/lib/systemd/network/50-wired.network or /lib/systemd/network/52-static.network)

[Match]
Name=eth0

[Network]
DNS=192.168.72.254
Address=192.168.72.2/24
Gateway=192.168.72.254

Eth0 Ethernet interface are configured with static IP address.


Info.png In case of static configuration or specific configuration, please take care to not configure two time your Ethernet interface
, with the static configuration example you need to exclude eth0 interface of default configuration (here 50-wired.network)


Exclude eth0 from default Ethernet configuration:
Change the file 50-wired.network (or 80-wired.network) with the following content
(/lib/systemd/network/50-wired.network or /lib/systemd/network/80-wired.network)

[Match]
Name=eth[1-9]

[Network]
DHCP=ipv4

3.5 DHCP Server configuration[edit]

DHCP server example:

[Match]
Name=eth0

[Network]
Address=192.168.72.1/24
DHCPServer=yes
IPForward=ipv4
IPMasquerade=yes


4 References[edit]