Bluetooth Hálózati Aggregációs Pont (Bluetooth Network Aggregation Point)

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Bluetooth Network Aggregation Point and the translation is 100% complete.
Other languages:

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:

FILE /etc/conf.d/net
...
# 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:

FILE /etc/local.d/bluez-test-nap.start
exec /usr/bin/bluez-test-nap br1 >/dev/null 2>&1 &
FILE /etc/local.d/bluez-test-nap.stop
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:
FILE /etc/init.d/nap
#!/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:

FILE /etc/udev/rules.d/90-bluetooth.rules
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:

FILE /etc/udev/rules.d/90-bluetooth.rules
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:

FILE /etc/conf.d/net
(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.