Lo siguiente es una forma de configurar FreeBSD para que utilice SLIP, en un red con dirección estática. Para direcciones dinámicas (esto es, donde su dirección cambia cada vez que se conecta), probablemente sea necesario realizar algunos ajustes que complican la configuración.
En primer término, es necesario determinar a que puerto serial esta conectado nuestro módem. Mucha gente opta por} contar con un enláce simbólico, tal como /dev//modem, que apunta al nombre real del dispositivo, /dev/cuaaN. Esto permite abstenerse de usar el nombre real del dispositivo, en caso de que sea necesario cambiar de puerto nuestro módem. Lo cual puede ser de mucha ayuda, ya que puede ser un fastidio tener que editar un monton de ficheros en /etc y ficheros de tipo .kermrc en todo el sistema!.
Nota: /dev/cuaa0 es COM1, cuaa1 es COM2, etc.
Asegurese de contar con la siguiente opción en la configuración de su kernel:
pseudo-device sl 1
Esta opción esta incluida en el archivo del kernel GENERIC, así que no debe haber problema, claro esta, a menos que lo haya borrado intencionalmente.
Añada el nombre de su maquina, gateway, servidores de nombre a su fichero /etc/hosts. Este es un ejemplo de mi fichero:
127.0.0.1 localhost loghost 136.152.64.181 water.CS.Example.EDU water.CS water 136.152.64.1 inr-3.CS.Example.EDU inr-3 slip-gateway 128.32.136.9 ns1.Example.EDU ns1 128.32.136.12 ns2.Example.EDU ns2
Asegurese de que cuenta con la opción hosts
antes
de la opción bind
, en su fichero /etc/host.conf. De lo contrario pueden ocurrir cosas graciosas en
su sistema.
Edite el fichero /etc/rc.conf.
Especifique su nombre host al editar la línea que dice:
hostname=“minombre.mi.dominio”
El nombre completo de su sistema para internet, debe ser escrito en este punto.
Añada el dispositivo sl0 a la lista de dispositivos de red, al cambiar la línea que dice:
network_interfaces="lo0"
a quedar:
network_interfaces=“lo0 sl0”
Añada los parámetros de inicialización del dispositivo sl0, al añadir la línea:
ifconfig_sl0="inet ${hostname} slip-gateway netmask 0xffffff00 up"
Especificque cual será su ruteador por omisión al editar la línea:
defaultrouter=“NO”
a quedar:
defaultrouter=“slip-gateway”
Edite su fichero /etc/resolv.conf (si no existe debe crearlo), a que contenga lo siguiente:
domain CS.Ejemplo.EDU nameserver 128.32.136.9 nameserver 128.32.136.12
Como puede ver, lo anterior define el nombre de host, de su servidor de nombres. Claro esta, el nombre de dominio y las direcciones IP, dependen de su sistema específico.
Establezca la contraseña del superusuario root y de su símil toor (y de cualquier otro usuario que aun no cuente con la misma).
Reinicie su sistema y asegurese que cuenta con el nombre de host (hostname) correcto.
Marque el número, teclee en el signo de comando slip, ingrese el nombre y la contraseña. Lo que se requiere ingresar, depende de su sistema. Si utiliza kermit, puede utilizar un script similar al siguiente:
# kermit setup set modem hayes set line /dev/modem set speed 115200 set parity none set flow rts/cts set terminal bytesize 8 set file type binary # El siguiente macro se encarga de llamar e ingresar al sistema define slip dial 643-9600, input 10 =>, if failure stop, - output slip\x0d, input 10 Username:, if failure stop, - output silvia\x0d, input 10 Password:, if failure stop, - output ***\x0d, echo \x0aCONNECTED\x0a
Claro esta, que debe cambiar el nombre y contraseñ a quedar de acuerdo a sus necesidades. Después de hacer esto, puede simplemente teclear slip en el símbolo de sistema (prompt) de kermit, para realizar la conexión.
Nota: El dejar su contraseña en texto plano, en cualquier parte del sistema, generalmente es una mala idea. Hágalo bajo su propio riesgo.
Dejé a kermit en ese punto trabajando (puede suspenderlo tecleando Ctrl-z) y como root, teclee:
# slattach -h -c -s 115200 /dev/modem
Si puede hacer ping a cualquier host que se encuentre del
otro lado del ruteador, usted esta conectado!. Si esto no funciona, puede intentar como
argumento del comando slattach, la opción -a
en lugar de utilizar la optción -c
.
Para terminar la conexión haga lo siguiente:
# kill -INT `cat /var/run/slattach.modem.pid`
esto terminaraá slattach. Recuerde que para hacer esto, usted debe estar firmado como superusuario (root). Posteriormente dirijase a kermit (puede hacer esto con fg si lo envio a segundo plano) y salga (tecleando q).
La página de ayuda de slattach indica que debe utilizar el comando ifconfig sl0 down, para marcar como terminado el uso del dispositivo, pero tal parece que esto no hace una gran diferencia para mi. (ifconfig sl0 da el mismo resultado.)
En algunas ocasiones, puede que su módem se niegue a cortar la comunicación (el mio lo hace a veces). Si ese es el caso, simplemente inicie de nuevo kermit y vuelva a salir. Normalmente en el segundo intento hay exito.
Si esto no funciona, sientase libre de preguntarme. Lo siguiente es una recapitulación de los problemas que más comunmente se presentan:
El no utilizar la opción -c
o -a
con el comando slattach (Esto debiera
se fatal, pero algunos usuarios han reportado que esto ha solucionado sus problemas.
Usar la opción s10
en vez de usar la opción
sl0
(puede ser difícil ver la diferencia con algunos
tipos de letras).
Intente ifconfig sl0 para visualizar el estatus de sus dispositivos de red. Por ejemplo, puede ser que obtenga algo similiar a lo siguiente:
# ifconfig sl0 sl0: flags=10<POINTOPOINT> inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00
También el comando netstat -r le mostrará la tabla de ruteo, en caso de que obtenga el mensaje “no route to te host”, al hacer ping. Un ejemplo de esto se muestra a continuación:
# netstat -r Routing tables Destination Gateway Flags Refs Use IfaceMTU Rtt Netmasks: (root node) (root node) Route Tree for Protocol Family inet: (root node) => default inr-3.Example.EDU UG 8 224515 sl0 - - localhost.Exampl localhost.Example. UH 5 42127 lo0 - 0.438 inr-3.Example.ED water.CS.Example.E UH 1 0 sl0 - - water.CS.Example localhost.Example. UGH 34 47641234 lo0 - 0.438 (root node)
Esto es después de que el sistema ha estado conectado por un tiempo. Los numeros pueden variar en su sistema.
Este documento provee sugerencias, para establecer un servidor de SLIP, bajo FreeBSD, lo que generalmente significa configurar su sistema, para que de manera automática inicie los servicios, al firmarse usuarios--clientes remotos en su sistema.
Esta sección es de naturaleza muy técnica, así que contar con antecedentes sobre esto es requerido. Este documento supone que usted cuenta con conocimientos sobre el protocolo de redes TCP/IP, y particularmente, redes y direcciones de nodos, mascaras de red, subneteo, ruteo y protocolos de ruteo, tal como RIP. El configurar servicios SLIP, en un servidor, requiere un conocimiento de estos conceptos, y si usted no esta familiarizado con estos, puede leer una copia, ya sea del libro de Craig Hunt; TCP/IP Networking Administration, publicado por O'Reilly & Associates, Inc. (Numero ISBN 0-937175-82-X), o alguno de los libros de Douglas Comer, sobre protocolos TCP/IP.
Se da por un hecho, que usted ha instalado y configurado correctamente su(s) módem(s), así como la configuración de su sistema, para efecto de utilizar el mismo para realizar la conexión. Si usted no lo ha hecho, por favor lea el tutorial sobre configuración de estos servicios; si cuenta con un navegador para la World-Wide Web, puede ver los tutoriales disponibles en http://www.FreeBSD.org/.
Puede ser que también desee revisar las páginas de ayuda (man), sio(4) para información referente a los controladores de dispositivos de puertos en serie, y ttys(5), gettytab(5), getty(8), & init(8), para ver información relevante, sobre la configuración de su sistema, para efecto de que acepte accesos (logins) por medio de un módem, y quizás stty(1) para información sobre los parámetros de configuración de puertos en serie (tal como clocal, que se utiliza para la conexión directa por medio de puertos seriales).
En su configuración típica, el desarrollo de FreeBSD como un servidor SLIP, funciona de la siguiente manera: un Usuario SLIP, se conecta del Servidor SLIP FreeBSD e ingresa al sistema con una identificación especial, que utiliza /usr/sbin/sliplogin como shell del usuario. El programa sliplogin busca en el fichero /etc/sliphome/slip.hosts la línea que haya sido creada especialmente para el usuario, conecta la línea serial a una interfaz SLIP disponible y posteriormente ejecuta el script /etc/sliphome/slip.login, para configurar la interfaz SLIP.
Por ejemplo si la clave de acceso de un usuario SLIP fuese Shelmerg, la entrada del usuario Shelmerg, en el fichero /etc/master.passwd se vera algo similar a lo siguiente:
Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliplogin
Cuando Shelmerg accese al sistema, el comando sliplogin, buscará en el fichero /etc/sliphome/slip.hosts, una línea, en la cual el ID (identificación) del usuario coincida, por ejemplo, puede ser que en el fichero /etc/sliphome/slip.hosts exista una línea simliar a la siguiente:
Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp
El comando sliplogin encontrará la línea que coincida, enganchará la línea serial a cualquier interfaz SLIP disponible y posteriormente ejecutará /etc/sliphome/slip.login de manera similar a:
/etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp
Si todo marcha bien, /etc/sliphome/slip.login creará una configuración, por medio de ifconfig, para la interfaz SLIP, a la cual sliplogin se ha adjuntado (la interfaz slip 0, que era el primer parámetro dado en la lista de slip.login), para establecer la dirección local IP (dc-slip), la interfaz de la direción IP Remota (sl-helmer), la submascara de red para la interfaz SLIP (0xfffffc00) y cualquier otra opción adicional (autocomp). Si algo no va del todo bien, normalmente sliplogin guarda bastante información para depurar, por medio del demonio (daemon) syslog, que usualmente guarda dicha infomración en /var/log/messages (vea la página de ayuda syslogd(8) así como syslog.conf(5) y quizas el fichero /etc/syslog.conf, para ver que es lo que syslogd esta almacenando y donde es que lo almacena.
OK, basta de ejemplos -- entremos de lleno en la configuración del sistema.
El kernel de FreeBSD, por omisión, cuenta con 2 dispositivos SLIP definidos (sl0 y sl1); usted puede utilizar netstat -i, para verificar si estos dispositivos se encuentran en el kernel de su sistema.
Un ejemplo del resultado de netstat -i:
Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll ed0 1500 <Link>0.0.c0.2c.5f.4a 291311 0 174209 0 133 ed0 1500 138.247.224 ivory 291311 0 174209 0 133 lo0 65535 <Link> 79 0 79 0 0 lo0 65535 loop localhost 79 0 79 0 0 sl0* 296 <Link> 0 0 0 0 0 sl1* 296 <Link> 0 0 0 0 0
En este ejemplo vemos que existen dos dispositivos SLIP en el kernel, que son; sl0 y sl1 (el asterisco que aparece después de sl0 y sl1 indica que los dispositivos no estan “trabajando”.)
Aun cuando el kernel cuente con los dispositivos, por omisión el kernel de
FreeBSD, no viene configurado para enviar paquetes (de hecho su sistema FreeBSD no
trabajara como ruteador, por default) esto en base a los requerimientos para Internet,
establecidos por los RFCs ( vea 1009 [Requerimentos para Pasarelas (Gateway) en
Internet], 1122 [Requerimientos para hosts de Internet -- Capas de comunicación] y
quizás 1127 [RFC sobre Una Perspectiva de los Requerimientos de Hosts]). Si usted
desea que su servidor SLIP sobre FreeBSD, opere como un ruteador, será necesario
que edite el fichero /etc/rc.conf y cambie la opción gateway_enable, a quedar YES
, esto
habilitará esta función.
Será necesario que reinicie su sistema, para efecto de que estos cambios surtan efecto.
Al verificar su fichero de configuración del kernel (/sys/i386/conf/GENERIC), podrá notar que cerca del final, hay una línea como la siguiente:
pseudo-device sl 2
Esta línea es la que define el numero de dispositivos SLIP disponibles en el kernel; el numero al final de la línea es el numero máximo de conecciones SLIP que puede manejar el servidor simultaneamente.
Para ayuda con relación a la configuración y compilación del kernel en su sistema FreeBSD, por favor refierase Capítulo 8 al apartado correspondiente.
Como se menciono anteriormente, existen tres ficheros en el directorio /etc/sliphome, que son parte de la configuración de /usr/sbin/sliplogin (vea la pagina de ayuda sliplogin(8) de para ver la ayuda del comando sliplogin): slip.hosts, que es el fichero que define a los usuarios SLIP, así como sus direcciones IP correspondientes; slip.login, que normalmente es utilizado para configurar la interfaz de SLIP; y (opcionalmente) slip.logout, que hace lo opuesto a slip.login, cuando la conexión serial ha terminado.
El fichero /etc/sliphome/slip.hosts contiene líneas, que al menos cuentan con cuatro partes, separadas por espacios en blanco:
Identificador (nombre) del usuario SLIP
Dirección Local (local para el servidor SLIP) de la liga a SLIP
Dirección Remota de la liga a SLIP
Mascara de red
Las direcciones local y remota, pueden ser nombres del host (la resolución de los mismos, es llevada a cabo, por medio de /etc/hosts o por el servidor de nombres de dominio (DNS), dependiendo de lo que haya especificado en el fichero /etc/host.conf), y la mascara de red puede ser un nombre, que puede ser resuelto revisando /etc/networks. En un sistema de ejemplo, el fichero /etc/sliphome/slip.hosts, puede verse así:
# # login local-addr remote-addr mask opt1 opt2 # (normal,compress,noicmp) # Shelmerg dc-slip sl-helmerg 0xfffffc00 autocomp
Al final de la línea puede ver que existen una o más opciones.
normal
-- sin compresión de los encabezados.
compress
-- compresión de los encabezados.
autocomp
-- compresión automática, si el
host remoto lo permite.
noicmp
-- deshabilitar los paquetes ICMP (de tal forma que
cualquier paquete enviado por “ping” seráa rechazado, en lugar de
ocupar de su ancho de banda).
La elección sobre la dirección local y remota depende si usted va a utilizar una conexión TCP/IP dedicada o bien si va a utilizar una conexión por medio de “proxy ARP” en su servidor SLIP (no es correcto “proxy ARP”, pero es la terminología utilizada en esta sección para describirlo). Si usted no esta seguro que metodo manejar o como asignar la dirección IP, por favor refierase a alguno de los libros sobre TCP/IP, que se mencionan en los Prerequisitos de SLIP (Sección 25.6.2.1) y/o consulte al administrador de IP de su red.
Si usted piensa subnetear para los diferentes clientes SLIP, será necesario que la dirección de la subred (subnet), salga de la dirección IP que tenga asignada su red, y el numero de cada cliente, del numero que asigne a su subred. Posteriormente puede que sea necesario, o bien configurar una ruta estática a la subred SLIP, por medio de su servidor SLIP en su ruteador más cercano por IP.
De otra forma, si usted piensa utilizar un metodo “proxy ARP”, será necesario que a sus clientes SLIP, se les asigne una dirección IP, que se encuentre dentro del rango que este utilizando para su subred Ethernet, y tambié será necesario que haga algunos ajustes en los ficheros script /etc/sliphome/slip.login y en /etc/sliphome/slip.logout, para que usen arp(8), para que maneje la tabla ARP del servidor SLIP y llamados del proxy-ARP.
El típico fichero /etc/sliphome/slip.login se ve de la siguiente manera:
#!/bin/sh - # # @(#)slip.login 5.1 (Berkeley) 7/1/90 # # generic login file for a slip line. sliplogin invokes this with # the parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 inet $4 $5 netmask $6
This slip.login file merely runs ifconfig for the appropriate SLIP interface with the local and remote addresses and network mask of the SLIP interface.
If you have decided to use the “proxy ARP” method (instead of using a separate subnet for your SLIP clients), your /etc/sliphome/slip.login file will need to look something like this:
#!/bin/sh - # # @(#)slip.login 5.1 (Berkeley) 7/1/90 # # generic login file for a slip line. sliplogin invokes this with # the parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 inet $4 $5 netmask $6 # Answer ARP requests for the SLIP client with our Ethernet addr /usr/sbin/arp -s $5 00:11:22:33:44:55 pub
La línea adicional, arp -s $5 00:11:22:33:44:55 pub del script slip.login, crea una entrada ARP en la tabla del servidor SLIP. Esta entrada le indica al servidor SLIP que debe responder con la dirección MAC de su dispositivo Ethernet, cuando cualquier otro nodo IP en la red, solicite información a la IP del cliente SLIP.
Al tomar en cuenta el ejemplo anterior, es importante que sustituya la dirección Ethernet MAC (00:11:22:33:44:55), con la dirección que corresponde a su tarjeta de red, o definitivamente su “proxy ARP” no va a funcionar!. Para efecto de conocer cual es la dirección MAC del dispositivo Ethernet (tarjeta de red), de su servidor SLIP, puede ejecutar el comando netstat -i, el cual tendrá como resultado algo similar a lo siguiente:
ed0 1500 <Link>0.2.c1.28.5f.4a 191923 0 129457 0 116
Esto indica que la dirección MAC de su dispositivo Ethernet, en este sistema es 00:02:c1:28:5f:4a -- los puntos que aparecen en la salida del comando netstat -i deben cambiarse por dos puntos, así mismo deberá de anteponerse un cero, a cada dígito hexadecimal que aparezca sólo (no en pares), de tal forma que convirtamos la dirección en lo que arp(8) requiere para trabajar; vea la página de ayuda arp(8), para ver información completa sobre su uso.
Nota: Recuerde que cuando cree los ficheros /etc/sliphome/slip.login y /etc/sliphome/slip.logout, deben contar con permisos de ejecución (chmod 755 /etc/sliphome/slip.login /etc/sliphome/slip.logout), de otra forma estos scripts no podrán llevar a cabo su función.
El fichero /etc/sliphome/slip.logout no es indispensable (a menos que vaya a utilizar “proxy ARP”), pero si aun así decide crearlo, el siguiente es un ejemplo básico del script slip.logout :
#!/bin/sh - # # slip.logout # # logout file for a slip line. sliplogin invokes this with # the parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 down
Si usted esta utilizando “proxy ARP”, es recomendable que le indique a /etc/sliphome/slip.logout, que desea eliminar la entrada ARP, para el cliente SLIP:
#!/bin/sh - # # @(#)slip.logout # # logout file for a slip line. sliplogin invokes this with # the parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 down # Dejar de solicitar respuesta ARP al cliente SLIP /usr/sbin/arp -d $5
El comando arp -d $5, elimina la entrada ARP, que slip.login de “proxy ARP” añadió al cliente SLIP al ingresar al sistema.
Para esta más seguros: asegurese de que el fichero /etc/sliphome/slip.logout cuenta con los permisos adecuados para su ejecución, una vez que lo ha creado (ej. chmod 755 /etc/sliphome/slip.logout) .
Si usted no esta utilizando el metodo “proxy ARP”, para efecto de rutear los paquetes entre sus clientes SLIP y el resto de la red (y quizás Internet), deberá de hacer una de las siguientes dos acciones, o bien añadir direcciones estáticas, a su(s) ruteador(es) más cercanos, para que se reenvien los paquetes de la subred de sus clientes SLIP, por medio de su servidor SLIP, o bien tendrá que instalar y configurar gated en su servidor SLIP (que corre FreeBSD!), de tal forma que le indique a su(s) ruteador(es), por medio del protocolo correcto, a cerca de su subred SLIP.
Añadir direcciones estáticas de enrutamiento puede ser un problema (o imposible si usted no cuenta con la autoridad para hacerlo...). Si usted cuenta con una red de ruteo-múltiple en su organización, algunos ruteadores, tales como los fabricados por Cisco y Proteon, puede ser que no sea suficiente con el hecho de configurar las rutas estáticas de su subred SLIP, sino que sea necesario indicar que rutas utilizar para informar a cerca de otras rutas, así que algo de experiencia así como determinación para la resolución de problemas serán necesarias para poner la ruta basada-en- ruteo-estático a trabajar.
Una alternativa para los dolores de cabeza que pueden dar las redes con ruteo estático, es intalar gated en su servidor SLIP bajo FreeBSD y configurarlo, para que utilice los protocolos de ruteo apropiados (RIP/OSPF/BGP/EGP) para informar a otros ruteadores, a cerca de su subred SLIP. Una vez que lo ha compilado e instalado, deberá crear el fichero /etc/gated.conf, que configurará a gated; aqui hay un ejemplo, similar al que el autor utilizó en un servidor SLIP FreeBSD:
Nota: gated es un software propietario y su código fuente no estará disponible al público más (más información en el sitio gated). Esta sección solo existe para asegurarse de la compatibilidad con aquellos que usan la versió antigua.
# # gated configuration file for dc.dsu.edu; for gated version 3.5alpha5 # Only broadcast RIP information for xxx.xxx.yy out the ed Ethernet interface # # # tracing options # traceoptions "/var/tmp/gated.output" replace size 100k files 2 general ; rip yes { interface sl noripout noripin ; interface ed ripin ripout version 1 ; traceoptions route ; } ; # # Turn on a bunch of tracing info for the interface to the kernel: kernel { traceoptions remnants request routes info interface ; } ; # # Propagate the route to xxx.xxx.yy out the Ethernet interface via RIP # export proto rip interface ed { proto direct { xxx.xxx.yy mask 255.255.252.0 metric 1; # SLIP connections } ; } ; # # Accept routes from RIP via ed Ethernet interfaces import proto rip interface ed { all ; } ;
En el ejemplo anterior, el fichero de configuración gated.conf transmite información sobre la subred SLIP xxx.xxx.yy, por medio de RIP al dispositivo Ethernet; si usted esta utilizando un dispositivo de red, diferente de ed, será necesario que modifique el parámetro ed por el correspondiente. En este ejemplo, el fichero también realiza una busqueda por el fichero /var/tmp/gated.output, que es un fichero que nos sirve para depurar cualquier error que se presente en la actividad de gated; usted puede desactivar la opción de depuración (debug), si es que gated esta funcionando correctamente. Será necesario que modifique xxx.xxx.yy., a quedar con la dirección correcta de su subred SLIP (asegurese de modificar también la máscara de red, en la cláusula proto direct también).
Una vez que ha instalado y configurado gated en su sistema,
necesitará indicarle a FreeBSD que al iniciar el sistema, ejecute el script para
gated, en lugar de ejecutar routed. La
forma más fácil de hacer esto, es editar las variables de route
y router_flags
, en el fichero
/etc/rc.conf. Por favor vea la página de ayuda de gated, para ver información sobre los parámetros de la
línea--de--comandos.
Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
Si tiene dudas sobre FreeBSD consulte la documentación antes de escribir a la lista
<questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a <doc@FreeBSD.org>.