[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]

105. DOS IPv4

Come sistema operativo libero, GNU/Linux costituisce la scelta ottimale, se non altro dal punto di vista economico, per la realizzazione di reti locali. Ma anche il recupero di vecchia tecnologia può essere di grande aiuto. Il vecchio hardware basato su i286 può essere introdotto in una rete TCP/IP per servizi classici quali Telnet, FTP e altro.

È da tenere presente che è in corso la realizzazione del progetto FreeDOS che potrebbe giustificare ancora meglio questo tipo di ragionamento (http://www.freedos.org).

Negli esempi che seguono si immagina di avere una piccola rete locale con due elaboratori.

  1. 192.168.1.1 dinkel.brot.dg con il sistema GNU/Linux

  2. 192.168.1.15 dos.brot.dg con il sistema Dos

Il secondo elaboratore è quello che si vuole utilizzare con i programmi Dos descritti in questo capitolo. Alla fine del capitolo viene presentato il programma PCroute, e in quel caso si utilizzeranno indirizzi differenti.

Prima di proseguire, è importante evitare di farsi illusioni: si tratta di programmi molto deboli, utili solo per IPv4 e a volte incapaci di attraversare i router.

105.1 Driver di pacchetto

Per poter comunicare attraverso un elaboratore con sistema operativo Dos in una rete TCP/IP occorre un cosiddetto driver di pacchetto (packet driver), ovvero un driver software in grado di fornire un minimo servizio basato sul protocollo IP. La raccolta di driver di pacchetto più comune è quella della Crynwr (http://www.crynwr.com).

I programmi che si intendono utilizzare devono essere predisposti per il tipo di driver di pacchetto a disposizione.

105.1.1 Driver di pacchetto della Crynwr

Una raccolta di driver di pacchetto organizzata da Crynwr e distribuita, almeno inizialmente, con la licenza GNU-GPL, può essere ottenuta presso Simtelnet (la nota distribuzione di software shareware e freeware per Dos e MS-Windows) all'indirizzo ftp://ftp.cdrom.com/pub/simtelnet/msdos/pktdrvr/pktd11.zip.

All'interno della raccolta si può trovare un lungo elenco di driver per vari modelli di schede di rete Ethernet. In particolare, vale la pena di soffermarsi sui driver per le schede Ethernet NE2000 e per la connessione PLIP attraverso la porta parallela.

105.2 DosLynx

Si tratta di un programma di navigazione a caratteri, ma relativamente completo, da utilizzare insieme a un driver di pacchetto per il TCP/IP. Può essere ottenuto presso la sua origine, University of Kansas, all'indirizzo ftp://ftp2.cc.ukans.edu/pub/WWW/DosLynx/. Per quanto possibile, questo applicativo è molto accurato, per esempio permette l'uso del mouse.

L'eseguibile è precisamente DOSLYNX.EXE che si avvia senza l'indicazione di argomenti particolari; ma prima di poter essere utilizzato occorre predisporre il file DOSLYNX.CFG.


Figura 105.1: La guida interna di DosLynx.

DosLynx permette anche l'invio di messaggi di posta elettronica, ma non la loro ricezione o lettura.

105.2.1 DOSLYNX.CFG

Si tratta di un file di testo contenente l'indicazione della configurazione di DosLynx. Per prima cosa deve essere definito l'indirizzo IP e la maschera di rete (netmask).

my_ip=192.168.1.15
netmask=255.255.255.0

Quindi occorre indicare l'indirizzo del router (gateway) e del server DNS anche se in realtà possono non esistere nella rete locale che si utilizza.

gateway=192.168.1.1
nameserver=192.168.1.1

Viene specificato quindi il dominio e il nome dell'elaboratore locale.

domainslist="brot.dg"
hostname=dos

Per il resto, questo file di configurazione viene già fornito con un esempio molto ben commentato. Vale comunque la pena di indicare:

networked=YES
mailaddr=daniele@dinkel.brot.dg
smtphost=192.168.1.1
nntphost=192.168.1.1

105.3 Telnet NCSA

Si tratta di una piccola raccolta di programmi da utilizzare insieme a un driver di pacchetto per il TCP/IP. Può essere ottenuta presso Simtelnet all'indirizzo ftp://ftp.cdrom.com/pub/simtelnet/msdos/ncsatlnt/.

Nelle sezioni seguenti vengono descritti solo alcuni dei programmi di questa raccolta. Prima di poter essere utilizzati occorre predisporre il file CONFIG.TEL.

L'ultima versione di questa raccolta dovrebbe essere la 2.3.08 che però sembra avere qualche problema, in particolare non può essere utilizzata quando si abilita il Path MTU discovery durante la compilazione del kernel Linux. La versione 2.3.07.4 (precedente) dovrebbe essere esente da questo difetto. Inoltre, alcune versioni precedenti alla 2.3.08, compresa la 2.3.07.4, contengono più programmi di utilità accessori, come un programma per il ping e uno per il tracciamento dell'instradamento (traceroute). Per trovare la versione 2.3.07.4 si può utilizzare http://ftpsearch.lycos.com effettuando una ricerca per il file tel23074.zip. In alternativa si può visitare anche ftp://ftp.is.co.za/networking/pc/ che contiene anche altri programmi per la connessione attraverso PC.

105.3.1 CONFIG.TEL

CONFIG.TEL è un file di testo contenente l'indicazione della configurazione del gruppetto di programmi che compongono il Telnet di NCSA. Per prima cosa deve essere definito l'indirizzo IP e la maschera di rete (netmask).

myip=192.168.1.15
netmask=255.255.255.0

Quindi occorre definire le caratteristiche del driver di pacchetto utilizzato, che a loro volta dipendono dal tipo di scheda di rete. L'esempio seguente riguarda il caso del driver di pacchetto Crynwr per la scheda NE2000 (NE2000.COM 0x7e 0x0b 0x300). Occorre fare attenzione alla voce ioaddr= che non si riferisce a un indirizzo di I/O, ma all'IRQ software del driver di pacchetto.

hardware=packet
interrupt=11
ioaddr=0x7e

Seguono una serie di altre informazioni, in particolare sono interessanti le seguenti.

myname=dos.brot.dg
termtype="vt100"
keyfile=".\keymap.tel"
services=".\services.tel"
ftp=yes
ftpwrt=yes
passfile=".\password.tel"

Quindi vengono richieste le informazioni sui nodi che possono essere contattati. Vengono inizialmente indicate delle caratteristiche generali predefinite, quindi i dati particolari di determinati nodi.

name=default
# Seguono una serie di caratteristiche predefinite
# ...
# Inizia la definizione dell'elaboratore «dinkel.brot.dg»
name=dinkel.brot.dg
hostip=192.168.1.1
gateway=0	# Non è un router
nameserver=1    # È un Name Server
# Inizia la definizione dell'alias «dinkel»
name=dinkel
copyfrom=dinkel.brot.dg

105.3.2 KEYFILE.TEL

All'interno del file CONFIG.TEL, con la voce keyfile=, viene dichiarato il nome e la collocazione di un file di configurazione della tastiera. Lo scopo di questo file è definire una corrispondenza tra tasti premuti e segnali inviati. Telnet NCSA fornisce già questo file e ha il nome KEYFILE.TEL

Per poter conoscere i codici a cui corrispondono i tasti della propria tastiera, si può utilizzare il programma SCANCHEK.EXE.

In generale, non conviene modificare il file originale, piuttosto, è meglio tentare diversi tipi di configurazione di terminale assegnando un valore opportuno alla variabile di ambiente TERM di GNU/Linux o alla voce termtype= del file CONFIG.TEL. si possono provare, in particolare, i valori vt100 e vt220.

105.3.3 PASSWORD.TEL

Il programma TELBIN.EXE può funzionare anche come un semplice server FTP per accessi singoli. *1*

Per questo, è necessario definire un file contenente informazioni sugli utenti e sui loro permessi di accesso. Il nome e la posizione di questo file viene definito all'interno di CONFIG.TEL, con la voce passfile=, e di solito si tratta di PASSWORD.TEL.

Per crearlo o modificarlo, conviene utilizzare il programma TELPASS.EXE, per esempio nel modo seguente. Il programma stesso suggerisce le operazioni da compiere.

C:\NCSATELN> telpass password.tel

105.3.4 SERVICES.TEL

SERVICES.TEL è il file dei servizi di rete ed è analogo al file /etc/services ( 77.2.1). Viene già fornito configurato correttamente.

105.3.5 TELBIN.EXE

TELBIN [<host>]

Il programma TELBIN.EXE è il più importante di questo gruppo, ed è quello che permette di attivare una connessione Telnet con un elaboratore GNU/Linux o un altro Unix. Se il programma non riesce a connettersi con l'elaboratore indicato come argomento, o se questo non viene indicato, si avvia come server FTP e accetta una sola connessione alla volta.

Quando si vuole utilizzare TELBIN.EXE come server FTP occorre predisporre il file degli utenti, solitamente PASSWORD.TEL.

105.3.6 FTPBIN.EXE

FTPBIN [<host>]

FTPBIN.EXE è il secondo programma come importanza. Si tratta di un semplice client FTP abbastanza funzionante. I comandi che mette a disposizione sono i soliti per questo tipo di programma, e per ottenere aiuto si può utilizzare il punto interrogativo (?).

105.3.7 FINGER.EXE

FINGER [<utente>]@<host>

Il programma FINGER.EXE permette di ottenere informazioni sugli utenti connessi in un determinato elaboratore (host). Il risultato di questa interrogazione è analogo a quello del suo omonimo negli ambienti Unix.

105.4 PPRD: server di rete per la stampa

Si tratta di una piccola raccolta di programmi per la gestione di un server di stampa secondo lo stile del demone lpd. Nelle situazioni in cui il sistema riesce a funzionare, permette di riutilizzare un vecchio PC, anche un XT, per questo scopo. Può essere ottenuto presso Simtelnet all'indirizzo ftp://ftp.cdrom.com/pub/simtelnet/msdos/lan/pprd200.zip.

Prima di poter essere utilizzato, deve essere preparato il file di configurazione WATTCP.CFG.

105.4.1 WATTCP.CFG

WATTCP.CFG è il file di testo contenente la configurazione TCP/IP del programma PPRD.EXE. Per prima cosa deve essere definito l'indirizzo IP, il nome corrispondente e la maschera di rete (o sottorete).

MY_IP = 192.168.1.15
HOSTNAME = dos
NETMASK = 255.255.255.0

Quindi occorre indicare il server DNS, il nome del proprio dominio e il router (gateway).

NAMESERVER = 192.168.1.1
DOMAINLIST = brot.dg
GATEWAY = 192.168.1.1

Infine la dimensione della memoria tampone (buffer) di trasmissione e ricezione.

TXBUFSIZE=8192
RXBUFSIZE=8192

Gli altri parametri non servono per l'uso normale.

105.4.2 PPRD.EXE

pprd [<opzioni>]

Il programma PPRD.EXE viene avviato normalmente senza l'indicazione di alcuna opzione; è sufficiente una corretta configurazione attraverso il file WATTCP.CFG.

Salvo una diversa configurazione, il programma offre la stampante (o le stampanti) con un nome corrispondente a quello usato dal Dos per identificare il dispositivo: lpt1, lpt2, ...

105.4.3 printcap e filtri

Nell'elaboratore GNU/Linux dal quale si vogliono inviare le stampe occorre sistemare il file /etc/printcap in modo adeguato. Quello che segue è un esempio in cui:

  1. la stampante predefinita punta direttamente alla stampante remota, il cui nome è lpt1;

  2. la stampante ps utilizza un filtro che trasforma un documento PostScript in un file adatto alla stampante remota e poi lo ridirige alla stampante predefinita;

  3. la stampante tx utilizza un filtro che trasforma un file di testo in stile Unix in un file di testo in stile Dos e poi lo ridirige alla stampante predefinita.

#======================================================================
# /etc/printcap
#======================================================================
lp:\
	:lp=:\
	:sd=/var/spool/lpd/lp:\
	:rm=192.168.1.15:\
	:rp=lpt1:\
	:mx#0:\
	:sf:\
	:sh:
#
ps:\
	:lp=/dev/null:\
	:sd=/var/spool/lpd/postscript:\
	:lf=/var/spool/lpd/postscript/log:\
	:if=/var/spool/lpd/postscript/input-filter:\
	:sh:\
	:sf:\
	:mx#0:
#
tx:\
	:lp=/dev/null:\
	:sd=/var/spool/lpd/text:\
	:lf=/var/spool/lpd/text/log:\
	:if=/var/spool/lpd/text/input-filter:\
	:sh:\
	:sf:\
	:mx#0:

Segue lo script usato come filtro di input per la stampa in PostScript. Lo script riceve i dati dallo standard input e attraverso Ghostscript lo trasforma in un file adatto per la stampa su una stampante a nove aghi tipo IBM-EPSON e dirige l'output verso la stampante predefinita, cioè quella remota.

#!/bin/sh
/bin/grep -v '(%%' | /usr/bin/gs -q -dNOPAUSE -sPAPERSIZE=letter \
    -sDEVICE=eps9high -sOutputFile=- - | /usr/bin/lpr

Segue lo script usato come filtro di input per la stampa dei file di testo. Lo script riceve i dati dallo standard input e attraverso il programma unix2dos lo trasforma in un file di testo in cui ogni riga è terminata dalla sequenza <CR><LF> come richiesto dalle stampanti normali. L'output viene quindi diretto verso la stampante predefinita, cioè quella remota.

#!/bin/sh
/bin/cat | /usr/bin/unix2dos | /usr/bin/lpr

105.5 POPMail

POPMail è un ottimo programma per la gestione della posta elettronica attraverso la connessione con un servizio POP2 o POP3. Può essere ottenuto presso Simtelnet all'indirizzo ftp://ftp.cdrom.com/pub/simtelnet/msdos/pktdrvr/popml322.zip.

La configurazione viene fatta attraverso il programma stesso e non richiede la preparazione di alcun file.


Figura 105.2: La composizione di un messaggio di posta elettronica attraverso POPMail.

105.5.1 POPMAIL.EXE

popmail

POPMail si compone di un unico eseguibile monolitico: POPMAIL.EXE. Tutte le sue funzionalità sono incorporate in questo, compresa la configurazione. Appena si avvia il programma si ottiene un'interfaccia amichevole che permette l'uso del mouse.

105.5.1.1 Menu Setup

La configurazione del programma si definisce attraverso le funzioni del menu Setup. In particolare è importante la voce Network, attraverso cui si accede a una maschera per la definizione degli indirizzi e dei nomi utilizzati. In questa fase, è importante stabilire il tipo di protocollo che si intende utilizzare. Questo lo si fa attraverso l'indicazione della porta di comunicazione. Quella predefinita è 109 corrispondente a POP2, altrimenti si può utilizzare la porta 110 in modo da collegarsi a un servizio POP3.


Figura 105.3: La finestra principale della configurazione di POPMail. Si può osservare che il nodo è quello che fornisce il servizio SMTP, mentre subito sotto è indicato l'indirizzo dell'elaboratore locale.


Figura 105.4: Selezionando il pulsante Advanced dalla finestra principale di configurazione, si ottiene questa finestra di informazioni aggiuntive. La selezione del tipo di protocollo dipende dal numero di porta selezionato. In questo caso, essendo il numero 110, si utilizza il protocollo POP3.

105.5.1.2 Menu Windows

Una volta definita la configurazione, si può iniziare a utilizzare il programma per ricevere e spedire posta. Esistono tre finestre: una per la composizione dei messaggi, un'altra per la loro lettura e l'ultima per il taglia-copia-incolla. Per passare da una finestra all'altra, occorre richiamare questo menu.

105.5.1.3 Menu «=»

Il menu dell'applicazione, quello precedente a File, permette di accedere a funzionalità aggiuntive e molto utili. Si può utilizzare una finestra Telnet, si può ottenere la risoluzione di indirizzi IP e si può eseguire il ping.


Figura 105.5: Una sessione Telnet attraverso POPMail.


Figura 105.6: La presenza di una funzione di ping completa l'applicativo POPMail.

105.6 PCroute

PCroute permette di trasformare un vecchio PC (i286 o inferiore) in un router. Può essere ottenuto presso Simtelnet all'indirizzo ftp://ftp.cdrom.com/pub/simtelnet/msdos/network/pcrte224.zip.

Nell'archivio che viene distribuito, è presente il sorgente e diverse versioni compilate, per l'uso delle schede di rete più comuni nel passato. Tra queste versioni già pronte ne esiste una in grado di utilizzare i driver di pacchetto mostrati all'inizio di questo capitolo. Gli esempi che verranno mostrati qui si riferiscono all'utilizzo dei driver di pacchetto.

105.6.1 Configurazione dei driver di pacchetto

Se si decide di utilizzare la versione già compilata per i driver di pacchetto, cioè PKTPKT.EXE, è necessario prima configurare i driver di pacchetto, poi si può pensare alla configurazione di PCroute.

La versione precompilata, PKTPKT.EXE, prevede l'utilizzo di due interrupt software per comunicare con i driver di pacchetto, 0x60 e 0x61, dove il primo si riferisce alla prima interfaccia e l'altro alla seconda.

Supponendo di utilizzare schede di rete compatibili NE2000, e che utilizzino rispettivamente le risorse IRQ 10, I/O 0x280, e IRQ 11, I/O 0x300, la configurazione dei driver di pacchetto dovrebbe essere la seguente:

ne2000 0x60 0x0a 0x280
ne2000 0x61 0x0b 0x300

105.6.2 Configurazione di PCroute

Per fare funzionare PCroute è necessario l'eseguibile PCROUTE.EXE, nel nostro caso si tratta di PKTPKT.EXE a cui viene cambiato nome in questo modo, e CONFIG.EXE, che serve a generare il file di configurazione di PCroute.

Si suppone che la prima scheda sia inserita nella rete 192.168.1.0 e che abbia l'indirizzo 192.168.1.254; inoltre si suppone che la seconda sia nella rete 192.168.2.0 con l'indirizzo 192.168.2.254. Non si prevede la necessità di indicare altri instradamenti per mezzo di altri router.

C:\PCROUTE> CONFIG[Invio]

This program creates/edits the pcroute.cfg file

Inizia una configurazione interattiva, a cominciare dalle indicazioni riferite alla prima interfaccia, cioè quella collegata al driver di pacchetto attraverso l'IRQ 0x60.

Configuring an interface

Address for the interface [0.0.0.0] ? 192.168.1.254[Invio]

Subnet mask for the interface [255.255.255.0] ? 255.255.255.0[Invio]

Flag Meanings (if set)
    Bit 0 (1h)  - Don't send routing updates out this interface
    Bit 1 (2h)  - Don't listen to routing updates from this interface
    Bit 2 (4h)  - Proxy Arp for all subnets
    Bit 3 (8h)  - Turn off directed broadcasts
    Bit 4 (10h) - Turn off the issuing of ICMP redirects
    Bit 5 (20h) - Broadcast using old (0's) format

Flags (HEX) for the interface [0H] ? 0H[Invio]

Routing Metric (HEX) for the interface [1H] ? 1H[Invio]

A questo punto si passa alla configurazione della seconda interfaccia, cioè quella collegata al driver di pacchetto attraverso l'IRQ 0x61.

Configuring an interface

Address for the interface [0.0.0.0] ? 192.168.2.254[Invio]

Subnet mask for the interface [255.255.255.0] ? 255.255.255.0[Invio]

Flag Meanings (if set)
    Bit 0 (1h)  - Don't send routing updates out this interface
    Bit 1 (2h)  - Don't listen to routing updates from this interface
    Bit 2 (4h)  - Proxy Arp for all subnets
    Bit 3 (8h)  - Turn off directed broadcasts
    Bit 4 (10h) - Turn off the issuing of ICMP redirects
    Bit 5 (20h) - Broadcast using old (0's) format

Flags (HEX) for the interface [0H] ? 0H[Invio]

Routing Metric (HEX) for the interface [1H] ? 1H[Invio]

Gli instradamenti sulle reti cui sono connesse le interfacce vengono definiti in modo automatico. Si decide di non indicare altri instradamenti particolari.

If you wish to configure static routes do so here.  To stop type a '.'

  Flag Meanings (if set)
      Bit 0 (1h)  - Local route, do not propagate it
      Bit 1 (2h)  - Transient route, subject to RIP protocol

Network [0.0.0.0] ? .[Invio]

Da questo punto non si seleziona alcuna opzione particolare.

If you wish to forward bootp packets please enter the address
  of the address to forward it to.  This address can be a
  directed broadcast.  0.0.0.0  means don't forward

Address to forward bootp packets [0.0.0.0] ? 0.0.0.0[Invio]

Once PCroute boots up, it sends all log messages to a network
  host running a BSD UNIX syslogd daemon.  To disable
  logging enter 0.0.0.0

Host to send loging info to [0.0.0.0] ? 0.0.0.0[Invio]

Mask Meanings (0 = Log, 1 = Don't log)
    Bit 0 (1h)  - System
    Bit 1 (2h)  - Routing
    Bit 2 (4h)  - Monitor
    Bit 3 (8h)  - Localtalk

Logging mask for this router [0H] ? 0H[Invio]

There are 8 routing 'levels' supported
    0 - Emergency    1 - Alert    2 - Critical    3 - Error
    4 - Warning      5 - Notice   6 - info        7 - Debug
Only messages with a level less than the logging level are sent

Logging level [0H] ? 0H[Invio]

A questo punto la configurazione termina e ne viene generato il file PCROUTE.CFG.

105.6.3 Conclusione

PCroute, per funzionare richiede solo l'avvio dell'eseguibile (PCROUTE.EXE), che ha la necessità di trovare il file PCROUTE.CFG nella directory corrente. Dopo l'avvio, l'elaboratore risulta bloccato, essendo destinato esclusivamente alla funzione di instradamento.

La documentazione di PCroute spiega meglio come gestire le varie opzioni che nell'esempio sono state semplicemente evitate, e anche come sfruttare la possibilità di monitorare il funzionamento di PCroute attraverso il registro di sistema di un elaboratore come GNU/Linux.

105.7 Riferimenti

---------------------------

Appunti Linux 1999.09.21 --- Copyright © 1997-1999 Daniele Giacomini --  daniele @ pluto.linux.it


1.) Non è il caso di fare affidamento su questa funzionalità di TELBIN.EXE perché non è perfettamente funzionante.


[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]