Potrzebny ci bêdzie pppd (Point to Point Protocol Daemon) i odpowiednia wiedza o jego działaniu. Przeczytaj odpowiednie RFC i Linux PPP HOWTO, jeżeli jest to potrzebne. Ponieważ nie bêdziesz używał procedury logowania, nie musisz używaæ (m)getty ani (fałszywego) użytkownika skojarzonego z pppd kontrolującym połączenie. Nie bêdziesz musiał wybieraæ numeru, nie bêdą wiêc potrzebne żadne skrypty chat. Obwód modemowy i konfiguracja, którą właśnie wykonałeś jest właściwie kablem null-modem. Znaczy to, że bêdziesz musiał skonfigurowaæ pppd w sposób, w jaki konfigurowałbyś go do kabla null-modem.
Dla dobrego połączenia, twoje ustawienia powinny spełniaæ nastêpujące wymogi:
Zakładam, że modem jest podłączony do COM2, lokalny adres IP to ,,Loc_IP'',
a zdalny to ,,Rem_Ip''. Chcemy użyæ 576 jako nasze MTU.
/etc/ppp/options.ttyS1 powinno wyglądaæ tak:
crtscts
mru 576
mtu 576
passive
Loc_Ip:Rem_Ip
-chap
modem
-pap
persist
A wiêc, jeżeli system lokalny to 192.168.1.1, a system zdalny to 10.1.1.1,
/etc/ppp/options.ttyS1 powinien wyglądaæ nastêpująco:
crtscts
mru 576
mtu 576
passive
192.168.1.1:10.1.1.1
-chap
modem
-pap
persist
options.ttyS1 na zdalnym systemie powinien wyglądaæ tak:
crtscts
mru 576
mtu 576
passive 10.1.1.1:192.168.1.1
-chap
modem
-pap
persist
Opcja passive limituje numer (ponownych) połączeñ. Opcja persist bêdzie próbowała trzymaæ pppd uruchomionym w razie rozłączenia, lub jeżeli nie bêdzie mógł odrazu siê połączyæ. Jeżeli telnetujesz siê dużo podczas transferu plików (FTP lub przeglądanie WWW), możesz użyæ mniejszego MTU i MRU, takiego jak 296. System zdalny bêdzie wtedy czujniejszy. Jeżeli nie bêdziesz telnetował siê podczas FTP, może ustawiæ MTU i MRU na 1500.
Skrypt /usr/local/sbin/PRem_Host.sh poniżej startuje pppd. Musisz
uruchomiæ go po skonfigurowaniu portów szeregowych (zamieñ Rem_Host
na nazwê zdalnego systemu).
#!/bin/bash
# Opcjonalnie sleep
#/usr/bin/sleep 30
( /usr/sbin/pppd /dev/ttyS1 115200 ) &
Może on byæ uruchamiany ze skryptu konfigurującego kartê sieciową
(/etc/init.d/network w systemie Debian), w tym przypadku musisz
odkomentowaæ sleep, żeby byæ pewnym, że porty com zostały skonfigurowane jako
pierwsze. Jeżeli używasz setserial, możesz uruchomiæ go z tego skryptu.
Innym sposobem jest uruchomienie go z rc.local.
W systemach Debian istnieje katalog /etc/rc.boot/. Według
Rolf'a Raar'a, skrypty w tym
katalogu są uruchamiane w kolejności alfabetycznej. Skrypt setserial nazywa siê
0setserial. Jeżeli wywołasz swój skrypt z pliku o nazwie 2linie-dzierżawione,
bêdzie wykonany po 0setserial.
Chociaż opcja persist czyni to powierzchownym, pppd może byæ też restartowany przez ip-down:
#! /bin/bash
case $s in
/dev/ttyS1)
/usr/bin/sleep 30
/usr/local/sbin/PRem_Host.sh &
;;
esac
Jeżeli pppd zginie, powinien byæ restartowany opcją w skrypcie ip-up (opcjonalnie). Jeżeli to siê nie dzieje, skrypt /usr/local/sbin/test-Rem_Host-ppp robi to za ciebie. Ten skrypt sprawdza, czy zdalny interfejs istnieje - jeżeli nie, spróbuje uruchomiæ pppd:
#!/bin/bash
if ! ( /sbin/ifconfig | grep Rem_Ip > /dev/null )
then
# PPP nie żyje
logger "Rem_Host PPP nie żyje! ; uruchomiony ponownie"
/usr/local/sbin/PRem_Host.sh &
fi
Nastêpująca linia w crontab uruchamia powyższy skrypt co 5 minut. Możesz uruchamiaæ skrypt czêsciej, ale ja nie uruchamiałbym go czêściej niż co dwie minuty.
*/5 * * * * /usr/local/sbin/test-Rem_Host-ppp
Możesz edytowaæ crontab poleceniem ,,crontab -e''. Zrestartuje on crona po edycji. Używa edytora podanego w zmiennej środowiskowej ,,EDITOR'', która może byæ ustawiona przez /etc/profile lub /.profile (export EDITOR=Twoj_Ulubiony_Edytor).
Niektórzy ludzie uruchamiają pppd z /etc/inittab, ale ja nigdy tego nie testowałem.
Domyślny routing może zostaæ ustawiony opcją defaultroute, albo przez skrypt /etc/ppp/ip-up:
#! /bin/bash
case $2 in
/dev/ttyS1)
/sbin/route add -net 0.0.0.0 gw Rem_Ip netmask 0.0.0.0
;;
esac
Ip-up może byæ też używany do synchronizacji zegara używając netdate.
Oczywiście routing ustawiony w ip-up nie musi byæ domyślnym routingiem. Twoj skrypt ip-up ustawia routing do zdalnej sieci, kiedy ip-up w zdalnym systemie ustawia trasê do twojej sieci. Jeżeli jest nią 192.168.1.0, a interfejsem ppp jest 192.168.1.1, skrypt ip-up na zdalnej maszynie powinien wyglądaæ podobnie do tego:
#!/bin/bash
case $2 in
/dev/ttyS1)
/sbin/route add -net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0
;;
esac
Bity ,,case $2'' i ,,/dev/ttyS1'' są tam na wypadek gdybyś używał wiêcej niż jednego połączenia ppp. Ip-up bêdzie uruchamiany za każdym razem kiedy pojawi siê połączenie, ale tylko czêśæ pomiêdzy ,,/dev/ttySx'' i ,,;;'' zostanie wykonana, ustawiając poprawny routing dla poprawnego ttyS. Możesz dowiedzieæ siê wiêcej o routingu z sekcji o routingu NET-3-HOWTO.
Przetestuj to wszystko tak jak modemy. Jeżeli działa, wsiądź na rower i przewieź modem na drugą stronê połączenia.