Udostępnianie łącza internetowego z Windows XP (SP3) do Ubuntu Intrepid (8.10) poprzez sieć Bluetooth PAN (Personal Area Networking)
Problem. Komputer stacjonarny A z Windows XP (SP3) łączy się z Internetem przez modem ADSL lub GPRS/EDGE. Chcę udostępnić bezprzewodowo to połączenie internetowe drugiemu komputerowi B (np. typu laptop) z systemem linuksowym Ubuntu Intrepid (8.10). Nie posiadam routera z WiFi.
Proponowane rozwiązanie. Udostępnienie łącza internetowego poprzez Bluetooth po protokole BNEP w sieci PAN.
Wymagania. Komputer z Windows XP (A) powinien mieć poprawnie zainstalowane oprogramowanie dołączone do adaptera Bluetooth oraz dodatek Service Pack 3 (lub przynajmniej 2). Adapter musi oferować usługę "Dostęp sieciowy" (lub podobnie brzmiącą, umożliwiająca tworzenie sieci PAN) oraz możliwość pracy w trybie NAP (Network Access Point). Większość nowych adapterów Bluetooth oferuje wymienione usługi.
Konfiguracja na Windows XP
Używane określenia związane z oprogramowaniem dołączonym do adaptera mogą się różnić w zależności od producenta adaptera i oprogramowania (oraz spolszczenia).
Urządzenia należy sparować z poziomu Windows XP. Parowanie z poziomu Ubuntu Intrepid prawdopodobnie zakończy się błędem.
W momencie, gdy tylko komputer B (np. laptop) znajdzie się w zasięgu komputera A należy udostępnić mu usługę Dostęp sieciowy bez żądania autoryzacji (dla adaptera ASUS: Moje miejsca interfejsu Bluetooth\Całe otoczenie interfejsu Bluetooth
, wybierz urządzenie B i z menu kontekstowego Właściwości
przejdź do zakładki Autoryzacja
, zaznacz pole Dostęp sieciowy
).
Następnym krokiem jest edycja usług oferowanych przez adapter na A (dla adaptera ASUS: Moje miejsca interfejsu Bluetooth\Moje urządzenie
). Poniższy akapit dotyczy adaptera ASUS (w przypadku adapterów innych firm procedura powinna być podobna).
Wybierając Właściwości
z menu kontekstowego dla Dostęp sieciowy można ustalić rolę, w jakiej będzie pracował komputer A. Należy wybrać opcję Zezwalaj innym urządzeniom na dostęp do Internetu/sieci LAN poprzez ten komputer
. Dzięki temu urządzenie A stanie się punktem dostępowym (NAP).
Ostatnia część konfiguracji to udostępnienie łącza internetowego dla interfejsu Bluetooth. Wejdź do Panel sterowania -> Połączenia sieciowe
i wybierz z menu kontekstowego aktywnego połączenia internetowego (tego, przez które łączysz się z Internetem) opcję Właściwości
, dalej zakładkę Zaawansowane
. Zaznacz pole Zezwalaj innym użytkownikom sieci na łączenie się poprzez połączenie internetowe tego komputera
.
Należy zapisać adres IP oraz maskę sieci aktywowanej LAN Bluetooth (dla adaptera ASUS: Sieć interfejsu Bluetooth
). W tym celu wybierz z menu kontekstowego połączenia LAN Bluetooth opcję Stan
, a dalej zakładkę Obsługa
. Jeżeli komputer nie udostępnia innych sieci, to domyślnym adresem IP powinien być 192.168.0.1 wraz z maską 255.255.255.0.
Uwagi
Jeżeli opcja Zezwalaj innym użytkownikom sieci na łączenie się poprzez połączenie internetowe tego komputera
nie istnieje w zakładce Zaawansowane
aktywnego połączenia internetowego, należy sprawdzić, czy urządzenie B jest w zasięgu adaptera Bluetooth na komputerze A.
W oknie Połączenia sieciowe
powinna znajdować się ikona związana z siecią LAN Bluetooth (dla adaptera ASUS: Sieć interfejsu Bluetooth
). To połączenie musi być włączone (menu kontekstowe i opcja Włącz
). Proponuję również zdjąć z niego ochronę firewallem.
Zaznaczenie na aktywnym połączeniu sieciowym opcji Zezwalaj innym użytkownikom sieci na łączenie się poprzez połączenie internetowe tego komputera
wymaga zresetowania tego połączenia (rozłączenie się i ponowne połączenie). Wyłączenie (bądź zresetowanie) systemu dezaktywuje udostępnianie połączenia internetowego – trzeba je każdorazowo aktywować po uruchomieniu systemu.
Konfiguracja na Ubuntu Intrepid
W Internecie można znaleźć sporo artykułów nt. sposobów tworzenia sieci PAN pod Ubuntu oraz udostępniania (dzielenia) łącza poprzez Bluetooth. Niestety żaden z nich nie chciał działać na moim sprzęcie. Rozwiązanie zamieszczone poniżej, jak dotychczas, sprawuje się dobrze :-)
Konfiguracja sieci PAN dla Ubuntu polega na edycji kilku plików tekstowych oraz sprawdzaniu wpisów do dziennika systemowego (Administracja
-> Dziennik systemowy
).
Wszystkie poniższe zmiany w konfiguracji systemu wymagają praw dostępu roota. Aby edytować każdy z wymienionych niżej plików należy użyć sudo
.
Utworzenie interfejsu sieciowego. Do pliku /etc/network/interfaces
dopisz:
auto bnep0 iface bnep0 inet static address 192.168.0.100 network 192.168.0.0 netmask 255.255.255.0 gateway 192.168.0.1 broadcast 192.168.0.255
Adres 192.168.0.100 będzie przyporządkowany komputerowi B. Jeżeli masz już taki adres przyporządkowany innemu interfejsowi na B, wpisz inny adres w sieci, do której należy IP interfejsu LAN Bluetooth na A. Adres IP interfejsu LAN Bluetooth na A to gateway. Jeżeli masz ten adres inny niż 192.168.0.1 musisz wpisać odpowiednie adresy broadcasta, adresu sieci oraz maskę. Kilka przydatnych informacji na ten temat znajduje się tutaj.
Od tej pory adres 192.168.0.1 będzie odnosił się do adresu interfejsu LAN Bluetooth na A, a adres 192.168.0.100 do interfejsu na B.
Do pliku /etc/resolv.conf
dodaj linię (ew. stwórz taki plik, jeżeli nie istnieje):
nameserver 192.168.0.1
Aby zapewnić ładowanie modułu BNEP przy starcie systemu do pliku /etc/modules
dodaj linię:
bnep
Przed następnym krokiem bezpiecznie będzie wyłączyć interfejs Bluetooth:
sudo /etc/init.d/bluetooth stop
Dopisz do /etc/default/bluetooth
(lub zmień na zamieszczone, jeżeli już istnieją) te linie:
PAND_ENABLED=1 PAND_OPTIONS="--role PANU"
Następnie:
sudo mkdir /etc/bluetooth/pan
Ostatnim krokiem jest stworzenie skryptów uruchamiających i zamykających połączenie. W /etc/bluetooth/pan
stwórz plik dev-up
o takiej treści:
#!/bin/bash sudo modprobe bnep sudo pand --role PANU --search --service NAP sleep 30 sudo ifconfig bnep0 192.168.0.100 sudo ifup bnep0 sudo pand –list
oraz plik dev-down
o zawartości:
#!/bin/bash sudo pand -K sudo ifdown bnep0 sudo pkill pand
Zmień prawa dostępu:
sudo chmod +x /etc/bluetooth/pan/dev-up sudo chmod +x /etc/bluetooth/pan/dev-down
Zrestartuj system.
Komputer B połączy się z Internetem poprzez łącze Bluetooth udostępniane przez dowolne inne urządzenie po protokole BNEP, gdy wpiszesz w konsolę:
sudo /etc/bluetooth/pan/dev-up
Aby zamknąć połączenie, wpisz:
sudo /etc/bluetooth/pan/dev-down
Uwagi
Jeżeli pand informuje o rozłączeniu w dzienniku systemowym syslog
komunikatem tej postaci:
Connection refused (111)
to prawdopodobnie adapter na komputerze A nie działa poprawnie lub nie udostępniono na nim usługi Dostęp sieciowy bez autoryzacji (ew. nie sparowano urządzeń). Sprawdzenie po stronie Ubuntu:
hcitool scan
lub/oraz
sdptool search NAP
Pierwsze polecenie pokaże listę urządzeń w zasięgu, drugie wyszuka usługę NAP (punkt dostępowy do sieci) na urządzeniach w zasięgu. Zwrócenie przez sdptool
jedynie adresu MAC urządzenia oznacza błąd po stronie adaptera na komputerze A.
Komunikat typu protocol error zazwyczaj wskazuje na błąd po stronie A.
"Ostatnią" deską ratunku może być zrestartowanie sieci i zabicie procesu pand
:
sudo /etc/init.d/bluetooth stop sudo /etc/init.d/networking stop sudo pkill pand sudo /etc/init.d/networking start sudo /etc/init.d/bluetooth start
Sprawdzenie połączenia
Po uruchomieniu skryptu dev-up
(można dodatkowo sprawdzić zawartość syslog
) warto przetestować działanie połączenia. Sprawdzenie, czy serwery nazw i brama są dobrze skonfigurowane:
ping example.com
Wszystko działa poprawnie, gdy podany dla ping
adres zostanie przetłumaczony na IP oraz dostaniemy odpowiedź z serwera o takim adresie.
Gdy jest podejrzenie, że połączenie zostało przerwane, można to sprawdzić wpisując w konsolę:
pand -l
To polecenie powinno zwrócić dane o adresie MAC urządzenia, do którego jest się podłączonym oraz rolę PANU. Brak takiej informacji oznacza przerwane połączenie (najczęściej przerywa je z niewiadomego powodu avahi-daemon
). Aby połączyć się ponownie z siecią należy uruchomić skrypt dev-down
, a następnie dev-up
.