2024-10-13 11:36:13 +02:00
## Networking
2024-06-20 20:01:40 +02:00
2024-07-06 21:49:29 +02:00
Armbian uses [**Netplan.io** ](https://netplan.io/ ) to describe networking configurations. Netplan is a utility to easily configure Linux networking, using a declarative approach.
If you want to configure your network manually, it is as simple as editing and creating Netplan yaml files (see the yaml configuration reference at the [Netplan docs ](https://netplan.readthedocs.io/en/stable/netplan-yaml/ )).
2024-06-20 20:01:40 +02:00
2024-07-07 09:05:03 +02:00
Netplan is used to configure networks on **all ** Armbian images since Release 24.05, no matter if minimal or desktop, Debian or Ubuntu. However, the networking backends are different based on if you choose a minimal image or not.
2024-06-20 20:01:40 +02:00
2024-10-13 11:36:13 +02:00
## Minimal images
!!! tip "Netplan renderer: networkd"
2024-07-06 21:49:29 +02:00
Minimal images are using the `systemd-networkd` backend, which has a **smaller footprint ** compared to `Network-Manager` . `systemd-networkd` is a system daemon that manages network configurations. It detects and configures network devices as they appear; it can also create virtual network devices. This service is great for simple connections, but can also be useful to set up complex network configurations.
2024-06-20 20:01:40 +02:00
2024-10-13 11:36:13 +02:00
### Armbian defaults
2024-06-20 20:01:40 +02:00
2024-10-13 11:36:13 +02:00
All ethernet interfaces will automatically receive an IP address from your router.
2024-06-20 20:01:40 +02:00
2024-07-06 21:49:29 +02:00
[`/etc/netplan/10-dhcp-all-interfaces.yaml` ](https://github.com/armbian/build/blob/main/extensions/network/config-networkd/netplan/10-dhcp-all-interfaces.yaml ):
2024-06-20 20:01:40 +02:00
2024-07-06 21:49:29 +02:00
```yaml
network:
version: 2
renderer: networkd
ethernets:
all-eth-interfaces:
match:
2024-08-06 07:24:39 +02:00
name: "e*"
2024-07-06 21:49:29 +02:00
dhcp4: yes
dhcp6: yes
ipv6-privacy: yes
```
2024-06-20 20:01:40 +02:00
2024-10-13 11:36:13 +02:00
### Configuration examples
2024-06-20 20:01:40 +02:00
2024-10-13 11:36:13 +02:00
#### Setting a fixed IP address
2024-07-06 21:49:29 +02:00
The following example configures a static IP `192.168.1.199` for the `eth0` interface. Please adjust the example to your likings.
2024-10-13 11:36:13 +02:00
!!! question "How to find your device's Ethernet interface?"
Use command:
```sh
ip addr
```
It is usually something like `eth0` , `enp4s3` or `lan` .
2024-07-06 21:49:29 +02:00
`/etc/netplan/20-static-ip.yaml` :
```yaml
network:
version: 2
renderer: networkd
ethernets:
eth0: # Change this to your ethernet interface
addresses:
- 192.168.1.199/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 9.9.9.9
- 1.1.1.1
```
See also the [Netplan docs ](https://netplan.readthedocs.io/en/latest/using-static-ip-addresses/ ) for reference.
2024-10-13 11:36:13 +02:00
#### Connecting to WiFI network
2024-06-20 20:01:40 +02:00
2024-10-13 11:36:13 +02:00
!!! tip "It is recommended to make a separate config file for wireless network."
2024-06-20 20:01:40 +02:00
2024-07-06 21:49:29 +02:00
Create the following file:
2024-06-20 20:01:40 +02:00
2024-07-06 21:49:29 +02:00
`sudo nano /etc/netplan/30-wifis-dhcp.yaml` :
2024-06-20 20:01:40 +02:00
2024-07-06 21:49:29 +02:00
```yaml
network:
version: 2
renderer: networkd
wifis:
wlan0:
dhcp4: true
dhcp6: true
access-points:
"Your-SSID":
password: "your-password"
```
2024-06-20 20:01:40 +02:00
2024-07-06 21:49:29 +02:00
Replace `SSID` with the name of the network you want to connect to and `wlan0` with the wifi interface used on your system.
2024-06-20 20:01:40 +02:00
2024-10-13 11:36:13 +02:00
!!! question "How to find your device's WiFi interface?"
Use command:
```sh
ip addr
```
It is usually something like `wlan0` , `wlo1` or `wlx12334c47dec3` .
2024-06-20 20:01:40 +02:00
2024-07-06 21:49:29 +02:00
See also the [Netplan docs ](https://netplan.readthedocs.io/en/latest/examples/#how-to-configure-your-computer-to-connect-to-your-home-wi-fi-network ) for reference.
2024-06-20 20:01:40 +02:00
2024-10-13 11:36:13 +02:00
### Applying your configuration
2024-06-20 20:01:40 +02:00
2024-07-07 09:05:03 +02:00
Once you are done configuring your network, it is time to test syntax and apply it.
2024-06-20 20:01:40 +02:00
2024-10-13 11:36:13 +02:00
#### Fix file permissions
2024-06-20 20:01:40 +02:00
2024-07-06 21:49:29 +02:00
According to the [Netplan docs ](https://netplan.readthedocs.io/en/stable/security/ ), the permissions must be restricted to the root user.
2024-06-20 20:01:40 +02:00
2024-07-06 21:49:29 +02:00
```bash
sudo chmod 600 /etc/netplan/*.yaml
```
2024-06-20 20:01:40 +02:00
2024-10-13 11:36:13 +02:00
#### Test syntax
This will verify the syntax and test if your device can connect
2024-07-06 21:49:29 +02:00
```bash
sudo netplan try
```
2024-06-20 20:01:40 +02:00
2024-10-13 11:36:13 +02:00
#### Apply the configuration
2024-06-20 20:01:40 +02:00
2024-07-06 21:49:29 +02:00
```bash
sudo netplan apply
```
2024-06-20 20:01:40 +02:00
2024-10-13 11:36:13 +02:00
# CLI and desktop images
!!! tip "Netplan renderer: Network Manager"
2024-06-20 20:01:40 +02:00
2024-07-06 21:49:29 +02:00
Server CLI and desktop images are using the `Network-Manager` backend. You can use similar methods for configuring your network as with the `networkd` backend used on minimal images.
2024-06-20 20:01:40 +02:00
2024-07-06 21:49:29 +02:00
### Setting a fixed IP address
2024-06-20 20:01:40 +02:00
2024-07-06 21:49:29 +02:00
The following example configures a static IP `192.168.1.199` for the `eth0` interface. Please adjust the example to your likings.
2024-06-20 20:01:40 +02:00
2024-10-13 11:36:13 +02:00
!!! question "How to find your device's Ethernet interface?"
Use command:
```sh
ip addr
```
It is usually something like `eth0` , `enp4s3` or `lan` .
2024-06-20 20:01:40 +02:00
2024-07-06 21:49:29 +02:00
`/etc/netplan/20-static-ip.yaml` :
2024-06-20 20:01:40 +02:00
2024-07-06 21:49:29 +02:00
```yaml
network:
version: 2
renderer: NetworkManager # Different than 'networkd'
ethernets:
eth0: # Change this to your ethernet interface
addresses:
- 192.168.1.199/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 9.9.9.9
- 1.1.1.1
```
2024-06-20 20:01:40 +02:00
2024-07-06 21:49:29 +02:00
See also the [Netplan docs ](https://netplan.readthedocs.io/en/latest/using-static-ip-addresses/ ) for reference.
2024-06-20 20:01:40 +02:00
2024-07-06 21:49:29 +02:00
Alternatively, you can also use Network-Manager directly via the command line or GUI tools on your desktop:
```bash
nmtui-edit eth0
```
2024-10-13 11:36:13 +02:00
??? note "Display screenshot"

2024-06-20 20:01:40 +02:00
2024-07-06 21:49:29 +02:00
Replace `eth0` with the name of your Ethernet Interface.
2024-10-13 11:36:13 +02:00
### Connecting to WiFI network
2024-07-06 21:49:29 +02:00
2024-10-13 11:36:13 +02:00
For connecting to a wireless network, you can use the same method as mention above for use with `networkd` [on minimal images ](#minimal-images ). Just make sure to replace `renderer: networkd` with `renderer: NetworkManager` .
2024-07-06 21:49:29 +02:00
Alternatively, you can also use Network-Manager directly via the command line or GUI tools on your desktop:
```bash
nmtui-connect SSID
```
2024-10-13 11:36:13 +02:00
??? note "Display screenshot"

2024-07-06 21:49:29 +02:00
Replace `SSID` with the name of your wireless network.
2024-06-20 20:01:40 +02:00
2024-10-13 11:36:13 +02:00
# Automatic configuration
2024-06-20 20:01:40 +02:00
2024-07-06 21:49:29 +02:00
It is possible to network configurations which are automatically applied when you first boot your device after flashing a fresh image by writing to the file `/root/.not_logged_in_yet` which is read at your first login.
2024-06-20 20:01:40 +02:00
2024-07-06 21:49:29 +02:00
Mount your live image _ before your first boot _ and use this example for reference:
2024-06-20 20:01:40 +02:00
2024-07-06 21:49:29 +02:00
# Set PRESET_NET_CHANGE_DEFAULTS to 1 to apply any network related settings below.
2024-06-20 20:01:40 +02:00
PRESET_NET_CHANGE_DEFAULTS="1"
# Enable WiFi or Ethernet.
# NB: If both are enabled, WiFi will take priority and Ethernet will be disabled.
PRESET_NET_ETHERNET_ENABLED=1
PRESET_NET_WIFI_ENABLED=1
2024-07-06 21:49:29 +02:00
# Enter your WiFi credentials
# SECURITY WARNING: Your wifi keys will be stored in plaintext, no encryption.
2024-06-20 20:01:40 +02:00
PRESET_NET_WIFI_SSID='MySSID'
PRESET_NET_WIFI_KEY='MyWiFiKEY'
2024-07-06 21:49:29 +02:00
# Country code to properly adjust the WiFi for your country.
2024-06-20 20:01:40 +02:00
2024-07-06 21:49:29 +02:00
# E.g. 'GB', 'US' or 'DE' (see https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
2024-06-20 20:01:40 +02:00
PRESET_NET_WIFI_COUNTRYCODE='GB'
2024-07-06 21:49:29 +02:00
# If you want to use a static IP, you may set it here
2024-06-20 20:01:40 +02:00
PRESET_NET_USE_STATIC=1
PRESET_NET_STATIC_IP='192.168.0.100'
PRESET_NET_STATIC_MASK='255.255.255.0'
PRESET_NET_STATIC_GATEWAY='192.168.0.1'
PRESET_NET_STATIC_DNS='9.9.9.9 1.1.1.1'
2024-07-06 21:49:29 +02:00
If you want to use first run automatic configuration at build time, [check this GitHub pull request ](https://github.com/armbian/build/pull/6194 ).
2024-06-20 20:01:40 +02:00
2024-07-06 21:49:29 +02:00
In short:
2024-10-13 11:36:13 +02:00
2024-07-06 21:49:29 +02:00
1. Copy the template with `cp extensions/preset-firstrun.sh userpatches/extensions/`
2. Edit the template `userpatches/extensions/preset-firstrun.sh` according to your situation
3. Build your Armbian image using the additional parameter `ENABLE_EXTENSIONS=preset-firstrun`
2024-06-20 20:01:40 +02:00
2024-10-13 11:36:13 +02:00
???+ tip
This method also creates a new user, sets passwords and more!