PPP
El objeto de este apartado es la instalación de una conexión PPP.
Introducción
PPP (Point to Point Protocol) permite establecer una conexión IP en una línea serie de manera más eficaz que SLIP (Serial Line Internet Protocol). Una vez la conexión establecida todos los protocolos superiores a IP ((TCP, UDP, ICMP y todos los servicios asociados: FTP, telnet, NFS, http, X ...) están disponibles. Es también posible utilizar IPX.
Para establecer una conexión PPP, se necesita :
- un servidor que soporte el protocolo PPP
- un modem *al menos* V32 (9600 bauds)
- un soft de conexión PPP
- un poco de paciencia
PPP es comprendido por un gran número de sistemas ( hasta MS-Windows) y normalmente nos podemos conectar de un sistema al otro. ¡ Sin embargo esta documentación solo trata el caso de
Linux !
Acceso a un servidor PPP
Par acceder a un servidor PPP instalado, el núcleo debe ser compilado con la opción TCP/IP. Para esto, cuando haga
make config tiene que responder así :
Networking support (CONFIG_NET) [y] y
TCP/IP networking (CONFIG_INET) [y] y
IP forwarding/gatewaying (CONFIG_IP_FORWARD) [y] n
Network device support? (CONFIG_NETDEVICES) [y] y
PPP (point-to-point) support (CONFIG_PPP) [y] y
Además tiene que cargar las fuentes de los programas de acceso a PPP (en el archivo
ppp-2.1.2a.tar.gz, ver b, c o d) para poder instalar los siguientes programas :
- pppd el programa de establecimiento del protocolo.
- chat que permite correr el chat-script de llamado al sitio PPP
Puede por ejemplo instalar
pppd y
chat en el directorio
/usr/sbin.
Luego, tiene que configurar los
shell-scripts de arranque para configurar la capa TCP/IP (por ejemplo en un archivo
/etc/rc.d/rc.net que será lanzado por
/etc/rc.d.rc.local). He aquí un ejemplo :
echo -n "/etc/rc.net: "
INETD=/sbin/inetd
PORTMAP=/sbin/portmap
# loopback
/sbin/ifconfig lo 127.0.0.1 up netmask 255.255.255.0
/sbin/route add 127.0.0.1 lo
# demarrage des demons
if [-x $PORTMAP ]; then
echo-n ", `basename $PORTMAP`"
$PORTMAP
fi
if [-x $INETD ]; then
echo -n ", `basename $INETD`"
$INETD
fi
echo
Luego hay que agregar la dirección IP de la máquina en el archivo ##/etc/hosts## :
127.0.0.1 loopback localhost # alias útiles
199.103.124.170 pcpf.lectra.fr pcpf # Mi lindo PC en PPP
La dirección IP de la máquina es aquella que el administrador del servidor PPP le ha asignado para la conexión asociada a un numero de teléfono dado. Esto significa que el amigo que se conecta 10 minutos después utilizará la misma dirección que nosotros.
Finalmente, debe configurar el dominio en el archivo ##/etc/resolv.conf## :
domain lectra.fr
nameserver 192.1.2.1
La segunda linea sirve para utilizar un servidor de nombres, cacharro que envía la dirección IP correspondiente a un nombre de máquina dado. Si no posee un servidor de nombres, solamente podrá utilizar direcciones numéricas (199.103.124.x) sino deberá poner en ##/etc/hosts## todas las máquinas a las cuales quiere acceder con sus direcciones IP...
Igualmente puede poner su nombre de dominio en el archivo ##/etc/ppp/options## que debe existir aunque sea vacío (si no quiere que ##pppd## pida ##/etc/ppp/options##, tiene que compilarlo con la opción##-DREQ_SYSOPTIONS=0##)
Ahora puede febrilmente hacer un test de la conexión utilizando un //shell-script// de este estilo (Cuidado : todo esto es una sola línea) :
/usr/sbin/pppd connect '/usr/sbin/chat -v ABORT ERROR ABORT "NO CARRIER" \
ABORT BUSY ATB0 OK ATDTxxxxxxxx CONNECT ogin: ppp \
word: ppp0' /dev/modem 9600 -detach debug crtscts modem \
defaultroute 199.103.124.170:
La orden ##chat## permite efectuar la conexión llamando al número de su servidor. Cuidado no olvide la segunda línea, en particular ##modem## y ##defaultroute##.
La especificación de la velocidad (9600) así como el //chat-script// utilizado (ABORT ERROR ABORT "NO CARRIER" ABORT BUSY ATB0 OK ATDTxxxxxxxx CONNECT) dependen de su modem y de la configuración del servidor (ver igualmente el login y el password).
La dirección IP debe ser aquella declarada como dirección IP de la máquina en PPP, en
/etc/hosts (igualmente puede poner el nombre de la máquina en PPP)
La información de depurado debe salir en la consola (si ha configurado el fichero
/etc/syslog.conf para esto)
A partir de ese momento, estas conectado a la red remota y puede hacer por ejemplo :
$ ping 199.103.124.50
PING 199.103.124.50 (199.103.124.50): 56 data bytes
64 bytes from 199.103.124.50: icmp_seq=0 ttl=255 time=268 ms
64 bytes from 199.103.124.50: icmp_seq=1 ttl=255 time=247 ms
64 bytes from 199.103.124.50: icmp_seq=2 ttl=255 time=266 ms
para hacer un test de la conexión. Si el ping funciona y la red está conectada a Internet entonces ya tiene Internet.
Si eso no funciona, puede hacer un test escribiendo
/sbin/ifconfig y el resultado debe parecerse a esto :
lo Link encap Local Loopback
inet addr 127.0.0.1 Bcast 127.255.255.255 Mask 255.0.0.0
UP LOOPBACK RUNNING MTU 2000 Metric 1
RX packets 0 errors 0 dropped 0 overrun 0
TX packets 0 errors 0 dropped 0 overrun 0
ppp0 Link encap Serial Line IP
inet addr 199.103.124.170 P-t-P 199.103.124.50 Mask 255.255.255.0
UP POINTOPOINT RUNNING MTU 1500 Metric 1
RX packets 33 errors 0 dropped 0 overrun 0
TX packets 42 errors 0 dropped 0 overrun 0
Sobre todo tiene que tener una línea que comience por ppp0 sino, hay algún problema. Igualmente puede hacer un test con
netstat -nr que debe dar una cosa así mas o menos :
Kernel routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
199.103.124.50 0.0.0.0 255.255.255.255 UH 0 0 6 ppp0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 199.103.124.50 0.0.0.0 UG 0 0 6298 ppp0
Con una linea 0.0.0.0 que tenga la dirección IP del servidor PPP. Si no tiene esta linea, puede que haya olvidado la opción
defaultroute.
Configuración de un servidor PPP
Para eso, debe instalar los mismos programas del capitulo anterior (configurar el núcleo, instalar
pppd). Ademas de esto, debe crear un login especial para las conexiones PPP en
/etc/passwd, por ejemplo :
ppp::61:60:Conexión PPP:/:/usr/bin/ppp_login
El script
/usr/bin/ppp_login es :
#!/bin/sh
# Conexión PPP --> dirección IP = 199.103.124.170
exec /usr/sbin/pppd -d -detach -ip modem proxyarp :199.103.124.170
La opción
proxyarp permite a la máquina conectada tener acceso a toda la red :
199.103.124.170 199.103.124.50
+
+ PPP link +
+
| pcpf |
| ondee |
+
+ +
+
| Ethernet
199.103.124.x
Bibliografía
Para más información ver el archivo README.linux del
ppp-2.1.2a.tar.gz. Nota : este archivo se encuentra normalmente en el directorio
/usr/doc.
Una pregunta común es : " Tengo un acceso Internet pero una sola dirección IP y quisiera conectar varias máquinas".
El
NET3-HOWTO responde a esta pregunta pero olvida una posibilidad. Esta nota tiene por objetivo, explicar las cuatro maneras de resolver el problema.
- Obtener varias direcciones. Lo ideal sería, sin ninguna duda, tener una verdadera subred en el sitio remoto, que pudiera ser enrutada "normalmente". Es el método más simple y el único que dará a todas las máquinas de la red remota una verdadera conectividad Internet. Pero si su proveedor de acceso es un operador comercial, tendrá que pagar seguramente *mucho* más para tener un acceso tal (que efectivamente le cuesta más al proveedor). Si es una universidad o una asociación, es posible que no tengan ganas de configurar un caso especial para usted. Le va tocar contentarse con uno de los tres "apaños" siguientes, que comienzan todos por dar a las máquinas suplementarias una dirección privada , tomada en la RFC 1918 (que reemplaza la famosa 1597).
- "IP masquerading". Es una traducción de direcciones dinámica dada por el núcleo de la máquina Linux pasarela. Una idea simple y genial. Es el método mas general, porque funciona para un gran número de servicios de red. Nótese que de todas maneras todos los servicios no funcionarán, especialmente ping y muchos servicios UDP. "IP masquerading" necesita un núcleo reciente (2.* o ciertos 1.3.* o un patch del 1.2.*) y esta documentado en http://www.indyramp.com/masq∞ ou http://hwy401.com/achau/ipmasq/∞. Se puede encontrar un COMO que describe claramente la instalación de "IP masquerading" en http://www.freenix.org/linux/HOWTO-vo/mini/IP-Masquerade∞.
- "Socks" que es un relé genérico, funciona a nivel de aplicación (no se necesita modificar el núcleo al contrario de "IP masquerading"). Necesita unos programas especiales (que se encuentran comúnmente en las máquinas UNIX) del lado cliente. La documentación se encuentra en general en los libros y/o los servidores que hablan de seguridad ya que en general se utiliza en este contexto. Es así como el Firewall-HOWTO describe esta solución.
- Relé aplicativo : es así como llamamos a los programas que trabajan a nivel de aplicación y que toman en cargo las peticiones de los clientes, instalados en la red sin direcciones IP legales. Además de atender las peticiones lo cual permite a las máquinas salir, ofrecen en general un valor añadido, por ejemplo guardan en memoria local la información frecuentemente accedida. Es en mi opinión la solución la mas simple, funciona en todos los núcleos y hasta en otros UNIX diferentes a Linux. Ciertas aplicaciones no tiene ningún problema para utilizar un relé puesto que siempre han funcionado así : el correo, las news, la sincronización de relojes, el servicio de nombres etc. Otras se han convertido a posteriori y han ganado mucho (Caches Web por ejemplo). La gran ventaja de esta solución es el poder aportar un valor añadido: esescritura de direcciones y gestión de colas de espera centralizadas para el correo y las cachés de la Web. El mejor rele + cache Web actualmente es Squid http://www.nlanr.net/Squid/∞. El relé tiene dos defectos : todas las aplicaciones no poseen un relé (pero se puede utilizar Socks para llenar los huecos) y hay que instalar un nuevo relé para cada nueva aplicación. El relé se recomienda únicamente si uno se contenta con los servicios básicos : correo, Web, news, etc.
La configuración de sendmail es siempre algo particularmente trabajoso y difícil. Sin embargo, ciertas herramientas facilitan enormemente las cosas. Las distribuciones poseen ciertos archivos, que pueden ser una solución. De todas maneras es más sano reinstalar el archivo de configuración basándose en los siguientes documentos :
Los proveedores reciben los mensajes y los ponen a disposición del usuario via un servidor POP (en general mail.proveedor.pais o pop.proveedor.pais ) Tiene que recuperar los mensajes recibidos por ese servidor hacia la máquina
Linux en /var/spool/mail/usuario.
Para esto puede utilizar el programa
fetchmail
He aquí un ejemplo de fichero
.fetchmailrc :
# Recuperación de mi correo desde mi proveedor 1
poll mail.proveedor.pais protocol POP3:
user UsuarioServidorPop has password ContraseñaServidorPop is NomLocal here
fetchall
# Recuperación de mi correo desde mi proveedor 2
poll mail.proveedor2.pais protocol POP3:
user UsuarioServidorPop2 has password ContraseñaServidorPop2 is NomLocal here
fetchall
Puede utilizar también el programa
gwpop de Stephane Bortzmeyer. Se encuentra en :
ftp://ftp.pasteur.fr/pub/Network/gwpop∞.
En este script, definir :
$mailhost = "mail.proveedor.pais";
$deliver= "deliver NombreUsuarioLocal ";
Una vez esté conectado, lance via un script (para que no tenga que escribir todo cada vez) :
gwpop -p ContraseñaServidorPop UsuarioServidorPop
Una vez recibido el correo, la cuestión es saber como enviarlo.
Deux méthodes sont couramment utilisées dans le monde unix pour créer le fichier
sendmail.cf nécessaire.
Se utilizan normalmente dos métodos en el mundo unix para crear el fichero
sendmail.cf necesario.