Hi there.
I switched from Windows 10 to Fedora Linux (Plasma 5) on my work laptop a couple of months ago and I am quite happy with it so far. There are a few annoying things, like detaching and reattaching the laptop to the docking station causes the external displays to sometimes stay turned off. This does not happen every time but often enough to get frustrating. The only solution I found was to restart the whole system. I don’t know if this is a hardware compatibility related issue or if it’s just the software. Another “problem” I have, is the fingerprint reader. It does not work. Not much to add to that. Other than that, there are a few hiccups here and there. The taskbar sometimes (very rarely) freezes up for 10-30sec for instance. Everything else is working though. So nothing major I would say. The Laptop is a Lenovo T470 by the way. Great system otherwise.
Anyway, that’s not the reason I am writing this. The reason I am writing this is that lately I have been doing a lot of network stuff at work and I had several occasions where I needed a tagged VLAN interface on my laptop. Just to test things or if I wanted to access several networks (without routing) at the same time.
It is very easy to create one with “nmcli” (if you are using NetworkManager for your network). The problem is remembering the whole command. Also, I don’t think you can create multiple interfaces with one command. But let’s not get ahead of ourselves.
Let’s start with the normal way.
Creating VLAN Interfaces with nmcli
This command creates an interface with the VLAN id 20.
fedora-kde :: ~ » nmcli connection add type vlan con-name enp34s0.20 dev enp34s0 id 20 save no Connection 'enp34s0.20' (57b8a0b9-d46c-46ea-8a9f-38dea6bb2c0e) successfully added. fedora-kde :: ~ » // con-name: defines the name for the new interface // dev: the interface to bind it to // id: the VLAN ID // save: makes the configuration permanent. Default is "yes"
Let’s take a look at the interfaces.
fedora-kde :: ~ » nmcli connection show NAME UUID TYPE DEVICE enp34s0.20 57b8a0b9-d46c-46ea-8a9f-38dea6bb2c0e vlan enp34s0.20 enp34s0 8b05eb10-1bb7-3089-9e1c-84140df50c5d ethernet enp34s0
fedora-kde :: ~ » nmcli device DEVICE TYPE STATE CONNECTION enp34s0 ethernet connected enp34s0 enp34s0.20 vlan connecting (getting IP configuration) enp34s0.20
That’s it.
Deleting VLAN Interface with nmcli
This can be used to delete other interface types as well of course.
fedora-kde :: ~ » nmcli connection delete enp34s0.20 Connection 'enp34s0.20' (ea9c2ff9-6f7f-48c4-966d-634b31a485c6) successfully deleted.
(Bonus) Script to create multiple VLAN Interfaces
Now, I don’t know how useful this will be in the long run and if it actually saves any time at all. But I wrote it… Sooo here it is.
This is a tiny script that runs a “for loop” for every VLAN ID you enter. An example.
fedora-kde :: ~ » ./vlan-creation.sh -i enp34s0 -v "20 30 40" -s yes -u no Connection 'enp34s0.20' (ef84465f-3c64-4969-bf46-baf3d9449956) successfully added. Connection 'enp34s0.30' (9578e86a-3ad4-4b8d-91bc-8e03aeba4692) successfully added. Connection 'enp34s0.40' (270d0db0-6af3-4ea0-8b64-0d6649743ec1) successfully added.
This created the VLAN tagged interfaces “20” “30” and “40” with one command.
What if we want to delete only “20” and “40”?
fedora-kde :: ~ » ./vlan-creation.sh -i enp34s0 -v "20 40" -d Connection 'enp34s0.20' (fa6a75cb-4874-4dd1-8d0e-bbbb0f798e95) successfully deleted. Connection 'enp34s0.40' (136825ff-1de2-441e-943a-27147e8550ab) successfully deleted.
Also a simple “help”.
fedora-kde :: ~ » ./vlan-creation.sh -h Usage: Create: vlan-creation.sh -i INTERFACE-NAME -v "VLANS" (Space separated) -s yes/no -u yes/no Delete: vlan-creation.sh -i INTERFACE-NAME -v "VLANS" (Space separated) -d Example: vlan-creation.sh -i ens0 -v "20 30" -s no -u yes Options: -h Help -i Interface -v VLAN IDs -s Make configuration persistent yes or no -u Disable Interface yes or no -d Delete Interface
Keep in mind that this script has no failsafe of any kind. For instance, you could create a second interface with the same name and VLAN id. The script does not check for duplicates.
KDE Plasma 5. using the GUI to create VLAN Interfaces
One more thing. If you are using KDE Plasma 5 and want to use the GUI to create or just set an IP on the VLAN interfaces, you have to select “Show virtual connections” in the “Connections” Settings. Otherwise, the interfaces won’t show up.
Here is the script.
#!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin ## Variables VLANS="" INTERFACE="" SAVE="" DISABLE="" usage () { cat <<EOF Usage: Create: vlan-creation.sh -i INTERFACE-NAME -v "VLANS" (Space separated) -s yes/no -u yes/no Delete: vlan-creation.sh -i INTERFACE-NAME -v "VLANS" (Space separated) -d Example: vlan-creation.sh -i ens0 -v "20 30" -s no -u yes Options: -h Help -i Interface -v VLAN IDs -s Make configuration persistent yes or no -u Disable Interface yes or no -d Delete Interface EOF exit 0 } OPTSTRING='hi:v:s:u:d' while getopts ${OPTSTRING} flag; do case "${flag}" in h) usage exit 0 ;; i) INTERFACE=$OPTARG ;; v) VLANS=($OPTARG) ;; s) SAVE=$OPTARG ;; u) DISABLE=$OPTARG ;; d) for item in ${VLANS[*]} do nmcli con del $INTERFACE.$item done exit ;; :) echo "$0: Must supply an argument to -$OPTARG." >&2 exit 1 ;; \?) echo "Invalid option: -$OPTARG" <&2 exit 1 ;; esac done for item in ${VLANS[*]} do nmcli con add type vlan con-name $INTERFACE.$item dev $INTERFACE id $item save $SAVE if [ $DISABLE = "yes" ] then nmcli con down $INTERFACE.$item fi done