Informacje ogólne

Ten dokument opisuje, jak połączyć między sobą dwa komputery - jeden pracujący pod Linuxem, drugi z Windowsem/Linuxem - za pomocą kabla typu nullmodem, bez użycia kart sieciowych. W pierwszej części jest opisana budowa kabla, w drugiej przygotowanie Linuxa do połączenia (jako serwera), w trzeciej Windows po drugiej stronie kabelka, w czwartej analogicznie Linuxa.

Po co to komu?

U mnie w domu jest taka sytuacja: mam dwa komputery. Od czasu do czasu (bardzo rzadko) muszę przegrać z jednego na drugi jakiś plik. Tak samo rzadko mam potrzebę umożliwienia pracy na moim serwerze Linuxowym pracę więcej niż jednej osobie jednocześnie. Te sytuacje są na tyle sporadyczne, że stawianie sieci (pełnej) jest nieopłacalne - co mi po transferze 100Mb/s, jeśli ja tego nie wykorzystam? Kabelek null-modem jest w tym wypadku rozwiązaniem idealnym - przenośnym (Linux/Dos/Windows), tanim. Wady: niewielka szybkość połączenia, co mi osobiście jednak nie przeszkadza...

Przygotowanie kabla

W sklepach bardzo często można znaleźć gotowe do kupienia kable szeregowe. Niestety na ogół są to kable niepełne, nie zawierające wszystkich potrzebnych połączeń. Dlatego polecam zrobienie kabla samemu. Potrzebne są dwa wtyki 25-pinowe, żeńskie (od portu szeregowego). Możliwe jest też użycie kabla z wtykami 9-pinowymi, ale jest rzadziej stosowane (na ogół do gniazda 9-pin podłączona jest mysz).

                              2 ------------------ 3
                              3 ------------------ 2
                              4 ------------------ 5
                              5 ------------------ 4
                           /- 6 ------------------ 20
                           |  7 ------------------ 7
                           \- 8                    8 -\
                             20 ------------------ 6 -/

Liczby oznaczają numery nóżek we wtykach. W obu wtyczkach nóżki numer 6 i 8 muszą być ze sobą połączone (jak na rysunku). Opis wszystkich typów kabli szeregowych (i innych) możesz znaleźć na tej stronie.

Po zrobieniu kabla wypada sprawdzić, czy działa. Należy podłączyć kabel do obu komputerów i uruchomić na obu programy komunikacyjne (na Linuxie to może być minicom, pod WinXX trzeba skorzystać z trybu MS-DOS i uruchomić DOSowy program, np. Term95 lub Term90(instalowany razem z Norton Commanderem 4,5), COMit. Na obu trzeba ustawić: jako port modemu port COM/ttyS do którego podłączony jest kabel, najczęściej COM2/ttyS1 (COM1 odpowiada w Linuxie ttyS0, COM2 - ttyS1 itd.), identyczną szybkość komunikacji (np. 115200), i identyczny protokół (np. ANSI). Po takim ustawieniu oba komputery powinny móc ze sobą "rozmawiać" - to co będzie wpisywane na klawiaturze pierwszego powinno być widoczne na drugim. Jeśli to działa - to znaczy że prawie na pewno kabel jest dobry.

Konfiguracja po stronie Linuxa - serwera

Potrzebny będzie jeden z programów typu "getty" - ja sam używam mgetty, i opiszę tutaj jego konfigurację. Ostatnia wersja (na dzień dzisiejszy) to 1.1.20. Pakiet powinien być w dystrybucji, jeśli go nie ma to proszę skorzystać z mojego frontendu do FastFTP Searcha. Po instalacji w pliku konfiguracyjnym mgetty.config ustawiamy parametry naszego portu:

port ttyS1
direct y
speed 115200
toggle-dtr n

W pliku /etc/gettydefs (lub do pliku /etc/mgettydefs, w zależności od ustawień mgetty przy kompilacji) dopisujemy linijkę:

DT115200# B115200 CS8 CLOCAL # B115200 SANE -ISTRIP CLOCAL #login: #DT115200

jednocześnie zakomentowując inne wpisy "DT115200", jeśli takie są. Dalej: w pliku /etc/inittab dopisujemy pod definicjami konsol (mingetty), linijkę:

S1:2345:respawn:/sbin/mgetty -r ttyS1 -i /etc/issue.terminal DT115200 vt100

Edytujemy plik /etc/issue.terminal w zależności od upodobań (zawartość tego pliku wyświetli się przed loginem). Teraz wystarczy wydać polecenie init q żeby uruchomić mgetty na ttyS1. Jeśli korzystamy z innego portu - trzeba odpowiednio zmienić "S1" na "S?" i "ttyS1" na "ttyS?"
Na drugim komputerze możemy teraz jeszcze raz uruchomić terminal, i na dzień dobry nacisnąć ENTER. Powinna się pokazać zawartość /etc/issue.terminal, oraz napis"login:". Logowanie powinno przejść bezproblemowo. Jeśli coś nie pójdzie, sprawdź czy wszystko zrobiłeś dobrze, zajrzyj też do części "Najczęściej zadawane pytania". Jeśli wszystko zawiedzie, napisz do mnie.
Jeśli wszystko przebiegło pomyślnie, utwórz nowego użytkownika - useradd -c "PPP client" -d "/etc/ppp/local" -s "/usr/sbin/pppd lock 10.0.0.1:10.0.0.2" ppp, zmień mu hasło na "ppp" (passwd ppp), utwórz katalog domowy (/etc/pp/local), zmień prawa własności (chown ppp:ppp /etc/ppp/local). Numer IP 10.0.0.1 będzie przypisany serwerowi, a 10.0.0.2 klientowi. Warto jeszcze zablokować możliwość otrzymywania poczty dla użytkownika ppp (za pomocą aliasów pocztowych, tworząc alias o nazwie ppp i wskazujący na coś innego). Teraz spróbuj się zalogować jeszcze raz z terminala na tego właśnie użytkownika. Jeśli po wlogowaniu zobaczysz krzaczki - gratulacje, Linux jest już gotowy do obsłużenia połączenia.

Można jeszcze do opcji pppd dodać takie wpisy:

ms-dns xxx.xxx.xxx.xxx
W ten sposób pppd automatycznie podaje komputerowi po drugiej stronie adres DNS, np. 10.0.0.1, z którego tamten może skorzystać. Windows użyje takiego adresu automatycznie, a w Linuxie trzeba dodać opcję "usepeerdns"

ms-wins xxx.xxx.xxx.xxx

Jak wyżej, ale przekazuje adres serwera WINS. Przydatne jedynie dla Windows i to tylko wtedy, jeżeli zamierzamy korzystać z Samby po tym połączeniu i chcemy widzieć Linuxa jako jeden z komputerów w "Otoczeniu sieciowym" (bez tego będzie można korzystać z zasobów na Linuxie po ręcznym wpisaniu nazwy serwera, ale nie będzie on widoczny przy przeglądaniu "całej sieci")

Konfiguracja po stronie Windows

Należy zacząć od sprawdzenia wersji Dial-Upa w Windows. Jeśli jest niezainstalowany, to trzeba to zrobić. Ważne, żeby posiadana wersja miała możliwość obsługi skryptów (wydaje mi się, że jest to już od wersji W95 SR2, dla wcześniejszych trzeba zainstalować upgrade, do ściągnięcia ze strony Microsoftu). Do tego trzeba zainstalować też driver do kabla null-modem (Panel Sterowania / Nowy sprzęt / Modem / Z dysku / mdmcbx4.inf), oraz skopiować skrypt łączący do katalogu Windows. Po zainstalowaniu można zacząć konfigurację.
Wybieramy Mój Komputer/Dial-Up neworking/Utwórz nowe połączenie. Nazwa: Linux (lub coś podobnego). Jako modem - Direct Connection. Wybieramy kongifuruj, port: COM2, szybkość: 115200, OK. Dalej w sekcji "Połączenie" odznaczamy "czekaj na sygnał". Naciskamy "Dalej". Numer telefonu - dowolny (np. 0). "Dalej" i połączenie zostaje utworzone. Wybieramy ikonkę nowo utworzonego połączenia, "Właściwości", odznaczamy "używaj numeru kierunkowego". Dalej na następnej stronie odznaczamy "log on to network". Protokoły: powinien być zaznaczony tylko TCP/IP. Potem na stronie "Obsługa skryptów" wybieramy skrypt ppplocal.scp nagrany w katalogu Windows. To już prawie koniec. Dla potrzeb testowych można jeszcze zaznaczyć "Praca krokowa". Próba połączenia. Kolejno naciskając ENTER wypada obserwować co się dzieje w oknie terminala. Jeśli wszystko jest ok, to po zakończeniu pracy terminala powinniśmy uzyskać połączenie.

Działa? Świetnie. Wypada jeszcze wpisać nazwy hostów z którymi chcemy się łączyć do \windows\hosts - skladnia jak w wypadku Linuxowego hosts, zresztą jest w Windowsie przykładowy plik hosts (\windows\hosts.sam). Jeśli korzystamy z serwera DNS, to te wpisy są zbędne, natomiast trzeba albo wpisać adres serwera DNS w opcjach TCP/IP, albo skorzystać z opcji "ms-dns" po stronie serwera. Tak samo z serwerem WINS - jeśli jest potrzebny, to albo się go wpisuje ręcznie, albo ustawia przez "ms-wins"
Można dodać skrót do połączenia do menu Autostart, można też zapisać na stałe username i hasło (ppp i ppp oczywiście) - potrzebne jest wtedy zainstalowane "Obsługa sieci Microsoft Network" - i w Dial-Up Networking/Połączenie odznaczyć opcję "pytaj o dane".
Warto zainstalować pod Linuxem pakiet SAMBA - wtedy będzie możliwy łatwy dostęp do zasobów zarówno komputera-klienta, jak i serwera. Jeśli komputer-serwer łączy się z siecią za pomocą modemu, to chyba warto postawić maskaradę, tak żeby klient też miał dostęp. Bez maskarady przydatne są wszelkie proxy (np. ja w domu używam delegate do telneta, http i ftp).
Miłego używania :)

Koniguracja po stronie Linuxa - klienta

Jeśli ktoś wie, jak zestawić połączenie modemowe pod Linuxem, i jak napisać skrypt który będzie się łączył z internetem, to właściwie już ma problem z głowy - wystarczy napisać skrypt chata, który wyśle znaczek "enter", poczeka na "login", pośle login, potem hasło, i uruchomi pppd z ustawioną prędkością "115200" i z parametrami "local" oraz "noauth" (chyba że dodamy odpowiedni parametr po stronie serwera, który spowoduje że pppd będzie się "przedstawiać") A jeśli nie wie - polecam PPP-HOWTO (po polsku)

Najczęściej zadawane pytania

1. Przy próbie łączenia z Linuxem, po pytaniu o login połączenie umiera

Zdarza się tak, że przy próbie logowania komputer pyta się o login, a po jego wprowadzeniu nic się dalej nie dzieje. Na ogół świadczy to o źle zrobionym kablu (najczęściej nóżki 6 i 8 nie są ze sobą połączone).

2. Próbuję się zalogować jako root, ale nie mogę

Standardowe ustawienia większości konfiguracji nie pozwalają na logowanie rootowi z innych konsoli, niż standardowe /dev/tty[1-9]. Można to zmienić dopisując odpowiednie konsole w /etc/securetty.

Nie ma tutaj odpowiedzi?

Wyślij do mnie list z opisem problemu, spróbuję odpowiedzieć.
s.zagrodzki@mimuw.edu.pl


Powrót do strony głównej