O tom, jak nastavit WiFi rozhraní v distribucích GNU/Linux, lze nalézt velké množství zdrojů. V poslední době se setkáváme zejména s přístupem, kdy je automaticky operačním systémem příslušné rozhraní nalezeno, připojeno do systému a využíváno. Můžeme se však dostat do situace, kdy nám z nějakého důvodu tento, systémem řízený, proces nevyhovuje.
Moderní distribuční linuxová jádra obsahují podporu pro velké množství bezdrátových čipových sad, proto je malá pravděpodobnost, že naše zařízení nebude možné v systému provozovat.
Použité příkazy jsou dostupné v softwarových balíčcích iw
, wireless_tools
, případně je balíček upřesněn. V systému by neměl být aktivní nástroj Network Manager nebo jemu podobné, které přebírají kontrolu nad síťovými zdroji a znemožňují ruční nastavení.
Fyzické zařízení
V zásadě se můžeme setkat se dvěma typy připojení WiFi zařízení k našemu systému. Tím prvním je přímé připojení na PCI/PCIe sběrnici, druhým připojení přes USB. Při nastavení a práci s WiFi nás typ připojení pravděpodobně zajímat nebude, ale pokud nás tato informace zajímá, můžeme se jednoduchým způsobem podívat.
WiFi zařízení připojené na PCIe:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[root@linux ~]# lspci –v … 0c:00.0 Network controller: Intel Corporation Ultimate N WiFi Link 5300 Subsystem: Intel Corporation Device 1121 Flags: bus master, fast devsel, latency 0, IRQ 28 Memory at efdfe000 (64-bit, non-prefetchable) [size=8K] Capabilities: [c8] Power Management version 3 Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+ Capabilities: [e0] Express Endpoint, MSI 00 Capabilities: [100] Advanced Error Reporting Capabilities: [140] Device Serial Number 00-21-6a-fa-ff-ca-4f-42 Kernel driver in use: iwlwifi Kernel modules: iwlwifi |
WiFi zařízení připojené přes USB:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
[root@linux ~]# lsusb –v Bus 001 Device 004: ID 145a:5374 Ralink Technology, Corp. RT5572 Wireless Adapter Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x148f Ralink Technology, Corp. idProduct 0x5572 RT5572 Wireless Adapter bcdDevice 1.01 iManufacturer 1 Ralink iProduct 2 802.11 n WLAN iSerial 3 1.0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 53 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 450mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 5 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 5 1.0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x03 EP 3 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x04 EP 4 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Device Qualifier (for other device speed): bLength 10 bDescriptorType 6 bcdUSB 2.00 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 bNumConfigurations 1 can't get debug descriptor: Resource temporarily unavailable Device Status: 0x0000 (Bus Powered) |
Důležitější informace nám podá příkaz iw list
, který vypíše seznam připojených fyzických WiFi zařízení s jejich vlastnostmi:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 |
[root@linux ~]# iw list Wiphy phy0 max # scan SSIDs: 4 max scan IEs length: 2257 bytes max # sched scan SSIDs: 0 max # match sets: 0 Retry short limit: 7 Retry long limit: 4 Coverage class: 0 (up to 0m) Device supports RSN-IBSS. Supported Ciphers: * WEP40 (00-0f-ac:1) * WEP104 (00-0f-ac:5) * TKIP (00-0f-ac:2) * CCMP (00-0f-ac:4) * 00-0f-ac:10 * GCMP (00-0f-ac:8) * 00-0f-ac:9 Available Antennas: TX 0 RX 0 Supported interface modes: * IBSS * managed * AP * AP/VLAN * WDS * monitor * mesh point Band 1: Capabilities: 0x2f2 HT20/HT40 Static SM Power Save RX Greenfield RX HT20 SGI RX HT40 SGI TX STBC RX STBC 2-streams Max AMSDU length: 3839 bytes No DSSS/CCK HT40 Maximum RX AMPDU length 65535 bytes (exponent: 0x003) Minimum RX AMPDU time spacing: 2 usec (0x04) HT RX MCS rate indexes supported: 0-15, 32 TX unequal modulation not supported HT TX Max spatial streams: 2 HT TX MCS rate indexes supported may differ Bitrates (non-HT): * 1.0 Mbps * 2.0 Mbps (short preamble supported) * 5.5 Mbps (short preamble supported) * 11.0 Mbps (short preamble supported) * 6.0 Mbps * 9.0 Mbps * 12.0 Mbps * 18.0 Mbps * 24.0 Mbps * 36.0 Mbps * 48.0 Mbps * 54.0 Mbps Frequencies: * 2412 MHz [1] (20.0 dBm) * 2417 MHz [2] (20.0 dBm) * 2422 MHz [3] (20.0 dBm) * 2427 MHz [4] (20.0 dBm) * 2432 MHz [5] (20.0 dBm) * 2437 MHz [6] (20.0 dBm) * 2442 MHz [7] (20.0 dBm) * 2447 MHz [8] (20.0 dBm) * 2452 MHz [9] (20.0 dBm) * 2457 MHz [10] (20.0 dBm) * 2462 MHz [11] (20.0 dBm) * 2467 MHz [12] (20.0 dBm) (no IR) * 2472 MHz [13] (20.0 dBm) (no IR) * 2484 MHz [14] (20.0 dBm) (no IR) Band 2: Capabilities: 0x2f2 HT20/HT40 Static SM Power Save RX Greenfield RX HT20 SGI RX HT40 SGI TX STBC RX STBC 2-streams Max AMSDU length: 3839 bytes No DSSS/CCK HT40 Maximum RX AMPDU length 65535 bytes (exponent: 0x003) Minimum RX AMPDU time spacing: 2 usec (0x04) HT RX MCS rate indexes supported: 0-15, 32 TX unequal modulation not supported HT TX Max spatial streams: 2 HT TX MCS rate indexes supported may differ Bitrates (non-HT): * 6.0 Mbps * 9.0 Mbps * 12.0 Mbps * 18.0 Mbps * 24.0 Mbps * 36.0 Mbps * 48.0 Mbps * 54.0 Mbps Frequencies: * 5180 MHz [36] (20.0 dBm) (no IR) * 5190 MHz [38] (20.0 dBm) (no IR) * 5200 MHz [40] (20.0 dBm) (no IR) * 5210 MHz [42] (20.0 dBm) (no IR) * 5220 MHz [44] (20.0 dBm) (no IR) * 5230 MHz [46] (20.0 dBm) (no IR) * 5240 MHz [48] (20.0 dBm) (no IR) * 5250 MHz [50] (disabled) * 5260 MHz [52] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5270 MHz [54] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5280 MHz [56] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5290 MHz [58] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5300 MHz [60] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5310 MHz [62] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5320 MHz [64] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5500 MHz [100] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5510 MHz [102] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5520 MHz [104] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5530 MHz [106] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5540 MHz [108] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5550 MHz [110] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5560 MHz [112] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5570 MHz [114] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5580 MHz [116] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5590 MHz [118] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5600 MHz [120] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5610 MHz [122] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5620 MHz [124] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5630 MHz [126] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5640 MHz [128] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5650 MHz [130] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5660 MHz [132] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5670 MHz [134] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5680 MHz [136] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5690 MHz [138] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5700 MHz [140] (20.0 dBm) (no IR, radar detection) DFS state: usable (for 957 sec) DFS CAC time: 60000 ms * 5745 MHz [149] (20.0 dBm) (no IR) * 5755 MHz [151] (20.0 dBm) (no IR) * 5765 MHz [153] (20.0 dBm) (no IR) * 5775 MHz [155] (20.0 dBm) (no IR) * 5785 MHz [157] (20.0 dBm) (no IR) * 5795 MHz [159] (20.0 dBm) (no IR) * 5805 MHz [161] (20.0 dBm) (no IR) * 5825 MHz [165] (20.0 dBm) (no IR) * 4920 MHz [184] (disabled) * 4940 MHz [188] (disabled) * 4960 MHz [192] (disabled) * 4980 MHz [196] (disabled) Supported commands: * new_interface * set_interface * new_key * start_ap * new_station * new_mpath * set_mesh_config * set_bss * authenticate * associate * deauthenticate * disassociate * join_ibss * join_mesh * set_tx_bitrate_mask * frame * frame_wait_cancel * set_wiphy_netns * set_channel * set_wds_peer * probe_client * set_noack_map * register_beacons * start_p2p_device * set_mcast_rate * testmode * set_qos_map * connect * disconnect Supported TX frame types: * IBSS: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0 * managed: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0 * AP: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0 * AP/VLAN: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0 * mesh point: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0 * P2P-client: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0 * P2P-GO: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0 * P2P-device: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0 Supported RX frame types: * IBSS: 0x40 0xb0 0xc0 0xd0 * managed: 0x40 0xd0 * AP: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0 * AP/VLAN: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0 * mesh point: 0xb0 0xc0 0xd0 * P2P-client: 0x40 0xd0 * P2P-GO: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0 * P2P-device: 0x40 0xd0 software interface modes (can always be added): * AP/VLAN * monitor valid interface combinations: * #{ AP, mesh point } <= 8, total <= 8, #channels <= 1 HT Capability overrides: * MCS: ff ff ff ff ff ff ff ff ff ff * maximum A-MSDU length * supported channel width * short GI for 40 MHz * max A-MPDU length exponent * min MPDU start spacing Device supports TX status socket option. Device supports HT-IBSS. Device supports SAE with AUTHENTICATE command Device supports low priority scan. Device supports scan flush. Device supports AP scan. Device supports per-vif TX power setting Driver supports a userspace MPM Device supports configuring vdev MAC-addr on create. |
Na výpisu můžeme vidět podporu obou pásem 2,4 GHz a 5 GHz a zejména název fyzického zařízení Wiphy phy0
, tedy phy0
. S tímto názvem budeme v některých z následujících kroků pracovat.
Vypnutí a zapnutí vysílacích obvodů
Některá zařízení mají integrovaný hardwarový přepínač, který slouží pro vypnutí a zapnutí vysílacích obvodů zařízení – tzv. „režim letadlo“. Tímto přepínačem můžeme ovládat zařízení WiFi, Bluetooth, ale například i GSM, UMTS a LTE modemy. Ve většině případů není dotyčné zařízení odpojeno od systému (záleží na hardwarovém zapojení v počítači), ale pouze jeho vysílací část. Proto můžeme stále vidět příslušné rozhraní aktivní. V GNU/Linux máme možnost tuto funkcionalitu ovládat i softwarově. K tomu slouží nástroj rfkill
, který je součástí stejnojmenného softwarového balíčku.
Chceme-li se podívat na stav hardwarových a softwarových přepínačů, použijeme příkaz rfkill list
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[root@linux ~]# rfkill list 1: phy0: Wireless LAN Soft blocked: no Hard blocked: no 2: dell-wifi: Wireless LAN Soft blocked: no Hard blocked: no 3: dell-bluetooth: Bluetooth Soft blocked: no Hard blocked: no 4: dell-wwan: Wireless WAN Soft blocked: no Hard blocked: no 5: hci0: Bluetooth Soft blocked: no Hard blocked: no |
Na výpisu vidíme, že žádné bezdrátové zařízení nemá vysílací výstup vypnutý.
Pokud zapneme režim letadlo (vypnutí vysílání) hardwarovým přepínačem, můžeme zpozorovat, že se stav všech zařízení u pole Hard blocked změnil na yes:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[root@linux ~]# rfkill list 1: phy0: Wireless LAN Soft blocked: no Hard blocked: yes 2: dell-wifi: Wireless LAN Soft blocked: no Hard blocked: yes 3: dell-bluetooth: Bluetooth Soft blocked: no Hard blocked: yes 4: dell-wwan: Wireless WAN Soft blocked: no Hard blocked: yes |
Pro softwarové vypnutí slouží volba block
s parametrem obsahujícím index příslušného zařízení. Pro WiFi phy0
můžeme najít index 1
.
1 |
[root@linux ~]# rfkill block 1 |
Opětovně ověříme stav:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[root@linux ~]# rfkill list 1: phy0: Wireless LAN Soft blocked: yes Hard blocked: no 2: dell-wifi: Wireless LAN Soft blocked: no Hard blocked: no 3: dell-bluetooth: Bluetooth Soft blocked: no Hard blocked: no 4: dell-wwan: Wireless WAN Soft blocked: no Hard blocked: no |
Jak vidíme, nyní máme softwarově zablokováno vysílání pro WiFi zařízení.
Opakem volby block
je unblock
, která provede opětovné připojení vysílací části:
1 |
[root@linux ~]# rfkill unblock 1 |
Ověříme stav:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[root@linux ~]# rfkill list 1: phy0: Wireless LAN Soft blocked: no Hard blocked: no 2: dell-wifi: Wireless LAN Soft blocked: no Hard blocked: no 3: dell-bluetooth: Bluetooth Soft blocked: no Hard blocked: no 4: dell-wwan: Wireless WAN Soft blocked: no Hard blocked: no |
I přesto, že máme vysílací obvody vypnuté, můžeme, jak již bylo uvedeno, pozorovat přítomnost příslušného rozhraní v systému:
1 2 3 4 5 6 |
[root@linux ~]# iwconfig wlan0 IEEE 802.11abgn ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=off Retry short limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:off |
Jestliže používáme nástroj rfkill
, musíme na tuto vlastnost pamatovat.
Vytvoření a odstranění virtuálního síťového rozhraní
Abychom mohli využívat připojené fyzické WiFi zařízení phy0
, musíme vytvořit virtuální síťové rozhraní. Moderní distribuce se o tuto proceduru postarají díky udev
samy, ale někdy je potřeba tuto úlohu od systému převzít.
Existuje několik typů/módů bezdrátového rozhraní, které můžeme vytvořit. Mezi nejpoužívanější patří: managed, ibss, monitor, mesh, ap, ap/vlan a wds. Pro náš účel, připojení k bezdrátové síti, použijeme typ managed:
1 |
[root@linux ~]# iw phy phy0 interface add wlan0 type managed |
Síťové rozhraní má název wlan0
.
1 2 3 4 5 6 |
[root@linux ~]# iwconfig wlan0 wlan0 IEEE 802.11abgn ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=off Retry short limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:off |
1 2 3 4 5 6 7 |
[root@linux ~]# iw wlan0 info Interface wlan0 ifindex 5 wdev 0x3 addr 80:3f:5d:16:79:4e type managed wiphy 0 |
Tímto způsobem můžeme na jednom fyzickém zařízení (např. phy0
) vytvořít více virtuálních rozhraní najednou:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
[root@linux ~]# iwconfig wlan3 IEEE 802.11abgn ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=off Retry short limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:off wlan0 IEEE 802.11abgn ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=off Retry short limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:off wlan5 IEEE 802.11abgn ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=off Retry short limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:off wlan2 IEEE 802.11abgn ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=off Retry short limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:off lo no wireless extensions. wlan4 IEEE 802.11abgn ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=off Retry short limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:off eth0 no wireless extensions. wlan1 IEEE 802.11abgn ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=off Retry short limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:off |
Odstranění virtuálního síťového rozhraní ze systému:
1 |
[root@linux ~]# iw wlan0 del |
1 2 |
[root@linux ~]# iwconfig wlan0 wlan0 No such device |
Aktivace a deaktivace virtuálního síťového rozhraní
Abychom mohli virtuální síťové rozhraní wlan0
používat, musíme jej aktivovat. K tomu použijeme příkaz ip
nebo ifconfig
.
Nejprve zjistíme stav rozhraní:
1 2 3 |
[root@linux ~]# ip link show wlan0 3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000 link/ether 80:3f:5d:16:79:4e brd ff:ff:ff:ff:ff:ff |
1 2 3 4 5 6 7 |
[root@linux ~]# ifconfig wlan0 wlan0: flags=4098<BROADCAST,MULTICAST> mtu 1500 ether 80:3f:5d:16:79:4e txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 |
Vidíme, že rozhraní není aktivní (mezi příznaky flags chybí text UP). Provedeme aktivaci:
1 |
[root@linux ~]# ip link set wlan0 up |
nebo
1 |
[root@linux ~]# ifconfig wlan0 up |
Ověříme:
1 2 3 |
[root@linux ~]# ip link show wlan0 3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000 link/ether 80:3f:5d:16:79:4e brd ff:ff:ff:ff:ff:ff |
1 2 3 4 5 6 7 |
[root@linux ~]# ifconfig wlan0 wlan0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 ether 80:3f:5d:16:79:4e txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 |
Rozhraní je aktivní – příznak UP.
Pokud potřebujeme, můžeme podobným způsobem rozhraní deaktivovat. To je nutné například pokud chceme měnit vysílaný výkon, regulační region, atp.
1 |
[root@linux ~]# ip link set wlan0 up |
nebo
1 |
[root@linux ~]# ifconfig wlan0 up |
Zobrazení dostupných AP
Pro připojení musíme znát SSID AP, ke kterému se budeme připojovat. Seznam všech dostupných AP můžeme získat příkazy iw
nebo iwlist
:
1 2 3 4 5 6 7 |
[root@linux ~]# iw dev wlan0 scan | grep SSID SSID: Leon SSID: Net 20 SSID: Fiskule SSID: buf SSID: UPC Wi-Free SSID: bob |
1 2 3 4 5 6 7 |
[root@linux ~]# iwlist wlan0 scanning | grep SSID ESSID:"Leon" ESSID:"Net 20" ESSID:"Fiskule" ESSID:"buf" ESSID:"UPC Wi-Free" ESSID:"bob" |
Výše uvedenými příkazy (iw dev wlan0 scan
a iwlist wlan0 scanning
) můžeme zjistit i další parametry vztahující se k jednotlivým AP.
Připojení k bezdrátové síti
Před připojením k AP bychom měli znát veškeré údaje, které budeme potřebovat. Těmi jsou zejména název AP (SSID), použité šifrování (otevřená síť, WEP, WPA), šifrovací klíč, a pokud není v síti pro předělování IP adres použit DHCP server i nám přidělenou IP adresu, definici síťové brány, masky, a jiné.
Pro připojení můžeme opět využít příkazu iw
nebo iwconfig
. Během nastavování je virtuální rozhraní v aktivním stavu.
Připojení k otevřené síti
Toto připojení je nejjednodušší. Musíme však brát v úvahu, že na takové AP se může kdokoli připojit a přenášení data nejsou šifrována. Využití je zejména v restauracích a jiných podobných objektech.
1 |
[root@linux ~]# iw dev wlan0 connect -w <SSID> |
nebo
1 2 |
[root@linux ~]# iwconfig wlan0 essid <SSID> [root@linux ~]# iwconfig wlan0 key open |
Místo parametru <SSID> zadáme přesný název našeho AP (SSID/ESSID). Pokud se jedná o řetězec slov oddělených mezerami, použijeme na začátku a konci uvozovky.
Pokud je vše v pořádku, jsme připojeni k AP. Nyní můžeme pokračovat nastavením síťových parametrů – IP.
V některých případech může být na AP nastaven seznam MAC adres síťových rozhraní, které mají mít možnost se k tomuto AP připojovat. Vyměníme-li našeho klienta, musíme tento seznam na AP aktualizovat.
Připojení se šifrováním WEP
Šifrování WEP je nejstarším zabezpečením a šifrovacím mechanizmem, který se začal u veřejných bezdrátových WiFi sítí používat. Toto šifrování lze poměrně jednoduchým procesem prolomit. Je ale nutné zachytit dostatečné množství datových paketů, z kterých sofistikovanou metodou dostaneme šifrovací klíč.
Klíč může být řetězec ASCII nebo HEX znaků v délce 64 bit nebo 128 bit.
1 |
[root@linux ~]# iw dev wlan0 connect -w <SSID> key <KEY> |
1 2 3 |
[root@linux ~]# iwconfig wlan0 essid <SSID> [root@linux ~]# iwconfig wlan0 key <KEY> [root@linux ~]# iwconfig wlan0 enc on |
Místo parametru <SSID> zadáme přesný název našeho AP (SSID/ESSID). Pokud se jedná o řetězec slov oddělených mezerami, použijeme na začátku a konci uvozovky. Parametr <KEY> je přidělený šifrovací klíč. U WEP lze použít až čtyři klíče. O této možnosti lze nalézt více v manuálových stránkách příslušných příkazů.
Připojení se šifrováním WPA
Připojení pomocí WPA je nejnovějším a těžko prolomitelným způsobem. Pro práci, na rozdíl od předchozích metod, potřebujeme softwarový balíček wpa_supplicant
.
Tento nástroj je ve výchozím stavu v závislosti na použité distrubuci řízen souborem /etc/wpa_supplicant/wpa_supplicant.conf
, případně /etc/wpa_supplicant.conf
. V něm je definice příslušné bezdrátové sítě. V případě potřeby, může obsahovat takových sítí několik.
Pro každé SSID musí být vygenerován příslušný záznam obsahující 256 bit PSK:
1 2 3 4 5 6 |
[root@linux ~]# wpa_passphrase <SSID> <PASSPHRASE> | tee -a /etc/wpa_supplicant/wpa_supplicant.conf network={ ssid="<SSID>" #psk="<PASSPHRASE>" psk=c2161655c6ba444d8df94cbbf4e9c5c4c61fc37702b9c66ed37aee1545a5a333 } |
Příkaz nám tento záznam vygeneruje a přidá do souboru /etc/wpa_supplicant/wpa_supplicant.conf
. Samozřejmě pokud chceme, upravíme soubor ručně. <PASSPHRASE> je heslo/fráze pro převedení na klíč 256 bit PSK.
Nyní můžeme spustit wpa_supplicant
, který provede vyhledání všech SSID uvedených v souboru /etc/wpa_supplicant/wpa_supplicant.conf
a v případě nalezení se k nim pokusí připojit. Pokud je nalezeno více shod aktivních SSID (ve vzduchu i v souboru), je vybráno jedno z AP na základě v souboru definovaných priorit.
1 |
[root@linux ~]# wpa_supplicant -d wext -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B |
Nastavení parametrů IP sítě
V zásadě máme dvě možnosti. Použít automatickou konfiguraci pomocí DHCP, pokud je na AP nakonfigurována, nebo nastavit síť ručně. V případě ručního nastavení, musíme znát několik základních parametrů.
Nastavení pomocí DHCP (příkaz dhclient
nebo dhcpcd
)
Při této metodě nemusíme mít o síti žádné znalosti, protože vše je nastaveno automaticky.
1 2 3 4 5 6 7 8 9 10 |
[root@linux ~]# dhcpcd wlan0 DUID 00:01:02:01:1b:a0:e4:7c:10:18:8b:bb:65:b0 wlp12s0: IAID 66:c3:bf:7a wlp12s0: soliciting an IPv6 router wlp12s0: soliciting a DHCP lease wlp12s0: offered 192.168.0.10 from 192.168.0.1 wlp12s0: leased 192.168.0.10 for 86400 seconds wlp12s0: adding route to 192.168.0.0/24 wlp12s0: adding default route via ´192.168.0.1 forked to background, child pid 1292 |
Ruční nastavení
Pro ruční nastavení můsíme mít přidělenu IP adresu (192.168.0.10), masku (/24) sítě a výchozí bránu (192.168.0.1).
Nastavíme IP adresu a masku sítě:
1 |
[root@linux ~]# ip addr add dev wlan0 192.168.0.10/24 |
nebo
1 |
[root@linux ~]# ifconfig wlan0 192.168.0.10/24 |
Nastavíme výchozí bránu – pokud potřebujeme:
1 |
[root@linux ~]# ip route add default via 192.168.0.1 dev wlan0 |
nebo
1 |
[root@linux ~]# route add -net default gw 192.168.0.1 dev wlan0 |
Nastavení dalších parametrů
Nastavení MAC adresy
Pokud potřebujeme dočasně změnit MAC adresu, můžeme použít nástroj macchanger
, ip
nebo ifconfig
. Při této změně nesmí být rozhraní aktivní, tzn. ve stavu DOWN.
1 |
[root@linux ~]# ip link set wlan0 address 00:11:22:33:44:55 |
nebo
1 |
[root@linux ~]# ifconfig wlan0 hw ether 00:11:22:33:44:55 |
Po změně MAC adresy je nutné rozhraní aktivovat a připojit se k AP.
Nastavení regionu
Na nastavení regionu je závislé množství parametrů, které můžeme změnit. Vždy je ale nutné zadat takový region/zemi, kde se nacházíme, jinak se můžeme dostat do konfliktu s místní legislativou.
Kódy zemí jsou uvedeny v ISO/IEC 3166-1. Nastavení se provádí globálně pro celý operační systém při deaktivovaném rozhraní.
1 |
[root@linux ~]# iw reg set CZ |
Nastavení kmitočtu a kanálu
Kmitočty/kanály jsou závislé na nastavení regionu.
1 |
[root@linux ~]# iwconfig wlan0 channel 11 |
1 |
[root@linux ~]# iwconfig wlan0 channel auto |
1 |
[root@linux ~]# iwconfig wlan0 freq 2.422G |
1 |
[root@linux ~]# iwconfig wlan0 freq 2422000000 |
1 |
[root@linux ~]# iw dev wlan0 set channel 11 |
1 |
[root@linux ~]# iw phy phy0 set channel 11 |
1 |
[root@linux ~]# iw dev wlan0 set freq 2.422G |
1 |
[root@linux ~]# iw phy phy0 set freq 2.422G |
Nastavení úspory energie
1 |
[root@linux ~]# iw dev wlan0 set power_save on |
1 |
[root@linux ~]# iwconfig wlan0 power on |
Nastavení typu/módu rozhraní
1 |
[root@linux ~]# iw dev wlan0 set type managed |
1 |
[root@linux ~]# iwconfig wlan0 mode managed |
Nastavení chování v zarušeném prostředí
1 |
[root@linux ~]# iwconfig wlan0 retry 16 |
1 |
[root@linux ~]# iwconfig wlan0 retry lifetime 300m |
1 |
[root@linux ~]# iwconfig wlan0 frag 512 |
1 |
[root@linux ~]# iwconfig wlan0 commit |
Nastavení vysílacího výkonu
Maximální hodnota vysílacího výkonu je závislá na nastavení regionu.
1 |
[root@linux ~]# iwconfig wlan0 txpower 20 |
Monitoring spektra
Monitoring WiFi spektra je popsán v článku Monitoring rádiového spektra WiFi v GNU/Linux.
Závěr
Existuje množství softwarových nástrojů, které nás pohodlně provedou kompletním nastavením WiFi v GNU/Linux. Můžeme se však dostat do situace, kde nemáme tyto nástroje k dispozici a je nutné použít jiné metody. Právě proto vznikl tento článek.