Página siguiente Página anterior Índice general

6. Conexión mediante módem y PPP de un puesto aislado a un ISP

De forma esquemática, serán necesarios los siguientes pasos previos:

Y ya entrando definitivamente en Diald:

Si se realiza algún cambio en el fichero de configuración de Diald posteriormente a su lanzamiento, deberá ser relanzado («/etc/init.d/diald restart» en Debian, «/etc/rc.d/init.d/diald restart» en RedHat).

6.1 Fichero /etc/diald/diald.options o diald.conf

En este fichero de ejemplo que se muestra hay que revisar:

##########################
# /etc/diald/diald.options

# Dispositivo donde esta conectado el módem
device /dev/ttyS0

# Archivo de log de diald
accounting-log /var/log/diald.log

# Cola de monitorización de diald
#fifo /var/run/diald/diald.fifo

# Depuración activada al máximo
# Activar la depuración disminuye el rendimiento
#debug 31

# Usamos PPP sobre la linea de transmisión
mode ppp

# Direcciona IP de mi equipo (al conectar se modifica automáticamente con
# la IP asignada por el ISP)
local 127.0.0.5

# Direccion IP del equipo remoto (al conectar se modifica automáticamente
# con la IP del equipo que recibe nuestra llamada)
remote 127.0.0.4

# Mascara de subred
netmask 255.255.255.0

# Indica que las direcciones IP serán asignadas en el momento del
# establecimiento de la conexión
dynamic 

# Si la conexión se cae, restablecerla solo si hay trafico de salida
two-way

# Cuando la conexión esta establecida, cambiar las rutas para que apunten
# al interface real, en vez de al interface proxy. No hacer esto implica
# una perdida de rendimiento de un 20 por ciento. Hay kernels antiguos que
# no soportan reroute. Ver el manual de diald para mas información
reroute

# Diald deberá establecer la ruta por defecto al interface SLIP usado como
# proxy
defaultroute

# Script para establecer rutas personalizadas
#addroute "/etc/diald/addroute"
#delroute "/etc/diald/delroute"

# Scripts para ejecutar cuando el enlace se activa o se desactiva.
# En las versiones 0.9x de Diald hay una opción llamada ip-goingdown para
# ser lanzado al finalizar pero cuando todavía está activo el enlace.
ip-up /etc/diald/ip-up
#ip-down /etc/diald/ip-down

# Scripts usados para establecer la comunicación y pararla
connect "/etc/diald/diald.connect"
#disconnect "/etc/diald/diald.disconnect"

# Usar bloqueo UUCP
#lock

# Conectamos a través de módem. ATENCIÓN: No especificar estas opciones
# en las opciones para PPP, ya que entrarían en conflicto. Para ver las
# opciones de PPP que no se pueden usar en pppd-options ver la pagina
# de manual de diald y buscar pppd-options
modem
crtscts
speed 115200

# Algunos temporizadores
# para información detallada, ver manual de Diald
connect-timeout 120
redial-timeout 60
start-pppd-timeout 120
died-retry-count 0
redial-backoff-start 4
redial-backoff-limit 300
dial-fail-limit 10

# Opciones para pasar a pppd
# Estas opciones también se pueden poner en /etc/ppp/options, que son las
# opciones por defecto de pppd, pero si es necesario tener diferentes
# configuraciones de diald es necesario ponerlas aquí
# noauth - no autentificar al destino de la llamada.
#          "Infovía Plus" (España) no se identifica frente a nuestro
#          equipo.
# user - poner aquí el usuario y el isp separados por la arroba (@).
pppd-options noauth user usuario@isp

# Restricciones de horario de uso.
# Esta sección debe estar antes de los filtros.
# El comando restrict es experimental y puede cambiar en futuras versiones
# de diald (esta sintaxis es para la versión 0.16)
# Solo usar en horario nocturno para plan
# Bononet Noche (España-Telefónica)
# Lunes a Viernes de 0 a 8 y de 18 a 24
# Domingos de 0 a 24
restrict 8:00:00 18:00:00 1-5 * *
down
restrict * * * * *

# Sin condiciones especiales de tarificación
# (primeros segundos cobrados de una vez, unidad de tarificación en
# segundos, tiempo en segundos para comprobar desconexión)
#impulse 0,0,0
# Bononet Noche (España-Telefónica) tarifica por segundos a partir del 160
impulse 160,0,0
# si se tarificase por minutos y cobrasen los 10 primeros de una vez:
#impulse 600,60,10

# Filtros estándar
#include /etc/diald/standard.filter
# o Filtros personales
include /etc/diald/personal.filter

6.2 Fichero de filtros personal

La manipulación de este fichero debe ser realizada de forma muy cuidadosa. Es en este fichero en el que se decide cuándo y porqué se trata de levantar el enlace, mantenerlo, tirarlo o ignorarlo, dependiendo del tipo de tráfico.

En general, el fichero de filtros standard de Diald es suficiente para la mayoría de los casos, aunque quizá sea poco restrictivo en determinados entornos. El personal.filter que se muestra a continuación tiene algunas correcciones sobre el original de la versión 0.16.

En sucesivas versiones de este documento se presentarán otros ejemplos más restrictivos comentados.

# /etc/diald/personal.filter
# Las reglas de filtrado a continuación son las mismas que las de
# standard.filter con las siguientes correcciones:
#
# Cambio de 10 minutos por 4 en "cualquier otra conexión TCP".
# Añadido para ignorar los FIN ACK con "ignore tcp tcp.fin".
# Ignorar paquetes icmp (con ping y traceroute no se realizará llamada).
#

# This is a pretty complicated set of filter rules.
# (These are the rules I use myself.)
#
# I've divided the rules up into four sections.
# TCP packets, UDP packets, ICMP packets and a general catch all rule
# at the end.

ignore icmp any

#------------------------------------------------------------------------------
# Rules for TCP packets.
#------------------------------------------------------------------------------
# General comments on the rule set:
#
# In general we would like to treat only data on a TCP link as significant
# for timeouts. Therefore, we try to ignore packets with no data.
# Since the shortest possible set of headers in a TCP/IP packet is 40 bytes,
# any packet with length 40 must have no data riding in it.
# We may miss some empty packets this way (optional routing information
# and other extras may be present in the IP header), but we should get
# most of them. Note that we don't want to filter out packets with
# tcp.live clear, since we use them later to speedup disconnects
# on some TCP links.
#
# We also want to make sure WWW packets live even if the TCP socket
# is shut down. We do this because WWW doesn't keep connections open
# once the data has been transfered, and it would be annoying to have the link
# keep bouncing up and down every time you get a document.
#
# Outside of WWW the most common use of TCP is for long lived connections,
# that once they are gone mean we no longer need the network connection.
# We don't neccessarily want to wait 10 minutes for the connection
# to go down when we don't have any telnet's or rlogin's running,
# so we want to speed up the timeout on TCP connections that have
# shutdown. We do this by catching packets that do not have the live flag set.

# --- start of rule set proper ---

# When initiating a connection we only give the link 15 seconds initially.
# The idea here is to deal with possibility that the network on the opposite
# end of the connection is unreachable. In this case you don't really
# want to give the link 10 minutes up time. With the rule below
# we only give the link 15 seconds initially. If the network is reachable
# then we will normally get a response that actually contains some
# data within 15 seconds. If this causes problems because you have a slow
# response time at some site you want to regularly access, you can either
# increase the timeout or remove this rule.
accept tcp 15 tcp.syn

# Keep named xfers from holding the link up
ignore tcp tcp.dest=tcp.domain
ignore tcp tcp.source=tcp.domain

# (Ack! SCO telnet starts by sending empty SYNs and only opens the
# connection if it gets a response. Sheesh..)
accept tcp 5 ip.tot_len=40,tcp.syn

# keep empty packets from holding the link up (other than empty SYN packets)
ignore tcp ip.tot_len=40,tcp.live

# Modificacion de Andres Seco. Ignorar los FIN ACK.
ignore tcp tcp.fin

# make sure http transfers hold the link for 2 minutes, even after they end.
# NOTE: Your /etc/services may not define the tcp service www, in which
# case you should comment out the following two lines or get a more
# up to date /etc/services file. See the FAQ for information on obtaining
# a new /etc/services file.
accept tcp 120 tcp.dest=tcp.www
accept tcp 120 tcp.source=tcp.www
# Same for https
accept tcp 120 tcp.dest=tcp.443
accept tcp 120 tcp.source=tcp.443

# Once the link is no longer live, we try to shut down the connection
# quickly. Note that if the link is already down, a state change
# will not bring it back up.
keepup tcp 5 !tcp.live
ignore tcp !tcp.live

# an ftp-data or ftp connection can be expected to show reasonably frequent
# traffic.
accept tcp 120 tcp.dest=tcp.ftp
accept tcp 120 tcp.source=tcp.ftp

#NOTE: ftp-data is not defined in the /etc/services file provided with
# the latest versions of NETKIT, so I've got this commented out here.
# If you want to define it add the following line to your /etc/services:
# ftp-data        20/tcp
# and uncomment the following two rules.
#accept tcp 120 tcp.dest=tcp.ftp-data
#accept tcp 120 tcp.source=tcp.ftp-data

# If we don't catch it above, give the link 10 minutes up time.
#accept tcp 600 any
# Modificacion de Andres Seco. Solo dejar 4 minutos mas.
accept tcp 240 any

# Rules for UDP packets
#
# We time out domain requests right away, we just want them to bring
# the link up, not keep it around for very long.
# This is because the network will usually come up on a call
# from the resolver library (unless you have all your commonly
# used addresses in /etc/hosts, in which case you will discover
# other problems.)
# Note that you should not make the timeout shorter than the time you
# might expect your DNS server to take to respond. Otherwise
# when the initial link gets established there might be a delay
# greater than this between the initial series of packets before
# any packets that keep the link up longer pass over the link.

# Don't bring the link up for rwho.
ignore udp udp.dest=udp.who
ignore udp udp.source=udp.who
# Don't bring the link up for RIP.
ignore udp udp.dest=udp.route
ignore udp udp.source=udp.route
# Don't bring the link up for NTP or timed.
ignore udp udp.dest=udp.ntp
ignore udp udp.source=udp.ntp
ignore udp udp.dest=udp.timed
ignore udp udp.source=udp.timed
# Don't bring up on domain name requests between two running nameds.
ignore udp udp.dest=udp.domain,udp.source=udp.domain
# Bring up the network whenever we make a domain request from someplace
# other than named.
accept udp 30 udp.dest=udp.domain 
accept udp 30 udp.source=udp.domain
# Do the same for netbios-ns broadcasts
# NOTE: your /etc/services file may not define the netbios-ns service
# in which case you should comment out the next three lines.
ignore udp udp.source=udp.netbios-ns,udp.dest=udp.netbios-ns
accept udp 30 udp.dest=udp.netbios-ns
accept udp 30 udp.source=udp.netbios-ns
# keep routed and gated transfers from holding the link up
ignore udp tcp.dest=udp.route
ignore udp tcp.source=udp.route
# Anything else gest 2 minutes.
accept udp 120 any

# Catch any packets that we didn't catch above and give the connection
# 30 seconds of live time.
accept any 30 any

6.3 Realización de la llamada

Fichero /etc/diald/diald.connect (debe tener permiso de ejecución):

/usr/sbin/chat -f /etc/chatscripts/provider

Fichero /etc/chatscripts/provider. En este fichero de ejemplo que se muestra hay que revisar el numero de teléfono:

ABORT BUSY
ABORT "NO CARRIER"
ABORT VOICE
ABORT "NO DIALTONE" 
ABORT "NO ANSWER"
"" ATZ
OK ATDT123456789
CONNECT \d\c

6.4 Archivo de comandos de inicio de la conexión

Debe tener permiso de ejecución.

Este archivo puede ser usado para multiples tareas (sincronizar la hora del equipo, lanzar la entrega de la cola de impresión, la recuperación de los mensajes desde la oficina de correos externa, etc.).

En el ejemplo, se envia un mensaje a root con los parametros que se le pasan al archivo de comandos (interface, mascara de subred, dirección IP local, dirección IP remota y prioridad en la tabla de rutas):

#!/bin/sh

iface=$1
netmask=$2
localip=$3
remoteip=$4
metric=$5

# Set the time and date
# netdate ntp.server.somecountry

# Run the mail queue
# runq

echo `date` $1 $2 $3 $4 $5 | mail -s "diald - conectado" root@localhost


Página siguiente Página anterior Índice general

Hosting by: hurra.com
Generated: 2007-01-26 18:00:34