netctl - Setup Wifi and Static IP on Arch Linux

This guide will concentrate on how to setup wifi on Arch Linux using netctl command line tool. Netctl is a CLI-based tool used to configure and manage network connections via profiles on Arch Linux. This command should be provided by the base packages that you install when setting up your Arch Linux box for the first time.

If for any reason the command doesn't exist on your system, you can get it by running the command:

$ sudo pacman -S netctl

Then test if it is happy and ready to be used using:

$ netctl --help

netctl require some other dependencies to work fine, please install them using the commands:

$ sudo pacman -S wpa_supplicant dhclient dialog

If you often use PPPoE, also add the package ppp. The dialog is important for the auto-generation of WiFi profiles using ncurses driven menu.

Netctl Configuration

On Arch Linux, all the network profiles managed by netctl are located under the directory /etc/netctl. If you list the contents of this directory, you'll find:

# ls /etc/netctl
examples hooks interfaces wlp1s0-hackers_zone

From this example, wlp1s0-hackers_zone is the name of my active wireless connection profile. The naming convention is interface-SSID. So in this case, my wireless interface is wlp1s0 and the WiFI SSID name is hackers_zone.

Automatically generate WiFi Profile with wifi-menu

If you need to setup your profile without manually editing files, then this part is for you. You need the dialog package installed for this to work.  The command to use is wifi-menu -o . It will generate the profile file in /etc/netctl/. Note that you need to run this as root user.

$ sudo wifi-menu -o

This will give you a menu with list of available networks in your proximity. Select the one you want to connect to and give it a name and authenticate,

Upon completing setup, you will be automatically connected to the network. Change it or connect to a different network by re-running the same command. Your new network profile will be located on /etc/netctl directory.

Manually define WiFi Profile - DHCP

A manually defined WiFi Profile with WPA authentication looks like below.

# sudo cat /etc/netctl/wlp1s0-hackers_zone
Description='My WiFi Profile'
Interface=wlp1s0
Connection=wireless
Security=wpa
ESSID=hackers_zone
IP=dhcp
[email protected]\!

Replace:

wlp1s0 with your wireless interface name as shown by  # ip link show command

hackers_zone with your wireless network name

[email protected]\!  with the password of your WiFi, Note that you need to use to escape special characters.

Starting wireless network profile with netctl

Now that you have the network configured, you may want to check a list of available profiles first:

start it using the command:

$ sudo netctl start [PROFILE]
$ sudo netctl start wlp1s0-hackers_zone

This should bring the profile to service.

Some other useful netctl command are:

$ sudo netctl stop [PROFILE]  --> Stops a profiles

$ sudo netctl stop-all --> Stop all profiles

$ sudo netctl restart [PROFILE]  --> Restart a profile

$ sudo netctl switch-to [PROFILE]  --> Switch to Profile

$ sudo netctl is-active [PROFILE]  --> Check whether Profile is active

$ sudo netctl  enable  [PROFILE]  --> Enable Profile to start on boot

Enabling a profile

A profile can be enabled to start at boot by using:

$ sudo netctl enable [PROFILE]  

This will create and enable a systemd service that will start when the computer boots. Changes to the profile file will not propagate to the service file automatically. After such changes, it is necessary to reenable the profile:

# netctl reenable [PROFILE]  

After enabling a profile, it will be started at next boot if the wireless access point used in a profile is in range respectively.

Static IP Profile

This example is for a profile which uses a static IP address. It is common for Ethernet connection since most wireless networks uses dhcp server/client model.

# cat /etc/netctl/my_static_profile
Interface=enp1s0
Connection=ethernet
IP=static
Address=('192.168.1.10/24')
Gateway=('92.168.1.1')
DNS=('192.168.1.1')

You can then manage the profile using netctl commands.

Conclusion

netctl is an advanced network management tool. It also support hooks in /etc/netctl/hooks/ and per interface hooks in /etc/netctl/interfaces/. You can set any option in a hook/interface that you can in a profile. We covered the basics you need for more advanced configurations.

Josphat Mutai 12:05 am

About Josphat Mutai

Red Hat Certified Engineer with more than 2 years experience managing critical Cloud Infrastructures and Services. Passionate about Technology and loves testing and reviewing gadgets and Open-source tools.

Author Archive Page

Have anything to say?

Your email address will not be published. Required fields are marked *

All comments are subject to moderation.