Bluetooth Hálózati Aggregációs Pont (Bluetooth Network Aggregation Point)
Ez a cikk egy Bluetooth hálózati aggregációs pont (Bluetooth Network Aggregation Point (NAP)) beállítását tárgyalja a Gentoo Linux rendszeren.
Mi az a hálózati aggregációs pont?
A Bluetooth specifikáció magában foglalja a személyes hálózat (Personal Area Network (PAN)) létrehozásának lehetőségét. Ez egy Ethernet transzparens protokoll, így minden szabványos protokoll (különösen az IP) használható benne, egy ilyen a PAN is. Egy ilyen Ethernet hálózat mesterének tekinthető a NAP. Ez biztosítja a kapcsolatot más hálózatokkal (például interneten), akár nyolc darab Bluetooth eszközön keresztül csatlakoztatott PAN-eszközökön (mobiltelefonok, PDA-k, laptopok esetleg). Ezek az eszközök kevesebb energiát fogyasztanak a Wi-Fi helyett Bluetooth használatával.
A cikk kiterjedése
Gentoo NAP létrehozásával fogunk foglalkozni annak érdekében, hogy egy Bluetooth-képes mobiltelefont összekapcsoljunk az internettel. Sikeres kapcsolat esetén pl. szinkronizálhatja a mobiltelefon névjegyeit/naptárát egy syncml-képes csoportmunka szerverrel, amely bárhol megtalálható az interneten (vagy a helyi hálózaton). Ezentúl a NAP szervert "Gentoo-Box"-nak, a PAN klienst pedig "mobiltelefonnak" fogjuk hívni.
Előfeltételek
Először egy Bluetooth telepítést kell végezni. Ha simple-agent-et vagy bluetoothctl programot használ, akkor nincs szükség grafikus felhasználói felülettel rendelkező (GUI) programokra vagy kisalkalmazásokra. Állítsa be a "test-programs" USE jelölőzászlót a net-wireless/bluez csomagon, hogy megkapja a legújabb bluez-test-nap szkriptet. Hálózati áthidalásra is szükségünk van, de a saját gazdagép konfigurációval.
Hálózati-híd típusú kapcsolat létrehozása
Mivel a BlueZ NAP szerver a Gentoo-ra támaszkodik a BlueZ által létrehozott Ethernet kapcsolat kezeléséhez, ez a szakasz egy Ethernet hidat hoz létre a netifrc használatával. Szerkesztés előtt minden fájlról készítsen biztonsági másolatot.
Tekintse át a következő forgatókönyvet, mivel valószínűleg ez a legegyszerűbb és leggyakoribb eset:
+−−−−−−−−−−+ Globális IP-cím ┌─────>╎ Internet ╎ │ +−−−−−−−−−−+ │ v ┌────────────────────────────────────────────┐ │ Forgalomirányító router │ │ (DHCP-vel és routing (NAT) képességekkel) │ └────────────────────────────────────────────┘ ^ ^ │ │ ┌────────────┐ ┌────────────┐ │ │ +−−−−−−−−−−−−−−−+ │Mobiltelefon│<─────>│ Gentoo-gép │<─────┘ └─────>╎ Helyi hálózat ╎ └────────────┘ └────────────┘ +−−−−−−−−−−−−−−−+ Helyi IP-cím
Futtassa az ip addr parancsot az útválasztóhoz csatlakozó hálózati kártya megkereséséhez:
root #
ip addr
1: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:13:8f:a2:8e:76 brd ff:ff:ff:ff:ff:ff inet 192.168.0.2/24 brd 192.168.0.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::00:13:8f:a2:8e:76/64 scope link valid_lft forever preferred_lft forever
Az "inet 192.168.0.2/24 brd 192.168.0.255 scope global eth0" sort kell keresni.
Jegyezze meg az eszköz nevét (eth0), és szerkessze az /etc/conf.d/net fájlt:
...
# Comment out this line, and add the following lines:
#config_eth0="dhcp"
config_eth0="null"
bridge_br1="eth0"
config_br1="dhcp"
bridge_forward_delay_br1=100
bridge_stp_state_br1=1
...
Ez megmondja a netifrc-nek, hogy ne kérjen DHCP-bérletet az eth0-n (valójában azt mondja, hogy a netifrc ne csináljon semmit az eth0-nál), és hozzon létre egy új br1 hídkapcsolatot, amely tartalmazza az eth0-t. Mivel az eth0 DHCP-n keresztül kapta meg az IP-címét, a br1 pontosan erre van beállítva. A "bridge_stp_state_br1=1" és a "bridge_forward_delay_br1=100" opciók biztosítják, hogy a Spanning Tree Protocol legyen használva, és a hídkapcsolat továbbítási állapotát a topológia megváltoztatása után egy másodpercen belül eléri. Az utolsó opciók jelentősen felgyorsítják a mobiltelefon-kapcsolatot, mivel a Gentoo általában 10 másodperc körülire szokott állítani, így minden mobiltelefon csatlakozás legalább ennyi ideig tart.
Hozzon létre egy új szimbolikus linket, és indítsa újra a hálózatot:
root #
ln -sr /etc/init.d/net.lo /etc/init.d/net.br1
root #
rc-service net.eth0 stop && rc-service net.br1 start
... * Bringing up interface br1 * Creating bridge br1 ... * Adding ports to br1 * eth0 ... [ ok ] * 192.168.0.2 ... [ ok ]
Ellenőrizze az internetkapcsolatot, és ha minden jól működik, akkor adja hozzá a br1-et az "default" futási szinthez:
root #
ping -c1 wiki.gentoo.org
root #
rc-update add net.br1 default
Mobiltelefon csatlakoztatása az internethez
Indítsa el a NAP szolgáltatást, és vegye észre a br1 interfészt. Írja be a terminálba:
root #
bluez-test-nap br1
Nézze meg a rendszernaplót, amikor azt mondja a mobiltelefonjának, hogy csatlakozzon az internethez a Gentoo-számítógép segítségével NAP-ként:
root #
tail -F /var/log/messages
Nov 04 17:37:38 [bluetoothd] bnep: bridge br1: interface bnep0 added Nov 04 17:37:38 [kernel] br1: port 2(bnep0) entered blocking state Nov 04 17:37:38 [kernel] br1: port 2(bnep0) entered disabled state Nov 04 17:37:38 [kernel] device bnep0 entered promiscuous mode Nov 04 17:37:38 [kernel] br1: port 2(bnep0) entered blocking state Nov 04 17:37:38 [kernel] br1: port 2(bnep0) entered listening state Nov 04 17:37:40 [kernel] br1: port 2(bnep0) entered learning state Nov 04 17:37:42 [kernel] br1: port 2(bnep0) entered forwarding state Nov 04 17:37:42 [kernel] br1: topology change detected, propagating
Most már képesnek kell lennie a csatlakozásra és a weboldalak betöltésére.
Háttérszolgáltatás
A NAP szolgáltatást további négy módon lehet elindítani:
- A szkript futtatása a háttérben, és leállítása (CTRL+C == billentyűzettel történő megszakítás == SIGINT):
root #
bluez-test-nap br1 >/dev/null 2>&1 &
root #
killall -SIGINT bluez-test-nap
Az számítógép-indításkor történő futtatáshoz hagyja, hogy az /etc/init.d/local olvassa be a következő szkripteket. Ezeket a fájlokat futtathatóvá kell tenni:
exec /usr/bin/bluez-test-nap br1 >/dev/null 2>&1 &
killall -SIGINT bluez-test-nap
root #
chmod +x /etc/local.d/bluez-test-nap.start /etc/local.d/bluez-test-nap.stop
- A local.d fájlok megközelítése helyett jobb, ha valódi init szkriptet használunk. Ezt a fájlt futtathatóvá kell tenni:
#!/sbin/openrc-run
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
command="/usr/bin/bluez-test-nap"
command_args="br1"
command_background="yes"
description="Bluetooth NAP"
pidfile="/var/run/nap.pid"
retry="-INT/4/-TERM/1/-KILL/1"
depend() {
use net.br1
need bluetooth
}
root #
chmod +x /etc/init.d/nap
USB eszköz csatlakoztatása és kihúzása esetén csak egy udev szabály képes elvégezni a munkát:
ACTION=="add", KERNEL=="hci0", \
RUN+="/bin/sh -c 'sleep 0.5; exec /usr/bin/bluez-test-nap br1 >/dev/null 2>&1 &'"
ACTION=="remove", KERNEL=="hci0", \
RUN+="/usr/bin/killall -SIGINT bluez-test-nap"
# In case of trouble (ugly):
#ACTION=="remove", KERNEL=="hci0", \
# RUN+="/bin/sh -c 'killall -INT bluez-test-nap; killall -KILL bluetoothd; rc-service bluetooth restart'"
Vagy:
ACTION=="add", KERNEL=="hci0", \
RUN+="/bin/sh -c 'sleep 0.5; rc-service nap start'"
ACTION=="remove", KERNEL=="hci0", \
RUN+="/bin/sh -c 'rc-service nap stop'"
Hibaelhárítás
Egyetlen weboldal sem tölthető be
Ha a telefon nem mutatja a csatlakozás jelét, akkor próbálja meg a Wireshark segítségével kideríteni, hogy vajon milyen csomagokat küld és fogad az eszköz. Talán egy egyszerű
root #
echo 1 > /proc/sys/net/ipv4/ip_forward
meg tudja oldani. Győződjön meg arról, hogy a Gentoo számítógép tűzfalbeállításai nem zavarnak be.
Állítsa vissza a régi internetkapcsolatot
Ha elveszíti az internetkapcsolatot, ha a dolgok megszakadnak, akkor állítsa vissza az /etc/conf.d/net biztonsági másolatát, és indítsa újra a hálózatot:
(régi fájl)
root #
rc-service net.eth0 restart
Eszközök a teszteléshez
Létezik egy bluez-test-network nevű segédprogram, amellyel tesztelheti a szerver oldalról kezdeményezett PAN-kapcsolatot, és egy monitor-bluetooth segédprogram, amellyel figyelheti, mi történik a D-Bus mögött, mert a /var/log/messages megtekintése nem biztos, hogy elegendő.
További olvasnivaló a témában
- Bluetooth — a Bluetooth vezérlők, és Bluetooth eszközök konfigurációját, valamint azok használatát ismerteti.