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 (→‎Wireless (NetworkManager): Converted two <code> pairs to pkg template.)
m (Duncaen moved page Network Configuration - to Network Configuration without leaving a redirect)
 
(26 intermediate revisions by 7 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 as follows:
 
 
 
<pre># Static IP configuration.
 
interface eth0
 
static ip_address=192.168.1.2
 
static routers=192.168.1.1
 
static domain_name_servers=8.8.8.8 8.8.4.4</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 192.168.1.2/24 brd + dev eth0
 
ip route add default via 192.168.1.1</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 '''new''' runit service will only work for the <code>eth0</code> 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 <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.
 
 
 
== 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-<device>.conf</code> and add the following lines:
 
 
 
<pre># Default configuration file for wpa_supplicant.conf(5).
 
ctrl_interface=/run/wpa_supplicant
 
ctrl_interface_group=wheel
 
eapol_version=1
 
ap_scan=1
 
fast_reauth=1
 
# Add your networks here.
 
network={
 
    ssid=&quot;MYSSID&quot;
 
    key_mgmt=NONE
 
    wep_key0=&quot;YOUR AP WEP KEY&quot;
 
    wep_tx_keyidx=0
 
    auth_alg=SHARED
 
}</pre>
 
 
 
=== 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-<device>.conf</code>:
 
 
 
<pre># Default configuration file for wpa_supplicant.conf(5).
 
ctrl_interface=/run/wpa_supplicant
 
ctrl_interface_group=wheel
 
eapol_version=1
 
ap_scan=1
 
fast_reauth=1
 
# Add here your networks.
 
network={
 
    ssid=&quot;MYSSID&quot;
 
    #psk=&quot;YOUR AP KEY&quot;
 
    psk=a8c34100ab4e5afac33cad7184d45a29ee0079001577d579bec6b74e4d7b5ac8
 
}</pre>
 
 
 
=== 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.
 
 
 
{{Note|Behaviour changed in dhcpcd-6.10.0-1: The hook is not enabled by default anymore.}}
 
 
 
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>
 
 
 
{{Note|Not sure if the following driver option in dhcpcd works anymore. Add -Dwext to your command if you find you have issues.
 
 
 
<pre>$ sudo wpa_supplicant -B -i<interface> -c<path/to/conf> -Dwext</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>:
 
 
 
<pre>$ sudo sv restart dhcpcd</pre>
 
 
 
If <code>wpa_supplicant</code> is still not starting after this, try starting it from the command line with
 
 
 
<pre>$ sudo wpa_supplicant -i <device> -c /etc/wpa_supplicant/wpa_supplicant-<device>.conf</pre>
 
 
 
to see if you get any errors.
 
 
 
== Wireless (NetworkManager) ==
 
 
 
Install required packages:
 
 
 
<pre>
 
# xbps-install NetworkManager network-manager-applet gnome-icon-theme inetutils-ifconfig gnome-keyring
 
</pre>
 
 
 
If you want messages about the state:
 
 
 
<pre>
 
# xbps-install xfce4-notifyd
 
</pre>
 
 
 
Disable dhcpcd and wpa_supplicant services:
 
 
 
<pre>
 
# rm -fr /var/service/dhcpcd
 
# rm -fr /var/service/wpa_supplicant
 
</pre>
 
 
 
Enable and start new services:
 
 
 
<pre>
 
# ln -s /etc/sv/NetworkManager /var/service
 
# ln -s /etc/sv/dbus /var/service
 
</pre>
 
 
 
Start <code>nm-applet</code> in the desktop manager start file:
 
 
 
<pre>nm-applet &</pre>
 
 
 
The applet should show up in the system tray. If your desktop manager doesn't have one, look for {{pkg|stalonetray}} or {{pkg|trayer-srg}}, which are available in Void Linux.
 
 
 
=== Captive Portal Detection ===
 
 
 
NetworkManager support connectivity detection in captive portals. In VoidLinux this is default off. You can enable it by adding creating this file: <pre>/etc/NetworkManager/conf.d/10-connectivity.conf</pre>
 
 
 
<pre>
 
/etc/NetworkManager/conf.d/10-connectivity.conf
 
[connectivity]
 
uri=http://nmcheck.gnome.org/check_network_status.txt
 
response=NetworkManager is online
 
interval=300
 
</pre>
 
 
 
Then restart the NetworkManager:
 
<pre>
 
# sv restart NetworkManager
 
</pre>
 
 
 
== 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 ====
 
 
 
<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
 
12
 
> set_network 12 ssid "The_hotel_SSID"
 
> set_network 12 key_mgmt NONE
 
> enable_network 12
 
> save_config
 
> quit
 
</pre>
 
 
 
Enjoy your stay!
 
 
 
== See also ==
 
* <code>dhcpcd(8)</code>, <code>dhcpcd-run-hooks(8)</code>
 
 
 
[[Category:Guides]]
 

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.