====== eduroam monitorovací sonda ====== {{:cs:spravce:monitoring:eduroamsonda:eduroam_sonda.png?nolink |}} Tento návod popisuje zprovoznění hardwarové sondy pro sledování eduroamu. Postup byl vytvořen [[jan.vondracek@upce.cz|Janem Vondráčkem]] na [[http://upce.cz/|Univerzitě Pardubice]]. Sonda umožnuje sledování fungování eduroamu z pohledu uživatelského počítače. Neotestujete tak jen radius, ale i AP, dhcp, dns, firewall atd. Jako hardware sondy je použito Raspberry Pi 3b+, OS je Raspbian9. My takovéto testy nazýváme //test umělým uživatelem//. Sonda je spojena s dohledovým systémem, v našem případě Nagiosem, pomocí LAN. Do LAN jsou naroutovány jen sítě důležité pro provoz sondy, ne výchozí brána. Volání testu připojení k eduroamu přes WIFI je iniciováno z dohledového systému, v našem případě pomocí NRPE, je otestováno připojení a pak i nějaká webová stránka, výsledek se vrací dohledovému systému. ===== příprava sondy ===== Nainstalujeme potřebné balíky: apt-get install wpasupplicant nagios-nrpe-server iptables-persistent sudo Pro připojování je využit klasický ''ifup'' pomocí ''/etc/network/interfaces'', musíme vypnout dhcpcd službu, která je na Raspbianu defaultně použitá. Ale nejdříve si interfaces pro LAN nakonfigurujeme: allow-hotplug eth0 iface eth0 inet static address 192.168.7.3/24 up ip route add 192.168.8.0/24 via 192.168.7.1 up ip route add 192.168.17.0/24 via 192.168.7.1 Přidáme si potřebné routy na dohledový systém nebo správu. Já používám instalační squid-deb-proxy, takže při aktualizaci systému pomocí unattended-upgrades nejsem závislý na připojování přes výchozí bránu. Aby korektně fungovalo testování dns, které nám nastaví eduroam přes dhcp, nesmíme v ''/etc/network/interfaces'' dns konfigurovat. Informace pro nastavování dns v Debianu tahá z tohoto souboru program ''resolvconf'', ale jeho činnost můžeme zakázat v ''/etc/resolv.conf'' příkazem ''resolvconf=NO''. Pak zastavíme defaultně použitou službu dhcpcd a restartujeme, abysme viděli, že nám síť chodí. systemctl disable dhcpcd.service systemctl disable systemd-timesyncd.service Vypnutí timesyncd ošetříme chybovou hlášku, kdy mi koliduje ntpd se systemd ntp serverem. Každé připojení přes wifi psalo info o nutnosti reloadu systemd, kvůli nové konfiguraci ntp obdržené přes dhcp. Pokud nám LAN funguje, nakonfigurujeme si WIFI připojení k eduroamu. Vytvoříme konfigurační soubor wpasupplicantu ''/etc/wpa_supplicant/wpa_supplicant.conf'': ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=CZ network={ ssid="eduroam" key_mgmt=WPA-EAP eap=PEAP identity="testovaci_uzivatel@univerzita.cz" password="heslo_testovaciho_uzivatele" phase2="auth=MSCHAPV2" } A přidáme na něj vazbu do ''/etc/network/interfaces'' k interfacu wlan0: iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf # wpa-debug-level 3 iface wlan0 inet6 dhcp Pozor, k interfacu ''wlan0'' nepovolujeme allow-hotplug! Nechceme, aby se nám ''wlan0'' připojovala automaticky! Zapoznámkovaný je parametr pro debug, nechávám ho jen pro ukázku jak si debug snadno spustit. Pro konfiguraci IPv6 už wpa-conf nepotřebujeme, interface je již připojen. Pokud IPv6 nemáte konfigurační řádek vynechtejte. Teď můžeme vyzkoušet zda nám připojení funguje. Nahodíme interface a sledujeme, zda se sonda připojí (ukázkový výpis jsem zkrátil, IPv6 žádné hlášky neposílá). Zkontrolujeme přidělené ip adresy, výchozí brány a nastavené dns v souboru ''/etc/resolv.conf''. Na konci pokusu eduroam zase odpojíme, aby nám to neovlivňovalo pozdější konfiguraci testů: ~#ifup wlan0 ... Listening on LPF/wlan0/b8:27:eb:f3:08:b0 Sending on LPF/wlan0/b8:27:eb:f3:08:b0 Sending on Socket/fallback DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8 DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 10 DHCPREQUEST of 10.221.206.160 on wlan0 to 255.255.255.255 port 67 DHCPOFFER of 10.221.206.160 from 10.221.0.1 DHCPACK of 10.221.206.160 from 10.221.0.1 ... bound to 10.221.206.160 -- renewal in 9079 seconds. ~#ip add 3: wlan0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether b8:27:eb:f3:08:b0 brd ff:ff:ff:ff:ff:ff inet 10.221.206.160/16 brd 10.221.255.255 scope global wlan0 valid_lft forever preferred_lft forever inet6 2001:718:603:100a:148a:2f06:5335:de72/128 scope global tentative valid_lft forever preferred_lft forever inet6 2001:718:603:100a:ba27:ebff:fef3:8b0/64 scope global mngtmpaddr dynamic valid_lft 300sec preferred_lft 300sec inet6 fe80::ba27:ebff:fef3:8b0/64 scope link valid_lft forever preferred_lft forever ~# cat /etc/resolv.conf domain upce.cz nameserver 195.113.124.33 nameserver 2001:718:603:e195:113:124:0:33 ~#ifdown wlan0 ... Killed old client process Listening on LPF/wlan0/b8:27:eb:f3:08:b0 Sending on LPF/wlan0/b8:27:eb:f3:08:b0 Sending on Socket/fallback DHCPRELEASE on wlan0 to 10.192.2.3 port 67 Killed old client process Užitečný je také příkaz ''iwconfig wlan0'', který nám ukáže parametry, jak se wifi připojila (AP, rychlost, síly signálu atd.). Nezapomeňte nakonfigurovat iptables či jiný firewall, aby se nám přes sondu nikdo nemohl naloupat do vnitřní sítě: iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,5666 -j ACCEPT iptables -A INPUT -i eth0 -p udp -m multiport --dports 123,161 -j ACCEPT iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -P INPUT DROP iptables -P FORWARD DROP ip6tables -A INPUT -i lo -j ACCEPT ip6tables -A INPUT -p ipv6-icmp -j ACCEPT ip6tables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT ip6tables -A INPUT -p udp -m udp --sport 547 -j ACCEPT ip6tables -P INPUT DROP ip6tables -P FORWARD DROP netfilter-persistent save Pokud je vše funkční, můžeme přistoupit ke konfiguraci testů. ===== rozchození testů ===== Nahrajeme testovací skript: #!/bin/bash #nahozeni wifi ifup wlan0 > /dev/null 2>&1 if [[ `ip link show dev wlan0` =~ "DOWN" ]] then ifdown wlan0 > /dev/null 2>&1 echo "chyba připojení k eduroamu" exit 2 fi #kontrola stranek vystup=`/usr/lib/nagios/plugins/check_http -H www.eduroam.cz -S -f follow` navratovy_kod=$? #odpojeni wifi ifdown wlan0 > /dev/null 2>&1 echo $vystup exit $navratovy_kod A nakonfigurujeme jej do nrpe serveru spuštěném na sondě, ''/etc/nagios/nrpe.cfg'': command[check_eduroam]=sudo /usr/lib/nagios/plugins/check_eduroam.sh Nahazování interfaců může dělat jen root takže samozřejmě použijeme sudo: nagios ALL=(ALL) NOPASSWD: /usr/lib/nagios/plugins/check_eduroam.sh A pak už jen z nagiosu voláme checkem pro nrpe: /usr/local/nagios/libexec/check_nrpe -H 192.168.7.3 -t 60 -c check_eduroam ===== ladění testů ===== Pokud test v nagiosu nefunguje a končí na timeoutech je třeba upravit nastavení: * **nrpe timeout** - v nagiosu u checku je třeba prodloužit nrpe timeout z defaultních 30s * **service check timeout** - v konfiguraci nagiosu prodloužit globální timeout na běh checku z defaultních 30s (nagios.cfg parametr service_check_timeout=60) * **socket timeout** - upravit parametr timeout u check_http uvnitř skriptu check_eduroamu.sh * **chyba připojení k eduroamu** - stačil klient získat z dhcp adresu? prodloužit timeout dhcp klienta (/etc/dhcp/dhclient.conf parametr timeout 60;) * **webové stránky se nezobrazí** - upravit parametry u check_http uvnitř skriptu check_eduroam.sh ===== závěr ===== Použití nrpe samozřejmě není nutností, test lze samozřejmě rozchodit i pomocí extend v snmp. Podpora testování IPv6 je možná, ale ne nutná. Stejně tak je možné používat testy pouze pomocí IPv6. A pro vlastní test pomocí http to platí také, můžete použít něco úplně jiného. Zkrátka jste omezeni jen vaší fantazií.