Warning: THE VOID WIKI IS DEPRECATED. It is no longer being maintained, contains outdated and incorrect information, and will eventually be shut down. Please refer to the Void Handbook, https://docs.voidlinux.org/, for the official documentation. If you can't find the information you're seeking, please raise an issue at https://github.com/void-linux/void-docs/issues

Difference between revisions of "Network Configuration"

From Void Linux Wiki
Jump to navigation Jump to search
(→‎NetworkManager-openvpn issues: removed: this issue was fixed.)
(→‎Wireless (NetworkManager): remove mention of adding a user, see discussion)
Line 141: Line 141:
Remove dhcpcd and wpa_supplicant services:
Disable dhcpcd and wpa_supplicant services:
Line 148: Line 148:
Include new services:
Enable and start new services:
# ln -s /etc/sv/NetworkManager /var/service
# ln -s /etc/sv/NetworkManager /var/service
# ln -s /etc/sv/dbus /var/service
# ln -s /etc/sv/dbus /var/service
The <code>nm-applet</code> requires some privileges, so, in the same way explained above ([[{{PAGENAME}}#NetworkManager-openvpn issues|NetworkManager-openvpn issues]]):
# groupadd -r nm-applet
# useradd -r -g nm-applet -d / -s /sbin/nologin -c "Default user for running nm-applet spawned by NetworkManager" nm-applet

Revision as of 11:04, 24 July 2017

Static IP

Static IP configuration can either be done through dhcpcd and its configuration file /etc/dhcpcd.conf, or iproute commands in /etc/rc.local (see below). If an ethernet interface was configured at the installer, the dhcpcd.conf file should look as follows:

# Static IP configuration.
interface eth0
static ip_address=
static routers=
static domain_name_servers=

The dhcpcd service must be enabled in the default runlevel:

# ln -s /etc/sv/dhcpcd /var/service/

A simpler solution without the need of running the dhcpcd daemon would be to setup the network interface in the file /etc/rc.local via commands from the iproute package:

# Static IP configuration via iproute
ip link set dev eth0 up
ip addr add brd + dev eth0
ip route add default via

Dynamic IP (DHCP)

This is handled by the dhcpcd package and its service. To acquire a lease for any known interface simply enable the dhcpcd system service:

# ln -s /etc/sv/dhcpcd /var/service/

DHCP per interface

The default dhcpcd runit service works in all available network interfaces, but sometimes only a single interface needs to be setup, in that case we'll make another service with some modifications:

# mkdir -p /etc/sv/dhcpcd-eth0
# vi /etc/sv/dhcpcd-eth0/run
       exec dhcpcd -B eth0
# chmod 755 /etc/sv/dhcpcd-eth0/run
# ln -s /run/runit/supervise.dhcpcd-eth0  /etc/sv/dhcpcd-eth0/supervise

This new runit service will only work for the eth0 device. Now you just need to symlink it to the current runlevel to enable and start it:

# ln -s /etc/sv/dhcpcd-eth0 /var/service/

You can find available network devices by executing

# ip link

Desktop Network Daemons (NetworkManager, wicd and connman)

These applications conflict with the methods mentioned above so before using NetworkManager, wicd or conmman make sure that dhcpcd and wpa_supplicant services are stopped and disabled:

# rm -f /var/service/<foo>

or for the per interface service; make sure that none of these services are started by default.

Wireless (default)

Wireless connections are handled by the wpa_supplicant package; it can handle multiple kinds of security against the APs: none, WEP, WPA-PSK (WPA Personal), WPA-EAP (WPA Enterprise) and more.

Copy the wpa_supplicant.conf file to match your network device:

$ cp /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant-<device>.conf


Just edit /etc/wpa_supplicant/wpa_supplicant-<device>.conf and add the following lines:

# Default configuration file for wpa_supplicant.conf(5).
# Add your networks here.
    wep_key0="YOUR AP WEP KEY"

WPA-PSK (WPA Personal)

For WPA-PSK we must generate the pre shared key with wpa_passphrase(8):

$ wpa_passphrase MYSSID key

Just append the resulting output from the above command to /etc/wpa_supplicant/wpa_supplicant-<device>.conf:

# Default configuration file for wpa_supplicant.conf(5).
# Add here your networks.
    #psk="YOUR AP KEY"

Starting wpa_supplicant

You can now enable the dhcpcd service, which has a hook to start wpa_supplicant, and use the wpa_cli(8) command to see details of this AP connection.

Note: Behaviour changed in dhcpcd-6.10.0-1: The hook is not enabled by default anymore.

Check which version you are using ($ dhcpcd --version). If you're using 6.10.0-1 or newer you have to enable the wpa_supplicant hook:

$ sudo ln -s /usr/share/dhcpcd/hooks/10-wpa_supplicant /usr/libexec/dhcpcd-hooks
Note: Not sure if the following driver option in dhcpcd works anymore. Add -Dwext to your command if you find you have issues.
$ sudo wpa_supplicant -B -i<interface> -c<path/to/conf> -Dwext

If you happen to need a special driver (option -D) you can edit /etc/dhcpcd.conf and add a line like env wpa_supplicant_driver=wext.

After enabling this hook, don't forget to restart dhcpcd:

$ sudo sv restart dhcpcd

If wpa_supplicant is still not starting after this, try starting it from the command line with

$ sudo wpa_supplicant -i <device> -c /etc/wpa_supplicant/wpa_supplicant-<device>.conf

to see if you get any errors.

Wireless (NetworkManager)

Install required packages:

# xbps-install NetworkManager network-manager-applet gnome-icon-theme inetutils-ifconfig gnome-keyring

If you want messages about the state:

# xbps-install xfce4-notifyd

Disable dhcpcd and wpa_supplicant services:

# rm -fr /var/service/dhcpcd
# rm -fr /var/service/wpa_supplicant

Enable and start new services:

# ln -s /etc/sv/NetworkManager /var/service
# ln -s /etc/sv/dbus /var/service

Start nm-applet in the desktop manager start file:

nm-applet &

The applet should show up in the system tray. If your desktop manager doesn't have one, look for stalonetray or trayer-srg which are included in Void Linux.

Connecting to hotel / restaurant / airport hotspots via the command line

Oftentimes, wifi hotspots in various public places don't have an accompanying WPA / WEP key. They require you to connect to their ESSID, obtain an IP address, and subsequently log in via a web interface of some sort. Here are two ways that will allow you to log into these networks.

Method 1: one-time connection

If you don't foresee yourself connecting to this network more than once, the following method is an effective way to connect to the establishment's network temporarily:

Step 1: stop the current dhcpcd service if it's running

$ sudo sv stop dhcpcd

Step 2: bring up your wireless NIC

$ sudo ip link set <device> up

Replace <device> with the name assigned to your wireless card. If you don't know its name, you can use the ip a or ip link command.

Step 3: connect to the ESSID of the establishment

$ sudo iw dev <device> connect -w "AwesomeHotel"

The -w option waits until the connection either succeeds or an error occurs.

Step 4: obtain an IP address from the network

$ sudo dhcpcd <device>

You should now be able to fire up your favourite web browser and log into the network normally.

Method 2: saving the connection

If you're staying at a hotel for a few days, you might want to save the connection details for the duration. This method uses the wpa_cli command to store the ESSID of the hotel in the /etc/wpa_supplicant/wpa_supplicant-<device>.conf file. This assumes that you have the wpa_supplicant service running. This won't work if the service isn't up. Once connected, the dhcpcd service will obtain an IP from the network if it too is running.

Step 1: start wpa_cli in interactive mode

$ sudo wpa_cli

At this point, wpa_cli will tell you which interface it's working on and greet you with a > prompt. If you want to specify the interface, simply include its name with the -i switch when starting wpa_cli:

$ sudo wpa_cli -i <device>

You might also see a bunch of unsolicited messages fly by as you move on to step 2.

Step 2: connect to the network and save the ESSID

> add_network
> set_network 12 ssid "The_hotel_SSID"
> set_network 12 key_mgmt NONE
> enable_network 12
> save_config
> quit

Enjoy your stay!

See also

  • dhcpcd(8), dhcpcd-run-hooks(8)