Wifi NetworkManager: Difference between revisions

From Variscite Wiki
No edit summary
Line 6: Line 6:


= Managing WiFi using NetworkManager =
= Managing WiFi using NetworkManager =
NetworkManager is a program for providing detection and configuration for systems to automatically connect to network.<br>
NetworkManager's functionality can be useful for both wireless and wired networks.<br>
This guide describes how to use NetworkManager to configure wireless networks.


== Enabling and disabling WiFi ==
== Enabling and disabling WiFi ==
Line 22: Line 26:
  # nmcli radio wifi off
  # nmcli radio wifi off


== Scanning for available WiFi APs ==
== Configuring WiFi Client ==
=== Scanning for available WiFi APs ===


If WiFi is enabled you can get the list of available APs by running
If WiFi is enabled you can get the list of available APs by running
Line 28: Line 33:
  # nmcli dev wifi list
  # nmcli dev wifi list


== Connecting to an open WiFi network ==
=== Connecting to an open WiFi network ===


To connect to an open WiFi network run
To connect to an open WiFi network run
Line 37: Line 42:


To check connection status run  
To check connection status run  
# nmcli con show <SSID>
To check WiFi device status run


  # nmcli dev show wlan0
  # nmcli dev show wlan0


== Connecting to a protected WiFi network ==
=== Connecting to a protected WiFi network ===


To connect to a protected WiFi network run
To connect to a protected WiFi network run
Line 49: Line 58:


To check connection status run  
To check connection status run  
# nmcli con show <SSID>
To check WiFi device status run


  # nmcli dev show wlan0
  # nmcli dev show wlan0


== Managing existing connections ==
=== Managing existing connections ===


Once established, the connection is preserved across reboots unless deleted explicitly.  
Once established, the connection is preserved across reboots unless deleted explicitly.  


To show existing connections run
To show existing connections, run


  # nmcli con show
  # nmcli con show


To disconnect from WiFi network run
To disconnect from a WiFi network, run
   
   
  # nmcli con down <SSID>
  # nmcli con down <SSID>


To reconnect to WiFi network run
To reconnect to a WiFi network, run


  # nmcli con up <SSID>
  # nmcli con up <SSID>


To permanently delete connection run
To permanently delete a connection, run


  # nmcli con delete <SSID>
  # nmcli con delete <SSID>
== Configuring WiFi Access Point ==
NetworkManager can also be used to turn WiFi interface into Access Point.<br>
The benefit of using NetworkManager in this scenario is the complete automation of WiFi and DHCP server configuration.
=== Disabling standalone dnsmasq service ===
Dnsmasq is a lightweight DNS forwarder and DHCP server.<br>
By default dnsmasq runs as a standalone service and will conflict with dnsmasq instance launched by NetworkManager.<br>
To prevent the conflict, disable dnsmasq service by running the following commands:
<pre>
# systemctl disable dnsmasq
# systemctl stop dnsmasq
</pre>
For NetworkManager to run dnsmasq as a local caching DNS server, edit/create /etc/NetworkManager/NetworkManager.conf and add the following
<pre>
[main]
dns=dnsmasq
</pre>
=== Creating WiFi AP ===
Use the following commands to create the initial AP setup
<pre>
# nmcli con add type wifi ifname wlan0 mode ap con-name <name> ssid <ssid>
# nmcli con modify <name> 802-11-wireless.band <band>
# nmcli con modify <name> 802-11-wireless.channel <channel>
# nmcli con modify <name> 802-11-wireless-security.key-mgmt <key-mgmt>
# nmcli con modify <name> 802-11-wireless-security.psk <password>
# nmcli con modify <name> ipv4.method shared
# nmcli con up <name>
</pre>
For example, the following commands will create AP configuration named WIFI_AP on interface wlan0, with SSID MY_AP, 2.4GHz band, channel 1, WPA-PSK security and passphrase 11223344
<pre>
# nmcli con add type wifi ifname wlan0 mode ap con-name WIFI_AP ssid MY_AP
# nmcli con modify WIFI_AP 802-11-wireless.band bg
# nmcli con modify WIFI_AP 802-11-wireless.channel 1
# nmcli con modify WIFI_AP 802-11-wireless-security.key-mgmt wpa-psk
# nmcli con modify WIFI_AP 802-11-wireless-security.psk 11223344
# nmcli con modify WIFI_AP ipv4.method shared
# nmcli con up WIFI_AP
</pre>
The complete list of nmcli configuration parameters is described in https://developer.gnome.org/NetworkManager/stable/ref-settings.html
=== Configuring DHCP subnet ===
By default 10.42.0.x/24 subnet is used by NetworkManager DHCP server, with 10.42.0.1 address assigned to AP itself. To modify it use the following command
# nmcli con modify <name> ipv4.addr <ipaddress/prefix>
For example, the following command will set DHCP subnet to 192.168.5.x/24
# nmcli con modify VAR_AP ipv4.addr 192.168.5.1/24
=== Editing AP configuration file ===
NetworkManager will create /etc/NetworkManager/system-connections/WIFI_AP configuration file.<br>
In addition to executing nmcli commands one can also edit this file to modify the AP settings.<br>
For changes in configuration file to take effect, restart NetworkManager by running
# systemctl NetworkManager restart
=== Managing existing connections ===
Once created, the AP configuration is preserved across reboots unless deleted explicitly.
To show existing connections, run
# nmcli con show
To temporarily disable AP configuration, run
# nmcli con down <name>
To enable AP configuration, run
# nmcli con up <name>
To permanently delete AP configuration, run
# nmcli con delete <name>


= Testing WiFi throughput =
= Testing WiFi throughput =
Line 86: Line 189:
  Run TCP test for 30 seconds
  Run TCP test for 30 seconds
  # iperf3 -c <IP_ADDRESS_OF_IPERF_SERVER> -t 30
  # iperf3 -c <IP_ADDRESS_OF_IPERF_SERVER> -t 30
= Access Point =
Following example will demonstrate you how to use the target as an access point. It will forward packets from wlan0 to eth0.
Setting up DHCP server DHCPD
DHCPD:
<pre>$ vi /etc/udhcpd.conf
# Sample udhcpd configuration file (/etc/udhcpd.conf)
# The start and end of the IP lease block
start          192.168.5.20    #default: 192.168.0.20
end            192.168.5.25    #default: 192.168.0.254
# The interface that udhcpd will use
interface  wlan0              #default: eth0
#Example
opt    dns    8.8.8.8  8.8.4.4 # public google dns servers
option  subnet  255.255.255.0
opt    router  192.168.5.1
option  lease  864000          # 10 days of seconds
</pre>
This is a network example. You need to set the IP address based on your network.
<br>Make sure WiFi is turned on and Ethernet is connected as per previous steps above before proceeding.
<br>First ensure that wpa_supplicant is not holding the device
<pre>$ killall wpa_supplicant
</pre>
Enable IP Forwarding:
<pre>$ echo 1 > /proc/sys/net/ipv4/ip_forward
$ ifconfig wlan0 192.168.5.1
$ hostapd -B /etc/hostapd.conf -P /var/run/hostapd.pid
$ udhcpd /etc/udhcpd.conf
$ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
</pre>
Using your phone or other device connect to the access point named "test" created using the steps above. <br>
You should be able to connect and access the internet if your Ethernet has access. <br>
As a next step one should take a look at /etc/hostapd.conf. You may want to configure password access point name etc. <br>
* For more details refer to: https://w1.fi/cgit/hostap/plain/hostapd/hostapd.conf <br>

Revision as of 16:49, 5 March 2019

Wireless

Managing WiFi using NetworkManager

NetworkManager is a program for providing detection and configuration for systems to automatically connect to network.
NetworkManager's functionality can be useful for both wireless and wired networks.
This guide describes how to use NetworkManager to configure wireless networks.

Enabling and disabling WiFi

To check if WiFi is enabled by NetworkManager run

# nmcli dev show wlan0

and check the GENERAL.STATE line. If WiFi is enabled, the state is either connected or disconnected. If WiFi is disabled the state is unavailable.

To enable WiFi run

# nmcli radio wifi on

or if you need to disable it you can run

# nmcli radio wifi off

Configuring WiFi Client

Scanning for available WiFi APs

If WiFi is enabled you can get the list of available APs by running

# nmcli dev wifi list

Connecting to an open WiFi network

To connect to an open WiFi network run

# nmcli dev wifi connect <SSID>

To connect to an open hidden WiFi network run

# nmcli dev wifi connect <SSID> hidden yes

To check connection status run

# nmcli con show <SSID>

To check WiFi device status run

# nmcli dev show wlan0

Connecting to a protected WiFi network

To connect to a protected WiFi network run

# nmcli dev wifi connect <SSID> password <password>

To connect to a protected hidden WiFi network run

# nmcli dev wifi connect <SSID> password <password> hidden yes

To check connection status run

# nmcli con show <SSID>

To check WiFi device status run

# nmcli dev show wlan0

Managing existing connections

Once established, the connection is preserved across reboots unless deleted explicitly.

To show existing connections, run

# nmcli con show

To disconnect from a WiFi network, run

# nmcli con down <SSID>

To reconnect to a WiFi network, run

# nmcli con up <SSID>

To permanently delete a connection, run

# nmcli con delete <SSID>

Configuring WiFi Access Point

NetworkManager can also be used to turn WiFi interface into Access Point.
The benefit of using NetworkManager in this scenario is the complete automation of WiFi and DHCP server configuration.

Disabling standalone dnsmasq service

Dnsmasq is a lightweight DNS forwarder and DHCP server.
By default dnsmasq runs as a standalone service and will conflict with dnsmasq instance launched by NetworkManager.
To prevent the conflict, disable dnsmasq service by running the following commands:

# systemctl disable dnsmasq
# systemctl stop dnsmasq

For NetworkManager to run dnsmasq as a local caching DNS server, edit/create /etc/NetworkManager/NetworkManager.conf and add the following

[main]
dns=dnsmasq

Creating WiFi AP

Use the following commands to create the initial AP setup

# nmcli con add type wifi ifname wlan0 mode ap con-name <name> ssid <ssid>
# nmcli con modify <name> 802-11-wireless.band <band>
# nmcli con modify <name> 802-11-wireless.channel <channel>
# nmcli con modify <name> 802-11-wireless-security.key-mgmt <key-mgmt>
# nmcli con modify <name> 802-11-wireless-security.psk <password>
# nmcli con modify <name> ipv4.method shared
# nmcli con up <name>

For example, the following commands will create AP configuration named WIFI_AP on interface wlan0, with SSID MY_AP, 2.4GHz band, channel 1, WPA-PSK security and passphrase 11223344

# nmcli con add type wifi ifname wlan0 mode ap con-name WIFI_AP ssid MY_AP
# nmcli con modify WIFI_AP 802-11-wireless.band bg
# nmcli con modify WIFI_AP 802-11-wireless.channel 1
# nmcli con modify WIFI_AP 802-11-wireless-security.key-mgmt wpa-psk
# nmcli con modify WIFI_AP 802-11-wireless-security.psk 11223344
# nmcli con modify WIFI_AP ipv4.method shared
# nmcli con up WIFI_AP

The complete list of nmcli configuration parameters is described in https://developer.gnome.org/NetworkManager/stable/ref-settings.html

Configuring DHCP subnet

By default 10.42.0.x/24 subnet is used by NetworkManager DHCP server, with 10.42.0.1 address assigned to AP itself. To modify it use the following command

# nmcli con modify <name> ipv4.addr <ipaddress/prefix>

For example, the following command will set DHCP subnet to 192.168.5.x/24

# nmcli con modify VAR_AP ipv4.addr 192.168.5.1/24

Editing AP configuration file

NetworkManager will create /etc/NetworkManager/system-connections/WIFI_AP configuration file.
In addition to executing nmcli commands one can also edit this file to modify the AP settings.

For changes in configuration file to take effect, restart NetworkManager by running

# systemctl NetworkManager restart

Managing existing connections

Once created, the AP configuration is preserved across reboots unless deleted explicitly.

To show existing connections, run

# nmcli con show

To temporarily disable AP configuration, run

# nmcli con down <name>

To enable AP configuration, run

# nmcli con up <name>

To permanently delete AP configuration, run

# nmcli con delete <name>

Testing WiFi throughput

Establish connection to WiFi network and use iperf3 tool on target and another host:

iperf3 server (on Target/Host):

# iperf3 -s

iperf3 client (on Host/Target):

Run UDP test for 30 seconds
# iperf3 -c <IP_ADDRESS_OF_IPERF_SERVER> -t 30 -u -b 0
Run TCP test for 30 seconds
# iperf3 -c <IP_ADDRESS_OF_IPERF_SERVER> -t 30