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
m (Duncaen moved page Network Configuration - to Network Configuration without leaving a redirect)
(38 intermediate revisions by 10 users not shown)
Line 1: Line 1:
=== Static IP ===
As this wiki is deprecated, and will soon disappear, please refer to [https://docs.voidlinux.org/config/network/index.html the "Network" section of the Void Handbook].
Static IP configuration can either be done through <code>dhcpcd</code> and its configuration file <code>/etc/dhcpcd.conf</code>, or iproute commands in <code>/etc/rc.local</code> (see below). If an ethernet interface was configured at the installer, the <code>dhcpcd.conf</code> file should look like as follows:
<pre># Static IP configuration.
interface eth0
static ip_address=
static routers=
static domain_name_servers=</pre>
The <code>dhcpcd</code> service must be enabled in the <code>default</code> runlevel:
<pre># ln -s /etc/sv/dhcpcd /var/service/</pre>
A simpler solution without the need of running the <code>dhcpcd</code> daemon would be to setup the network interface in the file <code>/etc/rc.local</code> via commands from the <code>iproute</code> package:
<pre># Static IP configuration via iproute
ip link set dev eth0 up
ip addr add brd + dev eth0
ip route add default via</pre>
=== Dynamic IP (DHCP) ===
This is handled by the <code>dhcpcd</code> package and its service. To acquire a lease for any known interface simply enable the <code>dhcpcd</code> system service:
<pre># ln -s /etc/sv/dhcpcd /var/service/</pre>
=== DHCP per interface ===
The default <code>dhcpcd</code> 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 <code>service</code> with some modifications:
<pre># mkdir -p /etc/sv/dhcpcd-eth0
# vi /etc/sv/dhcpcd-eth0/run</pre>
<pre>      #!/bin/sh
      exec dhcpcd -B eth0</pre>
<pre># chmod 755 /etc/sv/dhcpcd-eth0/run
# ln -s /run/runit/supervise.dhcpcd-eth0  /etc/sv/dhcpcd-eth0/supervise</pre>
This <code>new</code> runit service will only work for the <code>eth0</code> device. Now you just need to symlink it to the <code>current</code> runlevel to enable and start it:
<pre># ln -s /etc/sv/dhcpcd-eth0 /var/service/</pre>
<blockquote>You can find available network devices by executing <code>ip link</code>.
=== Desktop Network Daemons (NetworkManager, wicd and connman) ===
These applications conflict with the methods mentioned above so before using <code>NetworkManager</code>, <code>wicd</code> or <code>conmman</code> make sure that <code>dhcpcd</code> and <code>wpa_supplicant</code> services are stopped and disabled:
<pre># rm -f /var/service/&lt;foo&gt;</pre>
or for the per interface service; make sure that none of these services are started by default.
=== NetworkManager-openvpn issues ===
For those having issues with NetworkManager-openvpn not connecting, it seems that the nm-      openvpn user is not added. Do so (make sure dbus, cgmanager and consolekit are installed):
<pre># groupadd -r nm-openvpn </pre>
<pre># useradd -r -g nm-openvpn -d / -s /sbin/nologin -c "Default user for running openvpn      spawned by NetworkManager" nm-openvpn </pre>
This should take care of it, credits to AnAkkk on the Arch forums!
=== Wireless (default) ===
Wireless connections are handled by the <code>wpa_supplicant</code> 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 <code>wpa_supplicant.conf</code> file to match your network device:
<pre>$ cp /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant-&lt;device&gt;.conf</pre>
==== WEP ====
Just edit <code>/etc/wpa_supplicant/wpa_supplicant-&lt;device&gt;.conf</code> and add the following lines:
<pre># Default configuration file for wpa_supplicant.conf(5).
# Add here your networks.
    wep_key0=&quot;YOUR AP WEP KEY&quot;
==== WPA-PSK (WPA Personal) ====
For <code>WPA-PSK</code> we must generate the <code>pre shared key</code> with <code>wpa_passphrase(8)</code>:
<pre>$ wpa_passphrase MYSSID key</pre>
Just append the resulting output from the above command to <code>/etc/wpa_supplicant/wpa_supplicant-&lt;device&gt;.conf</code>:
<pre># Default configuration file for wpa_supplicant.conf(5).
# Add here your networks.
    #psk=&quot;YOUR AP KEY&quot;
==== Starting <code>wpa_supplicant</code> ====
You can now enable the <code>dhcpcd</code> service, which has a hook to start wpa_supplicant, and use the <code>wpa_cli(8)</code> command to see details of this AP connection.
<pre>Note: Behaviour changed in dhcpcd-6.10.0-1: The hook is not enabled by default anymore.</pre>
Check which version you are using (<code>$ dhcpcd --version</code>). If you're using 6.10.0-1 or newer you have to enable the <code>wpa_supplicant</code> hook:
<pre>$ sudo ln -s /usr/share/dhcpcd/hooks/10-wpa_supplicant /usr/libexec/dhcpcd-hooks</pre>
If you happen to need a special driver (option -D) you can edit <code>/etc/dhcpcd.conf</code> and add a line like <code>env wpa_supplicant_driver=wext</code>.
After enabling this hook, don't forget to restart <code>dhcpcd</code>: <code>$ sudo sv restart dhcpcd</code>.
If <code>wpa_supplicant</code> is still not starting after this, try starting it from the command line (<code>$ sudo wpa_supplicant -i &lt;device&gt; -c /etc/wpa_supplicant/wpa_supplicant-&lt;device&gt;.conf</code>) to see if you get any errors.
==== 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, this method is an effective way to connect to the establishment's network temporarily:
Step 1: stop the current dhcpcd service if it's running.
<pre>$ sudo sv stop dhcpcd</pre>
Step 2: bring up your wireless NIC.
<pre>$ sudo ip link set <device> up</pre>
Replace <device> with the name assigned to your wireless card. If you don't know its name, you can use the <code>ip a</code> or <code>ip link</code> command.
Step 3: connect to the ESSID of the establishment.
<pre>$ sudo iw dev <device> connect -w "AwesomeHotel"</pre>
The <code>-w</code> option waits until the connection either succeeds or an error occurs.
Step 4: obtain an IP address from the network
<pre>$ sudo dhcpcd <device></pre>
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 <code>wpa_cli</code> command to store the ESSID of the hotel in the <code>/etc/wpa_supplicant/wpa_supplicant-<device>.conf</code> file. This assumes that you have the <code>wpa_supplicant</code> service running. This won't work if the service isn't up. Once connected, the <code>dhcpcd</code> service will obtain an IP from the network if it too is running.
Step 1: start wpa_cli in interactive mode
<pre>$ sudo wpa_cli</pre>
At this point, <code>wpa_cli</code> will tell you which interface it's working on and greet you with a <code>></code> prompt. If you want to specify the interface, simply include its name with the <code>-i</code> switch when starting <code>wpa_cli</code>:
<pre>$ sudo wpa_cli -i <device></pre>
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
<pre>> add_network
> set_network 12 ssid "The_hotel_SSID"
> set_network 12 key_mgmt NONE
> enable_network 12
> save_config
> quit</pre>
Enjoy your stay!
=== 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
Remove dhcpcd and wpa_supplicant services:
# rm -fr /var/service/dhcpcd
# rm -fr /var/service/wpa_supplicant
Include new services:
# ln -s /etc/sv/NetworkManager /var/service
# ln -s /etc/sv/dbus /var/service
The <code>nm-applet</code> requires some privileges, so, in the same way explained above (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
Start <code>nm-applet</code> in the desktop manager start file:
<pre>nm-applet &</pre>
The applet would show in the system tray. If your desktop manager doesn't have one, look for <code>stalonetray</code> or <code>trayer-srg</code> which are include in voidlinux.
(See also: <code>dhcpcd(8)</code>, <code>dhcpcd-run-hooks(8)</code>)

Latest revision as of 14:33, 13 June 2020

As this wiki is deprecated, and will soon disappear, please refer to the "Network" section of the Void Handbook.