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.
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...
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.
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:
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 :)
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.
Wyślij do mnie list z opisem problemu, spróbuję odpowiedzieć.
s.zagrodzki@mimuw.edu.pl