Bluetooth NAP How To
Transcript
Bluetooth NAP How To
Bluetooth NAP How To Questo how to descrive le procedure da seguire nella configurazione del demone napd (sviluppato dal mobilab group) che fornisce servizi di accesso alla rete fissa via interfaccia bluetooth. In pratica il demone va eseguito sulle macchine fisse che si intende dotare di potenzialità da Access Point bluetooth. Esso è necessario alla costruzione di canali PAN per l’utilizzo di IP su L2CAP. Più nel dettaglio, il demone utilizza bnep (bluetooth network encapsulation protocol): all’atto della creazione di una connessione PAN il demone pan (distribuito con lo stack BlueZ. Lo stack ufficiale bluetooth per linux) crea un interfaccia ad-hoc denominata bnepx (alla x-ma connessione). Più connessioni implicano la creazione di più interfacce virtuali bnepx. Al fine di consentire la comunicazione attraverso una sola interfaccia virtuale, in modo da poter attivare i servizi di routing e nat, bisogna creare una nuova interfaccia virtuale (pan0) e fonderla con le interfacce bnepx via via create. A differenza del demone pan normalmente fornito da BlueZ, le funzionalità di fusione delle interfacce sono offerte dal napd sfruttando le funzionalità offerte dal bridge control (802.1d), normalmente presenti come moduli nelle distribuzioni linux. I pacchetti IP possono dunque raggiungere la rete fissa attraverso una normale interfaccia eth0, collegata con pan0 tramite natting. La figura sotto espone quanto detto. I requisiti e le note di configurazione di seguito riportati sono relativi ai nostri test effettuati sul demone. Device 0 bnep0 bridging pan0 bnepx natting eth0 bridging Access Point with NAP features Device x 1. Requisiti di sistema: • • • Distribuzione mandrake Linux 9.1 con Kernel 2.4.19 o superiori; Dongle USB bluetooth; Interfaccia Ethernet (802.3 IEEE) Created by Neevia Document Converter trial version Fixed network 2. Requisiti software: • Librerie BlueZ con supporto PAN e sdp (scaricare da bluez.sf.net ed installare i package bluetooth libs, le utils, sdp e pan). I pakage vanno decompattati con il comando: # tar zxvf <nome package> e installati con la solita sequenza: # ./configure # make # install IMPORTANTE: aggiungere i seguenti alias al file /etc/modules.conf alias alias alias alias • bt-proto-0 bt-proto-2 bt-proto-3 bt-proto-4 l2cap sco rfcomm bnep bridge control: per poter installare il modulo di bridging, occorre riconfigurare il kernel. Nella directory contenente i sorgenti del kernel linux, digitare: # make menuconfig quindi selezionare “networking options” -> “802.1d Ethernet Bridging” come parte del kernel o modulo (<M>). Lanciare successivamente i seguenti comandi: # make modules # make modules_install infine è necessario installare un package di controllo denominato “bridge utils” (reperibile presso http://bridge.sf.net). NOTA IMPORTANTE: Dopo l’installazione, è necessario controllare dove è stato installato il programma brctl, con il commando: # whereis brctl qualora non fosse localizzato in /usr/local/bin, bisogna correggere appropriatamente la macro BRCTL negli script napd, makebridge e bridge-attach forniti con il nostro codice nella directory ./scripts. • DHCP Daemon: Se si vuole che il NAP assegni automaticamente gli indirizzi IP ai dispositivi, è necessario installare un demone DHCP reperibile presso: ftp://ftp.isc.org/isc/dhcp. Per l’installazione, seguire la procedura descritta precedentemente per le librerie BlueZ. Al termine dell’installazione è necessario creare un file di configurazione (di nome dhcpd.conf in /etc) per i parametri del dhcp server. Un esempio di file di configuraiozne è riportato di seguito: default-lease-time 600; max-lease-time 7200; option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; option routers 192.168.0.254; option domain-name-servers 192.168.0.1, 192.168.0.2; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.10 192.168.0.100; range 192.168.0.150 192.168.0.200; } Inoltre bisogna creare un file vuoto di nome dhcpd.leases nella directory /var/state/dhcp/. Un file vuoto può essere creato utilizzando il comando: # touch <nome file> Infine il dhcp daemon può essere lanciato in verbose mode e in ascolto sull’interfaccia pan0 con il comando: # dhcpd –d –f pan0 • Supporto al IP forwarding e masquerading (per consentire il routing dei pacchetti IP, rendendo il AP un NAT): per i kernel 2.4.x bisogna controllare la presenza dei moduli necessari al IP masquerating e forwarding: o nella directory /proc/sys/net/ipv4 devono essere presenti i seguenti moduli: ip_dynaddr, ip_forward. o Controllare (con /sbin/lsmod) se sono presenti i moduli ip_masquerade, ip_conntrack e ip_tables_names. Qualora non fossero presenti, ma vi sono in /proc/net/, allora IPMASQ è compilato staticamente ed è possibile utilizzarlo direttamente. Altrimenti, il kernel usa IPMASQ via moduli. Controllare dunque la presenza di moduli quali ip_conntrack.o, ip_conntrack_ftp.o, ip_conntrack_irc.o, ip_nat_ftp.o, ip_nat_irc.o, ip_tables.o, ipt_MASQUERADE.o, iptable_nat.o, iptable_mangle.o, iptable_filter.o, con il commando ls /lib/modules/`uname -r`/kernel/net/ipv4/netfilter/ se tali moduli sono presenti, allora IPMASQ è utilizzabile via caricamento dinamico dei moduli. Oltre ai moduli suddetti, è necessario installare il programma "iptables" versione 1.2.4 o superiore reperibile da http://www.netfilter.org/. Per la configurazione del IPMASQ, vedere la sezione “Configurazione del IP masquerating”. 3. Configurazione del IP masquerating Per il caricamento dei moduli e il setup del IPMASQ, conviene creare uno script file come quello mostrato di seguito: #!/bin/sh # echo -e "\n\nLoading simple ipmasq rules" # Location of the iptables and kernel module programs # # If your Linux distribution came with a copy of iptables, # most likely all the programs will be located in /sbin. If # you manually compiled iptables, the default location will # be in /usr/local/sbin # # ** Please use the "whereis iptables" command to figure out # ** where your copy is and change the path below to reflect # ** your setup # #IPTABLES=/sbin/iptables IPTABLES=/usr/local/sbin/iptables DEPMOD=/sbin/depmod MODPROBE=/sbin/modprobe # Setting the EXTERNAL and INTERNAL interfaces for the network: in our # case, eth0 is the external interface and pan0 is the internal virtual # interface created via brctl # EXTIF="eth0" INTIF="pan0" echo " External Interface: $EXTIF" echo " Internal Interface: $INTIF" echo -en " loading modules: " # Need to verify that all modules have all required dependencies echo " - Verifying that all kernel modules are ok" $DEPMOD -a #Load the main body of the IPTABLES module - "iptable" # echo -en "ip_tables, " $MODPROBE ip_tables #Load the stateful connection tracking framework - "ip_conntrack" # echo -en "ip_conntrack, " $MODPROBE ip_conntrack #Load the FTP tracking mechanism for full FTP tracking # echo -en "ip_conntrack_ftp, " $MODPROBE ip_conntrack_ftp #Load the IRC tracking mechanism for full IRC tracking # echo -en "ip_conntrack_irc, " $MODPROBE ip_conntrack_irc #Load the general IPTABLES NAT code - "iptable_nat" # - Loaded automatically when MASQ functionality is turned on # # - Loaded manually to clean up kernel auto-loading timing issues # echo -en "iptable_nat, " $MODPROBE iptable_nat #Loads the FTP NAT functionality into the core IPTABLES code # echo -en "ip_nat_ftp, " $MODPROBE ip_nat_ftp echo -e " Done loading modules.\n" #CRITICAL: Enable IP forwarding since it is disabled by default since # echo " Enabling forwarding.." echo "1" > /proc/sys/net/ipv4/ip_forward # Enable dynamic IP users: # echo " Enabling DynamicAddr.." echo "1" > /proc/sys/net/ipv4/ip_dynaddr # Enable simple IP forwarding and Masquerading # echo " Clearing any existing rules and setting default policy.." $IPTABLES -P INPUT ACCEPT $IPTABLES -F INPUT $IPTABLES -P OUTPUT ACCEPT $IPTABLES -F OUTPUT $IPTABLES -P FORWARD DROP $IPTABLES -F FORWARD $IPTABLES -t nat -F echo "FWD: Allow all connections OUT and only existing ones IN" $IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state \ ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT $IPTABLES -A FORWARD -j LOG echo " Enabling SNAT (MASQUERADE) functionality on $EXTIF" $IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE echo -e "Configuration done.\n" E’ possibile caricare automaticamente lo script all’avvio del sistema salvandolo col nome rc.firewall nella directory /etc/rc.d/. Lo script rc.local provvederà al caricamento del nostro script. 4. Compilazione ed esecuzione del NAP daemon Una volta estratti I file sorgenti e gli script, bisogna compilare il codice lanciando il comando: # make nella directory contenente il makefile. Il comando make creerà un file eseguibile (napd) nella directory corrente (e anche dei file .o, che possono essere cancellati con il comando make clean). Il demone può essere eseguito in diversi modi (con privilegi root): # ./napd or: (lancia il napd come daemon) # ./napd -n (lancia il napd come un processo normale) # ./napd -v (napd come un processo normale e in verbose mode) or: NOTA: Prima di eseguire il napd, bisogna attivare l’interfaccia Bluetooth e il service discovery protocol daemon (sdpd), con i comandi (con privilegi root): # hciconfig hci0 up # sdpd Bisogna anche eseguire lo script makebridge fornito con i nostri sorgenti nella directory scripts: # ./scripts/makebridge questo script usa le finzionalità del bridge control per creare l’interfaccia pan0. Inoltre, bisogna copiare a mano lo script bridge-attach (fornito nella directory scripts) nella directory /etc/bluetooth. Bisogna anche verificare se tale file è eseguibile in modalità root... in pratica, si devono eseguire i comandi: # cp ./scripts/bridge-attach /etc/bluetooth/. # chmod 744 /etc/bluetooth/bridge-attach Sulle richieste entranti, il demone creerà le interface bnepx e le fonderà con la pan0 attraverso lo script bridge-attach. 5. Installazione del napd Il napd può anche essere installato, in modo da poter essere eseguito ovunque si stia lavorando e fornendo un’interfaccia più semplice per l’utente finale, rispetto all’uso diretto del file eseguibile come visto nella sezione precedente. Una volta compilato il codice (con il comando make), il demone può essere installato con: # make install L’installazione sposta il file eseguibile nella directory /opt (la directory può essere cambiata editando il makefile e cambiando la macro EXECUTABLE), e copia uno script napd nella directory /sbin. Tale script è un wrapper sull’eseguibile che offre una semplice interfaccia per usare il demone. Il demone può essere attivato da qualsiasi sia la directory corrente (e in root mode) con il comando: # napd start e può essere fermato allo stesso modo con napd stop. Per monitorare il comportamento del demone, è possible visualizzare il file di log del sistema, ad esempio con il comando: # tail /var/log/messages NOTA: dopo che il napd è stato installato e prima di eseguirlo, è necessario attivare solo l’interfaccia Bluetooth con hciconfig hci0 up. Non c’è bisogno di lanciare sdpd, o lo script makebridge, né di spostare il file bridge-attach. Infine, il demone può essere disinstallato con: # make uninstall