<!doctype linuxdoc system>

<article>

<!-- Title information -->

<title>Linux PPP Cómo
<author>Robert Hart, <tt/hartr@interweft.com.au/ <newline>
Traducción: David Marín Carreño
<tt/davefx@bigfoot.com/
<date>v3.0, 31 de Marzo de 1997. Traducción: 6 de Febrero de 1999
<abstract>
Este documento muestra cómo conectar su PC Linux a un servidor PPP, cómo
usar PPP para enlazar dos redes locales y da un método para configurar su
ordenador Linux como un servidor PPP. El documento también da ayuda para
conexiones PPP que no funcionen debido a fallos.

</abstract>

<!-- Tabla de contenidos -->

<toc>

<p>
<bf>Copyright</bf>
<p>
Este documento está distribuido bajo los términos de la licencia GPL
(Licencia pública GNU).

<p>
<bf>Distribución</bf>

<p>
La versión original de este documento se enviará a comp.os.linux.answers tan
pronto como se produzcan nuevas versiones. Además está disponible en formato
HTML en:

<itemize>
<item><em>Indice de documentos Como de Linux</em>
<tt><htmlurl url="http://sunsite.unc.edu/mdw/linux.html&num;howto"
name="http://sunsite.unc.edu/mdw/linux.html&num;howto"></tt>
<item><em>PPP-Cómo</em> <tt><htmlurl
url="http://www.interweft.com.au/other/ppp-howto/ppp-howto.html"
name="http://www.interweft.com.au/other/ppp-howto/ppp-howto.html"></tt>
</itemize>

<p>
Otros formatos (SGML, ASCII, postscript, DVI) están disponibles en
<em>Documentos cómo - otros formatos</em>
<tt><htmlurl
url="ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/other-formats"
name="ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/other-formats"></tt>.

<p>
Ya que sunsite.unc.edu suele tener gran carga, utilice un lugar réplica
apropiado cercano a usted.

<p>
La última versión traducida al castellano podrá siempre ser encontrada en
<em>La página Web de DaveFX</em>
<tt><htmlurl url="http://www.bigfoot.com/~davefx"
name="http://www.bigfoot.com/~davefx"></tt>

<p>
<bf>Agradecimientos</bf>

<p>
Mucha gente me ha proporcionado asistencia a la hora de
preparar este documento.  He de agradecer especialmente a Al Longyear por su
tutoría acerca de PPP (si hay errores en este tema, son culpa mía y no
suya), Greg Hankins (coordinador del sistema Como de Linux) y Debi Tackett
(de MaximumAccess.com) por las sugerencias tan útiles en estilo, orden de
contenidos, lógica y claridad de explicaciones...

<p>
Finalmente, mis agradecimientos a toda la gente que ha contactado conmigo 
por correo electrónico ofreciendo comentarios. También a todos los autores
de los COMO: la satisfacción por ayudar es la única recompensa que recibimos,
y es suficiente. Escribiendo este COMO estoy devolviendo un poco
la deuda que yo - como todos los demás usuarios de Linux - tengo con la
gente que escribe y mantiene nuestro querido sistema operativo. 

<sect>Introducción
<p>
PPP (el Protocolo Punto a Punto) es un mecanismo que sirve para crear y
ejecutar IP (el protocolo Internet) y otros protocolos de red a través de
un enlace serie, que puede ser una conexión serie directa (utilizando un
cable módem-nulo), o a través de un telnet o a través de una conexión que
utiliza módems y líneas telefónicas (y por supuesto líneas digitales
como RDSI).

<p>
Utilizando PPP, usted puede conectar su PC Linux a un servidor PPP y
acceder a los recursos de la red a la que el servidor está conectado
(casi) como si estuviera directamente conectado a esa red.

<p>
También puede configurar su PC Linux como un servidor PPP, por lo que
otros ordenadores podrían entrar en el suyo y acceder a los recursos de
su PC local y su red.

<p>
Como PPP es un sistema entre iguales, puede usar PPP en dos PCs Linux para
conectar dos redes (o una red local a Internet), creando una red de área
extensa (WAN).

<p>
Una de las mayores diferencias entre PPP y una conexión Ethernet es, por
supuesto, la velocidad: una conexión Ethernet estándar funciona a una
velocidad máxima teórica de 10 Mbs (millones de bits por segundo),
mientras que un módem analógico funciona como mucho a 56 kbps (miles de
bits por segundo).

<p>
También, dependiendo del tipo de conexión PPP, pueden haber otras
limitaciones en el uso de algunas aplicaciones y servicios.

<sect1>Clientes y Servidores
<p>
PPP es, estrictamente, un protocolo <bf/entre iguales/; esto quiere decir
(técnicamente) que no hay diferencia entre la máquina que accede y la
máquina que es accedida. Sin embargo, para aclarar las cosas, es útil
pensar en términos de <bf/servidores/ y <bf/clientes/.

<p>
Un ordenador será <bf/cliente/ cuando acceda a una máquina para establecer
una conexión PPP. La máquina a la que se conecta es el <bf/servidor/.

<p>
Cuando se configure una máquina Linux para que reciba y controle
conexiones PPP entrantes, se estará configurando un <bf/servidor/ PPP.

<p>
Cualquier PC Linux puede ser tanto un servidor PPP como un cliente -
incluso simultáneamente si se tiene más de un puerto serie (y módems si
son necesarios). Como se comentó antes, una vez realizada la conexión, no
hay diferencia real entre clientes y servidores en lo que a PPP respecta.

<p>
Este documento se refiere a la máquina que inicia la llamada (que accede)
como el <bf/CLIENTE/, mientras que la máquina que contesta el teléfono,
comprueba la autenticidad de la petición de entrada (usando nombres de
usuario, contraseñas y posiblemente otros mecanismos) es denominada
<bf/SERVIDOR/.

<p>
El uso de PPP como cliente para conectar una o más máquinas de un cierto
lugar a Internet es, probablemente, el uso en el que la mayor parte de la
gente está interesada - es decir: utilizar su PC Linux como cliente.

<p>
El procedimiento descrito en este documento le permitirá establecer y
automatizar su conexión a Internet.

<p>
Este documento también le dará consejos acerca de cómo configurar su PC
Linux como <bf/servidor/ PPP y para interconectar dos redes locales (con
encaminamiento completo) utilizando PPP (esto es a lo que se denomina
frecuentemente ``establecer un enlace WAN'' - red de área extensa).

<sect1>Diferencias entre las distribuciones Linux
<p>
Hay muchas distribuciones Linux distintas y todas ellas tienen su propia
idiosincrasia y distintas maneras de hacer las cosas.

<p>
En particular, hay dos maneras distintas de inicializar un ordenador Linux
(o Unix), configurando sus interfaces y realizando otras tareas.

<p>
Estas son la <bf/inicialización de sistema BSD/ y la <bf/inicialización de
sistema System V/. Si pasa por un foro de noticias sobre Unix, podría
encontrarse con guerras de religión entre los partidarios de estos
sistemas. Si ese tipo de cosas le divierten, ¡puede pasar un buen rato si
se apunta a la pelea! 

<p>
Posiblemente, las distribuciones más ampliamente extendidas son:

<itemize>
<item>Slackware<newline>
que usa la inicialización de sistema estilo BSD
<item>Red Hat (y su antiguo socio Caldera)<newline>
que usa la inicialización de sistema SysV (aunque ligeramente modificada)
<item>Debian<newline>
que usa la inicialización de sistema SysV
</itemize>

<p>
El estilo BSD de inicialización suele guardar los archivos de inicialización
en <tt>/etc/...</tt> y esos archivos son:-

<code>
 /etc/rc
 /etc/rc.local
 /etc/rc.serial
     (y posiblemente otros más)
</code>

<p>
En los últimos tiempos, algunos esquemas de inicialización de sistema BSD
usan el directorio <tt>/etc/rc.d...</tt> para guardar los ficheros de
inicialización en lugar de ponerlo todo bajo <tt>/etc</tt>.

<p>

La inicialización System V mantiene sus ficheros de inicialización en
el directorio <tt>/etc/...</tt> o  <tt>/etc/rc.d/...</tt> y en varios
subdirectorios situados en este mismo directorio:-

<code>
drwxr-xr-x   2 root     root         1024 Jul  6 15:12 init.d
-rwxr-xr-x   1 root     root         1776 Feb  9 05:01 rc
-rwxr-xr-x   1 root     root          820 Jan  2  1996 rc.local
-rwxr-xr-x   1 root     root         2567 Jul  5 20:30 rc.sysinit
drwxr-xr-x   2 root     root         1024 Jul  6 15:12 rc0.d
drwxr-xr-x   2 root     root         1024 Jul  6 15:12 rc1.d
drwxr-xr-x   2 root     root         1024 Jul  6 15:12 rc2.d
drwxr-xr-x   2 root     root         1024 Jul 18 18:07 rc3.d
drwxr-xr-x   2 root     root         1024 May 27  1995 rc4.d
drwxr-xr-x   2 root     root         1024 Jul  6 15:12 rc5.d
drwxr-xr-x   2 root     root         1024 Jul  6 15:12 rc6.d
</code>

<p>
Si intenta averiguar dónde se configuran la interfaz Ethernet y las
rutas de red asociadas, deberá explorar estos ficheros buscando las
órdenes que lo hacen.

<sect1>Herramientas de configuración PPP específicas de cada distribución
<p>
En algunas distribuciones (como Red Hat y Caldera), hay un sistema de
marcado PPP configurado bajo X-Window.  Este COMO no cubre esas
herramientas específicas de distribución. Si tiene problemas con ellas,
contacte con los autores.

<p>
Para los usuarios de Red Hat, existe una <em>Guía PPP Red Hat</em>
<tt><htmlurl
url="http://www.interweft.com.au"
name="http://www.interweft.com.au"></tt>
en el área de recursos de Linux y también en <em>Red Hat Software</em>
<tt><htmlurl
url="http://www.redhat.com" name="http://www.redhat.com"></tt>
en el área de servicio técnico.

<sect>Direcciones IP
<p>
Cualquier dispositivo que se conecta a Internet debe tener su propia y
única dirección IP. Estas son asignadas en cada país por una autoridad
central.

<p>
Si está conectando una red de área local (LAN) a Internet, <bf/DEBE/ usar
una dirección IP de alcance local para todos y cada uno de los
dispositivos que tenga en la red. <bf/NO DEBE/ inventarse direcciones IP y
usarlas al conectarse con otra RED (aunque no sea Internet). Lo peor que
puede pasar es que simplemente nada funcione y el sistema se caiga al
comenzar a interferir su número IP 'robado' con las comunicaciones de otra
máquina que ya se encontraba usando el número IP que se acaba de inventar.

<p>
Dese cuenta de que las direcciones IP utilizadas a lo largo de este
documento (con algunas excepciones) son direcciones de "red
no conectada" que están reservadas para su uso en redes que no están
(jamás) conectadas a la red de redes.

<p>
Estas son las direcciones IP que están específicamente reservadas para
redes locales no conectadas a Internet (también llamadas redes privadas).
Las direcciones IP son:-

<itemize>
<item>Dirección de red clase uno A<newline>
10.0.0.0 (máscara de red 255.0.0.0)
<item>Direcciones de red clase 16 B<newline>
172.16.0.0 - 172.31.0.0 (máscara de red 255.255.0.0)
<item>Direcciones de red clase 256 C<newline>
192.168.0.0 - 192.168.255.0 (máscara de red 255.255.255.0)
</itemize>

<p>
Si tiene una red local <bf/sin/ direcciones IP reservadas por la
autoridad responsable en su país, debería utilizar para sus máquinas uno
de estos tipos de direcciones.

<p>
Estos números <bf/nunca/ deben ser utilizados en Internet.

<p>
Sin embargo, pueden usarse para la Ethernet local en una máquina que está
conectada a Internet. Esto es porque las direcciones IP se refieren a
interfaces de red, no a ordenadores. Su interfaz Ethernet puede usar
10.0.0.1 (por ejemplo), mas cuando se conecte a Internet usando PPP, su
interfaz PPP conseguirá del servidor otra dirección IP (que sí será
válida). Su PC tendrá conectividad Internet, pero los otros ordenadores de
su red no.

<p>
Sin embargo, usando Linux, gracias a su capacidad para enmascaramiento de
IP (también conocido como NAT - Traducción de direcciones de red) y
mediante el software ipfwadm, podrá conectar su red local a Internet (con
alguna restricción de servicios), incluso sin llegar a tener direcciones
IP válidas para las máquinas de su Ethernet.

<p>
Para más información sobre cómo hacer esto lea el mini-Como de
Enmascaramiento de IP en <em>Linux IP Masquerade mini HOWTO</em>
<tt><htmlurl
url="http://sunsite.unc.edu/mdw/HOWTO/mini/IP-Masquerade"
name="http://sunsite.unc.edu/mdw/HOWTO/mini/IP-Masquerade"></tt>

<p>
Para la mayoría de usuarios, que conectan una sola máquina a un proovedor
de servicios Internet vía PPP, no será necesario obtener una dirección IP
(o más exactamente, una dirección de red).

<p>
Si desea conectar una pequeña red local a Internet, muchos proovedores de
servicios de Internet (ISPs) pueden conseguirle una subred dedicada (una
secuencia específica de números IP) a partir de su espacio de direcciones
IP. En otro caso, siempre puede usar el enmascaramiento de IPs.

<p>
La mayor parte de los proveedores usan asignación de direcciones IP
<bf/dinámicas/ para los usuarios que conectan un solo PC a Internet. Es
decir: el servicio PPP con el que se contacta comunicará a su sistema,
como parte del proceso de conexión, qué dirección IP se utilizará durante
esa sesión para su interfaz PPP. Esa dirección no será la misma cada vez
que usted se conecte a su proovedor.

<p>
Con las direcciones IP dinámicas, usted <bf/no/ tendrá la misma dirección
IP cada vez que se conecte. Esto tiene consecuencias para aplicaciones de
tipo servidor existentes en su máquina Linux tales como sendmail, ftpd,
httpd y algunas por el estilo. Estos servicios se basan en la premisa de
que el ordenador que ofrece el servicio está accesible siempre con la
misma dirección IP (o al menos con un nombre fijo cuya dirección IP esté
disponible vía DNS).

<p>
Las limitaciones de servicio debidas a la asignación de direcciones IP
dinámicas (y maneras de solucionarlas, siempre y cuando sea posible)
serán comentadas más tarde en este documento.

<sect>Metas de este documento
<sect1>Configurar un cliente PPP
<p>
Este documento da información a toda aquella gente que desee utilizar
Linux y PPP para conectarse con un servidor PPP y establecer una conexión
IP mediante PPP. Se asumirá que PPP ha sido compilado e instalado en su
sistema Linux (la integración de soporte PPP en el núcleo mediante 
reconfiguración y recompilación se trata brevemente).

<p>
Aunque puede utilizar DIP (el método estándar para crear una conexión
SLIP) para establecer una conexión PPP, los scripts de DIP son,
generalmente, bastante complejos. Por ello, este documento NO tratará el
uso de DIP para establecer una conexión PPP.

<p>
En su lugar, este documento describe el software PPP estándar para Linux
(chat/pppd).

<sect1>Conectar dos redes locales o una red local a Internet utilizando PPP
<p>
Este documento da información (básica) acerca de la interconexión de dos
redes locales entre sí, o de una red local con Internet utilizando PPP.

<sect1>Configurar un servidor PPP
<p>
Este documento da consejos acerca de cómo configurar su PC Linux como 
servidor PPP (permitiendo a otra gente conectarse a su PC Linux y
establecer una conexión PPP).

<p>
Debe tener en cuenta de que hay miles de maneras de configurar Linux como
servidor PPP. Este documento describe un método - el usado por el autor
para configurar pequeños servidores PPP (cada uno con 16 módems).

<p>
Se sabe que este método funciona bien. Sin embargo, no tiene por qué ser
el mejor.

<sect1>Utilizar PPP en una conexión con cable módem nulo
<p>
Este documento explica brevemente la utilización de PPP para conectar dos
PCs Linux mediante un cable módem nulo. También es posible conectar de
esta manera PCs ejecutando otros sistemas operativos con un PC Linux. Para
hacerlo, necesitará consultar la documentación de los sistemas operativos
en los que usted esté interesado.

<sect1>Este documento, por ahora, NO abarca temas como...
<p>
<itemize>
<item>La compilación del demonio PPP<newline>
Vea la documentación que acompaña a la versión de pppd que esté
utilizando.

<item>Conectar y configurar un módem bajo Linux (en profundidad)<newline>
Lea el Serial-COMO y visite <em>Modem Setup Information</em>
<tt><htmlurl
url="http://www.in.net/info/modems/index.html"
name="http://www.in.net/info/modems/index.html"></tt>
para conseguir información que pueda ayudarle a configurar su módem.

<item>Utilizar DIP para realizar conexiones PPP<newline>
Use chat en su lugar...

<item>Utilizar socks o enmascaramiento de IPs<newline>
Hay dos documentos maravillosos que tratan esos dos temas.

<item>Utilizar <tt/diald/ para configurar una conexión
automatizada<newline>
Vea la documentación de <tt/diald/ para conseguir información acerca de
ello.

<item>Utilizar EQL para conectar dos módems en un enlace PPP único.

<item>Métodos específicos de conexión PPP (como la herramienta de
configuración de red de Red Hat 4.x)<newline>
Busque en la documentación de la distribución ayuda acerca de los métodos
utilizados.

<item>El creciente número de herramientas disponibles para automatizar la
configuración de PPP<newline>
Vea la documentación adecuada a cada caso.
</itemize>

<sect>Versiones de Software tratadas
<p>
Este documento COMO asume que se encuentra utilizando un núcleo Linux
1.2.x con el software 2.1.2 o Linux 1.3.x/2.x.x y PPP 2.2 o superior.

<p>
En el momento de escribir estas líneas, la última versión oficial de PPP
disponible para Linux era ppp-2.2f. La nueva versión (ppp-2.3) estaba
todavía en fase beta.

<p>
Es posible utilizar PPP 2.2.0 con el núcleo 1.2.13. Ello requiere parchear
el núcleo. Se recomienda que los usuarios de la versión 1.2.13 del
núcleo se actualicen a ppp-2.2 ya que incluye bastantes correcciones de
errores y mejoras.

<p>
<bf/También, debe saber que NO PUEDE utilizar la versión 2.1.2 de PPP con
ninguna versión de Linux 2.x.x/

<p>
Dése cuenta de que este documento <bf/NO/ trata los problemas que puedan
surgir a partir de la utilización de módulos cargables para el núcleo de
Linux 2.x.x. Por favor, lea el mini-CÓMO kerneld y la documentación de los
módulos del núcleo 2.x.x (situados en
<tt>/usr/src/linux/Documentation/...</tt>).

<p>
<bf>Como este documento está diseñado para ayudar a los usuarios novatos,
se recomienda la utilización de una versión del núcleo de Linux y una
versión apropiada de PPP, cuyo uso conjunto sea estable.</bf>

<sect>Otros documentos útiles/importantes
<p>
Se recomienda que los usuarios lean :-
<itemize>
<item>la documentación incluida con el paquete PPP;
<item>las páginas de manual de pppd y chat;<newline>
(utilice <tt/man chat/ y <tt/man pppd/ para explorarlas)
<item>la Guía del Administrador de Redes con Linux (GARL);<newline>
ver <em>Página oficial del proyecto LuCAS (Linux en Castellano)</em>
<tt><htmlurl url="http://lucas.ctv.es" name="http://lucas.ctv.es"></tt>
<item>los documentos Red2-COMO y Red3-COMO;<newline>
ver <em>Linux NET-2/3-HOWTO</em>
<tt><htmlurl url="http://sunsite.unc.edu/mdw/HOWTO/NET-2-HOWTO.html"
name="http://sunsite.unc.edu/mdw/HOWTO/NET-2-HOWTO.html"></tt>
<item>La documentación del núcleo situada en 
<tt>/usr/src/linux/Documentation</tt> tras instalar el código fuente de
Linux;
<item>La página de configuración del módem - ver <em>Modem Setup
Information</em>
<tt><htmlurl url="http://www.in.net/info/modems/index.html"
name="http://www.in.net/info/modems/index.html"></tt>
<item>Los excelentes libros de Unix/Linux publicados por O'Reilly and
Associates. Vea (<em>O'Reilly and Associates On-Line Catalogue</em>
<tt><htmlurl url="http://www.ora.com/" name="http://www.ora.com/"></tt>).
Si usted es novato, <bf/corra/ (no vaya) a su librería informática y
compre uno de estos libros inmediatamente.
<item>El PUF-PPP mantenido por Al Longyear, disponible en <em>Linux
PPP-FAQ</em>
<tt><htmlurl
url="ftp://sunsite.unc.edu/pub/Linux/docs/faqs"
name="ftp://sunsite.unc.edu/pub/Linux/docs/faqs"></tt>.<newline>
Este documento contiene mucha información en formato pregunta/respuesta
que es muy útil a la hora de averiguar por qué PPP no funciona
(adecuadamente).
<item>El creciente número de libros sobre Linux de muchas editoriales y
autores; <newline>
Le sugiero que compruebe la vigencia de estos libros. El desarrollo de
Linux y de las distribuciones tienden a evolucionar muy rápido, mientras
que la actualización de los libros suele desarrollarse múcho más despacio.
Comprar un libro excelente (y hay muchos) que está anticuado puede causar
a los nuevos usuarios bastante confusión y mucha frustración.
</itemize>

<p>
El mejor punto de partida a la hora de buscar documentación para Linux es
<em>la Web del Proyecto de Documentación de Linux (LDP)</em>
<tt><htmlurl url="http://sunsite.unc.edu/mdw/"
name="http://sunsite.unc.edu/mdw/"></tt>, o de su equivalente hispano
<em>la Web del Proyecto LuCAS (Linux en Castellano)</em>
<tt><htmlurl url="http://lucas.ctv.es" name="http://lucas.ctv.es"></tt>.
Los documentos COMO tienden a ser revisados de manera periódica.

<p>
Usted puede utilizar este documento para crear su conexión PPP sin
leer ninguno de los otros documentos, pero si los lee podrá comprender
mejor lo que sucede en su ordenador. También podrá solucionar los
problemas usted mismo (o al menos podrá hacer preguntas más inteligentes
en los foros de noticias comp.os.linux... o las listas de correo sobre
Linux).

<p>
Estos documentos (al igual que otros varios, incluyendo las referencias
relevantes) dan una explicación adicional y más detallada a lo que se
expone en este documento HOWTO.

<p>
Si conecta una red local a Internet vía PPP, necesitará tener una cantidad
considerable de conocimientos de redes TCP/IP. Además de los documentos
anteriormente mencionados, encontrará de gran ayuda los libros de O'Reilly 
<tt>&dquot;</tt>TCP/IP Network Administration<tt>&dquot;</tt> y
<tt>&dquot;</tt>Building Internet Firewalls<tt>&dquot;</tt>.

<sect1>Listas de correo útiles
<p>
Hay muchas listas de correo sobre Linux que funcionan como un medio de
comunicación entre usuarios de niveles distintos. Suscríbase a una de ellas.
Le interesará y contribuirá a su experiencia.

<p>
<bf/Un consejo/: algunas listas de correo están especialmente dirigidas a
gente con alto nivel de conocimientos. Mientras que nadie se quejará si
usted "espía" (se suscribe pero no envía mensajes), es probable que se gane
comentarios despectivos (cuando no insultos) si usted envía preguntas de
"novato" a listas inadecuadas.

<p>
Esto no es debido a que los usuarios de alto nivel odien a los nuevos
usuarios, sino a que esas listas están ahí para gestionar temas de un
determinado nivel de dificultad.

<p>
Desde aquí se le anima a que se adhiera a las listas que permiten
suscripción pública, pero mantenga sus comentarios de acuerdo con el tema de
la lista.

<p>
Un buen punto de partida para buscar listas de correo Linux es <em>Linux
Mailing List Directory</em>
<tt><htmlurl
url="http://summer.snu.ac.kr/~djshin/linux/mail-list/index.shtml"
name="http://summer.snu.ac.kr/~djshin/linux/mail-list/index.shtml"></tt>.


<sect>Resumen de cómo hacer que PPP funcione como cliente 
<p>
Este documento contiene una gran cantidad de información, y con cada versión
crece.

<p>

Como consecuencia, esta sección intenta dar un resumen conciso de las
acciones que deben llevarse a cabo para hacer que su sistema Linux se
conecte como cliente a un servidor PPP.

<sect1>Obtener/Instalar el software
<p>
Si su distribución Linux no incluye el software PPP, necesitará obtenerlo:
<em>el demonio PPP para Linux</em> <tt><htmlurl
url="ftp://sunsite.unc.edu/pub/Linux/system/Network/serial/ppp/ppp-2.2.0f.tar.gz"
name="ftp://sunsite.unc.edu/pub/Linux/system/Network/serial/ppp/ppp-2.2.0f.tar.gz"></tt>.

<p>
A la hora de escribir estas líneas, esta era la última versión oficial. Sin
embargo, escoja la última versión disponible (ppp-2.3 estaba en fase beta a
la hora de escribir esto, y debería ser lanzado en un breve plazo).

<p>
El paquete PPP contiene instrucciones acerca de cómo compilar e instalar el
software <bf/por lo que este COMO no las incluye/.

<sect1>Compilar el soporte PPP en el núcleo
<p>
Las operaciones PPP en Linux se dividen en dos partes
<itemize>
<item>el demonio PPP mencionado anteriormente
<item>el soporte de PPP en el núcleo
</itemize>

<p>
Muchas distribuciones dan soporte PPP en el núcleo en sus núcleos de
instalación por defecto, pero otras no lo hacen.

<p>
Si en el momento de iniciar Linux, el núcleo da mensajes como

<code>
PPP Dynamic channel allocation code copyright 1995 Caldera, Inc.
PPP line discipline registered.
</code>

<p>
su núcleo tiene integrado el soporte PPP.

<p>
Sin embargo, es probable que desee compilar su propio núcleo sea cual sea su
distribución, para poder así darle a los recursos de su sistema el uso más
eficiente dada su configración particular de hardware. Es valioso recordar que
el núcleo no puede ser guardado en el swap, por lo que mantener el núcleo lo
más pequeño que sea posible tiene sus ventajas en máquinas de memoria limitada.

<p>
Este documento da unas instrucciones mínimas de recompilación del núcleo en
la sección <ref id="Kernel configuration" name="Configurar el Núcleo Linux">.

<p>
Para más detalles, busque el Kernel-COMO en <em>la página oficial del
proyecto Insflug (traducciones de documentos COMO)</em>
<tt><htmlurl url="http://www.insflug.org" name="www.insflug.org"></tt>

<sect1>Obtener información de su proveedor de servicios de Internet (ISP)
<p>
Hay casi un número infinito de maneras en las que se puede configurar un
servidor PPP. Para conectarse a su ISP (o servidor PPP corporativo para
acceder a su intranet), deberá obtener información acerca de cómo funciona
su servidor.

<p>
Debido a que usted está utilizando Linux, puede tener algunos problemas con
los servicios de ayuda de algunos ISP (y servidores PPP de intranet) que
saben sólo acerca de los clientes de MS Windows.

<p>
Sin embargo, un número creciente de ISPs utilizan Linux para dar su
servicio - y Linux también está penetrando en el entorno empresarial, por lo
que podría ser ayudado si tiene problemas.

<p>
En la sección <ref id="Server info" name="Conseguir la información necesaria
de su servidor PPP"> se informa de lo que necesitará saber acerca del
servidor PPP al que se va a conectar - y cómo averiguar la información que
necesita saber.

<sect1>Configurar su módem y puerto serie
<p>
Para conectar a un servidor PPP y obtener la mejor tasa de transferencia
posible, su módem necesita ser configurado correctamente.

<p>
De manera similar, los puertos series de su módem y de su ordenador
necesitan estar configurados correctamente.

<p>
La sección <ref id="Modem" name="Configurar el módem y el puerto serie">
da información acerca de esto.

<sect1>Configurar la resolución de nombres (DNS)
<p>
Además de los ficheros que ejecutan PPP y de realizar la conexión
automatizada al servidor PPP, hay un número de ficheros de configuración que
deben ser modificados para que el ordenador pueda traducir nombres como
<tt/www.interweft.com.au/ a la dirección IP realmente utilizada para
contactar con ese ordenador. Este proceso se denomina resolución de nombres.
Los ficheros son:-

<itemize>
<item><tt>/etc/resolv.conf</tt>
<item><tt>/etc/host.conf</tt>
</itemize>

<p>
La sección <ref id="DNS" name="Configurar la resolución de nombres">
da más detalles acerca de esto.

<p>
En particular, <bf/NO/ necesita ejecutar un servidor de nombres en su PC
Linux para conectarse a Internet (aunque pueda desearlo). Todo lo que tiene
que saber es conocer, al menos, la dirección IP de un servidor de nombres
que pueda utilizar (preferiblemente el de su ISP).

<sect1>PPP y los privilegios de root
<p>
Debido a que establecer un enlace PPP entre su ordenador Linux y otro
servidor PPP requiere la manipulación de dispositivos de red (la interfaz
PPP es una interfaz de red) y de la tabla de encaminamiento del núcleo, pppd
requiere privilegios de root.

<p>
Para más detalles acerca de esto, lea la sección <ref id="root" name="Usar
PPP y privilegios de root">.

<sect1>Comprobar los ficheros PPP de su distribución y configurar las
opciones de PPP
<p>
Hay un número de ficheros de configuración que necesitan ser configurados
para hacer que PPP funcione. Hay ejemplos en la distribución PPP y esta
sección muestra qué ficheros debería tener:-

<code>
/etc/ppp/options
/etc/ppp/scripts/ppp-on
/etc/ppp/scripts/ppp-on-dialer
/etc/ppp/options.tpl
</code>

<p>
Puede que necesite crear algunos ficheros adicionales dependiendo de
exáctamente qué desea alcanzar con PPP:-

<code>
/etc/ppp/options.ttyXX
/etc/ppp/ip-up
/etc/ppp/pap-secrets
/etc/ppp/chap-secrets
</code>

<p>
En suma, el demonio PPP puede utilizar un gran número de opciones de línea
de órdens y es importante utilizar las correctas; esta sección le lleva a
través de las opciones estándar de PPP y le ayuda a escoger las opciones
que debería usar.

<p> Para más detalles acerca de esto, lea <ref id="options"
name="Configurando los ficheros de conexión PPP">.

<sect1>Si su servidor PPP utiliza PAP (Protocolo de Autentificación de
Contraseñas)
<p>
Muchos ISPs y servidores PPP corporativos usan PAP. Si su servidor <bf/no/
requiere el uso de PAP (si puede conectarse manualmente y recibir las
preguntas estándar de nombre de usuario/contraseña en modo texto entonces no
usa PAP), puede ignorar esta sección.

<p>
En lugar de conectarse a un servidor utilizando el nombre de usuario y
contraseña cuando el servidor se lo pida, un servidor PPP que utilice PAP
no requiere un acceso basado en texto.

<p>
La información de autentificación de usuario es intercambiada como parte del
protocolo de control de conexión (LCP) que es lo primero que se realiza al
establecer un enlace PPP.

<p>
La sección <ref id="pap" name="Si su servidor PPP utiliza PAP"> da
información acerca de los ficheros que necesita configurar para establecer
un enlace PPP utilizando PAP.

<sect1>Conectar con el servidor PPP manualmente
<p>
Una vez configurados los ficheros básicos, es una buena idea probarlos
conectando (utilizando minicom o seyon) y arrancando pppd en su PC Linux
manualmente.

<p>
Vea la sección <ref id="manual" name="Establecer la conexión PPP
manualmente"> para conseguir los detalles completos acerca de esto.

<sect1>Automatizar su conexión PPP
<p>
Una vez que puede conectarse manualmente, puede pasar a configurar una serie
de scripts que automatizaran el establecimiento de la conexión.

<p>
La sección <ref id="automate" name="Automatizar las conexiones - Crear los
scripts de conexión"> trata la creación de los scripts necesarios,
centrándose en <tt/chat/ y realizando scripts para el proceso de entrada en
el servidor PPP.

<p>
Esta sección también trata los scripts para la autentificación
nombre/contraseña así como los scripts para servidores con autentificación
PAP/CHAP.

<sect1>Desconectar el enlace
<p>
Una vez que el enlace está establecido y funcionando, necesita poder
desactivar el enlace.

<p>
Esto es comentado en la sección <ref id="off" name="Desactivar el enlace
PPP">.

<sect1>Si tiene problemas
<p>
Mucha gente tiene problemas para conseguir que PPP funcione bien. La
variedad de servidores PPP y de cómo requieren que se establezca la conexión
es enorme. De manera similar, hay muchas opciones de PPP - y alguna
combinación de las mismas es posible que no funcione.

<p>
Además de los problemas de conexión e inicio del servicio PPP, puede haber
problemas con los módems y con la propia línea telefónica.

<p>
La sección <ref id="problems" name="Solución de problemas"> da información
básica acerca de los errores más frecuentes, de cómo aislarlos y de cómo
solucionarlos.

<p>
Esta sección <bf/NO/ está orientada para tratar más que lo básico. Al
Longyear mantiene el PUF-PPP que contiene mucha más información acerca de
este tema.

<sect1>Tras realizar la conexión
<p>
Una vez que el enlace PPP está operativo (más concretamente, una vez que la
capa IP está operativa), Linux PPP puede ejecutar automáticamente (como
usuario root), un script para realizar <bf/cualquier/ función que pueda ser
ejecutada mediante un script.

<p>
La sección <ref id="ip-up" name="Tras realizar la conexión"> 
da información acerca del script <tt>/etc/ppp/ip-up</tt>, de los parámetros que
recibe de PPP y de cómo utilizarlo para realizar cosas como recoger su
correo de su cuenta en el ISP, enviar cualquier correo que tenga una
transmisión pendiente y similares.

<sect1>Problemas de servicios de IP estándar con una conexión PPP de IP
dinámica 
<p>
Tal y como se dijo en la introducción, las direcciónes IP dinámicas afectan
a la posibilidades de su PC Linux como servidor en Internet.  

<p>
La sección <ref id="dynamic-server" name="Problemas de servicios IP
estándar con una conexíon PPP de IP dinámica"> da información acerca de los
(principales) servicios afectados y de lo que puede hacer (si es posible)
para solucionarlo.

<sect>Configurar su Núcleo Linux<label id="Kernel configuration">
<p>
Para usar PPP, su núcleo Linux debe ser compilado para incluir soporte PPP.
Obtenga el código fuente Linux para su núcleo si no lo tiene ya - se
encuentra en <tt>/usr/src/linux</tt> en un sistema de ficheros estándar
Linux.

<p>
Compruebe este directorio - muchas distribuciones Linux instalan el arbol
fuente (ficheros y subdirectorios) como parte de su proceso de instalación.

<p>
Durante el arranque, su núcleo Linux imprime una gran cantidad de
información. Entre ella está la información acerca del soporte PPP que
incluya. Para visualizar esta información, lea su fichero syslog o utilice
<tt/dmesg | less/ para mostrar la información en la pantalla. Si su núcleo
incluye soporte PPP, podrá ver líneas como

<code>
PPP Dynamic channel allocation code copyright 1995 Caldera, Inc.
PPP line discipline registered.
</code>

<p>
(esta es para las series de núcleos Linux 2.0.x).

<p>
Los códigos fuente de Linux pueden obtenerse por ftp de <tt/ftp.kernel.org/
o de sus servidores réplica.

<sect1>Instalando el código fuente del núcleo Linux
<p>
Estas son breves instrucciones para obtener e instalar los fuentes del
núcleo Linux. Puede conseguir información completa acerca de esto de
<em>The Linux Kernel HOWTO</em>
<tt><htmlurl
url="http://sunsite.unc.edu/mdw/HOWTO/Kernel-HOWTO.html"
name="http://sunsite.unc.edu/mdw/HOWTO/Kernel-HOWTO.html"></tt>.

<p>
Para instalar y compilar el núcleo Linux, necesita tener abierta una cuenta
como root.

<enum>
<item>Cambie al directorio <tt>/usr/src</tt><newline>
<tt>cd /usr/src</tt>
<item>Compruebe <tt>/usr/src/linux</tt> para ver si ya posee los fuentes
instalados.
<item>Si no tiene los fuentes, consígalos del <em>directorio de fuentes de
núcleo Linux</em>
<tt><htmlurl url="ftp://ftp.kernel.org/pub/Linux/kernel/v2.2"
name="ftp://ftp.kernel.org/pub/Linux/kernel/v2.2"></tt>
o de su lugar réplica más cercano.<newline>
Si está buscando versiones anteriores del núcleo (como la 1.2.X), éstas se
guardan en <em>el directorio de fuentes de antiguos núcleos Linux</em>
<tt><htmlurl url="ftp://sunsite.unc.edu/pub/Linux/kernel/old"
name="ftp://sunsite.unc.edu/pub/Linux/kernel/old"></tt>.
<item>Escoja el núcleo adecuado - normalmente el más reciente es el que debe
buscar. Consígalo y ponga el fichero tar con los fuentes en
<tt>/usr/src</tt>.<newline>
<bf/Nota/: un fichero 'tar' es un archivo - posiblemente comprimido (como
los ficheros tar del núcleo de Linux) que contiene muchos ficheros en varios
directorios. Es el equivalente Linux a un fichero zip con varios
directorios.

<item>Si ya tiene el código fuente instalado pero desea actualizar a un
nuevo núcleo, debe eliminar los fuentes antiguos. Utilice la
orden<newline>
<tt>rm -rf /usr/src/linux</tt>
<item>Ahora descomprima y extraiga los fuentes utilizando la
orden<newline>
<tt>tar xzf linux-2.2.XX.tar.gz</tt>
<item>Ahora, <tt>cd /usr/src/linux</tt> y lea el fichero README. Contiene
una excelente información acerca de cómo configurar y compilar un nuevo
núcleo. Lea este fichero (es una buena idea imprimirlo y tener una copia a
mano mientras se compila hasta que esto se ha realizado un número suficiente
de veces para saber cómo funciona todo).
</enum>

<sect1>Conocer su hardware
<p>
Usted <bf/DEBE/ saber qué tarjetas/dispositivos tiene en su PC si desea
recompilar el núcleo. Para algunos dispositivos (como tarjetas de sonido)
también necesitará saber otros ajustes (como IRQ's, direcciones E/S y cosas
por el estilo).

<sect1>Compilación del Núcleo - Los núcleos 1.3.x y 2.x.x 
<p>
Para comenzar el proceso de configuración del núcleo utilice
   
<tscreen><verb>make menuconfig</verb></tscreen>

<p>
Esto ejecutará un sistema de configuración basado en menús con ayuda en
línea que le permite adelantarse o atrasarse en el proceso de configuración.

<p>
Hay también una interfaz basada en X Window muy recomendable:
<tscreen><verb>make xconfig</verb></tscreen>

<p>
Puede compilar el soporte PPP directamente dentro de su núcleo o como un
módulo cargable.

<p>
Si usted sólo utiliza PPP la mínima parte del tiempo en el que su máquina
Linux está funcionando, se recomienda compilar el soporte PPP como un módulo
cargable. Utilizando 'kerneld', su núcleo cargará automáticamente el/los
módulo(s) requeridos para proveer soporte PPP cuando arranque su proceso de
conexión PPP. Esto ahorra un valioso espacio en memoria: ninguna parte del
núcleo puede sacarse de la memoria, pero los módulos cargables se eliminan
automáticamente si no se utilizan.

<p>
Para hacer esto, debe habilitar el soporte de módulos cargables:-
<code>
 Enable loadable module support (CONFIG_MODULES) [Y/n/?] y
</code>

Para añadir soporte PPP en el núcleo, responda a la siguiente pregunta:-
<code>
 PPP (point-to-point) support (CONFIG_PPP) [M/n/y/?]  
</code>

<p>
Para utilizar un módulo PPP cargable, responda <bf/M/. Para compilar el
soporte PPP de modo interno al núcleo, responda <bf/Y/.

<sect1>Consideraciones generales de configuración del núcleo para PPP
<p>
Si desea configurar su PC Linux como servidor PPP, debe compilar el soporte
de IP forwarding.  Esto también es necesario si desea utilizar Linux para
enlazar dos redes locales o su red local a Internet.

<p>
Si está enlazando una red local a Internet (o entrelazando dos redes
locales), debería preocuparse acerca de la seguridad. Añadir el soporte para
cortafuegos IP en el núcleo es, probablemente, una OBLIGACIÓN.

<p>
También necesitará esto si desea utilizar enmascaramiento IP para conectar una
red local que utilice cualquiera de las direcciones IP reservadas para redes
locales desconectadas".

<p>
Una vez instalado y reiniciado el nuevo núcleo, puede comenzar a configurar
y a probar su(s) enlace(s) PPP.

<sect>Conseguir la información requerida del servidor PPP
<label id="Server info">
<p>
Antes de que pueda establecer una conexión PPP con un servidor, necesita
obtener la siguiente información (del administrador de sistema o de la 
gente de servicio técnico al usuario del servidor PPP):-

<itemize>
<item>El número de telefono a marcar para ese servicio<newline>
Si se encuentra detrás de una centralita, deberá marcar el número de la
centralita que le permite tener acceso exterior. Este suele ser el cero (0) 
o el nueve (9).

<item> ¿Usa el servidor direcciones IP DINÁMICAS O ESTÁTICAS?<newline>
Si el servidor utiliza direcciones IP ESTÁTICAS, entonces pude que necesite 
saber qué dirección IP utilizar para su parte de la conexión PPP. Si su ISP 
le proporciona un conjunto de direcciones IP válidas, necesitará saber qué 
direcciones IP puede utilizar y también necesitará saber cuál es la máscara 
de red (netmask)<newline>

La mayoría de los Proovedores de Servicio de Internet usan direcciones IP
DINÁMICAS. Tal y como se mencionó antes, esto provoca que algunos servicios
no puedan utilizarse en su plena potencia.<newline>

Sin embargo, incluso si usted utiliza direcciones IP ESTÁTICAS, la mayoría
de los servidores PPP nunca permitirán al cliente especificar una dirección
IP, ya que esto es un agujero de seguridad. Por ello, usted <bf/debe/ saber qué
dirección le será asignada.

<item>¿Qué son las direcciones IP de los servidores de nombres de dominio de
los ISPs?<newline>

Debería haber al menos dos, aunque sólo se necesita una.<newline>

Aquí podría haber un problema. La configuración PPP de MS Windows 95 permite
que la dirección del servidor de nombres se transmita al cliente como parte
del proceso de conexión. Por lo que su ISP (o la mesa de información de su
empresa) puede decirle que usted no necesita saber la dirección IP del
servidor de nombres.<newline>

En Linux, usted <bf/NECESITA/ conocer la dirección de al menos un servidor
de nombres. La implementación de PPP para Linux no permite la configuración
durante la conexión de la dirección del servidor de nombres - y es bastante
posible que nunca lo haga.<newline>

<bf/Nota/: aunque Linux (como cliente PPP) no puede aceptar la
dirección del servidor de nombres transmitida desde un servidor, sin
embargo, cuando actúa como servidor, puede pasar esta información a clientes
utilizando la opción de pppd <tt/dns-addr/.

<item>¿Requiere el servidor el uso de PAP/CHAP?<newline>
Este es el caso en que se necesita saber las "id" y "secret" a usar durante
la conexión. (Estas son, probablemente, su nombre de usuario y clave en el
ISP).

<item>¿El servidor inicia PPP automáticamente o debe enviarle órdenes para
que inicie PPP una vez que se ha conectado?<newline>
Si debe utilizar una orden para iniciar PPP, ¿cuál es?

<item>¿Es el servidor un sistema MS Windows NT? Si lo es, ¿utiliza el
sistema MS PAP/CHAP?<newline>
Muchas redes corporativas utilizan MS Windows NT de esta manera para,
parece, incrementar la seguridad.
</itemize>

<p>
Apunte cuidadosamente esta información - ¡va a necesitarla!

<sect>Configurar su módem y puerto serie<label id="Modem">
<p>
Debería asegurarse de que su módem está correctamente instalado y de que
sabe a qué puerto serie está conectado.

<p>
<bf>Recuerde</bf>:-
<itemize>
<item>DOS com1: = Linux /dev/ttyS0
<item>DOS com2: = Linux /dev/ttyS1<newline>
etcétera.
</itemize>

<p>
Es también importante recordar que is usted tiene 4 puertos serie, la
configuración estándar de un PC es que com1 y com3 compartan la IRQ4 y que
com2 y com4 compartan la IRQ3.

<p>
Si tiene dispositivos en los puertos serie estándar que comparten IRQ con su
módem va a tener problemas. Necesita asegurarse de que su módem de puerto
serie tiene su propia y única IRQ. Muchas tarjetas modernas de puerto serie
(y controladoras de puertos integradas en placas base de calidad) permiten
mover las IRQs de los puertos.

<p>
Si está ejecutando el un núcleo Linux versión 2, puede comprobar el uso de
IRQs utilizando
<tt>cat /proc/interrupts</tt>, lo que producirá una salida como
<code>
 0:    6766283   timer
 1:      91545   keyboard
 2:          0   cascade
 4:     156944 + serial
 7:     101764   WD8013
10:     134365 + BusLogic BT-958
13:          1   math error
15:    3671702 + serial
</code>

<p>
Esto muestra un puerto serie en IRQ4 (un ratón) y un puerto serie en IRQ15
(el módem permanente en el cual se basa la conexión PPP a Internet. (Hay
también un puerto serie en com2, IRQ3 y com4 están en IRQ14, pero como no
están en uso, no se muestran).

<p>
Atención - usted necesita saber qué es lo que está haciendo si va a jugar
con sus IRQs. No solo tendrá que abrir su ordenador, sacar las tarjetas 
y cambiar los puentes, pero sigue necesitando saber qué hay en cada IRQ.
En mi caso, mi PC está completamente basado en SCSI, por lo que puedo
desactivar las interfaces IDE de la placa base que normalmente utilizan
IRQ14 y 15.

<p>
Debe también recordar que si su PC arranca otro sistema operativo, mover la
IRQs puede provocar que otro sistema operativo no arranque bien - ¡o no
arranque en absoluto!

<p>
Si mueve sus puertos serie a IRQs no estándar, necesitará decirle a Linux
qué IRQ utiliza cada puerto. Esto se hace utilizando <tt/setserial/ y es
mejor hacerlo como parte del proceso de arranque en <tt/rc.local/ o
<tt/rc.serial/ que es llamado por <tt/rc.local/ como parte de la
inicialización de SysV. Para el ejemplo ilustrado anteriormente, las
órdenes a utilizar serían
<code>
/bin/setserial -b /dev/ttyS2 IRQ 11
/bin/setserial -b /dev/ttyS3 IRQ 15
</code>

<p>
Sin embargo, si utiliza módulos serie dinámicament cargados cada vez que se
necesiten cada vez que hagan falta por el proceso <tt/kerneld/, no puede
establecer y olvidar el IRQ etc establecido una vez durante el arranque.
Esto es porque si se descarga el módulo de serie, Linux olvida los ajustes
especiales.

<p>
Por lo que, si carga un módulo serial bajo petición, necesitará reconfigurar
las iRQs cada vez que el módulo se cargue.

<sect1>A note about serial ports and speed capabilities
<p>
Si utiliza un módem externo de alta velocidad (14.400 baudios o superior),
su puerto serie necesita ser capaz de manejar la salida que dicho módem es
capaz de producir, particularmente cuando los módems comprimen datos.

<p>
Esto requiere que su puerto serie use un chip UART moderno, como el
16550(A). Si está utilizando una máquina algo antigua, es posible que su
puerto serie tenga sólo un UART 8250, lo que causará considerables
problemas a la hora de usarlo con un módem de alta velocidad.

<p>
Use la orden
<tscreen><verb>setserial -a /dev/ttySx</verb></tscreen>

<p>
para que Linux le informe del tipo de UART que posee. Si no tiene un UART de
tipo 16550A, adquiera una nueva tarjeta controladora de puertos serie
(disponible por menos de 50 euros). Cuando adquiera su nueva tarjeta,
asegúrese de que puede cambiar las IRQ que vengan por defecto.

<p>
Nota: las primeras versiones del chip UART 16550 tenían un error. Esto fue
descubierto rápidamente y se lanzó una revisión del chip: el UART 16550A. 
Sin embargo, un número relativamente pequeño de chips defectuosos salieron a
la circulación. No es probable que usted se encuentre uno de ellos, pero
siempre debe buscar una respuesta que diga 16550A, particularmente en
tarjetas series de prestigio reconocido.

<sect1>Nombres de puertos serie
<p>
Como tradición, Linux utilizaba los dispositivos <tt/cuaX/ para salida de
datos y <tt/ttySx/ para entrada.

<p>
El código del núcleo que requería esto fue eliminado en las versiones 2.x.x
del núcleo. Ahora se deberían utilizar <tt/ttySx/ tanto para salida como
para entradas. Supongo que los dispositivos <tt/cuaX/ desaparecerán en
versiones futuras del núcleo.

<sect1>Configurar su módem
<p>
Es necesario que configure su módem correctamente para PPP - para hacer
esto, LEA EL MANUAL QUE ACOMPAÑA A SU MODEM. La mayor parte de los módems
vienen de fábrica con una <bf/configuración por defecto/ que selecciona las
opciones requeridas para PPP. La configuración mínima especifica:-
<itemize>
<item>Control de flujo hardware (RTS/CTS) (<tt>&amp;</tt>K3 en muchos
módems tipo Hayes)
</itemize>
<p>
Otras configuraciones (entre los comandos estándar Hayes) que debería
investigar son:-
<itemize>
<item>E1 Command/usr/src/linux-2.0.27/include/linux/serial.h Echo ON
(necesario para que chat funcione)
<item>Q0 Informe de los códigos de resultado (necesario para que chat
funcione)
<item>S0=0 Auto respuesta APAGADA (a menos que quiera que su módem
descuelgue y responda al teléfono)
<item><tt>&amp;</tt>C1 Detección de línea CONECTADA sólo tras conectar
<item><tt>&amp;</tt>S0 Data Set Ready (DSR) siempre CONECTADA
<item>(según)   Terminal de datos lista
</itemize>

<p>
Hay una Web que ofrece configuraciones de módem para una enorme variedad de
marcas y modelos: <em>Modem setup information</em>
<tt><htmlurl url="http://www.in.net/info/modems/index.html"
name="http://www.in.net/info/modems/index.html"></tt>.
Puede ayudarle en esto.

<p>
También es valioso investigar cómo funciona la conexión serie entre el
ordenador y el módem. La mayor parte de los módems modernos funcionan
con el puerto serie a una velocidad FIJA, y sin embargo permiten que la
conexión telefónica cambie su velocidad a la más alta que puedan manejar
tanto él como el módem remoto.

<p>
Esto es conocido como funcionamiento a velocidad partida. Si su módem da
soporte para ello, bloquee la conexión del puerto serie del módem a la
velocidad más alta que esté disponible (normalmente 115.200 baudios, pero
38.400 baudios pueden funcionar para módems de 14.400 baudios).

<p>
Utilice su software de comunicaciones (como minicom o seyon) para averiguar
la configuración de su módem y ajustarla a los valores requeridos por PPP.
Muchos módems muestran su configuración actual tras el comando
AT<tt>&amp;</tt>V, pero debería consultar el manual de su módem.

<p>
Si se hace un lío con los ajustes, puede volver a la tranquilidad
(normalmente) tecleando AT<tt>&amp;</tt>F para poner la configuración de
fábrica. (Para la mayor parte de los módems que he encontrado, la
configuración de fábrica incluye todo lo que necesita para PPP, pero debe
asegurarse de ello).

<p>
Una vez que ha conseguido la cadena adecuada de configuración del módem,
anótela. Debe tomar una decisión: guardar esa configuración en la memoria no
volátil del módem para que pueda ser recuperada enviando un comando AT
adecuado a su módem, o pasar la configuración correcta a su módem como parte
del proceso de marcado PPP.

<p>
Si sólo utiliza su módem desde Linux para conectarse con su ISP o servidor
corporativo, lo más simple será guardar la configuración de su módem en la
memoria RAM no volátil.

<p>
Pero si utiliza su módem para otras aplicaciones y sistemas operativos, es
más seguro pasar la información al módem siempre que se realice una llamada
para que se garantice que el módem esté en el estado correcto para la
llamada. (Esto es siempre mejor que guardar la cadena de configuración en 
un módem que pierde los contenidos de la RAM no volátil). 

<sect1>Nota acerca del Control de Flujo Serie
<p>
Cuando los datos viajan por las líneas de comunicación, puede suceder que
los datos lleguen más rápido que lo que el ordenador pueda manejar (el
ordenador puede estar ocupado haciendo alguna otra cosa - recuerde: Linux es
un sistema operativo multiusuario y multitarea). Para asegurarse de que los
datos no se pierdan (los datos no sobrepasen el buffer de entrada y se
pierdan), es necesario establecer algún método de control del flujo de
datos.

<p>
Hay dos maneras de hacer esto en puertos serie:-
<itemize>
<item>Utilizar señales hardware (Clear To Send/Request to Send - CTS/RTS)
<item>Using señales software (control S y control Q, también conocidas como
XON/XOFF).
</itemize>

<p>
Mientras que las últimas pueden ir bien en una conexión de terminal de
texto, los datos en un enlace PPP utilizan los 8 bits - y es bastante
probable que en algún lugar de los datos habrá un byte que se traduzca como
control S y control Q. Entonces, si un módem está configurado para utilizar
el control de flujo por software, ¡todo puede irse rápidamente al garete!

<p>
Para enlaces de alta velocidad que utilicen PPP (que usa los 8 bits de
datos) el control de flujo por hardware es vital y es por esta razón por la
que usted debe utilizar el control de flujo por hardware.

<sect1>Probar que su módem puede marcar
<p>
Ahora que se ha conseguido una configuración correcta para el puerto serie 
y el módem, es una buena idea asegurarse de que esa configuración funciona
para marcar el número de su ISP y ver si puede conectarse.

<p>
Utilice el paquete de comunicaciones por terminal (como minicom), configure
la inicialización que su módem requiera para PPP y marque el número del
servidor PPP con el que desee conectar en una sesión PPP.

<p>
(Nota: en esta fase <bf/NO/ estamos intentando hacer una conexión PPP, sino
simplemente establecer que tenemos el número de teléfono correcto y también
averiguar qué es <bf/exactamente/ lo que el servidor nos envía para
conseguir conectarnos y arrancar PPP).

<p>
Durante este proceso, capture (guarde en un fichero) el proceso completo o
anote cuidadosamente (<em/muy cuidadosamente/) y <bf/exactamente/ en texto
con el que el servidor le da a entender que es el momento de introducir su
nombre de usuario y contraseña (y cualquier otra orden necesaria para
establecer la conexión PPP).

<p>
Si su servidor utiliza PAP, no debería ver una pregunta de conexión, pero
debería ver, en su lugar, y esparcida por la pantalla, la representación 
en modo texto del protocolo de control de conexión (que son caracteres
extraños sin sentido aparente).

<p>
Unas pocas advertencias:-

<itemize>
<item>algunos servidores son bastante inteligentes: puede conectarse
utilizando la secuencia nombre/contraseña en modo texto O utilizando PAP.
Por lo que si su ISP o máquina corporativa utiliza PAP pero no ve aparecer
inmediatamente en la pantalla los caracteres sin sentido, usted no tiene por
qué haber hecho nada mal.
<item>algunos servidores necesitan que usted introduzca inicialmente texto y
<em/después/ comienzan a enviar la secuencia PAP estándar.
<item>algunos servidores PPP son pasivos - esto es: simplemente se sientan
sin enviar nada hasta que el cliente que se está conectando les envía un
paquete válido de lcp. Si el servidor ppp con el que está conectando
funciona en modo pasivo, ¡usted nunca podrá ver los caracteres sin sentido!
<item>Algunos servidores no arrancarán PPP hasta que pulse ENTER - por lo
que es valioso intentar esto si usted se conecta correctamente y no ve los
caracteres sin sentido.
</itemize>

<p>
Es valioso conectarse al menos dos veces: algunos servidores cambian sus
preguntas (por ejemplo, con la hora) cada vez que usted se conecta. Las dos
preguntas críticas que su máquina Linux necesita identificar cada vez que se
conecta son:-
in are:-
<itemize>
<item>la pregunta que le pide que introduzca su nombre de usuario;
<item>la pregunta que le pide que introduzca su contraseña;
</itemize>

<p>
Si tiene que ejecutar una orden para arrancar PPP en el servidor, también
deberá averiguar la línea de órdenes que el servidor le da una vez se ha
conectado para comunicar a Linux que en ese momento puede introducir la
orden para arrancar ppp.

<p>
Si su servidor arranca PPP automágicamente, una vez que se ha conectado,
empezará a ver basura en su pantalla - ésta es el servidor PPP que envía la
información de su máquina para comenzar y configurar la conexión PPP.

<p>
Eso debería ser algo como esto :-

<code>
~y}#.!}!}!} }8}!}$}%U}"}&} } } } }%}& ...}'}"}(}"} .~~y}
</code>

<p>
(¡y no dejará de salir por pantalla!)

<p>
En algunos sistemas PPP debe ser explícitamente arrancado en el servidor.
Esto ocurre normalmente porque el servidor ha sido configurado para permitir
accesos PPP y accesos de línea de órdenes utilizando el mismo par
nombre/contraseña. Si este es el caso, ejecute esta orden una vez se ha
conectado. De nuevo, verá la basura en pantalla cuando la parte PPP del
servidor comience a funcionar.

<p>
Si usted no ve esto inmediatamente después de conectarse (y, si es
necesario, haber introducido nombre/contraseña y haber arrancado el servidor 
PPP), pulse <bf/Intro/ para ver si así comienza el servidor PPP...

<p>
En este punto, usted puede colgar su módem (normalmente, teclee <tt>+++</tt>
rápidamente y después ejecute el comando ATHO una vez que su módem responda
con OK).

<p>
Si no consigue hacer funcionar su módem, lea el manual del módem, las
páginas de manual de su software de comunicaciones y el COMO sobre Puertos
Serie. Una vez que lo ha conseguido, continúe haciendo paso por paso lo ya
comentado.

<sect>Configurando la resolución de nombres (DNS)<label id="DNS">
<p>
Mientras que a los humanos nos gusta dar nombres a las cosas, a los
ordenadores, lo que les gusta, son los números. En una red TCP/IP (que es lo
que Internet es), llamaremos a las máquinas con un nombre particular - y
cada máquina vive en un <tt>&dquot;</tt>dominio<tt>&dquot;</tt> particular.
Por ejemplo, mi máquina Linux se llama <bf>archenland</bf> y vive en el
dominio <bf>interweft.com.au</bf>. Su dirección humanamente legible es, por
lo tanto, archenland.interweft.com.au (lo que es conocido como el FQDN -
nombre de dominio totalmente cualificado).

<p>
Sin embargo, para que esta máquina pueda ser encontrada por otros ordenadores
en Internet, es necesario que sea referenciada por su dirección IP.

<p>
Traducir (resolver) los nombres de una máquina (y dominio) a direcciones IP
utilizadas en Internet es el trabajo de máquinas que ofrecen el servicio de
nombres de dominio (DNS).

<p>
Esto es lo que sucede:-

<itemize>
<item> su máquina necesita saber la dirección IP de un ordenador en
particular. La aplicación que necesita esta información pregunta al
"resolvente" de su PC Linux para que le dé esta información;

<item>
el resolvente necesita el fichero de máquinas locales (<tt>/etc/hosts</tt>
y/o los servidores de nombres de dominio acerca de los que sabe (el
comportamiento del resolvente está determinado por el fichero
<tt>/etc/host.conf</tt>);

<item>si la respuesta se encuentra en el fichero de máquinas, se devuelve la
respuesta;

<item>si se especifica un servidor de nombres de dominio, su PC pregunta a
esta máquina;

<item>si la máquina DNS ya sabe la dirección IP para el nombre solicitado,
la devuelve. Si no la sabe, pregunta a otro servidor de nombres de dominio a
través de Internet para encontrar la información. El servidor de nombres
pasa la información al resolvente que la solicita - el cual da la
información a la aplicación que la solicita.
</itemize>

<p>
Cuando realiza una conexión PPP, necesita decirle a su máquina Linux dónde
puede encontrar la máquina traductora de nombres a direcciones IP
(resolución de direcciones), para que <bf/usted/ pueda utilizar nombres de
máquina pero su <bf/ordenador/ pueda traducirlos a las direcciones IP que
necesita para hacer su trabajo.

<p>
Una manera es introducir cada máquina con la que desee conectar en el
fichero <tt>/etc/hosts</tt> (lo que sería totalmente imposible si se conecta
a Internet); otra es utilizar direcciones IP en lugar de nombres (una labor
de memoria totalmente imposible de realizar más allá de pequeñas redes
locales).

<p>
La mejor manera es configurar Linux para que sepa, automáticamente,  a dónde 
ir para conseguir esa información de traducción nombre-dirección. Este
servicio lo da un sistema DNS (servidor de nombres de dominio). Todo lo que
necesita es introducir las direcciones IP de los servidores de dominio
dentro de su fichero <tt>/etc/resolv.conf</tt>.

<sect1>El fichero <tt>/etc/resolv.conf</tt> 
<p>
El servicio tecnico o al administrador de su servidor PPP debería
proporcionarle dos direcciones IP de DNS (sólo una es necesaria, pero dos
dan seguridad en el caso de fallo de una de ellas).

<p>Tal y como se mencionó, Linux no puede configurar la dirección IP del
servidor de nombres de la manera en la que MS Windows 95 lo hace. Es
necesario que usted <bf/insista/ (educadamente) para que su ISP le dé esa
información.

<p>
Su <tt>/etc/resolv.conf</tt> debería ser algo como esto:-

<code>
domain your.isp.domain.name
nameserver 10.25.0.1
nameserver 10.25.1.2
</code>

<p>
Edite este fichero (créelo si es necesario) para que represente la 
información que le ha proporcionado su ISP. Debería tener los permisos
siguientes :-

<tscreen><verb>
-rw-r--r--   1 root     root           73 Feb 19 01:46 /etc/resolv.conf
</verb></tscreen>

<p>
Si ya ha configurado un <tt>/etc/resolv.conf</tt> debido a que se encuentra
en una red local, simplemente añada las direcciones IP de los servidores DNS
PPP a su fichero existente.

<sect1>El fichero <tt>/etc/host.conf</tt>
<p>
Debería también comprobar que su <tt>/etc/host.conf</tt> está correctamente
configurado. Este debería ser algo como
<code>
order hosts,bind
multi on
</code>

<p>
Esto le dice al resolvente que utilice la información del fichero host antes
de enviar preguntas de resolución al DNS.

<sect>Utilización de PPP y de privilegios de root<label id="root">
<p>
Debido a que PPP necesita configurar dispositivos de red, cambiar la tabla
de encaminamiento del núcleo y más cosas, requiere privilegios de root que
permitan hacer todo esto.

<p> Si un usuario distinto del root va a establecer conexiones PPP, el
programa PPP debería ser setuid root :-

<tscreen><verb>
-rwsr-xr-x   1 root     root        95225 Jul 11 00:27  /usr/sbin/pppd
</verb></tscreen>

<p>
Si /usr/sbin/pppd no está configurado de esta manera, entonces, <bf>como
root</bf> ejecute esta orden:-

<p>
<tscreen><verb>chmod u+s /usr/sbin/pppd</verb></tscreen>

<p>
Lo que esto hace es que pppd se ejecute con privilegios de root <bf/incluso/
si el programa es ejecutado por un usuario normal. Esto permite al usuario
normal ejecutar pppd con los privilegios necesarios para establecer las
interfaces de red y la tabla de encaminamiento del núcleo.

<p>
Programas que se ejecutan con 'set uid root' son agujeros de seguridad en
potencia, por lo que debe ser extremadamente cuidadoso a la hora de hacer
programas 'suid root'. Un número contado de programas (incluyendo pppd) han
sido escritos cuidadosamente para minimizar el peligro de ejecutarse con
suid root, por lo que debe sentirse seguro con éste (pero sin garantías).

<p>
Dependiendo de cómo desee que funcione su sistema - específicamente, si
desea que CUALQUIER usuario sea capaz de iniciar un enlace PPP, debería
hacer sus scripts de ppp-on/off de lectura y ejecución pública. (Esto está
probablemente bien si su PC es utilizado SOLO por usted).

<p>
Sin embargo, si NO desea que cualquiera pueda arrancar una conexión PPP (por
ejemplo, sus hijos tienen cuentas en su PC Linux y no desea que se conecten
a Internet sin su supervisión), necesitará establecer un grupo PPP (como
root, edite /etc/group) y :-
<itemize>

<item>Haga pppd suid root, con dueño root y grupo PPP, con los permisos para
"otros" vacíos. Debería ser como
<tscreen><verb>
-rwsr-x---   1 root     PPP        95225 Jul 11 00:27 /usr/sbin/pppd
</verb></tscreen>
 
<item>Haga que los scripts ppp-on/off de dueño root y grupo PPP

<item>De al grupo PPP permiso de lectura y ejecución de los scripts ppp-on/off
<tscreen><verb>
  -rwxr-x---   1 root     PPP           587 Mar 14  1995 /usr/sbin/ppp-on
  -rwxr-x---   1 root     PPP           631 Mar 14  1995 /usr/sbin/ppp-off
</verb></tscreen>

<item>Anule los derechos de acceso de los demás a ppp-on/off.

<item>añada los usuarios que podrán usar PPP al grupo PPP en /etc/group
</itemize>

<p>
Incluso si hace esto, los usuarios normales NO podrán desconectar la
conexión vía software. Ejecutar <tt/ppp-off/ requiere privilegios de root.
Sin embargo, un usuario puede simplemente apagar el módem (o desconectar el
cable telefónico en el caso de un módem interno).

<p>
Un método alternativo (y mejor) para hacer esto es utilizar el programa
<tt/sudo/. Este ofrece más seguridad y le permitirá configurar todo para que
cualquier usuario (autorizado) pueda activar desactivar la conexión
utilizando los scripts. Utilizar <tt/sudo/ permitirá a un usuario autorizado
activar/desactivar el enlace PPP de manera limpia y segura.

<sect>Configurar los ficheros de conexión PPP<label id="options">
<p>
Usted necesita estar conectado como <bf/root/ para crear los directorios y
editar los ficheros que necesita para configurar PPP, incluso si desea que
PPP sea accesible para todos los usuarios.

<p>
PPP utiliza un número de ficheros para conectar y para configurar una 
conexión PPP. La localización y el nombre de éstos varía entre PPP 2.1.2 y
PPP 2.2.

<p>
Para PPP 2.1.2 los ficheros son:-

<code>
/usr/sbin/pppd       # el ejecutable PPP 
/usr/sbin/ppp-on     # el script de marcado/conexión
/usr/sbin/ppp-off    # el script de desconexión
/etc/ppp/options     # las opciones que pppd usa para todas las conexiones
/etc/ppp/options.ttyXX   # las opciones específicas para este puerto
</code>

<p>
Para PPP 2.2 los ficheros son:-

<code>
/usr/sbin/pppd           # el ejecutable PPP
/etc/ppp/scripts/ppp-on      # el script de marcado/conexión
/etc/ppp/scripts/ppp-on-dialer   # parte 1 el script de marcado
/etc/ppp/scripts/ppp-off # el script real del propio programa chat
/etc/ppp/options     # las opciones que pppd usa para todas las conexiones
/etc/ppp/options.ttyXX       # las opciones específicas para este puerto
</code>

<p>
Los usuarios de Red Hat Linux deberían fijarse en que los lugares en que Red
Hat 5.X pone estos scripts es en el subdirectorio /scripts del directorio de 
documentación del paquete ppp (para la versión 2.2.0f de este paquete es
<tt>/usr/doc/ppp-2.2.0f-2/scripts</tt>).

<p>
En su directorio /etc debería existir un directorio ppp:-

<tscreen><verb>
drwxrwxr-x   2 root     root         1024 Oct  9 11:01 ppp
</verb></tscreen>

<p>
Si no existe, créelo con esos permisos y propietario.

<p>
Si el directorio ya existe, debería contener una plantilla de opciones
denominada <bf>options.tpl</bf>. Este fichero se incluye más abajo en caso
de que no lo contenga. 

<p>
Imprimalo ya que contiene una explicación de casi todas las opciones PPP
(son útiles leerlas junto con las páginas de manual pppd).
Aunque usted pueda utilizar este fichero como base para su fichero
<tt>/etc/ppp/options</tt>, es probablemente mejor crear su propio fichero de
opciones que no contenga ningún comentario de la plantilla. Será mucho más
corto y más fácil de leer/mantener.

<p>
Si tiene varios módems/puertos serie (caso típico de servidores PPP), cree
un fichero general <tt>/etc/ppp/options</tt> que contenga las opciones
comunes para todos los puertos serie en los que de soporte de entrada salida
y configure ficheros de opciones individuales con los ajustes necesarios
para cada puerto serie en el que desee establecer una conexión PPP. 

<p>
Estos ficheros de opciones específicas de puertos <tt/options.ttx1/,
tt/options.ttyx2/ y así (donde x es la letra apropiada para sus puertos
serie).

<p>
Sin embargo, para una única conexión PPP, puede usar sin problemas el
fichero <tt>/etc/ppp/options</tt>. De manera alternativa puede poner todas
las opciones como argumentos de la propia orden pppd.

<p>
Es más sencillo mantener una configuración que utilice ficheros
<tt>/etc/ppp/options.ttySx</tt>. Si utiliza PPP para conectar con varios
servidores, puede crear ficheros de opciones para cada uno de ellos en
<tt>/etc/ppp/options.servidor</tt> y entonces especificar el fichero 
de opciones como un parámetro de la orden PPP mientras conecta (utilizando 
la opción <tt/file fichero-de-opciones/ de pppd en la línea de órdenes).

<sect1>El fichero options.tpl suministrado
<p>
Algunas distribuciones de PPP parecen haber perdido el fichero options.tpl,
por lo que aquí está el fichero completo. Le sugiero que NO edite este
fichero para crear su(s) fichero(s) <tt>/etc/ppp/options</tt>. En su lugar,
copie este a un nuevo fichero y entonces edítelo. Si se hace un lío con las
ediciones, siempre podrá volver al original y comenzar de nuevo.

<code>
# /etc/ppp/options -*- sh -*- opciones generales para pppd
# creado 13-Jul-1995 jmk
# traducido 5-Feb-1999 davefx
# autodate: 01-Aug-1995
# autotime: 19:45

# Usar el ejecutable u orden especificado para configurar el puerto serie
# Esta orden usaría típicamente el programa "chat" para hacer que el módem 
# marque y conectar la sesión ppp remota.
#connect "echo Necesita instalar un comando connect."

# Ejecutar el programa u orden especificado después de que pppd haya
# finalizado la conexión.  Este script podría, por ejemplo, mandar órdenes
# al módem para que cuelgue si las señales de control hardware del mismo no
# están disponibles.
#disconnect "chat -- \d+++\d\c OK ath0 OK"

# mapa de caracteres async -- 32-bit hex; cada bit es un carácter que 
# necesita ser asincronizado para que pppd lo reciba. 0x00000001 representa
# '\x01', y 0x80000000 representa '\x1f'.
#asyncmap 0

# Obligar a la pareja a que se autentifique antes de permitir que los
# paquetes de red se envíen o se reciban.
#auth

# Usar el flujo de paquetes hardware (como RTS/CTS) para controlar el flujo
# de datos del puerto serie.
#crtscts

# Usar el flujo de paquetes sotware (como XON/XOFF) para controlar el flujo
# de datos en el puerto serie.
#xonxoff

# Añadir un camino por defecto a las tablas de encaminamiento del sistema,
# utilizando a la pareja como pasarela, una vez que la negociación IPCP sea
# completada con éxito.  Esta entrada se elimina cuando la conexión PPP 
# finaliza.
#defaultroute

# Especifica que ciertos caracteres deben ser puestos en secuencia de escape
# en la transmisión (sin importar el hecho de que la pareja pida que sean
# mapeados por el control async).  Los caracteres que han de ser puestos en
# secuencia de escape se especifican como una lista de números hexadecimales
# separados por comas. Fíjese de que casi todos los caracteres pueden ser
# especificados por la opción escape, no como con la opción asyncmap que
# sólo permite hacerlo a los caracteres de control. Los caracteres que no
# pueden ser puestos en secuencia de escape son aquellos con valores
# situados entre 0x20 - 0x3f o 0x5e.
#escape 11,13,ff

# No usar las líneas de control del módem.
#local

# Especificar que pppd debería utilizar el bloqueo modo UUCP del dispositivo
# serie para asegurarse un acceso exclusivo al dispositivo.
#lock

# Usar las líneas de control del módem. En Ultrix, esta opción implica
# control de flujo por hardware, al igual que la opción crtscts. (Esta
# opción no está implementada por completo.)
#modem

# Ajustar el valor de MRU (Unidad de recepción máxima) a <n> para la
# negociación.  pppd pedirá a la pareja que no envíe paquetes de más de <n>
# bytes. El valor mínimo de MRU es 128. El valor por defecto es 1500.  Un
# valor recomendado para enlaces lentos es 296 (40 bytes para cabecera
# TCP/IP + 256 bytes de datos).
#mru 542

# Establecer la máscara de red de la interfaz a <n>, una máscara de red en
# notación "punto-decimal" (como 255.255.255.0).
#netmask 255.255.255.0

# Desabilitar el comportamiento por defecto cuando no se especifica una
# dirección IP local, que es determinar (si es posible) la dirección IP
# local de la máquina. Con esta opción, la pareja deberá proveer la
# dirección local IP durante la negociación IPCP (a menos que se especifique
# explícitamente en la línea de órdenes o en un fichero de opciones).
#noipdefault

# Habilita la opción "pasiva" en la LCP. Con esta opción, pppd intentará
# iniciar una conexión; si no se recibe ninguna réspuesta de la pareja,
# pppd esperará de manera pasiva un paquete LCP de la pareja (en lugar de
# salir, que es lo que haría sin esta opción).
#passive

# Con esta opción, pppd no transmitirá paquetes LCP para iniciar una
# conexión hasta que un paquete LCP válido sea recibido de la pareja (como
# la opción "passive" con antiguas versiones de pppd).
#silent

# No solicitar o permitir negociación de ninguna opción para LCP y IPCP
# (usar valores por defecto).
#-all

# Deshabilitar la compresión en la negociación de Dirección/control (usa
# la configuración por defecto, como desabilitar el campo
# dirección/control).
#-ac

# Deshabilitar la necociación asyncmap (usa el asyncmap por defecto, que es
# poner en secuencia de escape todos los caracteres de control).
#-am

# No transformarse en un proceso en segundo plano (si no, pppd lo hará si
# se especifica un dispositivo serie).
#-detach

# Desabilitar la negociación de dirección IP (con esta opción, la IP remota
# debe especificarse con una opción en la línea de órdenes o en un fichero
# de opciones).
#-ip

# Deshabilitar la negociación de número mágico.  Con esta opción, pppd no
# puede detectar una línea con recepción de paquetes enviados.
#-mn

# Deshabilitar la negociación MRU (unidad de máxima recepción) (utilizar el
# valor por defecto, p.e. 1500).
#-mru

# Deshabilitar la negociación de compresión de campo de protocolo (usar el
# valor por defecto, p.e. compresión de campo de protocolo inhabilitada).
#-pc

# Obligar a que la pareja se autentifique utilizando PAP.
# Esto require autentificación de DOBLE SENTIDO. NO UTILICE esto para una
# conexión estándar PAP con un ISP ya que esto requerirá que la máquina ISP
# se autentifique ante su máquina (y no podrá hacerlo).
#+pap

# No autentificar utilizando PAP.
#-pap

# Requerir que la pareja se autentifique utilizando CHAP [Protocolo de 
# Autentificación de Saludo Criptográfico].
# Esto require autentificación de DOBLE SENTIDO. NO UTILICE esto para una
# conexión estándar CHAP con un ISP ya que esto requerirá que la máquina ISP
# se autentifique ante su máquina (y no podrá hacerlo).
#+chap

# No autentificar utilizando CHAP.
#-chap

# Deshabilitar la negociación de la compresión de cabeceras IP estilo Van
# Jacobson (utilizar la configuración por defecto, p.e. sin compresión).
#-vj

# Incrementar el nivel de depuración (lo mismo que -d). Si se da esta opción,
# pppd guardará los contenidos de todos los paquetes de control enviados o
# o recibidos de forma legible.  Los paquetes se guardan a través de syslog
# con las formas de demonio y nivel. Esta información puede ser
# direccionada a un fichero configurando /etc/syslog.conf de manera adecuada
# (ver syslog.conf(5)).  (Si pppd se compila con la opción de extra
# depuración, mostrará mensajes utilizando local2 en lugar de demonio).
#debug

# Añadir el nombre de dominio <d> al de la máquina local en propósitos de 
# autentificación.  Por ejemplo, si gethostname() devuelve el nombre porche,
# pero el nombre de dominio completamente cualificado es
# porsche.Quotron.COM, se debería usar la opción de dominio para establecer
# el nombre de dominio a Quotron.COM.
#domain <d>

# Habilitar el código de depuración en el controlador nivel-núcleo PPP. El
# argumento n es un número que es la suma de los siguientes valores:
# 1 para habilitar los mensajes de depuración generales, 2 para solicitar
# que el contenido de los paquetes recibidos sea impreso, y 4 para solicitar
# que el contenido de los paquetes enviados sea impreso.
#kdebug n

# Ajustar el valor de MTU (Unidad máxima de transmisión) a <n>. A menos que
# la pareja requiera un menor valor vía negociación MRU, pppd necesitará que
# el código de red del núcleo envíe paquetes de no mas de n bytes a través
# de la interfaz de red PPP.
#mtu <n>

# Cambiar a <n> el nombre del sistema local para propósitos de
# autentificación. Esto probablemente deba ser cambiado al nombre almacenado
# en la base de datos de nombres de su servidor ISP si está utilizando 
# PAP/CHAP.
#name <n>

# Cambiar el nombre de usuario a <u> para autentificar esta máquina con la 
# pareja con la que se utiliza PAP.
# NO use esto si ya utiliza la opción 'name' anteriormente.
#user <u>

# Forzar el uso del nombre de servidor como el nombre del sistema local
# en propósitos de autentificación (sobreescribe la opción name).
#usehostname

# Cambiar el nombre asumido del sistema remoto para propósitos de
# autentificación a <n>
#remotename <n>

# Añadir una entrada a la tabla del protocolo de resolución de direcciones 
# (ARP) de este sistema con la dirección IP de la pareja y la dirección 
# Ethernet de su sistema.
#proxyarp

# Usar la base de datos de contraseñas del sistema para autentificar a la
# pareja al utilizar PAP.
#login

# Si se habilita esta opción, pppd enviará un marco de petición de eco LCP
# a la pareja cada n segundos. Bajo Linux, la petición de eco se envía
# cuando no se recibe ningún paquete de la pareja durante n segundos. 
# Normalmente, la pareja debería responder a la petición de eco con una
# respuesta de eco. Esta opción puede utilizarse con la opción lcp de fallo
# de eco para detectar que la pareja no está conectada.
#lcp-echo-interval <n>

# Si se da esta opción, pppd presupondrá que la pareja está muerta si
# tras enviar n peticiones de eco no se ha recibido ninguna respuesta válida
# de eco. Si esto sucede, pppd finalizará la conexión.  El uso de esta
# opción requiere un valor distinto de 0 para el parámetro
# lcp-echo-interval.
# Esta opción puede utilizarse para posibilitar que pppd finalice después de
# que la conexión física se haya roto (p.e., el modem ha colgado) en
# en situaciones en las que no está disponible el control de líneas del
# módem por vía hardware.
#lcp-echo-failure <n>

# Ajustar el intervalo de reinicio de LCP a <n> segundos (3 por defecto).
#lcp-restart <n>

# Ajustar el máximo número de transimisiones de petición de finalización de
# LCP a <n> (3 por defecto).
#lcp-max-terminate <n>

# Ajustar el máximo número de transmisiones de petición de configuración de 
# LCP a <n> (10 por defecto).
# Algunos servidores PPP son lentos al inicializarse. Puede que necesite 
# incrementar esto si sigue consiguiendo errores de "línea serie en bucle" y
# usted está seguro de haber conectado correctamente y de que PPP se debería
# estar iniciando en el servidor.
#lcp-max-configure <n>

# Ajustar a <n> el máximo número de NAKs de configuración LCP devueltos antes 
# de comenzar a enviar Denegaciones de configuración. (10 por defecto).
#lcp-max-failure <n>

# Ajustar el intervalo de reinicialización de IPCP (retardo de
# retransmisión) a <n> segundos (3 por defecto).
#ipcp-restart <n>

# Ajustar el máximo número de transmisiones petición de finalización de IPCP
# a <n> (3 por defecto).
#ipcp-max-terminate <n>

# Ajustar el máximo número de peticiones de configuración IPCP a <n> (10 por
# defecto).
#ipcp-max-configure <n>

# Ajustar a <n> el máximo número de NAKs de configuración IPCP devueltos antes 
# de comenzar a enviar Denegaciones de configuración. (10 por defecto).
#ipcp-max-failure <n>

# Ajustar el intervalo de reinicialización PAP (retardo de retransmisión) a
# <n> segundos. (3 por defecto).
#pap-restart <n>

# Ajustar el máximo número de transmisiones de petición de autentificación
# PAP a <n> (10 por defecto).
#pap-max-authreq <n>

# Ajustar el intervalo de reinicialización CHAP (retardo de retransmisión de
# intentos) a <n> segundos. (3 por defecto).
#chap-restart <n>

# Ajustar el máximo número de transmisiones de intentos CHAP a <n>
# (10 por defecto).
#chap-max-challenge

# Si se da esta opción, pppd recomprobará la autenticidad de la pareja cada
# <n> segundos.
#chap-interval <n>

# Con esta opción, pppd aceptará la dirección IP dada por la pareja como la
# IP propia, incluso aunque se haya especificado la dirección IP local como
# una opción.
#ipcp-accept-local

# Con esta opción pppd aceptará la dirección IP dada por la pareja como su
# IP, incluso aunque la dirección IP remota se ha especificado como opción.
#ipcp-accept-remote
</code>


<sect1>¿Qué opciones debería usar? (No PAP/CHAP)

<p>
Bien, como dice la canción, todo depende. Las opciones especificadas aquí
deberían funcionar con la mayoría de los servidores.

<p>
Sin embargo, si NO funciona, LEA EL FICHERO DE PLANTILLA 
(<tt>/etc/ppp/options.tpl</tt>) <bf/y/ las páginas de manual de pppd
<bf/y/ hable con el administrador/servicio técnico que llevan el servidor al
que se está conectando.

<p>
Debería darse cuenta de que los scripts de conexión presentados aquí también
utilizan algunas opciones de línea de órdenes para hacer las cosas algo más
sencillas de cambiar.

<code>
# /etc/ppp/options (NO PAP/CHAP)
#
# Evitar que pppd trabaje en segundo plano
-detach
#
# utilizar las líneas de control del módem
modem
# utilizar bloqueos de tipo uucp para asegurar acceso exclusivo a los
# dispositivos serie
lock
# usar control de flujo hardware
crtscts
# crear un camino por defecto para esta conexión en la table de
# encaminamiento
defaultroute
# NO establecer ninguna secuencia de control en forma de cadena de escape
asyncmap 0
# transmitir paquetes de 552 bytes de tamaño máximo
mtu 552
# recibir paquetes de 552 bytes de tamaño máximo
mru 552
#
#-------FIN DE EJEMPLO /etc/ppp/options (no PAP/CHAP)
</code>

<sect>Si su servidor PPP utiliza PAP (Protocolo de Autentificación de
Contraseñas)<label id="pap">
<p>
Si el servidor al que usted se conecta requiere autentificación PAP o CHAP,
tiene que trabajar un poco más.

<p>
A las opciones arriba indicadas, añada las siguientes líneas
<code>
#
# obligar a que pppd utilice su nombre de usuario en el ISP como 'nombre
# de máquina' durante el proceso de autentificación
name <su nombre de usuario en el ISP>    # debe editar esta línea
#
# Si está ejecutando un *servidor* PPP y necesita obligar a PAP o CHAP
# quite el comentario a una de las siguientes líneas. NO utilice estas
# líneas si usted es un cliente que se conecta a un servidor PPP (aunque
# el servidor utilice PAP o CHAP) ya que esto obligará al SERVIDOR a
# autentificarse ante su máquina (lo que casi con toda seguridad no puede
# hacer - y hará que la conexión sea fallida).
#+chap
#+pap
#
# Si utiliza secretos ENCRIPTADOS en el fichero /etc/ppp/pap-secrets
# entonces quite el comentario a la línea siguiente.
# Nota: esto NO es lo mismo que utilizar contraseñas encriptadas Micro$oft
# tal y como se puede configurar MS RAS en Windows NT.
#+papcrypt
</code>

<sect1>Utilizando MSCHAP
<p>
Microsoft Windows NT RAS puede configurarse para usar una variación del
protocolo CHAP. En el paquete tar de código fuente de PPP, encontrará un
fichero denominado README.MSCHAP80 que trata sobre esto.

<p>
Usted puede determinar si un servidor solicita autentificación mediante
este protocolo habilitando el modo de depuración para pppd. Si el servidor
solicita autentificación MS CHAP, verá líneas como

<code>
rcvd [LCP ConfReq id=0x2 <asyncmap 0x0> <auth chap 80> <magic
0x46a3>]
</code>

<p>
La información importante es <bf/auth chap 80/.

<p>
Para hacer que utilice MS CHAP, necesitará recompilar pppd para dar soporte
a esto. Por favor, lea las instrucciones en el fichero README.MSCHAP80 del
código fuente para más instrucciones acerca de cómo compilar y utilizar esta
variación.

<p>
Debe darse cuenta de que de momento este código sólo da soporte a clientes
PPP Linux que se conecten a un servidor MS Windows NT. <bf/NO/ permite que
un servidor PPP Linux utilice autentificación MSCHAP80 con sus clientes.

<sect1>El fichero de secretos PAP/CHAP
<p>
Si utiliza autentificación pap o chap, también necesitará crear un fichero
de secretos. Estos son:
<code>
/etc/ppp/pap-secrets
/etc/ppp/chap-secrets
</code>

<p>
Deben pertenecer al usuario root, grupo root y tener permisos de fichero 740
por seguridad.

<p>
Lo primero de lo que debe darse cuenta acerca de PAP y CHAP es que están
diseñados para autentificar <bf/sistemas informáticos/ y no <bf/usuarios/.

<p>
&dquot;¿Cómo? ¿Cuál es la diferencia?&dquot; le escucho preguntar.

<p>
Bien. Una vez que su ordenador ha realizado una conexión PPP con el
servidor, <bf/CUALQUIER/ usuario de su sistema puede utilizar esa conexión -
no sólo usted. Esto es lo que le permite configurar un enlace de red de
área extensa (WAN) que interconecte dos redes locales utilizando PPP.

<p>
PAP puede requerir autentificación bidireccional (y CHAP <bf/LA REQUIERE/) -
esto es: en cada ordenador son necesarios un nombre válido y un secreto 
para el otro ordenador implicado. Sin embargo, esta <bf/NO/ es la manera en
la que la mayoría de los servidores PPP ofrecen conexiones PPP
autentificadas con PAP.

<p>
Lo más probable es que su ISP le haya proporcionado un nombre de usuario y
una contraseña para permitirle conectar a su sistema y, una vez allí, a
Internet. Su ISP no está en absoluto interesado en el nombre de su
ordenador, por lo que probablemente necesite utilizar el nombre de usuario
de su ISP como nombre de su ordenador.

<p>
Esto se realiza utilizando la opción <tt/name user name/ de pppd. Por lo que
si va a utilizar como nombre de usuario el que su ISP le ha proporcionado,
añada la línea

<code>
name su_usuario nombre_en_el_ISP
</code>
<p>
a su fichero <tt>/etc/ppp/options</tt>.

<p>
Técnicamente, debería usar <tt/user usuario nombre_en_su_ISP/ para PAP, pero
pppd es lo suficientemente inteligente para interpretar <tt/name/ como
<tt/user/ si se utiliza PAP. La ventaja de utilizar <tt/name/ es que también
es válida para CHAP.

<p>
Ya que PAP es para autentificar <bf/ordenadores/, técnicamente necesita
también especificar un nombre de ordenador remoto. Sin embargo, como la
mayoría de la gente sólo tiene un ISP, puede utilizar un comodín (*) como
nombre de máquina remota en el fichero de secretos.

<p>
También es valioso recordar que muchos ISP funcionan con bancos múltiples de
módems conectados a servidores distintos - cada uno con un nombre
diferente, pero ACCEDIDOS desde un número de teléfono único. 
Puede ser a veces bastante difícil en algunas circunstancias saber en ese
momento cuál es el nombre del ordenador remoto, ya que depende de a que
servidor de terminales esté usted conectado.

<sect1>El fichero de secretos PAP
<p>
El fichero <tt>/etc/ppp/pap-secrets</tt> tiene este aspecto
<code>
# Secretos para autentificación utilizando PAP
# cliente        servidor       secreto      direcciones_IP_locales_aceptables
</code>

<p>
Los cuatro campos se delimitan con un espacio en blanco y el último puede
estar vacío (lo que es deseable para una asignación de IP dinámica de su
ISP).

<p>
Supongamos que su ISP le ha proporcionado el nombre de usuario de <tt/pedro/
y la contraseña de <tt/picapiedra/ por lo que establecería la opción
<tt/name pedro/ en <tt>/etc/ppp/options[.ttySx]</tt> y establecería su
fichero <tt>/etc/ppp/pap-secrets</tt> como sigue:

<code>
# Secretos para la autentificación utilizando PAP
# cliente       servidor      secreto      direcciones_IP_locales_aceptables
pedro     *   picapiedra
</code>

<p>
Esto hace que para el nombre de máquina local <tt/pedro/ (el cual hemos
hecho que pppd use incluso aunque no sea nuestro nombre de máquina local) y
para <bf/CUALQUIER/ servidor, se utilice la contraseña (secreto)
<tt/picapiedra/.

<p>
Fíjese en que se necesita especificar una dirección local IP, a menos que
sea necesario FORZAR una dirección IP local y estática. Incluso aunque
intente hacer esto, no es probable que funcione en la mayoría de servidores
PPP (por razones de seguridad) que no permiten que el sistema remoto
establezca la dirección IP que desea tener.

<sect1>El fichero de secretos CHAP
<p>
Este método requiere una autentificación mutua - esto es: usted debe
permitir que su máquina se autentifique ante el servidor <bf/Y/ que el
servidor se autentifique ante su máquina.

<p>
Por lo que, si su máquina es <tt/pedro/ y la remota es <tt/pablo/, en su
máquina debe configurar <tt>name pedro remotename pablo</tt> y en la 
máquina remota debe configurarse <tt>name pablo nombreRemoto pedro</tt> en
sus respectivos ficheros <tt>/etc/ppp/options[.ttySx]</tt>.

<p>
El fichero <tt>/etc/chap-secrets</tt> de pedro tendría este aspecto
<code>
# Secretos para autentificación mediante CHAP
# cliente       servidor  secreto   direcciones_IP_locales_aceptables
pedro	pablo	picapiedra
pablo	pedro	marmol
</code>

<p>
y para pablo

<code>
# Secretos para autentificación mediante CHAP
# cliente       servidor  secreto   direcciones_IP_locales_aceptables
pablo	pedro	picapiedra
pedro	pablo   marmol
</code>

<p>
Fijese en que ambas máquinas deben tener entradas para la autentificación
bidireccional. Esto permite que la máquina local se autentifique ante la
remota <bf/Y/ que la remota se autentifique ante la local.

<sect1>Manejar conexiones múltiples autentificadas con PAP
<p>
Algunos usuarios tienen más de un servidor al que conectarse con PAP.
Si su nombre de usuario es distinto para cada máquina a la que desea
conectarse no hay ningún problema.

<p>
Pero muchos usuarios tienen el mismo nombre de usuario en dos (o más -
incluso en todos) sistemas a los que se conecta. Esto entonces es un
problema a la hora de seleccionar la línea correcta de
<tt>/etc/ppp/pap-secrets</tt>

<p>
Como podría imaginar, PPP da un mecanismo para solucionar esto. PPP permite
establecer un 'nombre asumido' para el servidor remoto de la conexión
utilizando la opción <bf/remotename/ de pppd.

<p>
Supongamos que se conecta a dos servidores PPP utilizando como nombre de
usuario pedro. Debe establecer su fichero <tt>/etc/ppp/pap-secrets</tt> de
más o menos como sigue:

<code>
pedro servidorppp1  pablo
pedro servidorppp2  wilma
</code>

<p>
Ahora, para conectarse al servidorppp1 debería utilizar <tt>name pedro
remotename servidorppp1</tt> en su ppp-optiones y para el servidorppp2
<tt>name pedro remotename servidorppp2</tt>.

<p>
Como puede selecionar el fichero de opciones ppp a usar con pppd utilizando
la opción <tt>file fichero</tt>, puede establecer un script para conectarse
a cada uno de sus servidores PPP, escogiendo el fichero de opciones correcto
a utilizar, y una vez allí seleccionando la opción <tt>remotename</tt>
adecuada.

<sect>Estableciendo la conexión PPP de manera manual<label id="manual">
<p>
Ahora que ha creado sus ficheros <tt>/etc/ppp/options</tt> y
<tt>/etc/resolv.conf</tt> (y, si son necesarios, el fichero
<tt>/etc/ppp/pap|chap-secrets</tt>), puede probar la configuración
manualmente estableciendo una conexión PPP. (Una vez que tengamos
funcionando la conexión manual, automatizaremos el proceso).

<p>
Para hacer esto, su software de comunicaciones debe ser capaz de salir sin
reiniciar el módem. Minicom puede hacer esto - ALT Q (o en versiones más
antiguas CTRL A Q).

<p>
Asegúrese de tener una cuenta de root abierta.

<p>
Arranque su software de comunicacions (como minicom), marque el teléfono del
servidor PPP y entre en el sistema como suele hacer. Si necesita ejecutar una
orden para hacer que se inicie el servidor PPP, hágalo. Verá aparecer los
caracteres sin sentido que vio antes.

<p>
Si está utilizando pap o chap, entonces simplemente conectandose al sistema
remoto se iniciará ppp en el servidor y podrá ver los caracteres sin sentido
sin ni siquiera haber entrado en el sistema (aunque esto no sucede en
algunos servidores - pruebe a pulsar <bf/Enter/ para que los caracteres sin
sentido comiencen a mostrarse).

<p>
Salga del programa de comunicaciones <em/sin reiniciar el módem/ (ALT Q o
CTL A Q en minicom) y, en la línea de órdenes de Linux (como root) teclee

<code>
pppd -d -detach /dev/ttySx 38400 &
</code>

<p>
La opción -d conecta el modo de depuración - la conversación de
inicialización de la conexión ppp se enviará al registro del sistema - lo
cual es útil si se tienen problemas.

<p>
Las luces de su módem deberían parpadear mientras se establece la conexión
PPP. Realizar la conexión PPP tardará un breve rato.

<p>
En ese momento puede mirar a la interfaz PPP, tecleando la orden

<code>
ifconfig
</code>

<p>

Además de cualquier dispositivo Ethernet y de bucle que posea, verá algo
como :-

<code>
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
</code>

<p>
Donde
<itemize>
<item>inet addr:10.144.153.10 es la dirección IP de su lado de la conexión.
<item>P-t-P:10.144.153.5 es la dirección IP del SERVIDOR.
</itemize>
<p>
(Naturalmente, ifconfig no informará estas mismas direcciones IP, pero
mostrará las de su servidor PPP.)

<p>
Nota: ifconfig también notifica que el enlace esta ACTIVO y EJECUTÁNDOSE.

<p>

Si no hay ningún dispositivo ppp listado o hay algo como

<code>
ppp0     Link encap:Point-Point Protocol
         inet addr:0.0.0.0  P-t-P:0.0.0.0  Mask:0.0.0.0
         POINTOPOINT  MTU:1500  Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0
         TX packets:0 errors:0 dropped:0 overruns:0
</code>

<p>
la conexión PPP no ha sido realizada... Vea la última sección acerca de la
depuración.

<p>
También debería poder ver un camino a la máquina remota (y más allá). Para
hacer esto, teclee la orden

<code>
route -n
</code>

<p>
Debería ver algo como esto:-

<code>
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
</code>

<p>
Aquí hay algo de bastante importancia: dése cuenta de que hay DOS entradas
apuntando a su interfaz ppp.

<p>
La primera es un camino HOST (indicada por la marca H) y que nos permite ver
la máquina a la que estamos conectados, pero no más allá.

<p>
La segunda es el camino por defecto (establecido al dar a pppd la opción
<tt/defaultroute/. Este es el camino que dice a nuestro PC Linux que envíe
cualquier paquete NO destinado a las redes locales - para las que tenemos
caminos específicos - al propio servidor PPP. El servidor PPP es entonces
responsable de encaminar nuestros paquetes a internet y de traernos los
paquetes que vengan hacia nosotros.

<p>
Si no ve una tabla de encaminamiento con dos entradas, algo va mal. En
particular si su registro de sistema muestra un mensaje diciendo que ppd 
no está reemplazando ningún camino existente por defect, cuando tiene un
camino por defecto apuntando a su interfaz Ethernet - el cual <bf/DEBE/ ser
reemplazado por un camino específica de red: <bf/SÓLO PUEDE TENER UN CAMINO
POR DEFECTO/.

<p>
Necesitará explorar los ficheros de inicialización de su sistema para
averiguar dónde se establece la ruta por defecto (usará una orden
<tt/route add default.../). Cámbielo a algo como <tt/route add net.../.

<p>
Ahora probemos el enlace haciendo pings a la dirección IP del servidor, tal
y como se nos informa en la salida de ifconfig, por ejemplo:

<code>
ping 10.144.153.51
</code>

<p>
Debería recibir mensajes como

<code>
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
</code>

<p>
Esta lista podría durar indefinidamente. Para pararla utilice CTRL C, en ese
momento recibirá algo más de información :-

<code>
--- 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
</code>

<p>
Hasta ahora la cosa va bien.

<p>
Ahora intentemos hacer un ping a un sitio por nombre (que no sea el propio
nombre del servidor, pero que sea de una máquina que usted SEPA esté
encendida y funcionando). Por ejemplo

<code>
ping sunsite.unc.edu
</code>

<p>
En ese momento habrá una pausa mientras Linux obtiene del servidor de
nombres que usted especificó en <tt>/etc/resolv.conf</tt> la dirección IP 
correspondiente al nombre de la máquina a la que ha hecho un ping. No se
preocupe por la espera (verá que las luces del módem parpadean). En breve
plazo recibirá una respuesta como

<code>
 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
</code>

<p>
De nuevo, pare la salida pulsando CTRL C y consiga las estadísticas...

<code>
--- 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
</code>

<p>
Si no consigue respuesta, intente hacer un ping a la dirección IP del
servidor de nombres de su ISP. Si recibe respuesta, entonces puede que tenga
un problema con su <tt>/etc/resolv.conf</tt>.

<p>
Si no funciona, hay un problema de encaminamiento, o su ISP tien un problema
a la hora de devolverle a usted los paquetes. Compruebe su tabla de
encaminamiento tal y como se describió más arriba, y si todo está bien,
contacte con su ISP. Una buena manera de probar si su ISP funciona es
utilizar otro sistema operativo para conectar. Si puede conectar a su ISP
con ese otro sistema, entonces el problema será de usted.

<p>
Si todo funciona, corte la conexión tecleando

<code>
ppp-off
</code>

<p>
Tras una breve pausa, el módem colgará.

<p>
Si eso no funciona, apague su módem o arranque su programa de comunicaciones
e interrumpa el módem con +++ y luego cuelgue con ATH0 cuando reciba la
notificación del módem OK.

<p>
Puede que también necesite eliminar el fichero de bloqueo creado por pppd
<code>
rm -f /var/lock/LCK..ttySx
</code>

<sect>Automatizando sus conexiones - Creando los scripts de conexión<label
id="automate">
<p>
Aunque usted pueda seguir conectándose a mano tal y como se mostró antes, es
mucho mejor configurar algunos scripts que permitan hacer esto
automáticamente.

<p>
Un conjunto de scripts automatiza la conexión y el arranque de PPP de manera
que todo lo que tenga que hacer (como root o como miembro del grupo PPP) es
ejecutar una única orden que inicie su conexión.

<sect1>Scripts de conexión para autentificación tipo Nombre de
usuario/Contraseña
<p>
Si su ISP no necesita el uso de PAP/CHAP, estos son los scripts para usted.

<p>
Si el paquete ppp está instalado correctamente, debería tener dos ficheros
de ejemplo. Para PPP 2.1.2 están situados en <tt>/usr/sbin</tt>
y para PPP 2.2 están en <tt>/etc/ppp/scripts</tt>. En Red Hat Linux se
encuentran en el subdirectorio /scripts del directorio de documentación del
paquete ppp (<tt>/usr/doc/ppp-x.x.x/</tt>) Se denominan

<p>
en PPP-2.1.2

<tscreen><verb>
ppp-on
ppp-off
</verb></tscreen>

<p>
en PPP-2.2 o superiores

<tscreen><verb>
ppp-off
ppp-on
ppp-on-dialer
</verb></tscreen>

<p>
Ahora, si utiliza PPP 2.1.2, le recomiendo que borre los ficheros de
ejemplo. Hay grandes problemas potenciales con ellos - (y no me diga que
funcionan bien). Yo los usé durante años (incluso los recomendaba en las
primeras versiones de este documento COMO).

<p>
Para el beneficio de los usuarios PPP 2.1.2, aquí dejo disponibles versiones
de plantilla MEJORES, tomadas de la distribución PPP 2.2. Le sugiero que los
copie y utilice estos scripts <bf/en lugar de/ los antiguos scripts de
PPP-2.1.2.

<sect1>El script ppp-on
<p>
Este es el primero de un PAR de scripts que inicializan la conexión.

<code>
#!/bin/sh
#
# El script para iniciar la conexión PPP. Esta es la primera parte del 
# par de scripts. No es un par de scripts seguro ya que los códigos son 
# visibles con la orden 'ps'. Sin embargo, es simple.
#
# Estos son los parámetros. Modifíquelos según lo necesite.
TELEPHONE=555-1212      # El número de teléfono para la conexión
ACCOUNT=george          # La cuenta de acceso para la conexión
PASSWORD=gracie         # La clave para esta cuenta de acceso
LOCAL_IP=0.0.0.0        # Dirección IP local, si se conoce. Dinámica = 0.0.0.0
REMOTE_IP=0.0.0.0       # Dirección IP remota, si desea. Usualmente = 0.0.0.0
NETMASK=255.255.255.0   # La máscara de red si es necesaria
#
# Exportar las necesarias para que esten disponibles por 'ppp-on-dialer'
export TELEPHONE ACCOUNT PASSWORD
#
# Esta es la parte del script que marca el teléfono y se conecta. Por favor,
# utilice el nombre de fichero absoluto ya que la variable $PATH no se usa
# la opción de conexión. (Hacer esto con una cuenta de root sería un agujero
# de seguridad).
#
DIALER_SCRIPT=/etc/ppp/ppp-on-dialer
#
# Iniciar la conexión
#
#
exec /usr/sbin/pppd debug /dev/ttySx 38400 \
        $LOCAL_IP:$REMOTE_IP \
        connect $DIALER_SCRIPT
</code>

<p>
Este es el código del script ppp-on-dialer:-

<code>
#!/bin/sh
#
# Esta es la segunda parte del script ppp-on. Realiza el protocolo de
# conexión para la conexión deseada
#
/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
</code>

<p>
Para PPP-2.2, el script <tt/ppp-off/ tiene este aspecto:-

<code>
#!/bin/sh
##############################################################
########
#
# Determina el dispositivo a finalizar
#
if [ "$1" = "" ]; then
        DEVICE=ppp0
else
        DEVICE=$1
fi

##############################################################
########
#
# Si el fichero pid de ppp0 está presente cuando el programa se ejecuta,
# pararlo.
if [ -r /var/run/$DEVICE.pid ]; then
        kill -INT `cat /var/run/$DEVICE.pid`
#
# Si la detención no funcionó entonces no había ningún proceso ejecutándose
# con ese pid. Puede también significar que el fichero de bloqueo
# permanecerá. Puede desear eliminar el fichero de bloqueo al mismo tiempo.
        if [ ! "$?" = "0" ]; then
                rm -f /var/run/$DEVICE.pid
                echo "ERROR: Eliminado fichero de bloqueo huérfano"
                exit 1
        fi
#
# Exito. Hagamos que pppd quite sus cosas de enmedio.
        echo "Enlace PPP a $DEVICE finalizado."
        exit 0
fi
#
# El proceso ppp no está ejecutándose para ppp0
echo "ERROR: El enlace PPP no está activo para $DEVICE"
exit 1
</code>

<sect1>Editar los scripts de inicio PPP suministrados
<p>
Ya que los nuevos scripts vienen en dos partes, los editaremos por turnos.

<sect2>El script ppp-on
<p>
Necesitará editar el script para que refleje SU nombre de usuario en su ISP,
SU contraseña en su ISP y el número de teléfono de su ISP.

<p>
Cada una de las líneas como <tt/TELEPHONE=/ realmente establecen variables
que contienen la información a la derecha de '=' (excluyendo los
comentarios, por supuesto). Edite cada uno de esos ficheros para que sea
correcto para su ISP y conexión.

<p>
Así mismo, como usted configura la dirección IP (si necesita hacerlo) en el
fichero <tt>/etc/ppp/options</tt>, BORRE la línea que dice

<code>
$LOCAL_IP:$REMOTE_IP \
</code>

<p>
También, asegúrese de que la variable DIALER_SCRIPT apunta a la ruta y
nombre completos del script de marcado que realmente va a utilizar. Por
tanto, si ha movido o renombrado este script, asegúrese de que edita esta
línea correctamente en el script <tt/ppp-on/.

<sect2>El script ppp-on-dialer
<p>
Este es el segundo de los scripts que arranca la conexión ppp

<p>
Nota: un script chat suele escribirse en una sola línea. Las barras inversas
se emplean para permitir continuaciones a lo largo de varias líneas física
(para permitir legibilidad humana) y no forman parte del script mismo.

<p>
Sin embargo, es muy util mirarlo en detalle para que entendamos qué es lo
que (se supone que) hace.

<sect1>Qué quiere decir un script Chat...
<p>
Un script chat es una secuencia de parejas <tt>&dquot;</tt>cadena esperada
<tt>&dquot;</tt> <tt>&dquot;</tt>cadena enviada<tt>&dquot;</tt>. 
En particular, fíjese que <bf/SIEMPRE/ esperamos <bf>algo</bf> antes de
enviar nada.

<p>
Si vamos a enviar algo <bf/SIN/ recibir nada antes, debemos usar una cadena
esperada vacía (indicada por
<tt>&dquot;</tt><tt>&dquot;</tt>) y de manera similar al esperar algo sin
enviar nada. También, si una cadena está formada por varias palabras (como
NO CARRIER), debe entrecomillar la cadena para que sea vista como una sola
por chat.

<p>
La línea de chat en nuestra plantilla es:-

<code>
exec /usr/sbin/chat -v
</code>
<p>
Al llamar a chat, la opción -v hace que chat copie toda su I/O al registro
del sistema (normalmente /var/log/messages). Una vez que sabe que el script
chat funciona bien, edite esa línea para quitar la -v y ahorrar información
innecesaria de su syslog.

<code>
TIMEOUT         3
</code>
Esto ajusta el retardo para la recepción de entradas esperadas a tres
segundos. Puede necesitar incrementar esta a 5 o 10 segundos si utiliza un
módem realmente lento.

<code>
ABORT           '\nBUSY\r'
</code>
<p>
Si se recibe la cadena BUSY, abortar la operación.

<code>
ABORT           '\nNO ANSWER\r'
</code>
<p>
Si se recibe la cadena NO ANSWER, abortar la operación.

<code>
ABORT           '\nRINGING\r\n\r\nRINGING\r'
</code>
<p>
Si se recibe la cadena (repetida) RINGING, abortar la operación. Eso es
porque alguien esta llamando a su teléfono.

<code>
&dquot;              \rAT
</code>
<p>
No esperar nada del módem y enviar la cadena AT.

<code>
OK-+++\c-OK   ATH0
</code>
<p>
Esto es algo más complicado ya que utiliza alguna de las capacidades de
recogida de errores de chat.
<p>

Lo que quiere decir es... Esperar OK. Si no se recibe (porque el módem no
está en modo de órdenes) entonces enviar +++ (la cadena que hace que un
módem compatible con el estándar Hayes pase a modo de órdenes) y esperar un
OK. Entonces enviar ATH0 (el módem descuelga). Esto permite a su script
tomar la situación si su modem estaba atascado en línea.

<code>
TIMEOUT         30
</code>
<p>
Ajustar el retardo a 30 segundos para el resto del script. Si experimenta
problemas con el script chat que aborta debido a finalizaciones del tiempo
de espera, incremente esto a 45 segundos o más.

<code>
OK              ATDT$TELEPHONE
</code>
<p>

Esperar OK (la respuesta del módem al comando ATH0) y marcar el número de
teléfono al que deseamos llamar.

<code>
CONNECT         ''
</code>
<p>
Esperar CONNECT (que es lo que nuestro módem envía cuando el módem remoto
contesta) y no enviar nada como respuesta.

<code>
ogin:--ogin:    $ACCOUNT
</code>
<p>
De nuevo, tenemos una tecnología de recuperación de errores. Esperamos el
la petición de entrada al sistema (...ogin:) pero si no recibimos esto
debido a la finalización del tiempo de espera, enviar un retorno de carro y
entonces buscar de nuevo la petición de entrada al sistema. Cuando se ésta
se reciba, enviar el nombre de usuario (guardado en la variable
&dollar;ACCOUNT).

<code>
assword:        $PASSWORD
</code>

<p>
Esperar la petición de contraseña y enviar nuestra contraseña (otra vez,
guardada en una variable).

<p>
Este script chat tiene una capacidad razonable de recuperación de errores.
Chat tiene muchas más características que las aquí demostradas. Para más
información consulte la página de manual de chat (<tt/man 8 chat/).

<sect2>Arrancando PPP en el lado del servidor
<p>
Aunque el script ppp-on-dialer es adecuado para los servidores que arrancan
automáticamente pppd una vez que usted ha entrado en el sistema, algunos
servidores requieren que usted arranque explícitamente PPP.

<p>
Si necesita ejecutar una orden para arrancar PPP en el servidor,
TAMBIEN necesita editar el script ppp-on-dialer.

<p>Al FINAL del script (después de la línea de contraseña) añada un par
adicional <bf/esperado enviado/ - este debería ser como su línea de órdenes
(cuidado con los caracteres que tienen un significado especial en el shell
Bourne - como el &dollar; y [ o ] (los corchetes).

<p>
Una vez que chat haya encontrado la línea de órdenes de su shell, deberá
ejecutar la orden que arranque ppp en el servidor PPP de su ISP.

<p>
En mi caso, mi servidor PPP utiliza la línea de órdenes estándar de Bash
para Linux
<code>
[hartr@kepler hartr]$
</code>

<p>
y requiere que teclee

<code>
ppp
</code>

<p>
para arrancar PPP en el servidor.

<p>
Es una buena idea permitir aquí una recuperación de errores, por lo que en
mi caso utilizo
<code>
 hartr--hartr    ppp
</code>

<p>
Esto es,  si no recibo la línea de órdenes en el tiempo del retardo, envío
un retorno de carro y busco de nuevo la línea de órdenes.

<p>
Una vez que se recibe la línea de órdenes, envío la cadena <tt/ppp/.

<p>
Nota: no olvide añadir una &bsol; al final de la línea anterior para que
chat todavía piense que el script chat está en una sola línea.

<p>
Desafortunadamente, algunos servidores producen un juego muy variable de
líneas de órdenes. Puede que necesite conectar muchas veces utilizando
minicom para comprender qué sucede y escoger las cadenas
&dquot;esperadas&dquot; estables.

<sect1>Un script chat para conexiones autentificadas por PAP/CHAP
<p>
Si su ISP utiliza PAP/CHAP, su script chat es mucho más simple. Todo lo que
el script chat debe hacer es marcar el teléfono, esperar la conexión y dejar
que pppd maneje la entrada en el sistema.

<code>
#!/bin/sh
#
# Esta es la segunda parte del script ppp-on. Realiza el protocolo de
# conexión para la conexión deseada.
#
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         ''                              \
</code>



<sect1>Las opciones de pppd <tt/debug/ y <tt/file fichero_opciones/
<p>
Como ya hemos visto, puede conectar la información de registro de 
depuración si arranca pppd con la opción -d. La opción "debug" es
equivalente a esta.

<p>
Ya que estamos estableciendo una nueva conexión con un nuevo script, deje la
opción de depuración por ahora. (Atención: si tiene poco espacio en el disco
duro, registrar los intercambios de pppd puede hacer ampliar su fichero de
registro de sistema y meterle en problemas - pero para hacerlo debe fallar
su conexión y seguir intentándolo durante bastantes minutos).

<p>
Una vez que usted sabe que todo funciona adecuadamente, usted puede eliminar
esta opción.

<p>
Si ha llamado a su fichero de opciones ppp de alguna manera distinta a
<tt>/etc/ppp/options</tt> o <tt>/etc/ppp/options.ttySx</tt>, especifique el
nombre de fichero a pppd con la opción <tt/file/.

<code>
exec /usr/sbin/pppd debug file options.miservidor /dev/ttyS0 38400 \
</code>

<sect>Comprobar su script de conexión
<p>
Abrir un nuevo Xterm (si se encuentra en X) o abra una nueva consola virtual
y introdúzcase en el sistema como root.

<p>
En esta nueva sesión, ejecute la orden

<tscreen><verb>
tail -f /var/log/messages
</verb></tscreen>

<p>
(o cualquiera que se el fichero de su registro de sistema).

<p>
En la primera ventana (o consola virtual) ejecute la orden

<tscreen><verb>
ppp-on &amp;
</verb></tscreen>

<p>
(o como quiera que haya llamado a la versión que ha editado de
/etc/ppp/scripts/ppp-on). Si no pone el script a trabajar en segundo plano
con el signo &amp; al final de la orden, no tendrá la línea de órdenes de
vuelta hasta que ppp finalice (cuando la conexión se acabe).

<p>
Ahora cambie a la ventana que está registrando el registro del sistema.

<p>
Podrá ver algo como esto (siempre y cuando haya especificado -v a chat y -d
a pppd)....esto son el script chat y las respuestas que son enviadas al
registro del sistema seguida de la información de inicialización de pppd :-

<code>
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
</code>

<p>
(Nota - Yo utilizo dirección IP ESTATICA - mi máquina la envía al servidor
PPP - usted no verá esto si utiliza una dirección IP DINÁMICA.)
Además, este servidor requiere una orden específica para iniciar ppp.

<p>
Esto tiene buen aspecto - pruébelo como antes con pings a direcciones IP y a
nombres de máquina.

<p>
Arranque su navegador web o lo que sea, y navegue por la red - Ya está
conectado.

<sect>Desconectando la conexión PPP<label id="off">
<p>
Cuando haya terminado con la conexión PPP, utilice la orden estándar
ppp-off para finalizarlo (recuerde - debe ser root o un miembro del grupo
ppp).

<p>
En el registro de sistema verá algo como:-

<code>
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.
</code>

<p>
No se preocupe acerca de <tt/SIOCDELRT/ - es simplemente pppd dándose cuenta
de que está finalizando y no pasa nada por lo que haya que preocuparse.

<sect>Depurando<label id="problems">
<p>
Hay un buen número de razones por la que su conexión puede no funcionar -
chat no ha conseguido completarse correctamente, usted tiene una línea con
mucho ruido, etc. Compruebe su registro de sistema para más indicaciones.

<sect1>He compilado el soporte PPP en el núcleo, pero...
<p>
Un problema muy común es que la gente compila el soporte PPP en el núcleo y
después, cuando intentan ejecutar pppd, el núcleo se queja diciendo que no
soporta ppp. Hay unas cuantas razones por la que esto puede ocurrir.

<sect2>¿Está arrancando el núcleo correcto?

Aunque usted <bf/haya/ recompilado el núcleo para que de soporte a ppp,
usted puede no estar arrancando el nuevo núcleo. Esto puede suceder si no
actualiza <tt>/etc/lilo.conf</tt> y vuelve a ejecutar lilo.

<p>
Una buena manera de comprobar el núcleo es ejecutando la orden <tt/uname
-a/, que debería producir una línea como

<code>
Linux archenland 2.0.28 #2 Thu Feb 13 12:31:37 EST 1997 i586
</code>

<p>
Esto da la versión del núcleo y la fecha en la que el núcleo se compiló -
lo cual debería dar una idea clara de qué es lo que sucede.

<sect2>¿Compiló el soporte ppp del núcleo como módulo?
<p>
Si compiló el soporte ppp como módulo, pero no rehizo e instaló los módulos,
puede conseguir este error. Compruebe el Núcleo-COMO y el fichero README en
<tt>/usr/src/linux</tt>.

<p>
Otra posibilidad en este caso es que usted puede esperar que los módulos
requeridos se carguen automáticamente, pero puede no estar ejecutando el
demonio <tt/kerneld/ (que carga y descarga automáticamente módulos en tiempo
real). Lea el kerneld mini-HOWTO para más información acerca de la
configuración de kerneld.

<sect2>¿Está usted utilizando la versión correcta de PPP para su núcleo?
<p>
Usted <bf/debe/ utilizar ppp-2.2 o superior con las versiones de núcleo
2.x.x. Puede utilizar ppp-2.2 con la versión de núcleo 1.2.x (si parchea el
núcleo). Si no, utilice ppp-2.1.2.

<sect2>¿Está ejecutando pppd como root?
<p>
Si no ejecuta pppd como usuario root (y ppd no es su id root) puede recibir
este mensaje.

<sect1>Mi módem se conecta pero ppp no se inicia.
<p>
Hay infinitas variaciones sobre esto (eche un vistazo a comp.os.linux...).

<p>
Un fallo <bf/MUY/ común es que haya errado al transcribir algo en sus
scripts. Lo único que debe hacer aquí es asegurarse de que registra la
conversación chat entre su PC Linux y el servidor en el registro de sistema
(/var/log/messages) y entonces ir <em/línea por línea/ examinándolo.
Puede que necesite conectarse al servidor ppp manualmente para comprobarlo
todo de nuevo.

<p>
Debe comprobar el registro de las líneas de órdenes muy cuidadosamente - y
tenga en cuenta de que los humanos tenemos la tendencia de leer lo que
CREEMOS que hemos escrito - ¡no lo que hemos escrito de veras!

<sect1>El registro de sistema dice ``<tt>serial line is not 8 bit clean</tt>...''

<p>
También hay variaciones sobre esto - como <tt/serial line looped back/,
etc., y la causa puede ser varias cosas.

<p>
Para entender qué es lo que pasa es necesario profundizar un poco en qué es
lo que sucede tras el proceso de pppd.

<p>
Cuando pppd arranca, envía paquetes LCP (protocolo de control de conexión) a
la máquina remota. Si recibe una respuesta válida entonces pasa a la
siguiente fase (utilizar IPCP - paquetes de protocolo de control de IP) y
sólo cuando esa negociación finaliza se inicializa la capa IP de manera que
pueda utilizar su conexión PPP.

<p>
Si no hay un servidor ppp funcionando al otro lado de la línea cuando su PC
envía paquetes lcp, éstos son reflejados por el proceso de entrada en el
sistema de la máquina remota. Como estos paquetes utilizan 8 bits, el
reflejo corta el octavo bit (recuerde que ASCII es un código de 7 bits). PPP
ve esto y se queja de acuerdo con ello.

<p>
Hay bastantes razones por las que este reflejo puede ocurrir.

<sect2>No ha entrado en el servidor de manera adecuada
<p>
Cuando su script chat finaliza, pppd arranca en su PC. Sin embargo, si no ha
completado el proceso de entrada en el sistema (incluyendo el envío de
cualquier orden necesaria para arrancar PPP en el servidor), PPP no se
iniciará.

<p>
Por lo tanto, los paquetes lcp se reflejarán y recibirá este error.

<p>
Necesita comprobar cuidadosamente y corregir (si es necesario) su script
chat (ver más arriba).

<sect2>No está ejecutando PPP en el servidor
<p>
Algunos servidores requieren que introduzca una orden o un retorno de
carro tras completar el proceso de entrada en el sistema antes de arrancar
ppp.

<p>
Compruebe su script chat (ver más arriba).

<p>
Si entra en el sistema manualmente y se encuentra con que necesita enviar un
retorno de carro para que arranque PPP, simplemente añada un par
esperado/enviado en blanco al final de su script chat (una cadena de envío
vacía envía realmente un retorno de carro).

<sect2>El proceso PPP remoto es lento al arrancarse
<p>
Este es algo más raro.

<p>
Por defecto, pppd está compilado para enviar un máximo de 10 peticiones de
configuración lcp. Si el servidor es un poco lento al arrancar, las 10
peticiones puede ser enviadas antes de que el PPP remoto este listo para
recibirlas.

<p>
En su máquina, pppd ve las 10 peticiones reflejadas (con el octavo bit
eliminado) y finaliza.

<p>
Hay dos maneras de evitar esto:-

<p>
Añada <tt/lcp-max-configure 30/ a su fichero de opciones ppp. Esto
incrementa el máximo número de paquetes de configuración lcp que pppd envía
antes de dejarlo. Para un servidor realmente lento, puede que necesite
incluso más que esto.

<p>
De manera alternativa, puede trabajar la solución algo más. Se habrá dado
cuenta de que cuando se conectó a mano al servidor PPP y PPP arrancó, el
ppp era siempre el carácter del gurruño (&tilde;).

<p>
Utilizando este conocimiento podemos añadir un nuevo par
<tt>esperado/enviado</tt> al final de nuestro script chat que espere una
tilde y no envíe nada. Esto sería algo como:-

<code>
\~   ''
</code>

<p>
Nota: como el carácter tilde tiene un significado especial en el shell, debe
ser mostrado con un carácter de escape (por eso la barra inversa inicial).

<sect1>Camino por defecto no establecido
<p>
Si pppd rehusa a establecer un camino por defecto, esto es porque (bastante
correctamente) deniega la eliminación/reemplazo del camino por defecto
existente.

<p>
La razón más normal de este error es que algunas distribuciones configurar
una camino por defecto vía tarjeta Ethernet que es contraria a establecer
una ruta específica de red.

<p>
Vea el Manual GARL y los COMOs Net2/3 para más información acerca de cómo
configurar su tarjeta Ethernet y las rutas asociadas.

<p>
Una alternativa a esto es que su red local utilice una pasarela/encaminador
y que la tabla de encaminamientos de su PC haya sido configurada para
apuntar como camino por defecto a la pasarela.

<p>
Solucionar esta última situación requiere algo más de conocimientos IP y
queda fuera de los objetivos de este COMO. Le sugiero que obtenga un consejo
de alguien más experto (vía foros de noticias o de alguien a quien pueda
preguntar).

<sect1>Otros Problemas
<p>
Hay otras muchas razones aparte de estas por las que ppp no puede conectar
y/o funcionar bien.

<p>
Lea el PUF PPP (que son realmente una serie de preguntas y respuestas). Es
un documento mucho más intuitivo y las respuestas ESTAN allí. Desde mi
triste experiencia, si la respuesta a sus problemas no está allí, el
problema no es fallo de ppp. En mi caso yo estaba utilizando un núcleo ELF
para el que no había actualizado los módulos de núcleo apropiados.
Desperdicié sólo 2 días y una casi toda una noche modificando lo que había
sido un perfecto servidor PPP antes del ligero error.

<sect>Consiguiendo ayuda cuando esté totalmente atascado
<p>
Si no puede hacer que su conexión PPP funcione, vuelva a este documento y
compruébelo todo - junto con la salida creada por "chat-v..." y "pppd -d" en
su registro de sistema.

<p>
También consulte la documentación de PPP y el PUF además de los otros
documentos aquí mencionados.

<p>
Si sigue atascado, intente escribir a los grupos de noticias
comp.os.linux.misc y comp.os.linux.networking que son leídos por gente que
pueda ayudarle con PPP como comp.protocols.ppp

<p>
Puede intentar enviarme un mensaje personal, pero ha de saber que tengo un
trabajo (y una vida) y que no garantizo que responda rápidamente (si es que
respondo) ya que todo depende de la cantidad de trabajo y del estado de mi
vida privada.

<p>
En particular - <bf>NO ENVÏE SALIDAS DE DEPURACIÓN A LOS GRUPOS DE NOTICIAS
NI ME LAS ENVIE POR CORREO ELECTRONICO</bf> - lo primero consume un valioso
ancho de banda de red y lo último será automáticamente enviado a /dev/null
(a menos que yo se lo pidiera específicamente).

<sect>Problemas comunes una vez que el enlace funciona
<p>
Un problema que puede encontrarse es que muchos proovedores sólo dan
servicio técnico al paquete de programas que distribuyen con las nuevas
cuentas. Esto es (típicamente) para Microsoft Windows :-( - y muchos
servicios de ayuda de ISPs no parecen saber nada acerca de Unix (ni sobre
Linux). Por lo tanto, prepárese a recibir una asistencia limitada por su
parte.

<p>
Siempre podría hacer a todos un favor y mostrarles el funcionamiento de
Linux (cualquier persona de un servicio técnico debería estar al día en
términos de Internet y eso quiere decir que debería tener un ordenador con
Linux en casa).

<sect1>No puedo ver más allá del servidor PPP con el que me conecto
<p>
Bien - su conexión PPP está establecida y ejecutándose y puede hacer ping al
servidor PPP por dirección IP (la segunda dirección IP (remota) mostrada por
<tt/ifconfig ppp0/), pero no puede alcanzar nada más allá de esto.

<p>
Antes de nada, intente hacer un ping a las direcciones IP especificadas en
/etc/resolv.conf como servidores de nombres. Si funciona, usted <bf/puede/
ver más alla de su servidor PPP (a menos que tenga la misma dirección IP que
la dirección IP remota para su conexión). Ahora intentemos hacer un ping al
nombre completo de Internet de su proovedor de servicios. Por ejemplo

<tscreen><verb>
ping mi.proveedor.net.au
</verb></tscreen>

<p>
Si NO funciona, tiene un problema con la resolución de nombres.
Probablemente por un error tipográfico en su /etc/resolv.conf. Compruebe
este cuidadosamente con la información que ha adquirido al telefonear a su
proovedor de servicio. Si todo tiene buen aspecto, telefonee a su proovedor
de servicio y compruebe que anotó los números IP correctamente.

<p>
Si SIGUE sin funcionar (y su proovedor confirma que tiene sus servidores de
nombres encendidos y funcionando), usted tendrá un problema en algún otro
sitio - le sugioero que compruebe cuidadosamente su instalación Linux
(examinando particularmente los permisos de los ficheros).

<p>
Si sigue sin poder hacer ping a los servidores de nombres de su proovedor
mediante dirección IP, o están apagados (haga una llamada telefónica y
compruebelo) o hay un problema de encaminamiento en la parte de su
proovedor. De nuevo, llámeles y compruébelo.

<p>
Una posibilidad es que la parte remota sea un servidor PPP Linux en la que
la opción de reenvío de IPs no haya sido especificada en le núcleo.

<p>
Una buena prueba general es intentar conectar con su proovedor utilizando el
software que deben haber suminstrado para (cielos) Microsoft Windows. Si
todo funciona desde otro sistema operativo con la misma cuenta, entonces el
problema es con su sistema Linux, y NO con su proovedor de servicios.

<sect1>Puedo enviar mensajes, pero no recibirlos
<p>
Si utiliza dirección IP dinámica, esto es perfectamente normal. Vea
"Configurar los servicios" más abajo.

<sect1>¿Por qué la gente no puede hacer finger, WWW, gopher, talk... a mi
máquina?
<p>
De nuevo, si está utilizando direcciones IP dinámicas, esto es perfectamente
normal. Vea "Configurando servicios" más abajo.


<sect>Utilizando servicios Internet con direcciones IP dinámicas<label
id="dynamic-server">
<p>
Si está utilizando direcciones IP dinámicas (y muchos proovedores sólo le
darán una dirección IP dinámica a menos que pague mucho más por su
conexión), entonces deberá reconocer las limitaciones que esto impone.

<p>
Antes de nada, las peticiones de servicio hacia fuera funcionarán. Esto es,
podrá enviar mensajes utilizando sendmail (siempre que tenga bien
configurado sendmail), enviar/recibir ficheros vía ftp, hacer finger a
usuarios en otras máquinas, navegar por la Web, etc.

<p>
En particular, puede responder al correo electrónico que haya recibido en su
máquina aunque esté desconectado. El correo simplemente esperará en su
cola de mensajes hasta que vuelva a conectarse con su ISP.

<p>
Sin embargo, su máquina NO está conectada a Internet las 24 horas del día,
ni tiene la misma IP cada vez que se conecta. Por lo que es imposible que
reciba correo direccionado a su máquina, y muy difícil configurar un
servidor web o ftp de manera que sus amigos puedan acceder. 

Por lo menos, en lo que a Internet se refiere, su máquina no es una única
máquina contactable permanentemente ya que no tiene una única dirección IP
(recuerde - otras máquinas utilizarán la misma dirección IP que usted ha
utilizado alguna otra vez).

<p>
Si configura un servidor Web (u otro servidor), será completamente
desconocido por otro usuario en la Red A MENOS QUE sepan que su máquina está
conectada y su dirección IP actual. Hay un número de modos de los que pueden
conseguir esta información, que abarcan desde que usted les llame, les envíe
un correo electrónico o utilice ficheros ".plan" en una cuenta shell en su
proovedor de servicios (siempre y cuando su proovedor permita el acceso a
shell y finger).

<p>
Pero, para la mayoría de los usuarios, este no es un problema. Lo que la
mayoría de la gente quiere es recibir y enviar correo (utilizando su cuenta
en su proovedor de servicios) y hacer conexiones a servidores externos WWW,
ftp en Internet. Si DEBE permitir conexiones internas, debería conseguir una
IP estática. De manera alternativa puede explorar los métodos comentados
anteriormente...

<sect1>Configurar el correo electrónico
<p>
Incluso para direcciones IP dinámicas, puede configurar sendmail en su
máquina para que envíe hacia afuera cualquier correo que escriba localmente.
La configuración de sendmail puede ser oscura y difícil - por lo que este
documento no intentará decir cómo hacer esto. Sin embargo, debería
configurar sendmail para que su proovedor de servicios Internet sea
designado como su máquina "smart relay" (la opción <bf/DS/ de
<tt/sendmail.cf/. (Para más información acerca de la configuración de
sendmail, lea los documentos sendmail - y mire las configuraciones m4 que
vienen con sendmail. Casi seguro que haya una acorde con sus necesidades).

<p>
Hay también libros excelentes sobre Sendmail (como la "biblia" de O'Reilly
and Associates), pero es casi seguro que sobrecargarían al la mayor parte de
los usuarios.

<p>
Una vez que tiene sendmail configurado, probablemente desee que sendmail
mande todos los mensajes que han estado esperando en la cola de salida de
mensajes tan pronto como la conexión se efectúe. Para hacer esto, añada la
orden

<tscreen><verb>
sendmail -q &
</verb></tscreen>

<p>
a su script /etc/ppp/ip-up (ver más abajo).

<p>La recepción de correo es un problema para las direcciones IP dinámicas.
La manera de configurar esto es:-
<itemize>
<item>configurar su programa gestor de correo de manera que todos los
mensajes enviados salgan con una cabecera "reply to" direccionada a su
dirección de correo en el proovedor.<newline>
Si puede, podría también ajustar su dirección FROM para que sea también la
su dirección en su ISP.

<item>usar los programas popclient y fetchmail para descargar el correo de
su proovedor de servicios. De manera alternativa, si su ISP utiliza IMAP,
usted puede usar un gestor de correo con soporte IMAP (como por ejemplo,
pine).
</itemize>

<p>
Puede automatizar este proceso en el momento de conexión poniendo las
órdenes necesarios en el script <tt>/etc/ppp/ip-up</tt> (ver más abajo).

<sect1>Configurar un servidor de nombres local
<p>
Aunque usted pueda utilizar fácilmente los servidores de nombres localizados
en su ISP, puede también instalar un servidor de nombres local de caché
(secundario) que sea iniciado en el script ip-up. La ventaja de ejecutar un
servidor de nombres local (de caché) es que le ahorrará tiempo (y ancho de
banda) si contacta frecuentemente con las mismas máquinas durante una sesión
de larga duración.

<p>
La configuración DNS para un servidor de nombres caché (que utiliza una
linea "forwarders" en el fichero named.boot que apunta al servidor de
nombres de su ISP) es relativamente simple. El libro de O'Really (DNS and
Bind) explica todo lo que desea saber sobre esto.

<p>
Hay también un DNS-COMO disponible.

<p>

Si está ejecutando una pequeña red local que permita el acceso a Internet a
través de su PC Linux (utilizando enmascaramiento IP, por ejemplo), puede
que sea una buena idea ejecutar un servidor de nombres local (con una
directiva forwarders) aunque la conexión esté activada, ya que esto
minimizará el ancho de banda y los retardos asociados a la resolución de
nombres.

<p>
Un consejo de cortesía: pida permiso a su ISP antes de empezar a usar un
servidor de nombres secundario de caché en el dominio de su servidor. Si
está bien configurado, su servidor de nombres no causará ningún problema a
su ISP, pero si las cosas van mal, puede causar problemas.



<sect>Enlazando dos redes mediante PPP<label id="WAN">
<p>
No hay ninguna diferencia básica entre enlazar un sólo PC Linux a un
servidor PPP y entrelazar dos redes locales utilizando PPP en una máquina de
cada red local. Recuerde que PPP es un protocolo <bf/entre iguales/, entre
parejas iguales.


<p>
Sin embargo, usted necesita entender <bf/DE MANERA PRECISA/ cómo se
establece el encaminamiento. Lea el cómo RED-2 y la Guía del Administrador
de Redes en Linux (GARL). También encontrará de gran ayuda 
&dquot; TCP/IP Network Administration&dquot; (publicado por O'Reilly and 
Associates - ISBN 0-937175-82-X).

<p>
Si va a haber direcciones IP de red local no conectada en cada lado del
enlace, debería leer el minihowto sub networking de Linux. Está disponible
en <em>Linux Sub networking mini-HOWTO</em>
<tt><htmlurl url="http://www.interweft.com.au/other/"
name="http://www.interweft.com.au/other/"></tt>.

<p>
Para enlazar dos redes locales, <bf/debe/ utilizar direcciones IP de red
distintas (o subredes con la misma dirección de red) y necesitará utilizar
direcciones IP estáticas - o utilizar enmascaramiento IP. Si desea utilizar
enmascaramiento IP, lea el mini-como de enmascaramiento IP para buscar
instrucciones para hacerlo funcionar.

<sect1>Configurando las direcciones IP.

<p>
Acuerde con el administrador de red de la otra red local qué direcciones IP
van a utilizarse para cada lado de la interfaz PPP. Si utiliza direcciones IP
estáticas, esto también requerirá que marque un número de teléfono
específico.

<p>
Ahora edite el fichero <tt>/etc/ppp/options[.ttyXX]</tt> apropiado - es una
buena idea tener un módem y un puerto específico en su ordenador para esta
conexión. Esto puede que requiera que cambie su fichero de opciones
<tt>/etc/ppp/options</tt> - y que cree los ficheros options.ttyXX para 
cualesquiera otras conexiones.

<p>
Especifique las direcciones IP de su extremo de la conexión PPP con las
opciones adecuadas exactamente como se mostró para las direcciones IP
estáticas anteriormente.

<sect1>Configurando el encaminamiento
<p>
Debe hacer que los paquetes de su red local se encaminen a través de la
interfaz que establece la conexión PPP. Esto es un proceso de dos fases.

<p>
Primero, necesitará establecer un camino desde la máquina que ejecute la
conexión PPP hasta la red remota. Si la conexión es a Internet, esto puede
manejarse con una ruta por defecto establecida por el propio pppd en su
extremo de conexión utilizando la opción 'defaultroute' con pppd.

<p>

Si, sin embargo, la conexión entrelaza dos redes locales, entonces deberá
añadirse un camino específico de red para cada red que sea accesible a
través de la conexión. Esto se consigue utilizando la orden 'route' para
cada red existente en el script /etc/ppp/ip-up (ver Tras establecer la
conexión... para averiguar cómo hacer esto).

<p>
Lo segundo que necesita hacer es decir a los otros ordenadores de su red
local que su ordenador Linux es, realmente, la pasarela para la red situada
al otro lado del enlace ppp.

<p>
Por supuesto, el administrador de la red remota también debe hacer esto. Sin
embargo, como el/ella encaminará paquetes hacia nuestra red, será necesario
establecer un <bf/camino específico de red/, no un camino por defecto (a
menos que la red local remota se conecte con usted para acceder a Internet
mediante su conexión).

<sect1>Seguridad de red
<p>
Si enlaza su red local a Internet utilizando PPP - o incluso solo si la
conecta a una red local &dquot;extraña&dquot;, necesitará saber de temas de
seguridad. Le sugiero que piense en instalar un cortafuegos.

<p>
Usted debería hablar con el administrador de su red local de <bf/ANTES/ de
que comience a conectar con redes locales extrañas o con Internet de esta
manera. Un fallo a la hora de hacer esto podría producir desde que nada
funcionara hasta que todo fuera seriamente problemático.

<sect>Tras hacer que la conexión funcione - el script
<tt>/etc/ppp/ip-up</tt><label
id="ip-up">
<p>
Una vez que la conexión PPP se ha establecido, pppd busca un fichero
<tt>/etc/ppp/ip-up</tt>. Si este script existe y es ejecutable, el demonio
PPP ejecutará el script. Esto le permite automatizar cualquier orden de
encaminamiento que pueda ser necesaria y cualesquiera otras acciones que
puede desear que sucedan cada vez que conecte el enlace PPP.

<p>
Esto es sólo un script de shell y puede hacer cualquier cosa que un script
de shell pueda hacer (esto es, casi todo lo que quiera).

<p>
Por ejemplo, puede hacer que sendmail envía cualquier mensaje situado en la
cola de mensajes a enviar.

<p>
De manera similar, puede insertar en ip-up las órdenes para recoger
(utilizando pop) cualquier email disponible para usted en su ISP.

<p>
Hay restricciones en <tt>/etc/ppp/ip-up</tt>:-

<itemize>
<item>Se ejecuta en un entorno deliberadamente restringido para mejorar la
seguridad. Esto quiere decir que debe proporcionar la ruta completa de los
ejecutables, etc...
<item>Técnicamente, <tt>/etc/ppp/ip-up</tt> es un <em/programa/, no un
script. Esto quiere decir que puede ser ejecutado directamente - y por ello
requiere que el fichero mágico estándar (<tt>#!/bin/bash</tt>) de la primera
línea debe ser legible y ejecutable por el root.
</itemize>

<sect1>Encaminamiento especial
<p>
Si está interconectando dos redes locales, necesitará establecer caminos
específicos para las redes externas. Esto se puede hacer fácilmente
utilizando el script <tt>/etc/ppp/ip-up</tt>. La única diferencia estriba en
si su máquina maneja varias conexiones PPP.

<p>
Esto es debido a que <tt>/etc/ppp/ip-up</tt> se ejecuta para CADA conexión
ppp que se realiza, por lo que necesita ejecutar cuidadosamente las
órdenes
de encaminamiento correctos para el enlace particular que se realiza - y no
cuando se lleva a cabo cualquier otra conexión.

<sect1>Manejando colas de correo electrónico
<p>
Cuando se establece la conexión entre dos redes locales, puede que desee
asegurarse de que el correo electrónico que está esperando en cada lado de
la conexión sea <em/enviado/ a su destino. Esto se hace añadiendo la
invocación adecuada de <tt/sendmail/.

<p>
Utilizar la función 'case' de bash con un parámetro apropiado que pppd pase
al script puede servir para esto. Por ejemplo, este es el script
<tt>/etc/ppp/ip-up</tt> que utilizo para manejar nuestras conexiones WAN y
la conexión a mi Ethernet doméstico (también manejado con el mismo servidor
ppp).

<sect1>Un script <tt>/etc/ppp/ip-up</tt> de ejemplo
<p>
Este ejemplo da información acerca de una variedad amplia de usos.

<code>
#!/bin/bash
#
# Script que maneja las tablas de encaminamiento de la manera necesaria para
# pppd
# Sólo requiere este manejamiento el enlace a Newman.
#
# Cuando la conexión ppp se establece, se llama a este script con los
# siguientes parámetros
#       $1      el nombre de interfaz utilizado por pppd (como ppp3)
#       $2      el nombre de dispositivo tty
#       $3      la velocidad del dispositivo tty
#       $4      la dirección IP local para la interfaz
#       $5      la dirección IP remota
#       $6      el parámetro especificado para pppd en la opción 'ipparam'
#
case "$5" in
# Manejar el encaminamiento al servidor del Campus de Newman
        202.12.126.1)
                /sbin/route add -net 202.12.126.0 gw 202.12.126.1
# y enviar la cola de mensajes para que su correo se distribuya.
     /usr/sbin/sendmail -q &
                ;;
 139.130.177.2)
# Nuestro enlace Internet
# Cuando éste se ejecuta, arrancar el servidor de tiempo y sincronizarlo con
# mundo en el caso de que no esté ya ejecutándose
                if [ ! -f /var/lock/subsys/xntpd ]; then
                        /etc/rc.d/init.d/xntpd.init start &
                fi
# Arrancar el servidor de noticias (si no estaba ejecutándose)
                if [ ! -f /var/lock/subsys/news ]; then
                        /etc/rc.d/init.d/news start &
                fi
                ;;
 203.18.8.104)
# Descargar el correo a mi máquina doméstica tan pronto como se efectue el
# enlace. No se requiere encaminamiento ya que mi Ethernet doméstico está
# manejado por enmascaramiento IP y encaminamiento proxyarp.
     /usr/sbin/sendmail -q &
     ;;
        *)
esac
exit 0</code>

<p>
Como resultado de llevar a cabo el enlace a nuestro campus de Newman y este
script, hemos obtenido la siguiente tabla de encaminamiento (esta máquina
también es nuestro servidor general PPP y TAMBIEN maneja nuestra conexión a
Internet. He intercalado comentarios en la salida para ayudar a explicar qué
es cada entrada) :-

<code>
[root@kepler /root]# route -n
Kernel routing table
Destination     Gateway         Genmask         Flags MSS    Window Use Iface
# el camino de MAQUINA a nuestra pasarela remota a Internet
139.130.177.2   *               255.255.255.255 UH    1500   0      134 ppp4
# el camino de MAQUINA a nuestro servidor en el campus de Newman
202.12.126.1    *               255.255.255.255 UH    1500   0       82 ppp5
# el camino de MAQUINA a mi ethernet doméstica
203.18.8.104    *               255.255.255.255 UH    1500   0       74 ppp3
# dos de nuestras líneas generales de marcado PPP
203.18.8.64     *               255.255.255.255 UH    552    0        0 ppp2
203.18.8.62     *               255.255.255.255 UH    552    0        1 ppp1
# el camino específico de red a la red local del campus de Newman
202.12.126.0    202.12.126.1    255.255.255.0   UG    1500   0        0 ppp5
# el camino a nuestra Ethernet local (metaconectar dos clases C adyacentes)
203.18.8.0      *               255.255.254.0   U     1500   0     1683 eth0
# el camino al dispositivo de bucle
127.0.0.0       *               255.0.0.0       U     3584   0      483 lo
# el camino por defecto a Internet
default         139.130.177.2   *               UG    1500   0     3633 ppp4
</code>

<sect1>Manejando correo
<p>
La sección anterior le muestra el modo de manejar el correo saliente -
simplemete enviando la cola de correo una vez que la conexión esté
establecida.

<p>
Si se encuentra ejecutando una conexión WAN, puede hacer que el
administrador de la red remota haga exactamente lo mismo. Por ejemplo, en el
extremo del Campus de Newman de nuestra conexión WAN, el script
<tt>/etc/ppp/ip-up</tt> sería como :-

<code>
#!/bin/bash
#
# Script que maneja las tablas de encaminamiento de la manera necesaria para
# pppd
# Sólo requiere esto la conexión con Hedland
#
# Cuando la conexión ppp se establece, se llama a este script con los
# siguientes parámetros
#       $1      el nombre de interfaz utilizado por pppd (como ppp3)
#       $2      el nombre de dispositivo tty
#       $3      la velocidad del dispositivo tty
#       $4      la dirección IP local para la interfaz
#       $5      la dirección IP remota
#       $6      el parámetro especificado para pppd en la opción 'ipparam'
#
case "$5" in
        203.18.8.4)
                /usr/sbin/sendmail -q
                ;;
        *)
esac
exit 0
</code>

<p>
Si, sin embargo usted sólo tiene un enlace PPP de IP dinámica, necesitará
recoger el correo de su cuenta en la máquina de su proovedor. Esto suele
realizarse utilizando POP (Protocolo de Oficina de Correos). Este proceso
puede manejarse utilizando el programa 'popclient' - y el script ip-up puede
también automatizar este proceso por usted.

<p>
Simplemente, cree un script <tt>/etc/ppp/ip-up</tt> que contenga la llamada
correcta a popclient. Para mi portátil, que ejecuta Red Hat Linux, el script
es

<code>
popclient -3 -c -u hartr -p <password> kepler.hedland.edu.au |formail -s procmail
</code>

<p>
Usted podría utilizar usar slurp u otro programa para hacer lo mismo con las
noticias, y así. Recuerde, el script ip-up es sólo un script estándar bash y
por lo tanto puede ser usado para automatizar CUALQUIER función que necesite
ser realizada cada vez que se lleve a cabo la conexión PPP.

<sect>Utilizando <tt>/etc/ppp/ip-down</tt>
<p>
Puede crear un script que sea ejecutado una vez que se ha terminado la
conexión. Este se almacena en <tt>/etc/ppp/ip-down</tt>. Puede ser utilizado
para deshacer cualquier cosa especial que usted pudiera hacer en el script
/etc/ppp/ip-up correspondiente.

<sect>Encaminamiento en una red local
<p>
Si está conectado a una red pero todavía desea utilizar PPP en su máquina
personal Linux, necesita configurar algunos asuntos acerca del encaminar
paquetes. Esto es necesario para que su máquina pueda acceder a su red local
(a través de la interfaz Ethernet) y también al servidor PPP y más allá.

<p>
Esta sección NO intenta enseñar nada acerca de encaminamiento - sólo trata
un caso especial y sencillo de encaminamiento estático.

<p>
Le recomiendo que lea la Guía del Administrador de Redes Linux (GARL) si NO
está familiarizado con el encaminamiento. El libro de O'Reilly "TCP/IP
Network Administration" trata este tema de una manera muy comprensible.

<p>
El norma básica del encaminamiento estático es que la ruta por defecto
debería ser la que apunta a la MAYORIA de las direcciones de red. Para otras
redes, introduzca rutas específicas a la tabla de encaminamiento.

<p>
La UNICA situación que voy a tratar aquí es en la que su PC Linux está en
una red local que no está conectada a Internet - y desea conectarse vía PPP
a Internet para uso personal mientras permanece conectado a la red local.

<p>
Antes de nada, asegúrese de que su camino Ethernet está configurado para ser
la dirección específica de red a través de su red local y NO está
configurada para ser el camino por defecto.

<p>
Compruebe esto tecleando una orden route. Debería ver algo como lo
siguiente:-

<tscreen><verb>
[root@hwin /root]# route -n
Kernel routing table
Destination     Gateway         Genmask         Flags MSS    Window Use Iface
loopback        *               255.255.255.0   U     1936   0       50 lo
10.0.0.0        *               255.255.255.0   U     1436   0      565 eth0
</verb></tscreen>

<p>
Si su interfaz Ethernet (eth0) está apuntada como camino por defecto (la
primera columna mostrará "default" en la línea eth0) necesitará cambiar los
scripts de inicialización Ethernet para hacer que apunte a números
específicos de red (consulte el COMO Redes2 y GARL).

<p>
Esto le permitirá que pppd ajuste el camino por defecto como se aquí se
muestra:-

<tscreen><verb>
[root@hwin /root]# route -n
Kernel routing table

Destination     Gateway         Genmask         Flags MSS    Window Use Iface
10.144.153.51   *               255.255.255.255 UH    488    0        0 ppp0
127.0.0.0       *               255.255.255.0   U     1936   0       50 lo
10.1.0.0        *               255.255.255.0   U     1436   0      569 eth0
default         10.144.153.51   *               UG    488    0        3 ppp0
</verb></tscreen>

<p>
Como puede ver, tenemos un camino de HOST al servidor PPP ( 10.144.153.51)
vía ppp0 y también un camino de red por defecto que utiliza el servidor PPP
como pasarela.

<p>
Si su configuración necesita ser más compleja que esto - lea los documentos
de encaminamiento ya mencionados y consulte a un experto.

<p>
Si su red local tiene encaminadores, ya tendrá pasarelas establecidas hacia
las redes más anchas disponibles. PERO debería tener apuntando su camino por
defecto a la interfaz PPP - y hacer que los otros caminos sean específicos de
las redes a las que sirven.

<sect1>Nota acerca de la Seguridad
<p>
Cuando configura un ordenador Linux de una red existente para conectarlo a
Internet, está potencialmente abriendo toda su red local a Internet - y a
los malos que residen aquí. Antes de hacer esto, le sugiero que consulte con
el administrador de su red y la política de seguridad de su
empresa/universidad/sitio donde se encuentra. Si su conexión PPP a Internet
es utilizada para atacar con éxito su red local, será el destino del odio de
los usuarios de la red y de los administradores de sistemas y de red.
También puede encontrarse con un problema mucho más serio.

<p>
Antes de conectar una red local a Internet, debería considerar las
implicaciones de segurdad que tiene incluso una conexión DINÁMICA - para
ello sirva la referencia al "Building Internet Firewalls" de O'Reilly.

<sect>Configurando un servidor PPP<label id="ppp-server">
<p>
Como se mencionó antes, hay muchas maneras de hacer esto. La que presento es
la manera de hacerlo con una tarjeta serie multipuerto Cyclades y una
centralita rotativa que proporciona un juego de líneas telefónicas.

<p>
Si no le gusta el método que presento aquí, siéntase libre de hacerlo a su
manera. Sin embargo, estaría encantado de incluir métodos adicionales en
versiones futuras de este documento. Por lo que envíeme sus comentarios y
métodos.

<p>
Fíjese en que esta sección sólo concierne a configurar Linux como un
servidor PPP. No pretendo incluir información acerca de la configuración de
servidores de terminales especiales.

<p>
También, todavía he de experimentar con contraseñas shadow (pero lo haré
dentro de poco). La información aquí presentada NO incluye, por lo tanto,
ninguna de las campanas ni silbatos requeridos por el juego de aplicaciones
shadow.

<sect1>Compilación del Núcleo
<p>
Todos los comentarios anteriores acerca de la compilación del núcleo y de
las versiones pppd frente a las del núcleo siguen siendo válidos. Esta
sección asume que usted ha leido también las otras secciones de este
documento.

<p>
Para un servidor PPP, <bf/DEBE/ incluir el soporte de autoenvío IP
(forwarding) en su núcleo. También puede desear incluir otras capacidades
(tales como cortafuegos IP, cuentas, etc).

<p>
Si está utilizando una tarjeta serie multipuerto, entoces deberá incluir,
obviamente, los controladores necesarios en su núcleo.

<sect1>Visión general del sistema servidor
<p>
Se ofrecerá cuentas de acceso PPP (y SLIP) y cuentas de shell utilizando el
mismo par nombre/contraseña. Esto tiene las ventajas (para nosotros) de que
el usuario sólo necesita una cuenta y puede utilizarla para todo tipo de
conectividad.

<p>
como somos una organización educacional, no cobramos el acceso de nuestra
plantilla ni de los estudiantes, por lo que no tenemos que preocuparnos de
la tarificación y de contadores.

<p>
Levantaremos un cortafuegos entre nuestra máquina e Internet, y esto
restringirá el acceso a algunos usuarios debido a que las líneas de
conexión se encuentran dentro del cortafuegos (por razones obvias, los
detalles de nuestros cortafuegos internos no se presentan aquí y no son
relevantes en ningún caso).

<p>
El proceso por el que un usuario pasa para establecer una conexión PPP a
nuestro servidor (una vez que tiene una cuenta válida, por supuesto) es:-
<itemize>
<item>Conectarse con nuestra centralita rotatoria (esto es un número
telefónico único que está conectado a un banco de módems. El primer módem
libre es el utilizado).
<item>Introducirse en el sistema mediante un par válido de
nombre-contraseña.
<item>En la línea de órdenes, ejecutar la orden <tt/ppp/ para arrancar
PPP en el servidor.
<item>Arrancar PPP en el PC de ellos (puede estar ejecutando Windows, DOS,
Linux, MAC OS o lo que sea - ese es su problema).
</itemize>

<p>
El servidor utiliza ficheros <tt>/etc/ppp/options.ttyXX</tt> individuales
para cada módem, cada uno con su propia dirección IP de manera que los
usuarios remotos consigan una dirección dinámica. El servidor utiliza 
encaminamiento proxyarp para los clientes remotos (configurado mediante la 
opción adecuada de pppd). Esto evita la necesidad de routed o de gated.

<p>
Cuando el usuario cuelga por su parte, pppd lo detecta y dice al módem que
cuelgue, desconectando la conexión PPP a la vez.

<sect1>Conseguir el todo el software
<p>
Necesitará el siguiente software:-
<itemize>
<item>Linux, compilado adecuadamente para incluir las opciones necesarias.
<item>La versión apropiada de pppd para su núcleo.
<item>Un programa 'getty' que maneje las comunicaciones del módem
inteligentemente.<newline>
Utilizamos getty_ps2.0.7h, pero mgetty es tamién muy válido. Se que mgetty
puede detectar una llamada que utilice pap/chap (pap es el estándar de
Windows95) y llamar a pppd automáticamente, pero todavía tengo que
investigar esto.
<item>Un servidor de nombres de dominio (DNS) que funcione y que sea
accesible para los usuarios que se conecten. <newline>
Debería estar ejecutando su propio DNS si es posible...
</itemize>

<sect1>Configurar el acceso a cuentas por vía telefónica
<p>
Antes de que pueda configurar su servidor PPP, su PC Linux debe ser capaz de
manejar accesos de conexión estándar.

<p>
<bf>Este documento NO trata esta configuración. Por favor, lea la
documentación del programa getty de su elección y del serial HOWTO para más
información acerca de esto.</bf>

<sect1>Configurando los ficheros de opciones PPP
<p>
Necesitará establecer un <tt>/etc/ppp/options</tt> general con las opciones
comunes para todos los puertos de conexión. Las opciones que utilizamos
son:-

<code>
asyncmap 0
netmask 255.255.254.0
proxyarp
lock
crtscts
modem
</code>

<p>
Nota - no utilizamos ningún encaminamiento (obvio) y en particular no hay
ninguna opción defautroute. La razón de esto es que todo lo que usted (como
servidor PPP) debe hacer es encaminar paquetes <bf/desde/ el cliente ppp a
su red local/Internet y encaminar paquetes <bf/hacia/ el cliente desde la
red local o más allá.

<p>
Todo lo necesario para esto es un un camino de máquina a la máquina del
cliente y el uso de la opción 'proxyarp' con pppd

<p>
La opción 'proxyarp' establece (sorpresa) una entrada proxy ARP en la tabla
ARP del servidor que básicamente dice 'envíenme todos los paquetes destinados
al cliente'. Esta es la manera más sencilla de configurar el encaminamiento
para un solo cliente PPP - pero usted no puede utilizar esta opción si está
encaminando entre dos redes locales - debe añadir rutas adecuadas de red por
lo que no puede utilizar proxy ARP.

<p>
Casi seguro que desea dar una dirección IP dinámica a los usuarios de su
servicio de conexión. Puede conseguir esto fijando una dirección IP a cada
puerto de recepción de llamadas. Ahora, cree un
<tt>/etc/ppp/options.ttyXX</tt> para cada puerto de conexión.

<p>
En este, simplemente ponga la dirección IP del servidor local y la dirección
IP que debe ser utilizada para ese puerto. Por ejemplo

<code>
kepler:slip01
</code>

En concreto, fíjese en que usted puede utilizar nombres de máquinas válidos
en este fichero (sólo soy capaz de recordar las direcciones IP de las
máquinas importantes y de los dispositivos de mis redes - los nombres tienen
más sentido).

<sect1>Configurar pppd para permitir que los usuarios puedan ejecutarlo
<p>
Ya que arrancar un enlace ppp implica la reconfiguración de un dispositivo
del núcleo (una interfaz de red) y la manipulación de las tablas de
encaminamiento del núcleo, se necesitan privilegios especiales - de hecho se
necesitan privilegios totales de root.

<p>
Afortunadamente, pppd ha sido diseñado para ser 'seguro' mientras se ejecuta
como root. Necesitará
<code>
chmod u+s /usr/sbin/pppd
</code>

<p>
Cuando pida un listado del fichero, debría aparecer como
<code>~
-rwsr-xr-x   1 root     root        74224 Apr 28 07:17 /usr/sbin/pppd
</code>

<p>
Si no lo hace, los usuarios no podrán establecer su conexión ppp.

<sect1>Configurando el alias global para pppd
<p>
Para simplificar las cosas a los usuarios de su servicio de conexión PPP,
crearemos un alias global (en /etc/bashrc) para que una orden simple
arranque ppp en el servidor una vez que se han conectado.

<p>
Esto debe ser como
<code>
alias ppp="exec /usr/sbin/pppd -detach"
</code>

<p>
Lo que hace es
<itemize>
<item>exec : quiere decir que reemplace el programa en ejecución (en este
caso el shell) con el programa que está ejecutando.
<item>pppd -detach : comienza pppd y no se parte en el segundo plano. Esto
asegura que cuando pppd salga no queden procesos colgando por ahí.
</itemize>

Cuando un usuario se introduce en un sistema como este, aparecerá en la
salida de 'w':-
<code>
  6:24pm  up 3 days,  7:00,  4 users,  load average: 0.05, 0.03, 0.00
User     tty       login@  idle   JCPU   PCPU  what
hartr    ttyC0     3:05am  9:14                -
</code>

<p>
Y ya está... Ya le comenté que este era un sistema servidor PPP básico.

<sect>Utilizar PPP a través de una conexión módem nulo (serie directa)
<label id="direct">
<p>
Esto es muy simple - no hay módem por ahí por lo que las cosas son mucho más
sencillas.

<p>
Primero, escoja una de las máquinas como servidor, estableciendo un getty en
el puerto serie de manera que pueda probar que tiene conectividad al
utilizar minicom para acceder al puerto serie del cliente.

<p>
Una vez que tenga esto funcionando, puede eliminar el getty A MENOS que
desee asegurarse de que la conexión se valida utilizando el par
nombre/contraseña para una conexión por marcado. Ya que tiene control físico
de ambas máquinas, presumiré de que NO desea hacer esto.

<p>
Ahora, en el servidor, elimine getty y asegúrese de que tiene puertos serie
en ambas máquinas configurados correctamente utilizando "setseral".

<p>
Todo lo que necesita saber es ejecutar pppd en ambos sistemas. Asumiré que
la conexión utiliza /dev/ttyS3 en ambas máquinas. Por lo tanto, en ambas
máquinas ejecutaré la orden:-

<code>
pppd -detach crtscts lock <local IP>:<remote IP> /dev/ttyS3 38400 &
</code>

<p>
Esto creará la conexión - pero todavía no habrá especificado ningún
encaminamiento. Puede probar a hacer un ping a y desde cada máquina. Si esto
funciona, corte la conexión matando uno de los dos procesos pppd.

<p>
El encaminamiento que necesita dependerá de qué es lo que está intentando
hacer exactamente. Generalmente, una de las máquinas se conectará a una
Ethernet (y más alla), y por lo tanto, el encaminamiento requerido es,
exactamente, el mismo para el servidor PPP que para el cliente.

<p>
Por lo que en la máquina equipada con Ethernet, la orden pppd sería

<code>
pppd -detach crtscts lock proxyarp <local IP>:<remote IP> /dev/ttyS3 38400 &
</code>

<p>
y en la otra máquina

<code>
pppd -detach crtscts lock defaultroute <local IP>:<remote IP> /dev/ttyS3
38400 &
</code>

Si está enlazando dos redes (utilizando una conexión serie) o tiene unas
necesidades de encaminamiento más complejas, puede utilizar /etc/ppp/ip-up
exáctamente de la misma manera que se mencionó en este documento.


<p>
<p>
<bf/Robert Hart/<newline>
Port Hedland, Australia Occidental<newline>
Melbourne, Victoria, Australia
Agosto/Octubre 1996
Enero/Marzo 1997

<p>
Traducción: <bf/David Marín Carreño/<newline>
Madrid, España
Febrero 1999

</article>
