This shows you the differences between two versions of the page.
isrm:laboratoare:11 [2019/05/17 10:59] mbarbulescu |
isrm:laboratoare:11 [2019/05/17 16:25] (current) mbarbulescu |
||
---|---|---|---|
Line 11: | Line 11: | ||
<code bash> | <code bash> | ||
- | nmcli radio wifi off | + | root@pr706-pc:~# nmcli radio wifi off |
- | rfkill unblock wifi | + | root@pr706-pc:~# rfkill unblock wifi |
- | rfkill unblock all | + | root@pr706-pc:~# rfkill unblock all |
- | killall wpa_supplicant | + | root@pr706-pc:~# killall wpa_supplicant |
</code> | </code> | ||
Line 20: | Line 20: | ||
<code bash> | <code bash> | ||
- | systemctl stop NetworkManager | + | root@pr706-pc:~# systemctl stop NetworkManager |
- | dhclient eno1 | + | root@pr706-pc:~# dhclient eno1 #doar daca nu mai avem conectivitate la Internet |
</code> | </code> | ||
Acum trebuie să pornim daemonul ''hostapd'' pentru a activa AP-ul nostru. E nevoie de doi pași simpli: | Acum trebuie să pornim daemonul ''hostapd'' pentru a activa AP-ul nostru. E nevoie de doi pași simpli: | ||
- | - Copiați fișierul hostapd.conf de aici, salvați-l în ''/etc/hostapd/hostapd.conf'' | + | - Copiați fișierul [[https://github.com/isrm-lab/isrm-lab-sol/blob/master/lab-11/hostapd.conf|hostapd.conf de aici]], salvați-l în ''/etc/hostapd/hostapd.conf'' |
- Rulați comanda de mai jos, output-ul trebuie să vă spună ''AP-ENABLED'': | - Rulați comanda de mai jos, output-ul trebuie să vă spună ''AP-ENABLED'': | ||
Line 40: | Line 40: | ||
</note> | </note> | ||
- | === Pregătirea stației (STA) === | + | == Modul monitor == |
+ | <note warning>Pe Intel AC7260 care sunt in laborator merge modul monitor doar pe AP. Recomandarea însă pentru a prinde toate pachetele din aer e să fie făcut pe un calculator separat</note> | ||
+ | <code bash> | ||
+ | root@pr706-pc:~# iw phy phy0 interface add mon0 type monitor flags control otherbss | ||
+ | root@pr706-pc:~# ifconfig mon0 up | ||
+ | root@pr706-pc:~# tcpdump -s0 -ni mon0 | ||
+ | </code> | ||
+ | - ''-s0'' capturează toată lungimea pachetelor | ||
+ | - ''-n'' nu rezolvă DNS | ||
+ | - ''-i'' indică interfața | ||
+ | <code bash> | ||
+ | root@pr706-pc:~# tcpdump -s0 -ni mon0 -w ./m.pcap | ||
+ | root@pr706-pc:~# wireshark ./m.pcap | ||
+ | </code> | ||
- | Experimente: | + | Examinați pachetele capturate și recunoașteți pachetele/protocoalele/câmpurile discutate la curs și în articole. |
- | Calculatoarele AP: | + | <note tip> |
+ | Comenzile de Linux pentru modul monitor le aveți și la [[https://sandilands.info/sgordon/capturing-wifi-in-monitor-mode-with-iw | ||
+ | |acest link]] | ||
+ | </note> | ||
+ | === Pregătirea stației (STA) === | ||
+ | |||
+ | Și aici trebuie oprite ''NetworkManager'' și ''wpa_supplicant''. Vom folosi întâi utilitarul ''iw'' apoi ''wpa_supplicant'' cu propriul fișier de configurare pentru a ne conecta la AP: | ||
<code bash> | <code bash> | ||
- | nmcli radio wifi off | + | root@pr706-pc:~# systemctl stop NetworkManager |
- | rfkill unblock wifi; rfkill unblock all | + | root@pr706-pc:~# killall wpa_supplicant |
- | killall wpa_supplicant | + | </code> |
- | root@pr706-pc:/home/student# hostapd /etc/hostapd/hostapd.conf | + | Pentru a face o scanare activă (asigurați-vă că folosiți modul monitor și capturați pachetul - ce tip de pachet va trimite stația?) rulați comanda: |
- | Configuration file: /etc/hostapd/hostapd.conf | + | |
- | Using interface wlp2s0 with hwaddr ac:fd:ce:22:77:9d and ssid "ISRMLABORATOR" | + | |
- | wlp2s0: interface state UNINITIALIZED->ENABLED | + | |
- | wlp2s0: AP-ENABLED | + | |
+ | <code bash> | ||
+ | root@pr706-pc:~# iw dev wlp2s0 scan | grep -i <yourSSID> -A 50 -B 20 | ||
</code> | </code> | ||
- | Calculatoarele STA: | + | Pentru a vă asocia la AP-ul pornit anterior folosiți: |
<code bash> | <code bash> | ||
- | killall wpa_supplicant | + | root@pr706-pc:~# iw dev wlp2s0 connect <yourSSID> |
+ | root@pr706-pc:~# iwconfig #to check/validate association | ||
+ | </code> | ||
- | iw dev wlp2s0 scan | grep -i <yourSSID> -A 50 -B 20 | + | === Exerciții extra === |
- | + | - Rulați o sesiune ''iperf'' TCP între cele două stații pentru a determina bandwidth-ul maxim la care TCP se simte bine. Serverul este receptor de date, Clientul e transmițător. Rulați server pe AP și client pe STA. Ce valoare are aceasta? Suntem în ''802.11b'', care e throughput maxim la acesta și la ce MCS (data rate)? | |
- | iw dev wlp2s0 connect <yourSSID> | + | <code bash> |
- | + | root@pr706-pc:~# iperf -s -i1 | |
- | iwconfig #to check association | + | root@pr706-pc:~# iperf -c <ip_AP> |
</code> | </code> | ||
+ | - Rulați o sesiune ''iperf'' UDP între cele două stații cu cel mai mare packet length (1472 Bytes). Serverul este receptor de date, Clientul e transmițător. Rulați server pe AP și client pe STA. e valoare are aceasta? Suntem în ''802.11b'', care e throughput maxim la acesta și la ce MCS (data rate)? | ||
+ | <code bash> | ||
+ | root@pr706-pc:~# iperf -s -i1 -u | ||
+ | root@pr706-pc:~# iperf -c <ip_AP> -b54M -u -i1 -l1472 | ||
+ | </code> | ||
+ | - Pentru exercițiile anterioare urmăriți în PCAP câmpul ''Data rate'' din 802.11 radio tap header. Ce observați? Ce se întâmplă cu acesta dacă vom mișca antena? | ||
+ | <note tip> | ||
+ | Dacă nu mișcăm antenele observăm creșterea monotonă data rate (a MCS-ului) grație algoritmului de rate adaption. Intel folosește [[https://github.com/torvalds/linux/blob/master/drivers/net/wireless/intel/iwlwifi/dvm/rs.c|iwl-agn-rs]]. În Linux upstream se folosește algoritmul [[https://wireless.wiki.kernel.org/en/developers/documentation/mac80211/ratecontrol/minstrel|Minstrel]] pentru vendorii care nu au dezvoltat propriul algoritm în driver/firmware. | ||
- | Daca nu se da aia de mai sus apare deauthentication aiurea | + | Dacă mișcăm antenele pe lângă evoluție ne-monotonă a data rate throughputul iperf e afectat. |
- | + | </note> | |
- | Primul exemplu de hostapd conf file: https://gist.github.com/b12mihai/c61374219ffc2b2647c6afd7a99f21f1 | + | - Pe AP configurați ''802.11n'' (ca extra feature). Re-rulați iperf și urmăriți PCAP-urile. Ce apare în plus la MCS? Dar la frame format: apare formatul HT. Mai jos aveți ce trebuie pus în ''hostapd.conf'': |
- | + | ||
- | Apoi hai sa punem in modul 802.11n in hostapd: | + | |
<code bash> | <code bash> | ||
# 802.11n | # 802.11n | ||
Line 89: | Line 113: | ||
</code> | </code> | ||
- | Apoi hai sa punem autentificare cu wpa2 | ||
- | |||
- | <code bash> | ||
- | # WPA | ||
- | auth_algs=1 | ||
- | wpa=2 | ||
- | wpa_passphrase=XXXXXXXXXXXXXXX | ||
- | wpa_key_mgmt=WPA-PSK | ||
- | wpa_pairwise=TKIP | ||
- | rsn_pairwise=CCMP | ||
- | </code> | ||
- | |||
- | == Modul monitor == | ||
- | |||
- | <note warning>Pe Intel AC7260 care sunt in laborator merge modul monitor doar pe AP</note> | ||
- | |||
- | <code shell> # iw phy phy0 interface add mon0 type monitor flags control otherbss </code> | ||
- | <code shell> # ifconfig mon0 up </code> | ||
- | <code shell> # tcpdump -s0 -ni mon0 </code> | ||
- | - -s0 capturează toată lungimea pachetelor | ||
- | - -n nu rezolvă DNS | ||
- | - -i indică interfața | ||
- | |||
- | <code shell> # tcpdump -s0 -ni mon0 -w ./m.pcap </code> | ||
- | <code shell> # wireshark ./m.pcap </code> | ||
- | |||
- | examinați pachetele capturate și recunoașteți pachetele/protocoalele/câmpurile discutate la curs și în articole. | ||
- | |||
- | |||
- | Linkuri: | ||
- | |||
- | https://vincent.bernat.ch/en/blog/2014-intel-7260-access-point | ||
- | https://sandilands.info/sgordon/capturing-wifi-in-monitor-mode-with-iw | ||
- | https://wireless.wiki.kernel.org/en/users/documentation/hostapd | ||
<hidden> | <hidden> |