Udostępnianie połączenia PocketPC

W tym miejscu zapraszamy Was do współpracy. Czekamy na propozycje, sugestie i rady.
Moderatorzy zatroszczą się o to, by najlepsze teksty trafiły do FAQ.

Moderatorzy: Moderatorzy, Administratorzy

Awatar użytkownika
fedek6
Użytkownik
Posty: 23
Rejestracja: 2007-04-28, 14:13
Kontakt:

Udostępnianie połączenia PocketPC

Post autor: fedek6 » 2008-02-21, 01:23

Kod: Zaznacz cały

Spis treści:
0. Specyfikacja mojego połączenia - czyli dla kogo ten FAQ?
1. Konfiguracja urządzenia bluetooth  
    a. Niezbędne paczki
    b. Konfiguracja urządzenia
    c. Sprawdzenie poprawności działania
2. Konfiguracja usług 
    a. hcid.conf 
    b. Konfiguracja ppp 
    c. Konfiguracja demonów i usług bluez 
3. Chwila prawdy 
    a. Uruchomienie obsługi bluetooth 
    b. Próba generalna 
4. Udostępnienie połączenia, czyli iptables w ruch 
    Dodatek
0. Specyfikacja mojego połączenia - czyli dla kogo ten FAQ?
Poniższy opis dotyczy palmtopa HP IPAQ h1940 (windows ce 4.20) oraz komputera z systemem Slackware 12. Można go oczywiście z powodzeniem dostosować do innych dystrybucji oraz palmtopów, aczkolwiek mogą wystąpić pewne różnice. Moje połączenie konfigurowałem na standardowym bez firmowym dongle'u usb (class 1.0). Lojalnie informuje, że ten artykuł wymaga pewnej wiedzy z zakresu obsługi systemów Linux. Skoro w tym miejscu uważasz, że ta specyfikacja dotyczy Twojego problemu możemy zaczynać...

1. Konfiguracja urządzenia bluetooth
a. Niezbędne paczki
Standardowa płyta Slackware 12 zawiera wszystkie potrzebne pakiety, jeżeli jednak chcesz by były aktualne, bądź ich nie zainstalowałeś oto lista:

Kod: Zaznacz cały

bluez-firmware
bluez-hcidump
bluez-libs
bluez-uttils
Dla niewtajemniczonych napisze, że wszystko można znaleźć na stronie: packages.slackware.it

b. Konfiguracja urządzenia
Uwaga! Możemy pominąć ten krok i przejść do następnego, jeżeli udev odwala za nas brudną robotę z ładowaniem modułów.
Naszym ulubionym edytorem otwieramy plik /etc/rc.d/rc.modules i przechodzimy do 252 linii tekstu, gdzie powinno się znajdować:

Kod: Zaznacz cały

# USB Bluetooth support:
# /sbin/modprobe bluetooth
Oczywiście usuwamy hash i zapisujemy plik. To zapewni ładowanie odpowiedniego modułu przy starcie systemu. Teraz, jeżeli nie zrobiliśmy tego wcześniej ręcznie ładujemy odpowiedni moduł:

Kod: Zaznacz cały

# /sbin/modprobe bluetooth
c. Sprawdzenie poprawności działania
Teraz podłączamy naszego dongle'a i spradzawy czy się poprawnie wykrył:

Kod: Zaznacz cały

$ cat /proc/bus/usb/devices
Jeżeli wszystko poprawnie się zainstalowało powinno znaleźć się tam coś takiego:

Kod: Zaznacz cały

T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#=  3 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=e0(unk. ) Sub=01 Prot=01 MxPS=16 #Cfgs=  1
P:  Vendor=1131 ProdID=1001 Rev= 3.73
S:  Product=ISSCBTA
Może pojawić się tam też inna nazwa, na przykład Bluetooth. Nie powinno stanowić większego problemu odnalezienie odpowiedniego urządzenia. W razie kłopotów można skorzystać również z polecenia dmesg.

2. Konfiguracja usług
a. hcid.conf
Pozostała nam odpowiednia konfiguracja usług związanych z bluetooth. Przechodzimy do folderu /etc/bluetooth i otwieramy plik hcid.conf. Tak wygląda moja konfiguracja:

Kod: Zaznacz cały

options {
        autoinit yes;
        security auto;
        pairing multi;
        passkey "1111";
}
device {
        name "twoja_nazwa";
        class 0x108;
        iscan enable; pscan enable;
        deny role switch on outgoing connections
        lm accept;
        lp rswitch,hold,sniff,park;
}
W tym samym folderze, na przyszłość tworzymy plik ze standardowym passkeyem:

Kod: Zaznacz cały

# echo '1111' > pin
b. Konfiguracja ppp
Teraz przechodzimy do folderu /etc/ppp/peers i tworzymy w nim plik palm. Tak powinna wyglądać jego zawartość:

Kod: Zaznacz cały

115200
192.168.2.100:192.168.2.101
local
ms-dns 213.241.79.37
noauth
debug
Oczywiście powinieneś, a wręcz musisz, dopasować wartości do swojej specyfikacji. Aktualny adres DNS można zdobyć tak:

Kod: Zaznacz cały

$ cat /etc/resolv.conf

Należy się też pewne wyjaśnienie co do tych dwóch adresów ip powyżej DNS. Są to adresy kolejno:
1. Tworzonego dynamicznie interfejsu ppp.
2. Dołączanego przez bluetooth urządzenia (nasz PocketPC).

c. Konfiguracja demonów i usług bluez
To już jeden z ostatnich kroków przed świętowaniem. Otwieramy plik /etc/rc.d/rc.bluetooth.conf. Oto moja zawartość:

Kod: Zaznacz cały

HCID_ENABLE=true
HCID_CONFIG="/etc/bluetooth/hcid.conf"
SDPD_ENABLE=true
HIDD_ENABLE=false
HIDD_OPTIONS=""
HID2HCI_ENABLE=false
RFCOMM_ENABLE=false
RFCOMM_CONFIG="/etc/bluetooth/rfcomm.conf"
DUND_ENABLE=true
DUND_OPTIONS="--listen --persist --msdun call palm"
PAND_ENABLE=false
PAND_OPTIONS="--listen --role NAP"
Można to oczywiście zoptymalizować, jednak to wystarczy do wyznaczonego przez nas zadania. Tych których interesuje przeznaczenie tych usług odsyłam do google. Podpowiem tylko, że dla nas kluczowe jest prawidłowe skonfigurowanie dund. Dociekliwi zapewne zauważyli, że ostatnia część wiersza parametrów to nazwa pliku, który wcześniej utworzyliśmy.
3. Chwila prawdy
a. Uruchomienie obsługi bluetooth
Tradycyjnie przechodzimy do folderu /etc/rc.d i nadajemy skryptowi rc.bluetooth prawo wykonywalności. A następnie startujemy usługę:

Kod: Zaznacz cały

# chmod +x rc.bluetooth
# ./rc.bluetooth
Jeżeli ta operacja nie uraczyła nas żadnym znaczącym błędem, możemy spróbować się połączyć.

b. Próba generalna
Teraz pozostaje uruchomić program hcidump dla podglądu ruchu bt i wyszukać palmtopem okoliczne urządzenia. Jak to się robi? Nie wiem jak sprawa wygląda na Twoim palmtopie, u mnie w lewym dolnym rogu pulpitu znajduje się niebieska ikonka przedstawiająca symbol bluetooth. Klikając ją można włączyć usługę, a także uruchomić menedżer połączeń. Kiedy już znajdziemy się w rzeczonym menedżerze, wybieramy New z menu, a następnie explore bluetooth device. Z listy urządzeń wybieramy nasz komputer, palmtop przez chwilę będzie je badał. Jeżeli na liście usług udostępnianych przez nasz komputer pojawi się LAN Access Point to jesteśmy prawie w domu. Próbujemy się oczywiście połączyć z tą usługą, w dialogu z hasłem wpisujemy losowy znak - autoryzacja nie jest wymagana.

4. Udostępnienie połączenia, czyli iptables w ruch
Tym razem będziemy edytować plik /etc/rc.d/rc.firewall. Musimy wiedzieć pod jaką nazwą zostało zamontowane nasze urządzenie (u mnie jest to ppp1, ponieważ jestem posiadaczem modemu adsl ppp0). Listę urządzeń zobaczymy używając polecenia:

Kod: Zaznacz cały

# ifconfig 
A to dopisujemy do naszego pliku rc.firewall:
Zastrzegam, że moje reguły mogą być dość nieprzejrzyste, a nawet zbyt skomplikowane pasują jednak do konfiguracji mojego serwera. Polecam własne eksperymentowanie z iptables.

Kod: Zaznacz cały

iptables -A INPUT -i ppp1 -j ACCEPT
iptables -A FORWARD -i ppp1 -o ppp0 -s 192.168.2.101 -d 0/0 -j ACCEPT
iptables -A FORWARD -i ppp0 -o ppp1 -s 0/0 -d 192.168.2.101 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.2.101 -d 0/0 -j MASQUERADE
ppp0 - to jak już pisałem nazwa interfejsu służącego do łączenia z internetem. Moje reguły odrzucają wszelkie pakiety, stąd ta specyficzna budowa.

Dodatek
Zastanawiasz się pewnie, co takiego ciekawego można robić na palmtopie podłączonym do sieci. Oto skromna lista programów które ja wykorzystuję:

pocketputty.net - klient ssh.
picard.exceed.hu/tcpmp/test/ - odtwarzacz doskonale nadający się do odsłuchu radia internetowego.
cs.utah.edu/~midgley/wince/vnc.html - klient VNC (zdalna administracja).

Autor tekstu: Fedek6 - proszę o wyrozumiałość, mój pierwszy FAQ godzina 01:20
[size=84]Zaciskarka to zbytek luksusu, prawdziwy geek zaciska RJ-45 paznokciami... [url=http://parmezan.homelinux.org/FAQ/PHP/zasady_php.html]Optymalizuj swój php![/url][/size]

ODPOWIEDZ