Tabla de contenidos
Durante el arranque, OpenBSD detecta la gran mayoría de
dispositivos conectados a un computador. Una vez en operación
puede examinar la detección con dmesg
.
Si durante el arranque algún dispositivo no es detectado
o es detectado incorrectamente, puede intentar hacer modificaciones
durante el arranque iniciando con bsd -c
cuando
esté en el prompt de arranque del programa boot
(ver [usuario_OpenBSD]).
Para conectar una terminal a un sistema OpenBSD puede emplearse un módem nulo. La terminal puede ser un computador con OpenBSD o con cualquier otro sistema operativo y un programa que permita ver la información que llegue a un puerto serial y enviar la que se teclee (por ejemplo sirven varios programas para comunicarse vía módem).
Un módem nulo es un cable serial que tiene en sus extremos dos conectores hembra para puerto serial y que intercambia algunas conexiones. Si ambos conectores son de 25 pines, todos los cables deben estar sueltos excepto:
(DSR) 6 & (DCD) 8 -- 20,
(TxD) 2 -- 3,
(RxD) 3 -- 2,
(RTS) 4 -- 5,
(CTS) 5 -- 4,
(SG) 7 -- 7,
(DTR) 20 -- 6 & 8.
En un conector de 9 pines la nomenclatura es: 1 DCD, 2 TxD, 3 RxD, 4 DTR, 5 SG, 6 DSR, 7 RTS y 8 CTS.
Un módem nulo mínimo sólo requiere que se conecten SG - SG (tierra), TxD - RxD (transmisión de uno con recepción del otro) y RxD - TxD. Sin embargo para poder efectuar control de flujo también deben conectarse los demás.
Aunque en el comercio es posible comprar un módem nulo, también es relativamente fácil ensamblar uno, una vez tenga conectores, cable y cautín. Si hace su propio módem nulo puede probar que la conexión haya quedado bien empleando un ohmiometro.
Una vez se conecte un módem nulo puede probarlo enviando mensajes
por el puerto serial del uno y viendo lo que recibe en el otro.
Por ejemplo si conecta dos sistemas OpenBSD empleando en ambos
el primer puerto serial, en uno de los dos puede ejecutar
(como usuario root
)
cat < /dev/cua00
mientras que en el otro ejecute
cat > /dev/cua00
cuando escriba en el segundo y presione ENTER, en el primero recibirá
el mensaje y líneas en blanco (cat
no es el
programa apropiado para establecer la comunicación, sólo para probar).
Con un módem nulo conectado y funcionado puede configurarse
un sistema OpenBSD como servidor para que permita conectar
terminales a un puerto serial. Debe configurarse el
programa init para que durante el arranque ejecute un
programa que reciba conexiones por el puerto serial (tal programa
normalmente es getty
).
Basta editar el archivo /etc/ttys
, quitar el
comentario a la línea apropiada para que quede:
tty00 "/usr/libexec/getty std.9600" vt220 on secure
Después puede reiniciar el sistema o reiniciar init con: kill -HUP 1.
En la línea modificada a /etc/ttys
,
tty00
se refiere a
/dev/tty00
(i.e el dispositivo
del primer puerto serial); /usr/libexec/getty std.9600
es el comando por ejecutar al arranque para manejar ese
dispositivo[17];
vt220
indica el tipo de terminal que se conectará;
on y secure son
banderas[18] para
init, el primero indica que se esperan conexiones por
esa línea tty y el segundo indica que puede iniciar conexiones el
usuario root.
Una vez conectado su módem nulo a un servidor OpenBSD ya configurado para recibir conexiones por el puerto serial, puede conectar una terminal.
Si la terminal cuenta con un sistema operativo, puede emplear un programa de comunicaciones. Con este debe poder ver los mensajes de login del servidor. Desde ahí puede entrar como un usuario de ese sistema y trabajar como en una de las consolas virtuales (sin ambiente X).
Si el computador que va a conectar es un sistema OpenBSD puede emplear el programa tip como usuario root:
tip tty0
Es posible que tenga que intentar varias veces, si configura el servidor con una velocidad diferente puede especificarla por ejemplo con tip -38400 tty0
tip empleará la descripción de tty0
disponible en /etc/remote
(que por defecto
está configurado para representar el primer puerto serial).
Le permitirá ver la información que el servidor envíe,
enviar información al servidor y hacer algunas operaciones
especiales comenzando con el carácter '~'. Por ejemplo terminar
la sesión con '~.', enviar un archivo con '~p' o recibir un
archivo con '~g'.
Dado que puede haber inconvenientes enviando o recibiendo
archivos de 8 bits, los archivos (especialmente binarios) que envíe
o reciba con tip debe codificarlos antes con
uuencode y decodificarlos después de transmitidos
con uudecode. Para codificar un archivo
prog.tgz
y dejarlo codificado en
prog.tgz.uue
:
uuencode prog.tgz < prog.tgz > prog.tgz.uue
posteriormente para decodificarlo:
uudecode prog.tgz.uue
El inconveniente del método descrito es que tip
no verifica la información transmitida. Una alternativa es
emplear un protocolo como Zmodem. Para eso instale tanto en cliente
como en servidor el paquete zmtx-zmrx
(o lrzsz
). Cuando desee transmitir
un archivo del servidor al cliente, inicie la transmisión
en el servidor:
zmtx Mattich2.pdf
y en el cliente desde tip use
~C zmrx
. Para enviar un archivo del cliente
al servidor ejecute en el servidor: zmrx y
después desde tip use:
~C zmtx miarchivo.txt
Una vez esté conectado un cliente con un servidor OpenBSD, es posible emplear el protocolo PPP[19] para permitirle al computador cliente acceder a Internet o a la red a la que esté conectado el servidor.
Una forma posible para lograr conectividad a Internet en una Intranet es asignando una dirección estática de la red al cliente y empleando el servidor para que actúe como proxy a nivel ARP.
En el servidor asegúrese de tener en el archivo
/etc/ppp/ppp.conf
:
default: set log Phase Chat LCP IPCP CCP tun command set device /dev/cua00 set speed 115200 set ctsrts on set dial "" modemnulo: set timeout 0 set lqrperiod 10 enable proxy enable lqr accept lqr allow users SuLogin
Remplazando SuLogin
, SuClave
y las direcciones de red por las apropiadas.
Por su parte el archivo /etc/ppp/ppp.conf
del cliente debe contener:
default: set log Phase Chat LCP IPCP CCP tun command set device /dev/cua00 set speed 115200 set ctsrts on set dial "" modemnulo: set dial "" set authkey SuClave set login "TIMEOUT 3 ogin:-\\r-login: SuLogin word: \\P $ ppp\\s\\-direct\\smodemnulo\\r" set lqrperiod 10 set timeout 0 set ifaddr 192.168.16.20 192.168.16.131 add default HISADDR enable lqr accept lqr enable dns
Después pude iniciar la comunicación desde el cliente con:
ppp -ddial modemnulo
Puede consultar más sobre la conexión física de un módem nulo en [CablesModemNulo]. Puede consultar sobre comunicaciones seriales en FreeBSD (similar a OpenBSD) en el capítulo "Serial Communications" de [FreeBSDHandbook] Para emplear un sistema OpenBSD mínimo como consola de algunos eventos de un servidor OpenBSD puede consultar [SerialOpenBSD]. La configuración del servidor OpenBSD que le permite atender conexiones por el puerto serial puede verse en las siguientes páginas man: init(8), ttys(5) y getty(8). La configuración de un cliente OpenBSD para funcionar como consola puede consultarse en: tip(1) y remote(5). Para conocer más sobre PPP puede consultarse el RFC 1661, la implementación particular de el protocolo de usuario en OpenBSD en la página del manual. El archivo de configuración por defecto también cuenta con comentarios que ayudan.
[17] Como parámetro getty recibe
características de la línea que deben estar especificadas en
/etc/gettytab
. En este caso
std.9600
especifica la velocidad de
transmisión. Empleando un módem nulo con control de flujo es
posible emplear velocidades mayores hasta
std.115200
.
[18] banderas del inglés flags
[19] PPP es un protocolo especificado en el RFC 1661.