Dial-In


Mikor kell Dial-In?

Az egyszerű válasz: akkor ha egy másik számítógép telefonvonal és modem segítségével a mi számítógépünkhöz szeretne csatlakozni. Tulajdonképpen mi is ezt tesszük amikor felhívjuk számítógépünkkel az Internet Szolgáltatónkat. Persze, valószínű ott már egy jóval komojabb rendszer fogadja hívásunkat, de most a játék kedvéért legyünk mi az ISP! Szinte ugyanazt a funkciót tudjuk otthon is megvalósítani, igy kívülről felhívhatjuk gépünket és programokat tölthetünk le vagy levelezhetünk, de a szolgáltatások tárháza szinte korlátlan.

| Eleje |

Korlátok

Igen igen! Bizony a jelenleg használatos analóg telefonvonalakon a maximális elérhető sebesség a 33,6 kilobit/sec. Természetesen speciális modemmel és a telefonközponttól speciális digitális vonal használatával lehetséges az 56 kilobit/sec downstream és a 33,6 kilobit/sec upstream elérése, de ez már tobb százezer forintos beruházást igényelne. Ezt nem is részletezem.

| Eleje |

A megvalósítás

Mindenek előtt szükségünk van kernel oldali támogatásra.
 
 Network device support  --->
<M> PPP (point-to-point) support


Ezután újrafordítjuk a kernelt, újraindítjuk a gépet és ha mindent jól csináltunk akkor a /lib/modules/2.2.17/net/ könyvtárban lesz

slhc.o
ppp.o
ppp_deflate.o
bsd_comp.o
Ezeket be is tölthetjük:
 
proba# modprobe slhc
proba# modprobe ppp
proba# modprobe ppp_deflate
proba# modprobe bsd_comp


Ezekután egy lsmod paranccsal megnézhetjük milyen modul is van betöltve:
 

proba# lsmod
Module                  Size  Used by
bsd_comp                4052   0
ppp_deflate            40308   0
ppp                    20844   0  [bsd_comp ppp_deflate]
slhc                    4440   0  [ppp]
.
.
.
proba#


| Eleje |

Ezekután feltelepítjük a szükséges programokat:

proba# apt-get install ppp mgetty
A ppp csomag tartalmazza a pppd programot az mgetty pedig egy  módosított getty, igen egyszerű konfigurálni. Ami nekünk kell az az, hogy ha a modemünk a COM1-en van akkor a ttyS0-án figyeljen ez az mgetty program, és ha adatkapcsolat van (lehetne fax, vagy voice is) bejelentkeztesse a felhasználót.
Ehhez a
/etc/inittab
file végét módosítsuk az alábbiak alapján:
# Example how to put a getty on a modem line.
#
#T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3
T0:23:respawn:/sbin/mgetty -x0 -s 115200 ttyS0 -n 1
Kell magyaráznom? Nem nagyon, a T0 azt jelenti, hogy ez a 0-as terminal a 23 azt nem tudom mi a respawn azt jelenti, hogy ha befejeződőtt a kapcsolat akkor újraindítja a programot, hogy a következő is tudjon csatlakozni, természetesen az mgetty programot fogja indítani az -x0 azt nem tudom mi, de a -s 115200 az a port sebessége és a ttyS0 természetesen az első kommunikációs port azaz COM1. A -n 1 azt okozza, hogy az első csengetés (RING szignál) után azonnal vegye fel a telefont.
Ezekután
proba# killall -HUP init
már az új paraméterek alapján elindítja az mgetty-t ami a megadott sorosporton figyelni fog.
proba# ps xa | grep mgetty
487 ?        S      0:00 /sbin/mgetty -x0 -s 115200 ttyS0 -n 1
| Eleje |

Szuper! Most mehetünk "szétkonfigurálni" a gépünk:

Ahhoz, hogy ha valaki nem akar kézzel bejelentkezni, mert olyan a tárcsázója, ( itt gondolok például egy Windows-t használó egyénre ) akkor az a tárcsázó feltehetőleg egy /AutoPPP/ felhasználó azonosítóval fog bejelentkezni, és PAP authentikációt használ. Ehhez a

/etc/mgetty/login.config
filban szerepelnie kell a következőknek:
# Automatic PPP startup on receipt of LCP configure request (AutoPPP).
#  mgetty has to be compiled with "-DAUTO_PPP" for this to work.
#  Warning: Case is significant, AUTOPPP or autoppp won't work!
#  Consult the "pppd" man page to find pppd options that work for you.
#
#  NOTE: for *some* users, the "-detach" option has been necessary, for
#        others, not at all. If your pppd doesn't die after hangup, try it.
#
#  NOTE2: "debug" creates lots of debugging info.  LOOK AT IT if things
#         do not work out of the box, most likely it's a ppp problem!
#
#  NOTE3: "man pppd" is your friend!
#
#  NOTE4: max. 9 arguments allowed.
#
/AutoPPP/ -     a_ppp   /usr/sbin/pppd auth -chap +pap login debug
Ekkor az mgetty beengedi simán a felhasználót nem authentikálja hanem meghívja a pppd programot. Majd a pppd program elintézi az authentikációt!
Természetesen ehhez be kell állítani a ppp-t is. Imigyen:
/etc/ppp/pap-secrets
file-ban ki kell javítani az INBOUND connections részt:
# INBOUND connections

# Every regular user can use PPP and has to use passwords from /etc/passwd
#*      *    ""      *
*       proba   ""      *

A "proba" az a hostnevünk de ha * -ot adunk meg akkor úgy is jó.
Ezáltal a * user PAP on keresztul a /etc/passwd alapján lesz beléptetve a proba nevű gépre. Magyarul: aki be akar jelentkezni, annak valós usernek kell lennie a gépünkön.
Ez is megvan, de még nem teljesen kész a dolog, ugyanis amikor a pppd -t meghívja az mgetty akkor a pppd honnan tudja majd milyen ip szamot adjon? Ráadásul lehet ppp kapcsolatunk még más portokon is. Akár még kifelé is. Ezt úgy oldották meg, hogy van egy
/etc/ppp/options.ttyS0
az első soros portnak,
/etc/ppp/options.ttyS1
a második soros portnak, és igy tovább.... Természetesen nekünk ilyen még nincs ezért a /etc/ppp/options.ttyXX -ből gyárthatunk egy options.ttyS0-át. Ime:
# If you need to set up multiple serial lines differently, then copy this
# file to options.<ttyname> for each <ttyname> with a modem on it.
#
# Example:
# options.ttyS1         for the second serial port (a.k.a. COM2)
#
# Edit the following line so that the first IP address mentioned is the is
# the IP address or name of your host, while the second is the IP address
# or name of the remote machine.

#localhost:remotepeername
# 192.168.1.2:192.168.1.3
dial1:dial-d01

# You may also put additional settings in each file, just like in the
# general options file. For example:
#
# noauth
# debug
# defaultroute
# mtu 296
#
# Read pppd(8) for more information.

A dial1 és a dial-d01 az a névszerverünkben, vagy a hosts file-unkban természetesen szerepeljen! Az első nevet és az alapján az IP-t a gépünkön létrejövö ppp0 interface kapja, a dial-d01-et pedig a behívó gép kapja meg.

| Eleje |

Ezekután kiadunk egy

proba# tail -f /var/log/syslog
parancsot és figyeljük meg mi történik egy bejelentkezés és kapcsolatbontás során:
Sep  6 18:23:25 proba pppd[487]: pppd 2.3.11 started by a_ppp, uid 0
Sep  6 18:23:25 proba pppd[487]: Using interface ppp0
Sep  6 18:23:25 proba pppd[487]: Connect: ppp0 <--> /dev/ttyS0
Sep  6 18:23:25 proba pppd[487]: sent [LCP ConfReq id=0x1 <asyncmap 0x0> <auth pap> <magic 0xeb17eb09> <pcomp> <accomp>]
Sep  6 18:23:28 proba pppd[487]: rcvd [LCP ConfReq id=0x3 <asyncmap 0xa0000> <magic 0x8bcf3d> <pcomp> <accomp> <callback CBCP>]
Sep  6 18:23:28 proba pppd[487]: sent [LCP ConfRej id=0x3 <callback CBCP>]
Sep  6 18:23:28 proba pppd[487]: sent [LCP ConfReq id=0x1 <asyncmap 0x0> <auth pap> <magic 0xeb17eb09> <pcomp> <accomp>]
Sep  6 18:23:28 proba pppd[487]: rcvd [LCP ConfReq id=0x4 <asyncmap 0xa0000> <magic 0x8bcf3d> <pcomp> <accomp>]
Sep  6 18:23:28 proba pppd[487]: sent [LCP ConfAck id=0x4 <asyncmap 0xa0000> <magic 0x8bcf3d> <pcomp> <accomp>]
Sep  6 18:23:28 proba pppd[487]: rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <auth pap> <magic 0xeb17eb09> <pcomp> <accomp>]
Sep  6 18:23:28 proba pppd[487]: sent [LCP EchoReq id=0x0 magic=0xeb17eb09]
Sep  6 18:23:29 proba pppd[487]: rcvd [PAP AuthReq id=0x1 user="informer" password=<hidden>]
Sep  6 18:23:29 proba pppd[487]: user informer logged in
Sep  6 18:23:29 proba pppd[487]: found interface eth0 for proxy arp
Sep  6 18:23:29 proba pppd[487]: local  IP address 192.168.8.17
Sep  6 18:23:29 proba pppd[487]: remote IP address 192.168.8.18
Sep  6 18:23:29 proba pppd[487]: CCP terminated by peer
Sep  6 18:23:29 proba pppd[487]: Compression disabled by peer.
Sep  6 18:23:45 proba pppd[487]: LCP terminated by peer
Sep  6 18:23:46 proba pppd[487]: Hangup (SIGHUP)
Sep  6 18:23:46 proba pppd[487]: Modem hangup
Sep  6 18:23:46 proba pppd[487]: Connection terminated.
Sep  6 18:23:46 proba pppd[487]: Connect time 0.4 minutes.
Sep  6 18:23:46 proba pppd[487]: Sent 377 bytes, received 493 bytes.
Sep  6 18:23:46 proba pppd[487]: Exit.
Körülbelül ennyi a történet. Nekem működik ;-) remélem ezekután már Te is megtudod csinálni.

| Eleje |



Budapest, 2000.09.05. Endrész Attila