% Linux Installation and Getting Started    -*- TeX -*-
% tcpip.tex
% Copyright (c) 1992, 1993 by Matt Welsh <mdw@metalab.unc.edu>
%
% This file is freely redistributable, but you must preserve this copyright 
% notice on all copies, and it must be distributed only as part of "Linux 
% Installation and Getting Started". This file's use is covered by the 
% copyright for the entire document, in the file "copyright.tex".
%
% Copyright (c) 1998 by Specialized Systems Consultants Inc. 
% <ligs@ssc.com>

\section{Omrežje na klic in PPP}\label{sec-ppp}
%\markboth{Napredne lastnosti}{Omrežje na klic in PPP}

Linux popolnoma podpira omrežne protokole tipa PPP (angl.\ Point-to-Point
Protocol, protokol od točke do točke).  PPP je mehanizem za usposobitev
in tek IP (internetnega protokola) in drugih omrežnih protokolov
po serijski povezavi (z uporabo kabla >>null-modem<<), po povezavi,
vzpostavljeni s programom \texttt{telnet}, ali po povezavi, narejeni
z uporabo modemov in telefonskih linij (in seveda z uporabo digitalnih
linij, kot je ISDN).  Ta razdelek pokriva le nastavitev PPP kot
odjemnika, ki se povezuje z analognim modemom na oddaljeni stroj,
ki ponuja klicne storitve PPP.

Za popolne informacije o usposobitvi PPP pod Linuxom vas opogumljamo,
da preberete spis \emph{Linux PPP HOWTO}, izvirnik in slovenski prevod
sta dostopna prek anonimnega FTP-ja s strežnika
\texttt{metalab.unc.edu}.  PPP HOWTO je popoln vodnik za nastavitev
PPP pod Linuxom, vključno z modemom, ISDN-jem in kabli brez modema.
Večina informacij v tem razdelku je bila napaberkovana iz omenjenega
spisa.  Dostopna je tudi knjiga \emph{Linux Network Administrator's
Guide} iz Dokumentacijskega projekta za Linux.  Glejte
razdelek~\ref{app-sources-num} za več informacij o tej literaturi.

\subsection{Kaj potrebujete za začetek}

Privzemamo, da je bilo vaše jedro prikrojeno in prevedeno z omogočeno
podporo za TCP/IP.  Glejte razdelek~\ref{sec-sysadm-upgrade} za informacije
o prevajanju vašega jedra.  Za omogočanje vmreževanja morate odgovoriti
pritrdilno na ustrezna vprašanja med korakom \texttt{make config} in
ponovno zgraditi jedro.  Domnevamo tudi, da je bil na vašem sistemu
preveden in nameščen paket \texttt{ppp}.  Domnevamo, da uporabljate
jedro Linuxa 1.2.\textsl{x} s programjem PPP 2.1.2 ali pa Linux
1.3.\textsl{X}/2.0.\textsl{x} in PPP 2.2.0.  V času tega pisanja je
najnovejša dostopna uradna različica PPP-ja za Linux ppp-2.2f.
Prosim, preberite spis \emph{kerneld mini-HOWTO}, če nameravate uporabljati
module za nalaganje ppp v vaše jedro.

\blackdiamond
\emph{Toplo priporočamo, da uporabite različico jedra Linuxa in ustrezno
različico PPP, za kateri je znano, da sta skupaj stabilni.}

Prebrati bi tudi morali
\begin{itemize}

\item dokumentacijo, ki pride poleg paketa PPP;

\item strani priročnika o \texttt{pppd} in \texttt{chat} (uporabite
  \emph{man chat} in \emph{man pppd} za raziskovanje le-teh);

\item knjigo Linux Network Administration Guide (NAG);

\item spis Net-2/3 HOWTO;

\item dokumentacijo jedra operacijskega sistema Linux, nameščeno
  v imeniku \texttt{/usr/src/linux/Documentation}, ko namestite
  izvorno kodo Linuxa;

\item spletni sestavek o nastavitvah modemov The modem setup information
  page -- glejte sestavek Modem Setup Information
  (\url{http://www.in.net/info/modems/index.html})

\item izvrstne knjige o Unixu/Linuxu, ki jih izdaja založba O'Reilly and
  Associates.  Glejte njihov katalog na zvezi na naslovu \url{http://www.ora.com/}.
  Če ste novinec v Unixu/Linuxu, tecite (ne hodite) do vaše najbližje
  knjigarne in takoj investirajte v nekaj teh knjig!

\item Spis The PPP-FAQ, pogosto zastavljena vprašanja z odgovori o PPP, ki
  ga vzdržuje Al Longyear.  Ta spis je dostopen na naslovu
  \url{ftp://metalab.unc.edu/pub/Linux/docs/faqs}; glejte dodatek~\ref{app-ftp}.
  Vsebuje mnogo uporabnih informacij v obliki >>vprašanje/odgovor<<,
  ki je zelo uporabna, ko želite ugotoviti, zakaj PPP ne deluje (pravilno).
\end{itemize}

\subsection{Pregled potrebnih korakov}

Obstaja nekaj korakov za usposobitev vašega sistema za uporabo PPP.
Priporočamo vam, da pozorno pregledate ta seznam korakov, preden poskusite
zares usposobiti povezavo PPP.  Vsak od teh korakov bo podrobno razložen
kasneje.

\begin{enumerate}
\item Prepričajte se, da je podpora za TCP/IP prevedena v vaše jedro.
\item Prepričajte se, da je podpora za PPP prevedena v vaše jedro statično
  ali pa kot naložljivi modul.
\item Prepričajte se, da je programje za PPP prevedeno in nameščeno
  na vaših sistemih.
\item Prepričajte se, da imate nastavljen modem, ki je nameščen/priključen
  na vaš računalnik in da veste, na katera zaporedna vrata je priključen
  modem.
\item Prepričajte se, da dobite od vašega ponudnika klicnega strežnika
  PPP (navadno ISP, angl.\ Internet Service Provider, ponudnik interneta)
  naslednje informacije:
\begin{itemize}
\item Telefonsko številko, ki jo boste klicali za priključitev na oddaljenega
  ponudnika klicnega PPP.
\item Ali uporabljate dinamično ali statično dodeljevanje številk IP.
  V drugem primeru boste morali poznati to statično številko IP.
\item Naslov IP imenskega strežnika (DNS, angl.\ Domain Name Service), ki
  ga boste uporabljali za razreševanje gostiteljskih imen, ko boste povezani.
\end{itemize}
\end{enumerate}

\subparagraph*{Prepričajte se, da ima vaše jedro podporo za TCP/IP.}
Operacije za PPP v Linuxu so dveh vrst: 1) pritajeni strežnik za PPP
(angl.\ PPP daemon) in 2) podpora za PPP v jedru.  Kaže, da večina
distribucij ponuja podporo za PPP v svojih privzetih namestitvenih
jedrih, nekatere pa je vendarle ne.  Morali bi se prepričati, da je
v vaše jedro prevedena tudi podpora za TCP/IP.  To lahko storite tako,
da izdate naslednji ukaz:
\begin{tscreen}
\# \emph{grep -i "TCP/IP" /var/adm/messages} 
\end{tscreen}
Če dobite vrstico, podobno
\begin{tscreen}
Jun  8 09:52:08 gemini kernel: Swansea University Computer Society TCP/IP for NET3.019
\end{tscreen}
imate podporo za TCP/IP vključeno v jedro.  Zgornji podatek lahko poiščete
tudi na konzoli, ko se Linux še zaganja.  Na mnogih hitrih strojih se
izpis pomika prehitro, da bi ga lahko prebrali.  Uporabite lahko
\key{Shift}-\key{PageUp} za pomik zaslona navzgor in ogled tega sporočila.

\subparagraph*{Prepričajte se, da ima jedro podporo za PPP.}
Če v času zagona vaše jedro poroča kaj podobnega kot
\begin{tscreen}
PPP Dynamic channel allocation code copyright 1995 Caldera, Inc. \\
PPP line discipline registered.
\end{tscreen}
potem ima vaše jedro podporo za PPP.  Izdate lahko tudi ukaz
\begin{tscreen} 
\# \emph{grep -i "PPP" /var/adm/messages} 
\end{tscreen}
Če dobite vrstico, podobno
\begin{tscreen}
Jun  8 09:52:08 gemini kernel: PPP: version 0.2.7 (4 channels)
 NEW\_TTY\_DRIVERS OPTIMIZE\_FLAGS
\end{tscreen}
to pomeni, da je prisotna podpora za PPP.

\subparagraph*{Prepričajte se, da imate nastavljen modem.}
Morali bi se prepričati, da je vaš modem pravilno nastavljen in da veste,
na katera serijska vrata je priključen.
\begin{itemize}
\item \texttt{COM1:} v DOS-u = \texttt{/dev/cua0} (in \texttt{/dev/ttyS0})
   v Linuxu,
\item \texttt{COM2:} v DOS-u = \texttt{/dev/cua1} (in \texttt{/dev/ttyS1})
   v Linuxu,
\item et cetera.
\end{itemize}

Linux iz zgodovinskih razlogov uporablja naprave \texttt{cua}\textsl{x}
za klice
ven in naprave \texttt{ttyS}\textsl{x} za prihajajoče klice.  Koda jedra, ki
je zahtevala to, je bila spremenjena v jedru različice 2.0.\textsl{x} in
zdaj bi morali uporabljati \texttt{ttyS}\textsl{x} za vhodne in izhodne klice.
Imena naprav \texttt{cua}\textsl{x} lahko tudi izginejo v prihodnjih različicah
jedra.

Če uporabljate hiter (zunanji) modem (14.400 bps ali več), morajo biti
vaša serijska vrata sposobna obdelovati pretok, ki ga je takšen modem
zmožen ustvariti, posebej še, če modem komprimira podatke.

To narekuje, da vaša serijska vrata uporabljajo sodobni čip UART
(angl.\ Universal Asynchronous Receiver Transmitter, univerzalni
asinhroni prejemnik-oddajnik), kot je čip 16550A.  Če uporabljate
starejši stroj (ali starejši serijski vmesnik), je precej verjetno, da
imajo vaša serijska vrata le čip UART 8250, ki bo v kombinaciji s
hitrim modemom povzročal precejšnje probleme.

Uporabite ukaz
\begin{tscreen}
\# \emph{setserial -a /dev/ttyS\cparam{x}}
\end{tscreen}
da vam bo Linux sporočil tip UART-a, ki ga ima.  Če nimate tipa
UART-a 16550A, investirajte v nakup nove zaporedne kartice
(dostopne za manj kot US\$50).

Za PPP boste morali pravilno nastaviti vaš modem -- za to
\textbf{preberite priročnik vašega modema}!  Večina modemov
pride s tovarniško privzeto nastavitvijo, ki upošteva izbire,
ki jih potrebuje PPP.  Priporočene nastavitve določajo
(v standardnih ukazih modemov Hayes):
\begin{itemize}
\item strojni nadzor pretoka (angl.\ hardware flow control, RTS/CTS)
  (\verb|&K3| na mnogih modemih);
\item ukaz \verb|E1| -- vključen odmev ukazov
  (angl.\ echo commands ON, \texttt{chat} to potrebuje za svoje delovanje);
\item \verb|Q0| -- poročanje kod rezultatov (angl.\ report result codes,
  \texttt{chat} to potrebuje za svoje delovanje);
\item \verb|S0=0| -- samodejni odziv izključen (angl.\ auto answer OFF,
  razen če želite, da vaš modem odgovori na klice);
\item \verb|&C1| -- zaznavanje nosilnega tona le po priključitvi
  (angl.\ Carrier Detect ON only after connect);
\item \verb|&S0| -- vedno pripravljen na sprejem podatkov
  (angl.\ Data Set Ready, DSR, always ON);
\item \verb|X3| -- ne čakaj signala za prosto linijo; to nastavitev
  potrebujemo v Sloveniji, ker se naš signal razlikuje od ameriškega;
\item (odvisno od vrste modema) -- pripravljen podatkovni terminal
  (angl.\  Data Terminal Ready).
\end{itemize}

Obstaja spletna stran, ki ponuja primere nastavitev za rastoče število
modemov različnih proizvajalcev in modelov, kar vam lahko pri tem
pomaga.  Imenuje se Modem setup information, najdete jo na spletnem
naslovu \url{http://www.in.net/info/modems/index.html}.

Uporabite vaše komunikacijsko programje (denimo \texttt{minicom} ali
\texttt{seyon}) za določitev nastavitev vašega modema in jih oblikujte
tako, kot zahteva PPP.  Veliko modemov poroča o svojih trenutnih
nastavitvah kot odgovor na \verb|AT&V|, vendar bi morali preučiti
priročnik za vaš modem.

Če popolnoma zmešate štrene vaših nastavitev, se lahko pozdravite
(navadno) tako, da izdate ukaz \verb|AT&F| -- obnóvi
tovarniške nastavitve.  (Pri večini modemov, na katere smo naleteli,
tovarniške nastavitve vključujejo vse, kar potrebujete za PPP,
razen ukaza \verb|X3| -- vendar bi morali to preveriti.)

Ko ste končno ugotovili potrebni nastavitveni niz za modem, si
ga zapišite.  Zdaj imate na izbiro: te nastavitve lahko shranite
v obstojni pomnilnik modema, da jih boste lahko priklicali z ustreznim
ukazom \verb|AT|.  Alternativa je, da podate pravilne
nastavitve vašemu modemu kot del klicnega procesa PPP.

Če uporabljate vaš modem le iz Linuxa za klic vašega ponudnika
Interneta ali strežnika vaše organizacije, je najpreprosteje shraniti
vašo nastavitev modema v obstojni RAM.

Če, po drugi strani, vaš modem uporabljajo druge aplikacije in
operacijski sistemi, je najvarneje podati te informacije modemu
vsakič, ko z njim kličete, saj bo tako modem zagotovo v pravilnem
stanju za klic.  (To ima dodatno prednost tudi v tem, da v primeru
izgube vsebine obstojnega RAM-a modema ne izgubite inicializacijskega
niza.)

\subparagraph*{Informacije o ponudniku Interneta.}
Preden lahko vzpostavite povezavo PPP z oddaljenim strežnikom, morate
dobiti naslednje informacije od sistemskega upravnika ali ljudi v
tehnični podpori pri vašem ponudniku storitev interneta (angl.\ Internet
Service Provider, ISP).

\begin{itemize}
\item Telefonsko številko ali številke za klic storitve.  Če ste priključeni
     na naročniško telefonsko centralo (n.~c.), boste potrebovali
     tudi številko n.~c., ki vam daje zunanji pozivni signal -- to je
     pogosto števka nič (0) ali devet (9).

\item Ali strežnik uporablja \emph{dinamične} ali \emph{statične}
     številke IP?  Če strežnik uporablja \emph{statične} številke IP,
     morate morda vedeti, katero številko IP naj uporabljate na vašem
     koncu povezave PPP.  Če vam vaš ISP ponuja podomrežje veljavnih
     številk IP, boste morali poznati številke IP, ki jih lahko
     uporabljate, in omrežno masko (angl.\ network mask, netmask).

     Večina ISP uporablja \emph{dinamične} številke IP.  Kot je
     omenjeno zgoraj, ima to določene posledice za storitve, ki jih
     lahko uporabljate.

     Vendar tudi če uporabljate \emph{statično} številko IP, večina
     strežnikov PPP ne bo (zaradi varnostnih razlogov) nikoli dovolila
     določati številke IP odjemniku, saj je to varnostno tveganje.  To
     informacijo boste morali še vedno poznati!

\item Katere so številke IP imenskih strežnikov (DNS) ponudnika internetnih
     storitev?  Obstajati bi morali vsaj dve, čeprav je potrebna le ena.

     Tukaj se lahko pojavi težava.  Nastavitev PPP v MS Windows 95 dovoljuje,
     da se naslov DNS poda odjemniku pri njegovem priključitvenem
     procesu na ISP.  Zato vam lahko vaš ISP (ali oddelek za pomoč
     v vaši organizaciji) pove, da ne potrebujete naslova IP imenskega
     strežnika (ali več strežnikov).

     Za Linux \emph{potrebujete} naslov vsaj enega DNS.  Izvedba PPP
     za Linux ne dovoljuje dinamične nastavitve številke IP imenskega
     strežnika v času priključitve -- in je precej verjetno ne bo nikoli
     dovoljevala.

\item Ali strežnik potrebuje uporabo protokolov za identifikacijo
     PAP/CHAP?  Če je tako, morate poznati polja "id" in "{}secret",
     ki naj bi ju uporabljali pri priključitvi.  (To sta verjetno vaše
     uporabniško ime in geslo pri vašem ISP.)

\item Ali strežnik samodejno zažene PPP ali mu morate izdati kakršnekoli
     ukaze za zagon PPP na strežniku, ko ste enkrat prijavljeni?
     Če morate izdati ukaz za zagon PPP, kakšen je ta ukaz?

\item Je operacijski sistem strežnika Microsoft Windows NT in če je,
     ali uporablja sistem identifikacije MS PAP/CHAP?  % (?) morda RAS?
     Videti je, da zaradi zagotavljanja varnosti veliko lokalnih omrežij
     podjetij uporablja MS Windows NT na ta način.
\end{itemize}

Vsaka naprava, ki se povezuje na Internet, mora imeti svojo lastno,
edinstveno številko IP.  Centralna oblast skrbi za razdelitev številk
IP med posamezne države.  Za uporabo povezave PPP morate torej imeti
dodeljeno številko IP.  Zaradi povečanega števila strojev na Internetu
(delno zaradi velikega števila uporabnikov PPP), je bila razvita
dinamična shema za PPP, ki predvideva sprotno pridobitev IP za vaš
stroj, takoj ko vzpostavi povezavo PPP.  To pomeni, da boste imeli ob
vsaki priključitvi na oddaljeno klicno storitev PPP drugačen naslov
IP.  To je najpogostejša metoda za večino ponudnikov interneta.  Druga
metoda je uporaba statičnih številk IP.  Številke IP si ne morete kar
izbrati zase.  Dodeliti vam jo mora centralna agencija, zadolžena za
izdajanje številk IP.  To preprečuje, da bi dva računalnika imela isti
naslov IP in povzročala probleme na Internetu.  Ponudnik storitve
oddaljenega klicnega dostopa PPP vam bo povedal, ali naj uporabljate
statične ali dinamične številke IP, in vam tudi priskrbel dejansko
številko IP, če uporabljate statično metodo.

Pomembno je poudariti, da bo zelo zelo težko ponujati stalne internetne
storitve, kot so strežniki svetovnega spleta, strežniki gopher ali
strežniki za klepetanje po internetu (angl.\ Internet Relay Chat, IRC),
če uporabljate dinamično dodeljevanje številk IP.  Še vedno lahko
uporabljate vse takšne strežnike, ki so na drugih strojih, vendar ne
morete ponujati teh storitev na svojem stroju, ne da bi v to vložili
ogromno truda.  To presega namen te knjige.

PAP in CHAP sta dve različni razširjeni identifikacijski metodi.
Linux podpira obe.

\subparagraph*{Preizkus vašega modema in oddaljene storitve.}
Ko ste uredili nastavitve serijskih vrat in modema, je dobra zamisel,
da se prepričate v delovanje teh nastavitev tako, da pokličete vašega
ISP in vidite, ali se lahko povežete.

Uporabite vaš terminalski komunikacijski paket (denimo
\texttt{minicom} ali \texttt{seyon}), nastavite inicializacijo modema,
ki jo potrebuje PPP, in pokličite na strežnik PPP, na katerega bi se
radi priključili s sejo PPP.

(Pozor: na tej stopnji \emph{ne} poskušamo narediti povezave PPP -- le
ugotoviti, da imamo pravilno telefonsko številko, in tudi izvedeti,
kaj natanko nam strežnik pošilja, da se bomo znali prijaviti in
začeti PPP.)

Med tem procesom zajemajte (beležite v datoteko) celoten prijavni
proces ali previdno (zelo previdno) in natančno zapišite, katere
pozive vam pošilja strežnik, da vam dá vedeti, da je čas za vnos
uporabniškega imena in gesla (in vse druge ukaze, potrebne za
vzpostavitev povezave PPP).

Če vaš strežnik uporablja PAP, ne bi smeli videti prijavnega
pozornika, a bi morali namesto tega videti na vašem zaslonu (tekstovno
reprezentacijo) nadzornega protokola povezave (ki je videti kot
smeti).

Nekaj besed v opozorilo:
\begin{itemize}
\item Nekateri strežniki so precej inteligentni: prijavite se lahko
  s tekstovnim vnosom uporabniškega imena in gesla \emph{ali}
  z uporabo PAP.  Če torej vaš ISP uporablja PAP, a takoj še ne
  vidite prikaza smeti, to ne pomeni, da ste storili kaj narobe.
\item Nekateri strežniki zahtevajo od vas, da najprej vnesete
  določeno besedilo in šele potem zaženejo standardni postopek PAP.
\item Nekateri strežniki PPP so pasivni -- se pravi, da preprosto
  čakajo in ne pošiljajo ničesar, dokler jim odjemnik, ki jih
  kliče, ne pošlje veljavnega paketa lcp.  Če strežnik PPP,
  na katerega se povezujete, deluje v pasivnem načinu, ne boste
  nikoli videli smeti!
\item Nekateri strežniki ne zaženejo PPP, dokler ne pritisnete
  \key{Enter} -- torej se to izplača poskusiti, če se pravilno
  prijavite in ne vidite smeti!
\end{itemize}

Splača se vsaj dvakrat poklicati strežnik PPP -- nekateri strežniki
spremenijo svoje pozornike (npr.\ glede na čas!) vsakič, ko se
prijavite na njih.  Dva kritična pozornika, ki jih potrebuje
vaša škatla z Linuxom, da se bo znala predstaviti vsakič,
ko kličete na strežnik PPP, sta:
\begin{itemize}
\item pozornik, ki od vas zahteva vnos uporabniškega imena;
\item pozornik, ki od vas zahteva vnos gesla.
\end{itemize}

Če morate izdati ukaz za pogon PPP na strežniku, boste morali
najti tudi pozornik, ki ga izpiše strežnik, ko se prijavite
nanj, in s katerim vam sporoča, da lahko vnesete ukaz za
pogon PPP.

Če vaš strežnik samodejno požene PPP, ko se prijavite, boste
začeli videvati smeti na vašem zaslonu -- to je strežnik za PPP,
ki pošilja vašemu stroju informacijo za začetek in nastavitev
povezave PPP.

To naj bi izgledalo nekako takole:
\begin{tscreen}
\begin{verbatim}
y}#.!}!}!} }8}!}}U}"}\&} } } } }}\& ...}'}"}(}"} .~~y}
\end{verbatim}
\end{tscreen}

Na nekaterih sistemih mora biti PPP eksplicitno pognan na strežniku.
To je navadno tedaj, ko je strežnik nastavljen tako, da dopušča
prijave PPP in prijave v ukazno lupino z uporabo enakega para
uporabniško ime/geslo.  Če je to tako, po prijavi na strežnik
pač izdajte ustrezni ukaz.  Spet boste videli smeti, ko se
požene povezava PPP na strani strežnika.

Če tega ne vidite takoj ob priključitvi (in prijavi in poganjanju
strežnika PPP, če je to potrebno), pritisnite \key{Enter} in poglejte,
če to zažene strežnik PPP.

Na tej točki lahko odložite vaš modem (navadno tako, da hitro vtipkate
\verb|+++| in potem, ko enkrat vaš modem odgovori z \verb|OK|, izdate
ukaz \verb|ATH0|).

Če ne morete pripraviti vašega modema k delovanju, preberite priročnik
za vaš modem, strani referenčnega priročnika za vaše komunikacijsko
programje in spis \emph{Serial HOWTO}.  Ko ste to uredili, nadaljujte, kot
piše zgoraj.

\subparagraph*{Uporaba internetnih strežnikov z dinamičnimi številkami IP.}
Če uporabljate dinamične številke IP (in veliko ponudnikov storitev
vam bo dalo le dinamično številko IP, razen če boste plačali znatno
več za vašo povezavo), potem se morate zavedati omejitev, ki jih to
narekuje.

Najprej, izhodne storitve bodo delovale čisto v redu.  Se pravi, lahko
pošiljate e-pošto s programom \texttt{sendmail} (če ste ga pravilno
nastavili), prenašate datoteke z oddaljenih mest po protokolu FTP,
potipate uporabnike na drugih strojih s programom \texttt{finger},
brkljate po spletu itd.

Povejmo posebej: na pošto, ki ste jo prenesli na vaš stroj, lahko
odgovarjate tudi, ko niste na zvezi.  Pošta bo preprosto počivala
v vaši poštni vrsti, dokler se ne boste spet povezali z vašim ISP.

Vendar vaš stroj ni priključen na Internet 24 ur na dan niti nima iste
številke IP vsakič, ko se priključi.  Zato je nemogoče, da bi dobili
e-pošto neposredno na vaš stroj (se pravi: brez protokolov, kot sta
POP3 ali IMAP), in zelo težko nastaviti spletni strežnik ali strežnik
za FTP, do katerega bi lahko dostopali vaši prijatelji!  Kar se tiče
Interneta, vaš stroj ne obstaja kot edinstven, vseskozi dostopen
stroj, saj nima unikatne številke IP (zapomnite si -- drugi stroji
bodo uporabljali vašo prejšnjo številko IP, ko bodo poklicali na ISP).

Če postavljate spletni (ali katerikoli drugi) strežnik, je ta
popolnoma neznan kateremukoli uporabniku Interneta, \emph{razen} če
vedo, da je vaš stroj priključen, \emph{in} poznajo njegovo pravilno
(trenutno) številko IP.  Obstaja precej načinov, kako dobiti ti
informaciji, od tega, da jih vi pokličete, jim pošljete e-pismo z
informacijami, do prekanjene uporabe datotek \texttt{.plan} na
lupinskem računu (kar predvideva, da vaš ponudnik dovoljuje dostop do
ukazne lupine in tipanje s \texttt{finger}).

Za večino uporabnikov to ni problem -- kar želi večina ljudi, je
pošiljanje in prejemanje e-pošte (z uporabo računa pri vašem ponudniku
storitev) in vzpostavljanje izhodnih povezav do spletnih strežnikov,
strežnikov za FTP in drugih strežnikov na Internetu.  Če potrebujete
vhodne povezave do vašega strežnika, bi zares morali dobiti statično
številko IP.

\subparagraph*{Datoteke za povezavo PPP.}
Zdaj morate biti prijavljeni kot \texttt{root}, da ustvarite
imenike in uredite datoteke, potrebne za nastavitev PPP.
PPP uporablja precej datotek za priključitev in vzpostavitev
povezave PPP.  Te datoteke se razlikujejo po imenu in mestu
med različicama PPP 2.1.2 in 2.2.

Za PPP 2.1.2 so te datoteke:
\begin{center}
\small
\begin{tabular}{lll}
\texttt{/usr/sbin/pppd}          & \# izvedljiva datoteka za PPP\\
\texttt{/usr/sbin/ppp-on}        & \# klicni/priključitveni skript\\
\texttt{/usr/sbin/ppp-off}       & \# odključitveni skript\\
\texttt{/etc/ppp/options}        & \# izbire, ki jih \texttt{pppd}
                                   uporablja za vse povezave\\
\texttt{/etc/ppp/options.tty\emph{XX}}  & \# izbire, specifične za
                                          povezavo na vratih \emph{XX}
\end{tabular}
\normalsize
\end{center}

Za PPP 2.2 so te datoteke:
\begin{center}
\small
\begin{tabular}{lll}
\texttt{/usr/sbin/pppd}                & \# izvedljiva datoteka za PPP\\
\texttt{/etc/ppp/scripts/ppp-on}       & \# klicni/priključitveni skript\\
\texttt{/etc/ppp/scripts/ppp-on-dialer}& \# prvi del klicnega skripta\\
\texttt{/etc/ppp/scripts/ppp-off}      & \# sam pravi skript za \texttt{chat}\\
\texttt{/etc/ppp/options}              & \# izbire, ki jih \texttt{pppd}
                                            uporablja za vse povezave\\
\texttt{/etc/ppp/options.tty\emph{XX}} & \# izbire, specifične za
                                          povezavo na vratih \emph{XX}
\end{tabular}
\normalsize
\end{center}

Uporabniki distribucije Red Hat Linux bi morali vedeti, da standardna
namestitev Red Hat 4.\textsl{X} postavi te skripte v imenik
\texttt{/usr/doc/ppp-2.2.0f-2/scripts}.

V vašem imeniku \texttt{/etc} naj bi bil podimenik \texttt{ppp}:
\begin{tscreen}
\begin{verbatim}
drwxrwxr-x   2 root     root         1024 Oct  9 11:01 ppp
\end{verbatim}
\end{tscreen}
Če še ne obstaja, ga ustvarite s temi lastništvi in dovoljenji.

Če imenik že obstaja, bi moral vsebovati datoteko z vzorčnimi
izbirami, imenovano \texttt{options.tpl}.  Ta datoteka je vključena
spodaj, za primer, če je še ni v imeniku \texttt{/etc/ppp}.

Natisnite jo, saj vsebuje razlago skoraj vseh izbir za PPP (te so
uporabne za branje v povezavi s stranmi referenčnega priročnika o
\texttt{pppd}).  To datoteko sicer lahko uporabljate glede na svojo
datoteko \texttt{/etc/ppp/options}, a je verjetno bolje, da naredite
lastno datoteko z izbirami, ki ne vključuje vseh komentarjev v vzorčni
-- precej krajša in lažja bo za branje/vzdrževanje.

Videti je, da so nekatere distribucije PPP izgubile datoteko
\texttt{options.tpl}.  Poglejte v spis PPP-HOWTO (obstaja tudi
slovenski prevod tega spisa) za popolno različico vzorčne datoteke.
  
\subparagraph*{Katere izbire naj uporabim?}
No, kot pri vseh stvareh, je to odvisno (vzdihljaj).  Izbire,
navedene tukaj, bi morale delovati z večino strežnikov.

Vendar če \emph{ne} delujejo, \emph{preberite vzorčno datoteko}
(\texttt{/etc/ppp/options.tpl}) in stran priročnika o \texttt{pppd}
ter se pogovorite s sistemskim upraviteljem ali ljudmi z oddelka za
pomoč uporabnikom ponudnika, ki poganja strežnik, na katerega se
priključujete.

Vedeti bi tudi morali, da priključitveni skripti, predstavljeni tukaj,
uporabljajo tudi nekatere izbire v ukazni vrstici za klic \texttt{pppd},
da je spreminjanje zadev olajšano.

%\small
\begin{tscreen}
\begin{verbatim}
# /etc/ppp/options (brez podpore za PAP/CHAP)
#
# Prepreči pppd, da bi se razvejil v ozadju z -detach
#
# uporabljaj nadzorne linije modema
modem
# uporabljaj zaklepne datoteke v stilu uucp, da zagotoviš
# ekskluzivni dostop do serijske naprave
lock
# uporabljaj strojni nadzor pretoka
crtscts
# ustvari privzeto pot za to povezavo v usmerjevalni tabeli
defaultroute
# NE nastavljaj "ubežnih" nadzornih zaporedij
asyncmap 0
# uporabljaj največjo velikost prenesenega paketa 552 bajtov
mtu 552
# uporabljaj največjo velikost sprejetega paketa 552 bajtov
mru 552
#
#---KONEC VZORČNE DAT. /etc/ppp/options (brez podpore za PAP/CHAP)
\end{verbatim}
\end{tscreen}
\normalsize
%\rm

\subparagraph*{Ročna vzpostavitev povezave PPP.}
Zdaj, ko ste ustvarili vaši datoteki \texttt{/etc/ppp/options}
in \texttt{/etc/resolv.conf} (in če je potrebno, datoteko
\texttt{/etc/ppp/pap-secrets} ali \texttt{chap-secrets}), lahko preizkusite
nastavitve z ročno vzpostavitvijo povezave PPP.  (Ko nam bo ročno
vzpostavljena povezava delovala, bomo proces avtomatizirali.)

Za to mora biti vaše komunikacijsko programje sposobno izhoda,
\emph{ne da} se resetira modem.  Program \texttt{minicom} lahko
to stori z zaporedjem \key{Ctrl}-\key{A} \key{Q} 

\begin{itemize}

\item Prepričajte se, da ste prijavljeni kot \texttt{root}.

\item Zaženite vaše komunikacijsko programje (npr.\ \texttt{minicom}),
  pokličite na strežnik PPP in se prijavite kot običajno (če ste se
  sploh že kdaj prijavili).  Če morate izdati ukaz za zagon PPP na
  strežniku, storite tako.  Zdaj boste videli smeti, kot ste jih že
  videli prej.

\item Če uporabljate PAP ali CHAP, bi morala že sama priključitev na
  oddaljeni sistem zagnati PPP na oddaljenem delu in videli boste
  smeti ne da bi se prijavili na strežnik (čeprav se to morda na
  nekaterih strežnikih ne bo zgodilo -- poskusite pritisniti
  \key{Enter} in poglejte, če se pojavijo smeti).

\item Zdaj zapustite komunikacijsko programje brez resetiranja modema
  in v pozorniku ukazne lupine v Linuxu (kot \texttt{root}) napišite
\begin{tscreen}
\# \emph{pppd -d /dev/ttyS0 38400 \&}
\end{tscreen}
Seveda navedite namesto >>\texttt{/dev/ttyS0}<< ime naprave, na katero
je priključen vaš modem.

Izbira \texttt{-d} omogoča razhroščevanje -- začetni pogovori povezave
PPP se bodo beležili v sistemski dnevnik -- kar je uporabno za
izsleditev morebitnih poznejših težav.

\item Ko se vzpostavi povezava PPP, zamežikajo lučke na vašem modemu
  (če imate zunanjega).  Vzpostavitev povezave PPP bo trajala le malo
  časa.

\end{itemize}

Na tej točki lahko pogledate vmesnik PPP tako, da izdate ukaz
\begin{tscreen}
\# \emph{ifconfig}
\end{tscreen}

Poleg vseh naprav Ethernet in povratnih naprav, ki jih imate, bi morali
videti tudi nekaj takega:
\small
\begin{verbatim}
ppp0     Link encap:Point-Point Protocol
         inet addr:10.144.153.104  P-t-P:10.144.153.51 Mask:255.255.255.0
         UP POINTOPOINT RUNNING  MTU:552  Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0
         TX packets:0 errors:0 dropped:0 overruns:0
\end{verbatim}
\normalsize

Kjer
\begin{itemize}
\item \texttt{inet addr:10.144.153.10} pomeni številko IP \emph{na vašem koncu}
  povezave.
\item je \texttt{P-t-P:10.144.153.5} številka IP \emph{strežnika}.
\end{itemize}

(Pripomoček \texttt{ifconfig} ne bo izpisal ravno teh številk IP, pač pa
tiste, ki se uporabljajo na vašem strežniku PPP.)  Pomnite: \texttt{ifconfig}
vam pove tudi, katera povezava je \emph{vzpostavljena} in \emph{teče}!

Morali bi biti sposobni tudi videti povezavo do oddaljenega gostitelja
(in naprej).  Za kaj takega ukažite
\begin{tscreen} 
\# \emph{route -n} 
\end{tscreen}
Videti bi morali nekaj takega:
\small
\begin{tscreen}
\begin{verbatim}
Kernel routing table
Destination     Gateway         Genmask         Flags MSS    Window Use Iface
10.144.153.3    *               255.255.255.255 UH    1500   0        1 ppp0
127.0.0.0       *               255.0.0.0       U     3584   0       11 lo
10.0.0.0        *               255.0.0.0       U     1500   0       35 eth0
default         10.144.153.3    *               UG    1500   0        5 ppp0
\end{verbatim}
\end{tscreen}
\normalsize

Tukaj je posebej pomembno opaziti, da imamo \emph{dva} vnosa, ki kažeta na
naš vmesnik PPP.

Prvi je \emph{gostiteljska} pot (označuje jo zastavica \texttt{H} kot
angl.\ host route) in ta nam dovoljuje videnje gostitelja, na katerega
smo priključeni -- a nič dlje.

Drugi vnos je \emph{privzeta} pot (vzpostavljena tako, da podamo programu
\texttt{pppd} izbiro \texttt{defaultroute}).  To je pot, ki pove našemu
osebnemu računalniku z Linuxom, naj pošilja vse pakete, ki \emph{niso}
namenjeni na lokalni ethernet -- za katerega imamo posebne omrežne
poti -- na sam strežnik PPP.  Strežnik PPP je potem odgovoren za
usmerjanje naših paketov na zunanji Internet in usmerjanje povratnih
paketov nazaj do nas.

Če ne vidite usmerjevalne tabele z dvema vnosoma, je nekaj narobe.  Posebej,
če vaš sistemski dnevnik vsebuje sporočilo, ki vam sporoča, da vaš
\texttt{pppd} ne nadomešča obstoječe privzete poti, potem imate privzeto pot,
ki kaže na vaš vmesnik za Ethernet -- in \emph{mora} biti nadomeščena
z določeno omrežno potjo: \emph{lahko imate le eno privzeto pot}!!!

Raziskati boste morali inicializacijske datoteke vašega sistema, da boste
ugotovili, kje se ta privzeta pot določi (uporabljen bo ukaz
>>\texttt{route add default...}<<).  Spremenite ta ukaz v nekaj takega
kot >>\texttt{route add net...}<<.

Zdaj preizkusite povezavo s >>pinganjem<< strežnika na njegovo številko
IP, kot jo sporoča izhod pripomočka \texttt{ifconfig}, denimo:
\begin{tscreen}
\# \emph{ping 10.144.153.51}
\end{tscreen}
Dobiti bi morali izhod, kot je ta:
\begin{tscreen}
\begin{verbatim}
PING 10.144.153.51 (10.144.153.51): 56 data bytes
64 bytes from 10.144.153.51: icmp_seq=0 ttl=255 time=328.3 ms
64 bytes from 10.144.153.51: icmp_seq=1 ttl=255 time=190.5 ms
64 bytes from 10.144.153.51: icmp_seq=2 ttl=255 time=187.5 ms
64 bytes from 10.144.153.51: icmp_seq=3 ttl=255 time=170.7 ms
\end{verbatim}
\end{tscreen}
Ta izpis se bo nadaljeval v neskončnost -- prekinete ga s pritiskom
\key{Ctrl}-\key{C}, na tej točki boste prejeli nekaj dodatnih
informacij:
\begin{tscreen}
\begin{verbatim}
--- 10.144.153.51 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 170.7/219.2/328.3 ms
\end{verbatim}
\end{tscreen}

Zdaj poskusite pingati gostitelja po imenu (ne ime samega strežnika PPP),
vendar gostitelja na drugem mestu, za katerega \emph{veste}, da trenutno
verjetno deluje.  Na primer
\begin{tscreen}
\# \emph{ping sunsite.unc.edu} 
\end{tscreen}
Tokrat bo sledil premor, v katerem Linux poizveduje o številki IP polnega
gostiteljskega imena, ki ste ga pingali.  To stori tako, da
povpraša DNS, ki ste ga navedli v datoteki \texttt{/etc/resolv.conf} -- zato
ne skrbite (videli pa boste, da lučke na zunanjem modemu utripajo).
Kmalu boste prejeli izhod, podoben temule:
\begin{tscreen}
\begin{verbatim}
 PING sunsite.unc.edu (152.2.254.81): 56 data bytes
64 bytes from 152.2.254.81: icmp_seq=0 ttl=254 time=190.1 ms
64 bytes from 152.2.254.81: icmp_seq=1 ttl=254 time=180.6 ms
64 bytes from 152.2.254.81: icmp_seq=2 ttl=254 time=169.8 ms
64 bytes from 152.2.254.81: icmp_seq=3 ttl=254 time=170.6 ms
64 bytes from 152.2.254.81: icmp_seq=4 ttl=254 time=170.6 ms
\end{verbatim}
\end{tscreen}
Spet prekinite izhod s pritiskom \key{Control}-\key{C} in dobite
nekaj dodatne statistike\ldots
\begin{tscreen}
\begin{verbatim}
--- sunsite.unc.edu ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss 
round-trip min/avg/max = 169.8/176.3/190.1 ms
\end{verbatim}
\end{tscreen}

Če ne dobite nobenega odgovora, poskušajte pingati naslov IP strežnika
DNS vašega ISP.  Če dobite odgovor od njega, potem imate verjetno
problem z datoteko \texttt{/etc/resolv.conf}.

Če to ne deluje, imate verjetno usmerjevalni problem ali pa ima
vaš ISP težave z usmerjanjem paketov nazaj k vam.  Preverite vašo
usmerjevalno tabelo, kot je prikazana zgoraj, in če je to v redu,
navežite stike z vašim ISP.  Dober preizkus ISP-ja je uporaba
drugega operacijskega sistema za priključitev.  Če vam to uspe z
vašim ISP-jem, je problem na vaši strani.

Če vse deluje, ukinite povezavo z vnosom
\begin{tscreen}
\# \emph{ppp-off} 
\end{tscreen}
Po kratkem premoru bi moral modem sam odložiti linijo.

Če to ne deluje, izključite vaš modem ali poženite vaše komunikacijsko
programje in prekinite modem z ukazom \verb|+++|, potem pa odložite
linijo z \verb|ATH0|, ko prejmete odgovor \verb|OK| od vašega modema.

Morda boste morali tudi počistiti zaklepno datoteko, ki jo ustvari
\texttt{pppd} z vnosom
\begin{tscreen}
\# \emph{rm -f /var/lock/LCK..ttyS\emph{x}} 
\end{tscreen}

\subsection{Izdelava povezovalnih skriptov}

Čeprav lahko nadaljujete z ročnim prijavljanjem, kot je prikazano
zgoraj, je precej ličneje sestaviti nekaj skriptov, ki bodo to počeli
samodejno namesto vas.

Nabor skriptov avtomatizira prijavljanje in zagon PPP, tako da je vse,
kar morate storiti (kot \texttt{root} ali član skupine PPP), izdajanje
enega samega ukaza za vključitev vaše povezave.

Če vaš ISP \emph{ne} zahteva uporabe PAP/CHAP, so ti skripti za vas.

Če je paket PPP pravilno nameščen, bi morali imeti dve vzorčni datoteki.
Za PPP 2.1.2 sta v imeniku \texttt{/usr/sbin} in za PPP 2.2 sta v
\texttt{/etc/ppp/scripts}.  Datoteke se imenujejo:

\begin{itemize}
\item za PPP-2.1.2:
\begin{tscreen}
\begin{verbatim}
ppp-on
ppp-off
\end{verbatim}
\end{tscreen}

\item in za PPP-2.2:
\begin{tscreen}
\begin{verbatim}
ppp-off
ppp-on
ppp-on-dialer
\end{verbatim}
\end{tscreen}
\end{itemize}

Zdaj vam, če uporabljate PPP 2.1.2, močno priporočam, da pobrišete
ti vzorčni datoteki.  Potencialno povzročata probleme -- in ne recite mi,
da delujeta v redu -- tudi jaz sem ju uporabljal celo večnost (in
priporočil v prvih različicah PPP-HOWTO)!

Za dobrobit uporabnikov PPP 2.1.2 so tukaj \emph{boljše} vzorčne
različice, pobrane iz distribucije PPP 2.2.  Priporočam vam, da
namesto starih skriptov za PPP-2.1.2 uporabite te skripte.

\paragraph*{Skript \texttt{ppp-on}.}
To je prvi od \emph{para} skriptov, ki zares vzpostavita povezavo.
\small
\begin{tscreen}
\begin{verbatim}
#!/bin/sh
#
# Skript za vzpostavitev povezave PPP.  To je prvi od dveh
# skriptov.  To ni varen par skriptov, saj so kode vidne
# z ukazom 'ps'.  Vendar je preprost.
#
# To so parametri.  Spremenite, kar je potrebno.
TELEPHONE=555-1212      # Telefonska številka za povezavo
ACCOUNT=george          # Ime računa za prijavo (kot 'George Burns')
PASSWORD=gracie         # Geslo za ta račun (in 'Gracie Allen')
LOCAL_IP=0.0.0.0        # Lokalni naslov IP, če je znan.
                        # Dinamično dobljen = 0.0.0.0
REMOTE_IP=0.0.0.0       # Oddaljeni naslov IP, če želite.
                        # Navadno 0.0.0.0
NETMASK=255.255.255.0   # Pravilna omrežna maska, če je potrebna.
#
# Izvozite te parametre, da bodo dostopni za 'ppp-on-dialer'
export TELEPHONE ACCOUNT PASSWORD
#
# To je lokacija skripta, ki pokliče po telefonski liniji in
# se prijavi na strežnik.  Prosim, uporabite absolutno ime
# datoteke, saj se spremenljivka $PATH ne uporablja kot izbira
# ob povezavi.  (Kaj takega bi bila varnostna luknja računa
# 'root', zato ne sprašujte.)
#
DIALER_SCRIPT=/etc/ppp/ppp-on-dialer
#
# Inicializirajte povezavo
#
#
exec /usr/sbin/pppd debug /dev/ttySx 38400 \
        $LOCAL_IP:$REMOTE_IP \
        connect $DIALER_SCRIPT
\end{verbatim}
\end{tscreen}
\normalsize
%\rm

\paragraph*{Skript \texttt{ppp-on-dialer}.}

\small
\begin{tscreen}
\begin{verbatim}
#!/bin/sh
#
# To je drugi del skripta ppp-on.  Izvedel bo povezovalni
# protokol za želeno povezavo.
#
/usr/sbin/chat -v                                       \
        TIMEOUT         3                               \
        ABORT           '\nBUSY\r'                      \
        ABORT           '\nNO ANSWER\r'                 \
        ABORT           '\nRINGING\r\n\r\nRINGING\r'    \
        ''              \rAT                            \
        'OK-+++\c-OK'   ATH0                            \
        TIMEOUT         30                              \
        OK              ATDT$TELEPHONE                  \
        CONNECT         ''                              \
        ogin:--ogin:    $ACCOUNT                        \
        assword:        $PASSWORD
\end{verbatim}
\end{tscreen}
\normalsize
%\rm

\paragraph*{Skript \texttt{ppp-off} za PPP-2.2.}
Za PPP-2.2 je skript \texttt{ppp-off} videti takole:
\small
\begin{tscreen}
\begin{verbatim} 
#!/bin/sh
#########################################################
#
# Poišči napravo, ki naj se prekine.
#
if [ "$1" = "" ]; then
        DEVICE=ppp0
else
        DEVICE=$1
fi

#########################################################
#
# Če obstaja datoteka pid ppp0, potem program teče.
# Prekinite ga.
if [ -r /var/run/$DEVICE.pid ]; then
        kill -INT `cat /var/run/$DEVICE.pid`
#
# Če 'kill' ne deluje, potem za ta pid ne teče noben proces.
# To lahko pomeni tudi, da bo ostala zaklepna datoteka.
# Morda boste želeli hkrati pobrisati zaklepno datoteko.
        if [ ! "$?" = "0" ]; then
                rm -f /var/run/$DEVICE.pid
                echo "ERROR: Removed stale pid file"
                exit 1
        fi
#
# Uspeh.  Naj pppd sam počisti svojo navlako.
        echo "PPP link to $DEVICE terminated."
        exit 0
fi
#
# Proces ppp ne teče za ppp0
echo "ERROR: PPP link is not active on $DEVICE"
exit 1
\end{verbatim}
\end{tscreen}
\normalsize
%$

\subsection{Prilagajanje priloženih zagonskih skriptov za PPP}

Novi skripti so v dveh delih, ki ju bomo uredili po vrsti.

\subparagraph*{Skript \texttt{ppp-on}.}
Urediti boste morali skript \texttt{ppp-on}, da bo odražal
\emph{vaše} uporabniško ime pri vašem ISP, \emph{vaše} geslo
pri vašem ISP in telefonsko številko vašega ISP.

Vsaka od vrstic, kot je \verb|TELEPHONE=|, pravzaprav nastavi
spremenljivke ukazne lupine, ki vsebujejo informacije na desni
strani znaka >>\verb|=|<< (brez komentarjev, seveda).  Zato
uredite vsako od teh vrstic tako, da ustreza vašemu
ISP-ju in povezavi.

Tudi ko nastavljate številko IP (če jo morate), v datoteki
\texttt{/etc/ppp/options} \emph{pobrišite} vrstico, ki pravi:
\begin{tscreen}
\begin{verbatim}
$LOCAL_IP:$REMOTE_IP \
\end{verbatim}
\end{tscreen}

Prepričajte se, da lupinska spremenljivka \verb|DIALER_SCRIPT|
kaže na polno pot in ime klicnega skripta, ki ga boste zares uporabljali.
Zato se, če ste premaknili ali preimenovali ta skript, prepričajte,
da boste pravilno popravili to vrstico v skriptu \texttt{ppp-on}!

\subparagraph*{Skript \texttt{ppp-on-dialer}.}
To je drugi od skriptov, ki zares vzpostavita vašo povezavo PPP.

Vedite: pogovorni skript je navadno napisan v eni sami vrstici,
obrnjene poševnice >>\verb|\|<< se uporabljajo le za nadaljevanje
vrstice v več fizičnih vrstic (za lažje človeško branje) in ne
predstavljajo dela samega skripta.

Vendar je ta skript zelo uporabno podrobno pogledati, da bomo razumeli,
kaj naj bi pravzaprav delal!

Pogovorni skript je zaporedje parov "pričakovani niz" "poslani niz".
Pomnite, da \emph{vselej} nekaj pričakujemo, preden nekaj pošljemo.

Če naj nekaj pošljemo, \emph{ne da bi} najprej kaj prejeli, moramo
uporabiti prazen pričakovani niz (označen z \verb|""|) in podobno za
pričakovanje nečesa, ne da bi karkoli poslali!  Tudi če niz sestavlja
več besed (npr.\ \verb|NO CARRIER|), morate navesti niz tako, da ga
\texttt{chat} vidi kot eno entiteto.

Pogovorna vrstica v našem vzorcu je:
\begin{tscreen}
exec /usr/sbin/chat -v
\end{tscreen}

Ob klicanju \texttt{chat}-a izbira \verb|-v| pove, naj se prepiše
\emph{ves} njegov vhod/izhod v sistemski dnevnik (ta je navadno v
datoteki \texttt{/var/log/messages}).

Ko ste enkrat zadovoljni z zanesljivim delovanjem pogovornega skripta,
uredite to vrstico in odstranite izbiro \verb|-v|, da boste zmanjšali
nepotreben šum v vašem sistemskem dnevniku.

\begin{tscreen}
\begin{verbatim}
TIMEOUT         3
\end{verbatim}
\end{tscreen}
To nastavi iztek časa za sprejem pričakovanega vhoda na tri sekunde.
To lahko povečate na, denimo, 5 ali 10 sekund, če uporabljate zares
počasen modem!

\begin{tscreen}
\begin{verbatim}
ABORT           '\nBUSY\r'
\end{verbatim}
\end{tscreen}
Če je sprejet niz \verb|BUSY| (znak za zasedeno linijo), končaj
postopek.

\begin{tscreen}
\begin{verbatim}
ABORT           '\nNO ANSWER\r'
\end{verbatim}
\end{tscreen}
Če prejmeš niz \verb|NO ANSWER| (ni odgovora), končaj postopek.

\begin{tscreen}
\begin{verbatim}
ABORT           '\nRINGING\r\n\r\nRINGING\r'
\end{verbatim}
\end{tscreen}
Če prejmeš (ponovljen) niz \verb|RINGING|, končaj postopek.
To je zato, ker nekdo kliče vašo telefonsko linijo!

\begin{tscreen}
\begin{verbatim}
"              \rAT
\end{verbatim}
\end{tscreen}
Ne pričakuj ničesar od modema in pošlji niz \verb|AT|.

\begin{tscreen}
\begin{verbatim}
OK-+++\c-OK   ATH0
\end{verbatim}
\end{tscreen}
Tale vrstica je malce bolj zapletena, saj uporablja nekatere
zmožnosti za odpravljanje napak programa \texttt{chat}.

Kar pravi, je\ldots{}  Pričakuj \verb|OK| in če ga \emph{ne} prejmeš
(ker modem ni v ukaznem načinu), potem pošlji \verb|+++| (modemski
niz za standardne modeme, združljive s Hayes, ki vrne modem v ukazni
način) in pričakuj \verb|OK|.  Potem pošlji \verb|ATH0| (ukazni niz,
po katerem modem odloži linijo).  To dovoljuje vašemu skriptu, da je kos
položaju, ko modem obtiči na zvezi!

\begin{tscreen}
\begin{verbatim}
TIMEOUT         30
\end{verbatim}
\end{tscreen}
Nastavi iztek časa na 30 sekund za ostanek tega skripta.  Če s tem
pogovornim skriptom izkusite težave z izhodi zaradi izteka časa,
povečajte to vrednost na 45 sekund ali več.

\begin{tscreen}
\begin{verbatim}
OK              ATDT$TELEPHONE
\end{verbatim}
\end{tscreen}
Pričakuj \verb|OK| (odgovor modema na ukaz \verb|ATH0|) in pokliči
številko, ki bi jo radi poklicali.

\begin{tscreen}
\begin{verbatim}
CONNECT         ''
\end{verbatim}
\end{tscreen}
Pričakuj \verb|CONNECT| (kar pošlje naš modem, ko odgovori oddaljeni
modem) in ne pošlji ničesar v odgovor.

\begin{tscreen}
\begin{verbatim}
ogin:--ogin:    $ACCOUNT
\end{verbatim}
\end{tscreen}
Tukaj imamo spet vgrajenega nekaj odpravljanja napak.  Pričakuj
prijavni pozornik (\verb|...ogin:|), a če ga ne dobimo pred iztekom
časa, pošlji return in potem spet čakaj na prijavni pozornik.  Ko se
sprejme pozornik, pošlji uporabniško ime (shranjeno v lupinski
spremenljivki \verb|$ACCOUNT|).

\begin{tscreen}
\begin{verbatim}
assword:        $PASSWORD
\end{verbatim}
\end{tscreen}
%$
Pričakuj pozornik za geslo in pošlji naše geslo (spet, shranjeno
v lupinski spremenljivki).

Ta pogovorni skript lahko precej dobro okreva od napak.  Program
\texttt{chat} ima bistveno več zmožnosti, kot jih je tukaj prikazanih.
Za več informacij poglejte stran priročnika o programu \texttt{chat}
(\verb|man 8 chat|).

\subsection{Zagon PPP na strani strežnika}

Medtem ko je skript \texttt{ppp-on-dialer} v redu za strežnike, ki
samodejno zaženejo \texttt{pppd} na svoji strani, ko se enkrat
prijavite nanje, nekateri strežniki potrebujejo eksplicitni zagon PPP
na strežniku.

Če morate izdati ukaz za zagon PPP na strežniku, \emph{morate}
urediti skript \texttt{ppp-on-dialer}.

Na \emph{koncu} skripta (po vrstici z geslom) dodajte tradicionalni
par >>pričakuj-pošlji<< -- ta bo oprezal za vašim prijavnim pozornikom
(pazite se znakov, ki imajo poseben pomen v Bournovi lupini), kot
\begin{tscreen}
\$[]
\end{tscreen}

Ko je enkrat \texttt{chat} našel lupinski pozornik, mora izdati zagonski
ukaz za PPP, ki ga potrebuje strežnik za PPP pri vašem ISP.

Avtor je že naletel tudi na primer, ko strežnik za PPP uporablja
standardni pozornik ukazne lupine Bash v Linuxu
\begin{tscreen}
[hartr@kepler hartr]\$ 
\end{tscreen}
ki zahteva odgovor
\begin{tscreen} 
\$ \emph{ppp} 
\end{tscreen}
za zagon PPP na strežniku.

Tukaj je koristno dovoliti malce popravljanja napak, zato uporabite
\begin{tscreen} 
hartr--hartr    ppp
\end{tscreen}
Se pravi, če ne prejmemo pozornika pred iztekom časa, pošlje znak za
pomik na začetek vrste (angl.\ carriage return) in spet čaka na
pozornik.

Ko enkrat dobi pozornik, pošlje niz \texttt{ppp}.

Pozor: ne pozabite dodati \verb|\| na konec prejšnje vrstice, da bo
\texttt{chat} še vedno mislil, da je celotni pogovorni skript
v eni vrstici!

Žal nekateri strežniki producirajo zelo različno množico pozornikov!
Morda se boste morali večkrat prijaviti z \texttt{minicom}-om, da boste
razumeli, kaj se dogaja in izbrali stabilne >>pričakovane<< nize.

\subsection{Če vaš strežnik PPP uporablja PAP (Password Authentication Protocol)}

Če strežnik, na katerega se povezujete, zahteva identifikacijo PAP ali CHAP,
imate malce več dela.

Dodajte naslednje vrstice v zgornjo datoteko z izbirami
\small
\begin{tscreen}
\begin{verbatim}
#
# Prisili pppd, da bo med identifikacijskim procesom uporabljal
# uporabniško ime na vašem ISP kot vaše 'gostiteljsko ime'
name uporabniško-ime-vašega-ISP   # to vrstico morate popraviti
#
# Če poganjate *strežnik* PPP in morate vsiliti PAP ali CHAP,
# odkomentirajte ustrezno od naslednjih vrstic.  NE uporabljajte
# jih, če ste odjemalec, ki se priključuje na strežnik PPP
# (tudi če ta uporablja PAP ali CHAP), saj to naroči STREŽNIKU
# naj se predstavi vašemu stroju (česar prav gotovo ne more
# storiti -- in povezovanje bo spodletelo).
#+chap
#+pap
#
# Če uporabljate ZAKODIRANE zaupnosti (angl. encrypted secrets)
# v datoteki /etc/ppp/pap-secrets, odkomentirajte naslednjo vrstico.
# Vedite: to NI isto kot uporaba zakodiranih gesel Microsofta,
# kot se lahko nastavijo v MS RAS na Windows NT.
#+papcrypt
\end{verbatim}
\end{tscreen}
\normalsize

\subsection{Uporaba protokola MSCHAP}

RAS sistema Microsoft Windows NT se lahko nastavi tako, da uporablja
različico protokola CHAP (angl.\ Challenge/Handshake Authentication Protocol,
identifikacijski protokol s pozivanjem/rokovanjem).  V izvorni kodi
vašega PPP boste našli datoteko \texttt{README.MSCHAP80}, ki to obravnava.
Ali strežnik zahteva identifikacijo z uporabo tega protokola, lahko
ugotovite z vključitvijo razhroščevanja za \texttt{pppd}.  Če strežnik
zahteva identifikacijo MS CHAP, boste videli vrstice, kot je
\begin{tscreen}
\begin{verbatim}
rcvd [LCP ConfReq id=0x2 <asyncmap 0x0> <auth chap 80> <magic 0x46a3>]
\end{verbatim}
\end{tscreen}
Tukaj ključno informacijo predstavlja >>\texttt{auth chap 80}<<.

Za uporabo protokola MS CHAP boste morali ponovno prevesti \texttt{pppd}
za njegovo podporo.  Prosim, poglejte navodila v datoteki
\texttt{README.MSCHAP80}
v arhivu izvorne kode za PPP za navodila, kako prevesti in uporabljati
to različico.

Če uporabljate identifikacijo PAP ali CHAP, potem morate ustvariti tudi
datoteko s skrivnostmi (angl.\ secrets file).  Ti sta
\texttt{/etc/ppp/pap-secrets} in \url{/etc/ppp/chap-secrets}.

Njun lastnik mora biti \texttt{root}, skupina \texttt{root}, in zaradi
varnosti morata imeti dovoljenja datotek nastavljena na 740.  Prva stvar,
ki jo velja poudariti o PAP in CHAP, je, da sta zasnovana tako, da
identificirata računalniške sisteme, ne uporabnikov.  Z drugimi besedami,
ko je enkrat vaš računalnik vzpostavil svojo povezavo PPP s strežnikom,
lahko \emph{vsak} uporabnik vašega sistema uporablja to povezavo -- ne
le vi.

PAP lahko (CHAP pa \emph{vedno}) zahteva dvosmerno identifikacijo -- se
pravi: na vsakem računalniku obstaja veljavno ime in datoteka skrivnosti
za vsak drugi vpleteni računalnik.  Vendar to \emph{ni} način, na
katerega deluje večina strežnikov PPP, ki ponuja povezave, preverjene
s PAP.

S tem v mislih: vaš ISP vam bo verjetno dal uporabniško ime in geslo,
ki vam bosta omogočala povezavo na njegov sistem in od tam na Internet.
Vašega ISP-ja sploh ne zanima ime vašega računalnika, zato boste verjetno
morali uporabljati uporabniško ime pri vašem ISP-ju kot ime vašega
računalnika.  To se stori z uporabo izbire navedbe uporabniškega imena
programa \texttt{pppd}.  Torej, če boste uporabljali uporabniško ime,
ki vam ga je dodelil vaš ISP, dodajte vrstico
\begin{tscreen}
name vaše\_uporabniško\_ime\_pri\_vašem\_ISP
\end{tscreen}
v vašo datoteko \texttt{/etc/ppp/options}.

Pravzaprav bi morali v resnici uporabljati
\begin{tscreen}
\begin{verbatim}
user vaše_uporabniško_ime_pri_vašem_ISP
\end{verbatim}
\end{tscreen}
za PAP, vendar je \texttt{pppd} dovolj inteligenten, da bo tolmačil
\texttt{name} kot \texttt{user}, če je potrebno za uporabo PAP-a.
Prednost uporabe izbire \texttt{name} je, da je veljavna tudi za CHAP.

Ker je PAP namenjen identifikaciji računalnikov, morate teoretično
navesti tudi ime oddaljenega računalnika.  Vendar ker ima večina ljudi
le enega ISP, lahko uporabljate v datoteki s skrivnostjo (angl.\
secrets file) tudi džokerja (\verb|*|) namesto imena oddaljenega
gostitelja.

Datoteka \texttt{/etc/ppp/pap-secrets} izgleda takole
\begin{tscreen}
\begin{verbatim} 
# Skrivnosti za identifikacijo z uporabo PAP
# odjemnik   strežnik    skrivnost   sprejemljivi_lokalni_naslovi_IP
\end{verbatim}
\end{tscreen} 

Štiri polja so ločena z belimi znaki (angl.\ white space) in zadnje
je lahko prazno (to je to, kar želite za dinamično in verjetno tudi
statično dodelitev IP od vašega ISP).

Denimo, da vam je ISP izdal uporabniško ime \texttt{fred} in geslo
\texttt{flintstone}.  Potem nastavite izbiro imena \texttt{fred}
v datoteki \texttt{/etc/ppp/options} in nastavite vašo datoteko
\texttt{/etc/ppp/pap-secrets} takole:
\begin{tscreen}
\begin{verbatim}
# Skrivnosti za identifikacijo z uporabo PAP
# odjemnik    strežnik    skrivnost   sprejemljivi_lokalni_naslovi_IP
fred             *        flintstone
\end{verbatim}
\end{tscreen}

To pravi: lokalnemu stroju je ime \texttt{fred} (kar smo tudi naročili
\texttt{pppd}-ju, da naj uporablja, čeprav to morda ni pravo lokalno
ime našega stroja) in za \emph{vsak} strežnik uporabljaj geslo
(skrivnost) \texttt{flintstone}.

Vedite, da nam ni treba določiti lokalnega naslova IP, razen če moramo
\emph{vsiliti} določen lokalni, statični naslov IP.  Tudi če to
poskusite, verjetno ne bo delovalo, saj večina strežnikov PPP (iz
varnostnih razlogov) ne dovoljuje oddaljenim sistemov samostojne
nastavitve številke IP, ki jim je dodeljena.

To predvideva, da uporabljate vzajemne identifikacijske metode -- se pravi,
da morate dovoliti identifikacijo oddaljenega strežnika svojemu
stroju \emph{in tudi} identifikacijo vašega stroja oddaljenemu
strežniku.

Če je torej vaš stroj \texttt{fred} in je oddaljeni stroj
\texttt{barney}, bo vaš stroj nastavil \texttt{name fred remotename
barney}, oddaljeni stroj pa bo nastavil \texttt{name barney remotename
fred} v njunih ustreznih datotekah \texttt{/etc/ppp/options.ttyS\textsl{x}}.

Datoteka \texttt{/etc/chap-secrets} bi na računalniku \texttt{fred} izgledala
takole
\begin{tscreen}
\begin{verbatim}
# Skrivnosti za identifikacijo z uporabo CHAP
# odjemnik    strežnik    skrivnost   sprejemljivi_lokalni_naslovi_IP
fred          barney      flintstone
barney        fred        wilma
\end{verbatim}
\end{tscreen}
in na računalniku \texttt{barney} takole
\begin{tscreen}
\begin{verbatim}
# Skrivnosti za identifikacijo z uporabo CHAP
# odjemnik    strežnik    skrivnost   sprejemljivi_lokalni_naslovi_IP
barney        fred        flintstone
fred          barney      wilma
\end{verbatim}
\end{tscreen}

Posebej se zavedajte, da morata imeti oba stroja vnosa za dvosmerno
identifikacijo.  To dovoljuje lokalnemu stroju, da se predstavi
oddaljenemu \emph{in} obratno.

\subparagraph*{Pogovorni skript za povezave z identifikacijo PAP/CHAP.}

Če vaš ISP uporablja PAP/CHAP, je vaš pogovorni skript (za
\texttt{chat}) precej preprostejši.  Vse, kar mora storiti vaš
pogovorni skript, je poklicati telefonsko številko, počakati na
priključitev in potem dovoliti, da se program \texttt{pppd} prijavi na
strežnik!

\small
\begin{tscreen}
\begin{verbatim}
#!/bin/sh
#
# To je drugi del skripta ppp-on.  Ta skript bo izvedel povezovalni
# protokol za želeno povezavo.
#
exec /usr/sbin/chat -v                                  \
        TIMEOUT         3                               \
        ABORT           '\nBUSY\r'                      \
        ABORT           '\nNO ANSWER\r'                 \
        ABORT           '\nRINGING\r\n\r\nRINGING\r'    \
        ''              \rAT                            \
        'OK-+++\c-OK'   ATH0                            \
        TIMEOUT         30                              \
        OK              ATDT$TELEPHONE                  \
        CONNECT         ''                              \
\end{verbatim}
\end{tscreen}
\normalsize
%\rm $

Kot smo že videli, lahko z izbiro \verb|-d| \texttt{pppd}-ju vključite
beleženje razhroščevalnih informacij.  Izbira ,,\verb|debug|`` je
ekvivalentna.

Ker vzpostavljamo novo povezavo z novim skriptom, zaenkrat pustite
vključeno izbiro \verb|debug|.  (Pozor: če ste na tesnem z diskovnim
prostorom, lahko beleženje aktivnosti programa \texttt{pppd} naglo
poveča vaš sistemski dnevnik in zaidete lahko v težave -- a za to
vam mora spodleteti priključitev in morate neuspešno poskušati
s priključitvijo nekaj minut.)

Ko ste enkrat zadovoljni, da vse deluje, lahko odstranite to izbiro.
\begin{tscreen}
\begin{verbatim}
exec /usr/sbin/pppd debug file options.myserver /dev/ttyS0 38400 \
\end{verbatim}
\end{tscreen} 

\subparagraph*{Preizkus priključitvenega skripta.}

Odprite nov Xterm kot \texttt{root} (če ste v X) ali novo virtualno
konzolo in se prijavite kot \texttt{root}.

V tej novi seji izdajte ukaz
\begin{tscreen}
\# \emph{tail -f /var/log/messages}
\end{tscreen}
Mnogi sistemski dnevniki se beležijo v datoteko
\texttt{/var/log/messages}.  Če ima na vašem sistemu drugačno ime,
zamenjajte ime datoteke z vašim sistemskim dnevnikom v zgornjem ukazu.

V prvem oknu (ali virtualni konzoli) izdajte ukaz
\begin{tscreen}
\# \emph{ppp-on \&} 
\end{tscreen}
(ali kakorkoli ste že poimenovali vašo urejeno različico datoteke
\texttt{/usr/sbin/ppp-on}).  Če ne boste postavili skripta v ozadje
z določitvijo \verb|&| na koncu ukaza, ne boste dobili nazaj vašega
terminalskega pozornika, dokler se PPP ne konča (se pravi: dokler
se povezava ne prekine).

Zdaj preklopite nazaj na okno, ki spremlja vaš sistemski dnevnik.

%% You will see something like the following (provided you specified -v
%% to chat and -d to pppd)....this is the chat script and responses being
%% logged to the system log file followed by the start up information for
%% pppd :-
%%
%% \small
%% \begin{tscreen} \begin{verbatim}
%%   Oct 21 16:09:58 hwin chat[19868]: abort on (NO CARRIER)
%%   Oct 21 16:09:59 hwin chat[19868]: abort on (BUSY)
%%   Oct 21 16:09:59 hwin chat[19868]: send (ATZ^M)
%%   Oct 21 16:09:59 hwin chat[19868]: expect (OK)
%%   Oct 21 16:10:00 hwin chat[19868]: ATZ^M^M
%%   Oct 21 16:10:00 hwin chat[19868]: OK -- got it
%%   Oct 21 16:10:00 hwin chat[19868]: send (ATDT722298^M)
%%   Oct 21 16:10:00 hwin chat[19868]: expect (CONNECT)
%%   Oct 21 16:10:00 hwin chat[19868]: ^M
%%   Oct 21 16:10:22 hwin chat[19868]: ATDT722298^M^M
%%   Oct 21 16:10:22 hwin chat[19868]: CONNECT -- got it
%%   Oct 21 16:10:22 hwin chat[19868]: send (^M)
%%   Oct 21 16:10:22 hwin chat[19868]: expect (ogin:)
%%   Oct 21 16:10:23 hwin chat[19868]: kepler login: -- got it
%%   Oct 21 16:10:23 hwin chat[19868]: send (hartr^M)
%%   Oct 21 16:10:23 hwin chat[19868]: expect (ssword:)
%%   Oct 21 16:10:23 hwin chat[19868]:  hartr^M
%%   Oct 21 16:10:23 hwin chat[19868]: Password: -- got it
%%   Oct 21 16:10:23 hwin chat[19868]: send (??????^M)
%%   Oct 21 16:10:23 hwin chat[19868]: expect (hartr)
%%   Oct 21 16:10:24 hwin chat[19868]: [hartr -- got it
%%   Oct 21 16:10:24 hwin chat[19868]: send (ppp^M)
%%   Oct 21 16:10:27 hwin pppd[19872]: pppd 2.1.2 started by root, uid 0
%%   Oct 21 16:10:27 hwin pppd[19873]: Using interface ppp0
%%   Oct 21 16:10:27 hwin pppd[19873]: Connect: ppp0 <--> /dev/cua1
%%   Oct 21 16:10:27 hwin pppd[19873]: fsm_sdata(LCP): Sent code 1, id 1.
%%   Oct 21 16:10:27 hwin pppd[19873]: LCP: sending Configure-Request, id 1
%%   Oct 21 16:10:27 hwin pppd[19873]: fsm_rconfreq(LCP): Rcvd id 1.
%%   Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd MRU
%%   Oct 21 16:10:27 hwin pppd[19873]: (1500)
%%   Oct 21 16:10:27 hwin pppd[19873]:  (ACK)
%%   Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd ASYNCMAP
%%   Oct 21 16:10:27 hwin pppd[19873]: (0)
%%   Oct 21 16:10:27 hwin pppd[19873]:  (ACK)
%%   Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd MAGICNUMBER
%%   Oct 21 16:10:27 hwin pppd[19873]: (a098b898)
%%   Oct 21 16:10:27 hwin pppd[19873]:  (ACK)
%%   Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd PCOMPRESSION
%%   Oct 21 16:10:27 hwin pppd[19873]:  (ACK)
%%   Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd ACCOMPRESSION
%%   Oct 21 16:10:27 hwin pppd[19873]:  (ACK)
%%   Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: returning CONFACK.
%%   Oct 21 16:10:27 hwin pppd[19873]: fsm_sdata(LCP): Sent code 2, id 1.
%%   Oct 21 16:10:27 hwin pppd[19873]: fsm_rconfack(LCP): Rcvd id 1.
%%   Oct 21 16:10:27 hwin pppd[19873]: fsm_sdata(IPCP): Sent code 1, id 1.
%%   Oct 21 16:10:27 hwin pppd[19873]: IPCP: sending Configure-Request, id 1
%%   Oct 21 16:10:27 hwin pppd[19873]: fsm_rconfreq(IPCP): Rcvd id 1.
%%   Oct 21 16:10:27 hwin pppd[19873]: ipcp: received ADDR
%%   Oct 21 16:10:27 hwin pppd[19873]: (10.144.153.51)
%%   Oct 21 16:10:27 hwin pppd[19873]:  (ACK)
%%   Oct 21 16:10:27 hwin pppd[19873]: ipcp: received COMPRESSTYPE
%%   Oct 21 16:10:27 hwin pppd[19873]: (45)
%%   Oct 21 16:10:27 hwin pppd[19873]:  (ACK)
%%   Oct 21 16:10:27 hwin pppd[19873]: ipcp: returning Configure-ACK
%%   Oct 21 16:10:28 hwin pppd[19873]: fsm_sdata(IPCP): Sent code 2, id 1.
%%   Oct 21 16:10:30 hwin pppd[19873]: fsm_sdata(IPCP): Sent code 1, id 1.
%%   Oct 21 16:10:30 hwin pppd[19873]: IPCP: sending Configure-Request, id 1
%%   Oct 21 16:10:30 hwin pppd[19873]: fsm_rconfreq(IPCP): Rcvd id 255.
%%   Oct 21 16:10:31 hwin pppd[19873]: ipcp: received ADDR
%%   Oct 21 16:10:31 hwin pppd[19873]: (10.144.153.51)
%%   Oct 21 16:10:31 hwin pppd[19873]:  (ACK)
%%   Oct 21 16:10:31 hwin pppd[19873]: ipcp: received COMPRESSTYPE
%%   Oct 21 16:10:31 hwin pppd[19873]: (45)
%%   Oct 21 16:10:31 hwin pppd[19873]:  (ACK)
%%   Oct 21 16:10:31 hwin pppd[19873]: ipcp: returning Configure-ACK
%%   Oct 21 16:10:31 hwin pppd[19873]: fsm_sdata(IPCP): Sent code 2, id 255.
%%   Oct 21 16:10:31 hwin pppd[19873]: fsm_rconfack(IPCP): Rcvd id 1.
%%   Oct 21 16:10:31 hwin pppd[19873]: ipcp: up
%%   Oct 21 16:10:31 hwin pppd[19873]: local  IP address 10.144.153.104
%%   Oct 21 16:10:31 hwin pppd[19873]: remote IP address 10.144.153.51
%% \end{verbatim} \end{tscreen}
%% \normalsize
%% \rm
%%
%%  (Note---I am using STATIC IP numbers---hence my machine sent that to
%%  the PPP server---you won't see this if you are using DYNAMIC IP
%%  numbers.)  Also, this server requires a specific command to start ppp
%%  at its end.

%%  This looks OK---so test it out as before with pings to IP numbers and
%%  host names.

%%  Fire up you web browser or whatever and go surfing---you are
%%  connected!

\subsection{Prekinitev povezave PPP}

Ko ste končali s povezavo PPP, uporabite standardni ukaz \texttt{ppp-off}
za njeno prekinitev (spomnite se, da morate biti \texttt{root} ali
član skupine \texttt{ppp}!).

%%  In your system log you will see something like:-
%%
%% \begin{tscreen} \begin{verbatim}
%%   Oct 21 16:10:45 hwin pppd[19873]: Interrupt received: terminating link
%%   Oct 21 16:10:45 hwin pppd[19873]: ipcp: down
%%   Oct 21 16:10:45 hwin pppd[19873]: default route ioctl(SIOCDELRT): Bad address
%%   Oct 21 16:10:45 hwin pppd[19873]: fsm_sdata(LCP): Sent code 5, id 2.
%%   Oct 21 16:10:46 hwin pppd[19873]: fsm_rtermack(LCP).
%%   Oct 21 16:10:46 hwin pppd[19873]: Connection terminated.
%%   Oct 21 16:10:46 hwin pppd[19873]: Exit.
%% \end{verbatim} \end{tscreen}
%% 
%%   Don't worry about the SIOCDELRT---this is just pppd noting that it is
%%   terminating and is nothing to worry about.

\subsection{Odpravljanje pogostih težav, ko povezava deluje}

Ena od težav, na katero boste naleteli, je, da bodo mnogi ponudniki
storitev podpirali le programske pakete za povezavo, ki jih sami
distribuirajo svojim novim uporabnikom.  Ti paketi so tipično za
Microsoft Windows -- in mnogi oddelki za pomoč pri ponudnikih
storitev ne vedo ničesar o Unixu (ali Linuxu).  Zato bodite pripravljeni
na omejeno pomoč od njih!

Seveda lahko uslužbencu naredite uslugo in ga poučite o Linuxu
(vsakdo na oddelku za pomoč pri ISP bi moral biti razumno
>>na tekočem<< s pojmi Interneta, in to pomeni, da bi moral
imeti doma škatlo z Linuxom -- seveda jo ima)!

\subparagraph*{Težave z razreševanjem naslovov.}

Prav -- vaša povezava PPP je vzpostavljena, teče in lahko pingate
strežnik PPP z njegovo številko IP (druga ali >>oddaljena<<
(angl.\ remote) številka IP, ki jo pokaže \texttt{ifconfig ppp0}),
vendar ne morete seči dlje od tega.

Najprej poskusite pingati številke IP, ki ste jih določili v datoteki
\texttt{/etc/resolv.conf} kot imenske strežnike.  Če to deluje, lahko
vidite preko vašega strežnika PPP (razen če ima ta enako številko IP,
kot je >>oddaljena<< številka IP vaše povezave).  Zato zdaj poskusite
pingati polno internetno ime vašega ponudnika storitev
\begin{tscreen}
\$ \emph{ping moj.ponudnik.si}
\end{tscreen}
Seveda tukaj vstavite ime vašega pravega ISP.  Če to ne deluje, imate
težavo z razreševanjem imen.  To je verjetno zaradi tipkarske napake
v vaši datoteki \texttt{/etc/resolv.conf}.  Pozorno preverite to datoteko,
ali se v njej pojavlja informacija iz vzorčne datoteke
\texttt{/etc/resolve.conf} iz razdelka~\ref{sec-resolve.conf}.

Če še vedno ne deluje (in vaš ponudnik storitev zagotavlja, da njegov
imenski strežnik deluje), leži vaš problem nekje drugje -- in previdno
preverite vašo namestitev Linuxa (glejte predvsem dovoljenja
datotek).

Če še vedno ne morete pingati imenskih strežnikov vašega ISP-ja
z njihovimi številkami IP, so morda v okvari (pokličite jih po glasovnem
telefonu in preverite) ali so usmerjevalne težave na strani
vašega ISP-ja.

Ena od možnosti je, da je >>oddaljena stran<< strežnik za PPP z operacijskim
sistemom Linux, v katerega jedru ni bila podprta izbira za posredovanje
paketkov IP (angl.\ IP forwarding)!

\subparagraph*{Razhroščevanje neuspelega poskusa.}

Obstaja nešteto razlogov, da vaša povezava ne deluje -- \texttt{chat}
se ni uspešno povezal, imate umazano linijo itd.  Zato preverite
vaš sistemski dnevnik za indikacije.

Zelo pogost problem je, da ljudje prevedejo podporo za PPP v jedra, ko
pa poskusijo poganjati \texttt{pppd}, se jedro kljub temu pritoži, da
ne podpira PPP-ja!  Obstaja vrsta razlogov, kako se to lahko zgodi.

\begin{itemize}
\item Ni vam uspelo zagnati novega jedra, v katerega ste prevedli
  podporo za PPP.
\item Ni vam uspelo namestiti modula PPP, ki ste ga prevedli.
\item Pričakovali ste, da bodo moduli naloženi samodejno, pa niso.
\item Uporabljate napačno različico PPP-ja za vaše jedro.
\item Programa \texttt{pppd}-ja ne poganjate kot \texttt{root}.
\item V vaših zagonskih skriptih ste se nekje zatipkali.
\item Nepravilno se prijavljate na strežnik.
\item Na strežniku niste zagnali PPP.
\item Oddaljeni proces PPP se počasi zažene.
\item Privzeta pot (angl.\ default route) ni nastavljena.
\end{itemize}

In dosti drugih.  Preberite \emph{PPP FAQ} (ki je zares seznam vprašanj
in odgovorov).  To je zelo izčrpen sestavek in odgovori so tam!  Če tam
ni odgovora na vaše težave, vzrok težave ni v PPP!

\subparagraph*{Dobivanje pomoči, ko se vam popolnoma zatakne.}

Če ne morete pripraviti vaše povezave PPP do delovanja, se vrnite
skozi to poglavje in preverite vse -- v povezavi z izhodom, ki ga
naredita >>\verb|chat -v...|<< in >>\verb|pppd -d|<< v vašem
sistemskem dnevniku.

Preverite tudi dokumentacijo za PPP in FAQ ter druge dokumente, ki so
tam omenjeni!

Če ste obtičali, poskusite opisati svojo težavo v
\url{si.comp.os.unix} ali (v angleščini) v \url{comp.os.linux.misc} in
\url{comp.os.linux.networking}.  Te novičarske skupine, kot tudi
novičarsko skupino \url{comp.protocols.ppp}, dokaj redno pregledujejo
ljudje, ki vam lahko pomagajo s PPP.

Če se odločite iskati pomoč v novičarskih skupinah Useneta, prosim, ne
pošiljajte zelo dolgega sporočila, ki sestoji le iz razhroščevalnega
izhoda.  To pokuri ogromno mrežne pasovne širine.  Mnogo bolje
je opisati problem in morda vključiti nekaj vrstic razhroščevalnega izhoda
(definitivno ne več kot en zaslon).
