Mój modem to archaiczny zxdsl 852v2, a dostawcą internetu jest Netia na łączach analogowych TP (modem pochodzi z zestawu Neostrady). Poniższy opis z pewnością w całości lub po części można wykorzystać w przypadku innych operatorów, modemów i systemów Linux opartych na dystrybucji Debian.
Programy takie jak ubudsl czy linnet są całkiem dobrym rozwiązaniem ale mają one dwie zasadnicze wady:
- użytkownik nie wie jak one działają, przez co kiedy coś pójdzie nie tak, to w zasadzie pozostaje tylko po omacku próbować naprawić,
- programy te nie wykorzystują pełni możliwości systemu.
- Sterownik modemu
Świetny opis kompilacji sterownika znajduje się na stronie http://fiddlesticker.wordpress.com/2009 ... -6-31-x86/. Z racji tego, że jest po angielsku, pokrótce opiszę co należy zrobić. Najpierw pobieramy kody źródłowe sterownika ze strony http://linnet.cba.pl/attachment.php?aid=5, potem patch ze http://mariuszs.googlepages.com/zxdslv2-2.6.31.diff. Po zaktualizowaniu źródeł, kompilujemy je w standardowy sposób i instalujemy.
Podczas kompilacji na gołym Ubuntu 10.10 pojawił się problem braku plików nagłówkowych autoconf.h i bounds.h (możliwe że jeszcze innych). Pliki można znaleźć w pakiecie linux-headers-2.6.35-22-generic_2.6.35-22.33_i386.deb znajdującym się w położeniu pool/main/l/linux/ na płycie instalacyjnej ubuntu. Niby pakiet był zainstalowany ale plików brakowało. Pakiet rozpakowałem a następnie plik autoconf.h skopiowałem do /usr/src/linux-headers-2.6.35-22-generic/include/linux a bounds.h do /usr/src/linux-headers-2.6.35-22-generic/include/generated.
Sterownik powinien zostać uruchomiony jako moduł jądra, po podłączeniu przewodu USB do modemu. Można użyć także poleceniaW tym momencie modem powinien się uruchomić i zsynchronizować, co zasygnalizowane zostanie zaświeceniem diód PWR i LINK.Kod: Zaznacz cały
modprobe unicorn_usb_eth
Moduł sterownika można uruchomić z określonymi parametrami łącza ADSL. W tym celu w katalogu /etc/modprobe.d utworzyłem plik options.conf, w którym wpisałemVPI, VCI, PROTOCOL i ENCAPS są parametrami łącza analogowego, które ustawiłem sugerując się informacjami na stronie http://pomoc.x.pl/art.php?12,sterowniki ... instrukcje. Pomoc odnośnie innych wartości parametrów można odnaleźć w pliku README archiwum sterownika.Kod: Zaznacz cały
options unicorn_usb_eth ActivationMode=3 VPI=0 VCI=35 PROTOCOL=pppoatm ENCAPS=vc-encaps
- Konfiguracja interfejsu i ustawień sieciowych
Po uruchomieniu sterownika powinien stać się dostępny dodatkowy interfejs sieciowy. W przypadku Ubuntu 10.04 był to u mnie zx0 - teraz jest to dsl0. Interfejs można aktywować wydając poleceniePlik /etc/resolv.conf zawiera adresy serwerów DNS. Jeśli plik nie istnieje to należy go utworzyć. U mnie wygląda on tak:Kod: Zaznacz cały
sudo ifconfig dsl0 up
Kod: Zaznacz cały
nameserver 62.233.233.233 nameserver 87.204.204.204
- Konfiguracja programu pppd
Do nawiązania połączenia internetowego przy pomocy modemu ADSL służy program pppd - Point to Point Protocol Daemon. Program - jak to zwykle w systemach unixowych - można wywołać z ogromną ilością opcji. Dla ułatwienia zalecam zgromadzić je w osobnym skrypcie. Skrypt znajdują się w położeniu /etc/ppp/peers. Tam też umieściłem plik o nazwie zxdsl852 o następującej zawartości:Opcje lub ich część można także umieścić w pliku /etc/ppp/options - wtedy wszystkie połączenia będą dodatkowo domyślnie ich używać. Tłumaczenie wszystkich opcji mija się z celem, tym bardziej, że sam się w nie zbytnio nie zagłębiałem. Użyłem zestawu opcji, których do połączenia używa program linnet. Niezbędne informacje na temat znaczenia poszczególnych opcji można znaleźć w podręczniku programu (polecenie "man pppd").Kod: Zaznacz cały
user "nazwa_użytkownika" lock noipdefault defaultroute hide-password lcp-echo-interval 20 lcp-echo-failure 3 connect /bin/true noauth persist mtu 1492 noaccomp default-asyncmap noaccomp holdoff 4 plugin rp-pppoe.so nic-dsl0 usepeerdns updetach
Zwrócę uwagę na dwa najważniejsze wiersze:- user "nazwa_użytkownika" - zawiera login otrzymany od dostawcy, o postaci np. "abcde@webnet24.pl",
- nic-dsl0 - określa używany interfejs sieciowy, skonfigurowany w poprzednim punkcie.
O ile się nie mylę, zamiast znaków gwiazdki można wpisać nazwy skryptów umieszczonych w katalogu peers, określanych w dokumentacji jako "provider". Dzięki temu można zapewne łączyć się używając różnych użytkowników lub dostawców internetu. Gwiazdka natomiast oznacza jak mniemam, że wszystkie skrypty będą używały tych samych danych uwierzytelniających.Kod: Zaznacz cały
"nazwa_użytkownika" * "hasło" *
Połączenie z internetem mogę nawiązać wydając poleceniegdzie ostatnie wyrażenie jest oczywiście nazwą skryptu z zestawem opcji. Jeśli wszystkie opcje programu pppd umieszczone zostały w pliku /etc/ppp/options, to do nawiązania połączenia wystarczy samo pppd. Po wydaniu polecenia powinien zostać aktywowany interfejs ppp0, przez który bezpośrednio nawiązywane jest połączenie sieciowe. Wielce prawdopodobne jest, że połączenie uda się nawiązać dopiero po ponownym uruchomieniu systemu - tak było w moim przypadku.Kod: Zaznacz cały
pppd call zxdsl852
- Automatyczne nawiązywanie połączenia
Ubuntu jak i zapewne inne systemy oparte na Debianie już od momentu zakończenia instalacji, jest całkowicie przystosowany do typowych zadań, takich jak automatyczne wykonywanie pewnych czynności. W pierwszej kolejności należy aktywować interfejs sieciowy modemu a następnie nawiązać połączenie. Jedno i drugie skonfigurować można w pliku /etc/network/interfaces. Do pliku dodałem kilka wierszy:Dodatkowy opis jest chyba zbędny. W taki sposób połączenie nawiązywane jest przez zalogowaniem do konta użytkownika, co ma ogromne znaczenie w wielu przypadkach.Kod: Zaznacz cały
auto dsl0 iface dsl0 inet ppp pre-up /sbin/ifconfig dsl0 up provider zxdsl852
Dobrze byłoby także skonfigurować automatycznie wykonywanie pewnych czynności, które zazwyczaj wykonujemy po nawiązaniu połączenia. Ja na przykład aby mieć zdalny dostęp do komputera przez ssh, synchronizuje swoje dynamicznie przydzielone IP z domeną serwisu DynDNS za pomocą programu "inadyn". W tym celu w katalogu /etc/ppp/ip-up.d umieściłem skrypt "inadyn" o następującej postaci:Ważne aby używać ścieżek bezwzględnych a na początku skryptu wskazać powłokę sh - w przypadku bash skrypt nie chciał się uruchomić. Automatycznie uruchomione zostaną wszystkie skrypty umieszczone w wymienionym katalogu.Kod: Zaznacz cały
#!/bin/sh /usr/local/bin/inadyn -u nazwa_użytkownika -p hasło -a host.dyndns.org --background --iterations 1 --syslog
W celu zresetowania modemu (np. po to by uzyskać nowe dynamicznie przydzielone ip) wystarczy odłączyć przewód USB od modemu a następnie podłączyć go ponownie - połączenie powinno zostać nawiązane a skrypty wykonane automatycznie bez konieczności wydawania żadnych dodatkowych poleceń.
W przypadku problemów z nawiązaniem połączenia, można zdiagnozować przyczyny wyszukując w pliku dziennika wpisów procesu pppd (np przy użyciu przeglądarki dzienników systemowych) znajdujący się w położeniu /var/log/messages. Pogram inadyn uruchomiony z powyższym zestawem opcji, dodaje wpisy do tego samego pliku dziennika.
Należy pamiętać, że każdorazowa instalacja nowego jądra wymaga ponownego zainstalowania modułu sterownika.