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.