Ostatnia aktualizacja: 15 maja 2004
Linki do instrukcji instalacji modemu Thomson SpeedTouch (rozdział 7)
Neostrada Plus w Linuksie
Napisane przez pewnego lamera, żeby ułatwić życie innym lamerom :-)
|
4. Dzielenie połączenia - sieć lokalna, firewall, forwarding i inne |
Inne źródła:
Pakiety do Slackware 9.1 |
Latem 2002 roku przyszli do mnie technicy TPSA zakładać Neostradę. Na dzień dobry dowiedziałem się od nich, że pod linuksem uruchomić się tego nie da - albowiem konieczna jest do tego aplikacja dostępowa, która działa tylko w Windowsach 97 do 2000 - nie działa w NTkach ani w Linuksie. Trochę mnie to zmartwiło, bo mam w domu więcej niż jeden komputer i chciałem sobie to połączenie rozdzielić (na siebie i żonę...). Przyciśnięci wydusili z siebie, że owszem, da się w Linuksie, ale to jest bardzo trudne.
Uniosłem się ambicją - uruchomiłem w windzie i zacząłem szukać porady w internecie. Co nieco znalazłem, po kilku dniach kombinowania udało się wreszcie uruchomić. Problem polegał głównie na tym, że nigdzie nie było napisane wprost co należy zrobić, a ludzie na usenecie byli już tak znudzeni powtarzającymi się co parę dni pytaniami o neostradę, że kolejnych pytających wysyłali bezpardonowo na drzewo. Pomyślałem sobie więc, że przydałaby się taka prosta, łopatologiczna instrukcja - i oto jest. Nie muszę chyba dodawać, że instalacja jest prosta i na ogół bezproblemowa, a żadna "aplikacja dostępowa" nie jest do tego potrzebna...
Od tego czasu korzystam z internetu prawie cały czas, tego zresztą wymaga moja obecna praca. Wciąż jednak nie mogę się tym nacieszyć - połączenie cały czas, nie trzeba nic wykręcać, słuchać pisków modemu, czekać na połączenie, a prędkości - przy downloadach dochodzą do 60 KB/s. Czasami co prawda nie działa, zdarzają się kilkugodzinne przerwy w dostępie do internetu, ale na szczęście niezbyt często.
Jako że nie uważam się za eksperta, nie mogę powiedzieć jak należy to zrobić, ani jaki jest najlepszy sposób. Jedyne co mogę to napisać jak sam to zrobiłem, a że zadziałało, więc pewnie nie był to najgorszy sposób.
A więc po kolei:
- oprogramowanie
W większości "współczesnych" dystrybucji (RH 8.0, Aurox itp) oprogramowanie obsługujące PPPOE instalowane jest standardowo, więc nic nie trzeba doinstalowywać. Jeśli nie ma, to można dołożyć - ja ściągnąłem sobie program "rp-pppoe" ze strony www.roaringpenguin.com , wersję nową. Jeśli oprogramowanie jest, to w katalogu /usr/sbin znajdują się skrypty adsl-start, adsl-stop, adsl-connect i adsl-setup.
- konfiguracja
Uruchomić skrypt adsl-setup; zada on serię pytań, z których na większość można odpowiedzieć "enter", pozostawiając w ten sposób wartości domyślne. Odpowiedzi udzielić należy na następujące pytania:
Opcja "0" jest wskazana, jeśli chcemy sami zająć się ustawieniem firewalla i/lub będziemy konfigurować sieć lokalną.
Po zapisaniu konfiguracji odpalamy skrypt adsl-start lub polecenie ifup ppp0, i po kilku sekundach powinniśmy już mieć połączenie. Jedyną osiągalną stroną będzie www.rejestracja.neostrada.pl - tam podajemy dostarczony przez techników ID i PIN, otrzymujemy login, wybieramy hasło. Żeby mieć dostęp do całego internetu, trzeba login i hasło wpisać do plików pap-secrets i chap-secrets - albo ręcznie, albo uruchomić jeszcze raz adsl-setup i wybrać opcję zmiany konfiguracji istniejącego interfejsu ppp0.
Efektem tego wszystkiego jest powstanie pliku pppoe.conf. Żadnych cudów tam nie potrzeba, mój plik wygląda tak , i działa bez zarzutu.
I to w zasadzie wszystko - potem tylko wklepać "adsl-start", i cieszyć się życiem.
Czasem bywają, chociaż ja napytałem ich sobie głównie sam, wstyd się przyznać dlaczego... W każdym razie trochę musiałem z tym powalczyć, więc podzielę się doświadczeniami.
Bardzo dobrym źródłem wiedzy jest dokument DSL-HOWTO for Linux, polecam lekturę, zwłaszcza rozdziałów nt tablic routingu i ustawiania MTU.
- routing w routerze
Tablica rutingu powinna wyglądać tak, jak w niniejszym przykładzie, i nie inaczej - jeśli coś nie działa a tablica wygląda inaczej, to można próbować nią manipulować przy pomocy polecenia "route", ale najprawdopodobniej coś jest źle ustawione - u mnie np. w pliku /etc/sysconfig/network było wpisane GATEWAY=[inny adres lokalny], kompletnie niepotrzebnie.
- routing w komputerze w sieci
W windzie ustawia się bramkę (wewnętrzny adres naszego rutera) i podaje adresy DNSów, w linuksie trzeba w pliku /etc/sysconfig/network dodać wpis "GATEWAY=[adres lokalny routera]", a adresy DNSów wpisać w pliku /etc/resolv.conf poprzedzając je słowem "nameserver". To wszystko można też zrobić przy pomocy graficznych konfiguratorów, których kolejne dystrybucje linuksa mają coraz więcej.
- komunikat "you must be root to run this script"
Skrypty adsl-coś tam mogą być uruchamiane tylko przez root'a. Na początku skryptu jest polecenie sprawdzające ID użytkownika (if /usr/bin/id -u ! =0...). Korzysta ono z programu "id" - błąd może wystąpić jeżeli ten program znajduje się gdzie indziej niż w katalogu /usr/bin, albo w ogóle inaczej się nazywa - zdarza się tak w niektórych dystrybucjach. Trzeba po prostu zrobić drobną poprawkę w skrypcie. (problem zgłosił Heniek z Tych)
- kłopoty z przyznaniem interfejsowi sieciowemu właściwego adresu ip
Z tego co do mnie dotarło, czasami karta sieciowa zgłasza problemy z uzyskaniem właściwego ip. Dzieje się tak wtedy, kiedy karta do której jest podpięta neostrada zostaje uruchomiona z parametrem "dhcp"(dynamic host configuration protocol). Jest on niepotrzebny - w prawidłowo skonfigurowanym połączeniu interfejs do którego jest podłączona linia nie ma adresu ip i mieć go nie musi - ma go utworzony na potrzeby połączenia interfejs ppp0. Dla karty sieciowej wystarczy żeby we właściwym skrypcie (u mnie jest to ifcfg-eth1 w /etc/sysconfig/networking/devices albo w /etc/sysconfig/network-scripts) były wpisy "device=eth1" i "onboot=yes", resztę ustawi program podczas zestawiania połączenia. (zapodali: Artek i Skibbi)
- niektóre strony www działają, a niektóre nie, albo pojawiają się dziwne problemy z pocztą
Jeśli przed instalacją neostrady wszystko działało, a potem nagle przestało, to prawdopodobnie jest to problem z ustawienie MTU (maximum transfer unit). Standardowo jest to ustawione na 1500, ale w połączeniach adsl osiem bitów jest potrzebne do czegoś innego, stąd MTU na interfejsie 'internetowym' (karcie sieciowej do której przypięty jest modem) powinno być 1492. Dobrze jest obniżyć też na drugim końcu rutera, tj na interfejsie do sieci lokalnej. Zmienia się to w ustawieniach interfejsów sieciowych (poleceniem ifconfig albo skrypty ifup), sprawdza samym "ifconfig".
Jeśli komputer z sieci lokalnej w dalszym ciągu ma problemy, a pracuje pod windowsami, można spróbować zastosować któryś z patchy (sguide_tweak_2k albo sguide_tweak_98), instaluje się je po prostu i powinno to zlikwidować wszystkie problemy. (instrukcję i patche nadesłał: Musiker).
Można też spróbować doświadczalnie ustalić maksymalne MTU dla stacji windowsowej, w sposób następujący: z komputera z windowami pingować dowolny zewnętrzny host poleceniem 'ping' z parametrami -f (nie zezwala na fragmentację pakietu) i -l xxxx (ustawia wielkość wysyłanego pakietu. W ten sposób próbujemy przepchać przez naszą lokalną sieć i dalej do internetu pakietu różnej wielkości - zmieniamy parametr -l (to jest małe el) od 1492 w dół, i patrzymy kiedy zadziała. Ponieważ pakiet wysyłany przez pinga ma jeszcze nagłówek o wielkości 28 bajtów, do otrzymanej w ten sposób wartości należy dodać 28 i to będzie maksymalna wielkość pakietu, czyli MTU które na danej stacji windzianej ustawić należy. (podpowiedział i wyjaśnił: Edek z p.c.o.l., za co wielkie dzięki). W windowsach MTU ustawia się albo ręcznie, w rejestrze (HKEY_LOCAL_MACHNE\ System\ CurrentControlSet\ Services\ Class\ netTrans\000n - tych n-ów jest kilka, należy znaleźć właściwy), tam trzeba podać parametr MaxMTU - domyślnie go nie ma, a to oznacza że jest 1500. Można też poszukać sobie w internecie programu DrTCP, który właśnie do tego służy.
Alternatywnym sposobem rozwiązania tego samego problemu jest ustawienie odpowiedniej reguły w iptables na ruterze:
iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
Osobiście nie testowałem, ale podobno skutecznie udrażnia to komunikację w przypadku stacji roboczych tak windzianych, jak i Maców. (wypraktykował i nadesłał: Przemek Borkowski)
- inne drobne porady
Jakby ktoś zapomniał, to żeby komputer przypięty do neostrady obsłużył sieć lokalną, w pliku /proc/sys/net/ipv4/ip_forward, a także w paru innych z tej okolicy muszą być wartości 1, a nie 0 (w niektórych dystrybucjach załatwia to skrypt /etc/rc.d/init.d/network za pomocą polecenia echo 1 > /proc/.../ip_forward, a w niektórych nie). Nie od rzeczy byłoby też dokonać w pliku /etc/sysconfig/network wpisu "FORWARD_IPV4=true"... Dobrze też sprawdzić zawartość pliku /etc/sysctl.conf, tam są domyślne ustawienia wielu istotnych parametrów.
4. Dzielenie połączenia - sieć lokalna, firewall, forwarding i inne
4.1 Czy można podzielić
Regulamin usługi mówi jasno, że "połączenie nie może być udostępniane poza lokal". Czyli - w obrębie swojego mieszkania można sobie robić co się chce, zrobić sieć lokalną ze stacjami dla wszystkich domowników z psem włącznie. Udostępniać sąsiadom, w świetle regulaminu, nie wolno - czy można, to już jest kwestia osobista (podobnie jak płacenie podatków i przestrzeganie ograniczeń prędkości...). Od niedawna TPSA świadczy nową usługę "InternetDSL" - jest to praktycznie to samo co Neostrada, różni się tym że daje stałe IP, można ją legalnie i z czystym sumieniem udostępniać komu się chce, i jest o połowę droższa.
4.2 Ustawienie sieci
Potrzebny jest do tego oczywiście hub (albo raczej switch) oraz jeden komputer, który będzie cały czas włączony i połączony z internetem i będzie pełnił rolę routera. Router musi być wpięty pomiędzy hub, a internet - musi mieć więc dwie karty sieciowe, jedną połączoną z hubem, a do drugiej będzie przypięty modem.
4.3 Wymagania od routera
Niewielkie - może to być stary pecet, procesor 486 w zupełności wystarczy. Nie musi mieć monitora ani klawiatury - można nim administrować przez telnet z innego komputera (trzeba na nim tylko uruchomić serwer telnetu). Teoretycznie nie musi mieć nawet twardego dysku - istnieją "dyskietkowe" dystrybucje linuxa, niektóre z nich przeznaczone właśnie dla domowych routerów. Przy ich pomocy powinno być możliwe także uruchomienie Neostrady; mi się wprawdzie jak dotąd nie udało, ale to przecież nie znaczy że to jest niemożliwe ;-)
4.4 Zabezpieczenie
Moja "sieć" nie jest wielka (ruter i dwie stacje robocze, moja i małżonki), ale chronić ją trzeba. Skorzystałem ze znalezionego w internecie bardzo dobrego tekstu Pawła Krawczyka Filtrowanie 'stateful-inspection' w Linuksie i BSD - wszystko tam jest łopatologicznie opisane, co i jak działa, jest tam też gotowiec z którego, przyznaję, skorzystałem prawie w całości.
Dla osób, które z iptables, maskaradą i tego typu rzeczami nie miały jeszcze do czynienia -
tutaj jest garść podstawowych informacji (instalacja, konfiguracja itp)
Z innych środków zabezpiecznia polecam programy nasłuchujące na portach i sprawdzające, czy ktoś się do nas nie dobiera - na przykład PortSentry (szczegóły - man portsentry i www.google.com). Kopalnią wiedzy na temat routingu i zabezpieczeń sieci jest strona Łukasza Bromirskiego mr0vka.eu.org.
5. Różne inne zagadnienia i problemy
- jak podtrzymać połączenie
To jest akurat najprostsza rzecz - Neostrada rozłącza się po kilku godzinach braku ruchu na łączu. Wystarczy wrzucić do katalogu cron.hourly skrypt składający się z jednej linii w rodzaju "ping -c5 www.cokolwiek", i po sprawie :-) Zastosowanie któregoś z poniższych skryptów również załatwia sprawę, bo one pingują regularnie dla sprawdzenia połączenia.
- automatyczne nawiązywanie zerwanego połączenia
Jedną z zalet połączenia adsl jest to, że w przypadku przerwy w połączeniu nie ulega trwałemu zerwaniu - można na przykład wyjąć wtyczkę (telefoniczną oczywiście) z gniazdka, włożyć z powrotem i wszystko będzie działać jak przedtem. Tak więc przerwy w dostępie do netu wynikające np z tego, że tepsa coś majstruje, nie powinny powodować zerwania połączenia. Gdyby jednak z jakichś przyczyn połączenie padło, przydałoby się żeby zostało automatycznie uruchomione (gdyby na przykład padło kiedy nie ma mnie w domu, a moja żona potrzebowałaby wysłać pilnego maila...). Najprościej zrobić to przez crona - wpisać do np cron-hourly skrypcik który sprawdzi czy jest połączenie, a jeśli nie ma to rozłączy i połączy z powrotem (to jest o tyle potrzebne, że czasem pada ppp0, a adsl-start mówi że jest już połączenie, więc trzeba najpierw rozłączyć, a potem połączyć). Można to samo robić co pięć, dziesięć, piętnaście minut - jak kto chce, wpisać tylko co trzeba do crontab'a - polecam man cron :-)
Na podstawie znalezionego gdzieś w internecie skryptu (autor nieznany) zmajstrowałem swój własny, który sprawdza połączenie, w przypadku jego braku wywołuje adsl-stop i adsl-start, a wszystko loguje. Nie jest to profesjonalna robota, ale robi to co powinien.
- czy komputer z neostradą może być serwerem (np www albo ftp)
To pytanie bardzo często się pojawia, więc oto odpowiedź: owszem, może, problemem jest natomiast adres ip, który co jakiś czas się zmienia. Rozwiązaniem tego jest system "dynamic DNS" - są to nameservery, które komunikują się stale ze swoimi "klientami" i w przypadku zmiany adresu ip natychmiast go aktualizują.
Wobec sporego zainteresowania tematem popełniłem tekst na ten temat:
- automatyczne informowanie o zmianie numeru IP
Ponieważ o to ludzie pytają, napisałem taki prosty skrypcik w Pythonie - sprawdza czy numer IP się nie zmienił, a jeśli się zmienił to wysyła informację mailem. Loguje swoje poczynania, ma parę opcji konfiguracyjnych. Jest przeznaczony do okresowego uruchamiania z crona. Oto on.
Od jakiegoś czasu tepsa dostarcza modemy Sagem, podłączane do komputera przez port USB, a nie przez kartę sieciową. Na temat instalacji tych modemów niestety nie wiem nic, ponieważ takiego modemu nie mam, i nie bardzo mam skąd wziąć (nie poproszę przecież tepsy żeby mi dała nowy modem, bo chcę uaktualnić swoją stronę internetową...).
Dobre dusze przysłały mi dwa linki do stron na których jest coś na ten temat:
http://www.loria.fr/~stuber/adsl/debian-sagem-fast-800.html
http://www.linuxsos.desk.pl/neo.html
http://www.pld-linux.org/FAQ/UstawiamyNEOUSB
Natomiast witek opracował krótką i przystępną instrukcję konfiguracji Sagema na potrzeby Neostrady, pod RedHata 9.0, ale w innych dystrybucjach zapewne będzie to wyglądało dość podobnie:
http://www.witalis.neostrada.pl/instalacjaneo.php
(który to link podesłał Piotrek Śliwa, za co uprzejme podzięxy)
Tutaj sytuacja jest podobna, tzn ja nie wiem nic, natomiast kilka osób podesłało linki do opracowanych przez siebie poradników:
Instalacja modemu Thomson SpeedTouch 330 w Slackware 9.1
http://pld-linux.org/FAQ/UstawiamyNEOUSBSpeedtouch
Pozdrawiam wszystkich, w szczególności techników TPSA :-)
Zapraszam do dzielenia się doświadczeniami, jeśli ktoś napotka inne problemy w instalacji Neo+, równie banalne, i w pocie czoła je pokona, to dla następnych biedaków można je tutaj dorzucić. Jak widać powyżej, spora część tej strony to wkład różnych osób które z niej korzystały i wniosły też coś swojego, ku pożytkowi następnych neostradowców - w ich imieniu serdeczne podziękowania..
Natomiast jeśli masz chwilowo dosyć komputerów i chciałbyś zająć się czymś innym - zapraszam do odwiedzenia mojego psa, oraz całego stada innych jemu podobnych: IRA zaprasza na Strony Miłośników Seterów.
Bartek Górny
bartek@erp5.pl
Inne moje strony:
Najpopularniejsze imiona nadawane w Warszawie (statystyka prowadzona wg GW).
ERP5 - Open Source ERP, CRM, MRP