Page précédente Page suivante Table des matières

12. Communiquer

12.1 UUCP et modem

UUCP (Unix to Unix CoPy) vous permet d'envoyer et de recevoir du mail, et de même pour les news.

Je vous conseille de faire un lien entre /dev/modem et /dev/cua1 (COM2), si c'est votre périphérique. Les répertoires utilisés par UUCP sont /var/spool/uucp, /var/spool/uucpublic, /usr/lib/uucp et /var/lib/uucp.

Bon, je suppose que vous avez installé le package UUCP, elm et sendmail. Pour les news, je vous conseille INN, comme serveur de news, et tin ou trn, comme lecteur de news.

Les fichiers UUCP décrits ici sont au format HDB (ou, je sais que Taylor est achtement plus simple... mais j'ai pas eu le temps de refaire cette partie qui date... !).

UUCP a besoin de plusieurs fichiers de configuration qui se trouvent dans /var/lib/uucp/hdb_config.

Maintenant, le système est configuré. Il n'y a plus qu'à tester. Lancer ceci :

uucp remcomp\!\~/catalogue.Z ~/

Votre machine va se connecter sur remcomp pour récupérer le fichier catalogue.Z. Ce fichier sera déposé dans le répertoire /var/spool/uucppublic.

12.2 Appels entrants

Bon. Au point où l'on en est, vous pouvez appeler. Maintenant, on va configurer la machine pour que le monde extérieur puisse appeler. Tout se joue dans le fichier /etc/inittab.

Décommenter une ligne comme par exemple :

s1:45:respawn:/sbin/agetty -h -t 60 9600 modem
|   |    |                  |    |    |     |--- Port a utiliser   
|   |    |                  |    |    |--------- Vitesse du modem
|   |    |                  |    |--- Temps au bout du quel on racroche
|   |    |                  |-------- Active le controle de flux rts/cts
|   |    |------------- A relancer lorsqu'il se termine
|   |------------------ Runlevels. 
|---------------------- Identificateur

Donc, au prochain boot, un système de login est prêt sur le port /dev/modem (port série sur lequel est connecté le modem). Le dernier problème est de le configurer. En effet, le modem doit être positionné pour la vitesse. En fait, ca dépend du modem. Si jamais vous pouvez positionner des switch, rendez le modem muet (ATQ2) et surtout, mettez-le en auto-reponse (ATS0=1).

Si vous n'avez pas de switches, faîtes un AT&W pour sauvegarder les paramètres.

Pour vérifier la config utiliser usrlib/uucp/uuchk/.

Si vous voulez d'autres renseignements, je vous conseille de lire le HOWTO UUCP.

12.3 PPP

L'objet de ce paragraphe est l'installation d'une connexion PPP.

Introduction

PPP (Point to Point Protocol) permet d'établir une connexion IP sur une voie série de manière plus efficace que SLIP (Serial Line Internet Protocol). Une fois la connexion établie, tous les protocoles supérieurs à IP (FTP, telnet, NFS, http, X...) sont disponibles.

Pour établir une connexion PPP, il faut:

PPP est supporté par un grand nombre de systèmes (même MS-Windows) et on peut normalement se connecter d'un système à l'autre. Cependant, cette documentation ne traite que le cas de Linux !

Accès à un serveur PPP

Pour accéder à un serveur PPP installé, votre noyau doit être compilé avec le support TCP/IP. Pour cela, lors du make config il faut répondre comme suit :

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

Vous devez en plus récupérer les sources des programmes d'accès à PPP (dans l'archive ppp-2.1.2a.tar.gz, voire b, c, ou d) de manière à installer les programmes suivants :

Vous pouvez par exemple installer pppd et chat dans le répertoire /usr/sbin.

Ensuite, vous devez configurer vos shell-scripts de boot de manière à configurer la couche TCP/IP (par exemple dans un fichier /etc/rc.d/rc.net qui sera lancé par /etc/rc.d/rc.local). En voici un exemple :

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 ""

Il faut ensuite ajouter l'adresse IP de la machine dans le fichier /etc/hosts :

     127.0.0.1          loopback localhost      # useful aliases
     199.103.124.170    pcpf pcpf.lectra.fr     # Mon beau PC en PPP

L'adresse IP de la machine correspond à celle affectée par l'administrateur du serveur PPP pour la connexion associée à un numéro de téléphone donné. Cela signifie que la personne qui se connecte 10 minutes après utilisera la même adresse IP que vous.

Enfin, vous devez configurer votre domaine dans le fichier /etc/resolv.conf :

 domain lectra.fr
 nameserver 192.1.2.1

La deuxième ligne est utilisée si vous souhaitez utiliser un serveur de noms, c'est-à-dire une machine renvoie l'adresse IP correspondant au nom de machine fourni. Si vous n'avez pas de serveur de noms, vous ne pourrez utiliser que des adresses numériques (199.103.124.x) ou bien vous devrez mettre dans le fichier /etc/hosts toutes les machines auxquelles vous voulez accéder avec leurs adresses IP...

Vous pouvez également mettre votre nom de domaine dans le fichier /etc/ppp/options qui doit exister même vide (si vous ne voulez pas que pppd demande /etc/ppp/options, il faut le compiler avec l'option -DREQ_SYSOPTIONS=0).

Vous pouvez maintenant fébrilement tester la connexion en utilisant un shell-script du style (attention : tout cela constitue une seule ligne) :

/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 commande chat permet d'effectuer la connexion en appelant le numéro de téléphone de votre serveur. Attention de ne pas oublier les options de la deuxième ligne en particulier modem et defaultroute.

La spécification de la vitesse (9600) ainsi que le chat-script à utiliser (ABORT ERROR ABORT "NO CARRIER" ABORT BUSY "" ATB0 OK ATDTxxxxxxxx CONNECT) dépendent bien entendu du modem et de la configuration du serveur (voir également le login et le password).

L'adresse IP doit être celle déclarée en tant qu'adresse de la machine en PPP dans /etc/hosts (on peut également y mettre le nom de la machine en PPP).

Les informations de debug doivent sortir sur la console (si vous avez configuré le syslog pour celà).

A partir de là, vous êtes connecté sur le réseau distant et vous pouvez faire par exemple:

  $ 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
pour tester la connexion. Si le ping marche et que le réseau est connecté à l'Internet, alors vous avz Internet à la maison !

Si ça ne marche pas, vous pouvez tester en tapant /sbin/ifconfig et le résultat doit ressembler à ça :

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

Surtout, vous devez avoir une ligne commençant par ppp0 sinon, c'est qu'il y a un problème. Vous pouvez également tester le routage par netstat -nr qui doit donner quelque chose de semblable à :

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

Avec une ligne 0.0.0.0 contenant l'adresse IP du serveur PPP. Si vous n'avez pas cette ligne, il se peut que vous ayez oublié l'option defaultroute.

Configuration d'un serveur PPP

Pour cela, vous devez installer les mêmes logiciels que dans le chapitre précédent (configurer le noyau, installer pppd). En plus de ça, il faut que créer un login spécial pour les connexions PPP dans /etc/passwd, par exemple :

ppp::61:60:Connexion PPP:/:/usr/bin/ppp_login

Le script /usr/bin/ppp_login étant :

#!/bin/sh
# Connexion PPP --> adresse IP = 199.103.124.170
exec /usr/sbin/pppd -d -detach -ip modem proxyarp :199.103.124.170

L'option proxyarp permet à la machine connectée d'accèder à tout le réseau :

 199.103.124.170                   199.103.124.50
+-----------+      PPP link       +----------+
| pcpf      | ------------------- |  ondee   |
+-----------+                     +----------+
                                        |           Ethernet
                    ----------------------------------- 199.103.124.x

Bibliographie

Pour plus d'informations, voir le fichier README.Linux de la distribution ppp-2.1.2a.tar.gz.

Remarque : Ce fichier est dans la distribution standard de la Slackware.

12.4 Un réseau derrière une seule adresse

Une question commune est : "j'ai un accès Internet mais une seule adresse IP et je voudrais pourtant pouvoir connecter plusieurs machines".

Le NET2-HOWTO répond à cette question mais il oublie une possibilité. Cette note a pour but d'expliquer les quatre façons de résoudre le problème ci-dessus.

12.5 Sendmail

La configuration du sendmail est toujours quelque chose de particulièrement pénible et difficile. Toutefois, certains outils facilitent grandement les choses. La Slackware est d'origine fournie avec certains fichiers, qui peuvent être une solution. Toutefois, il est plus sain de reinstaller le fichier de configuration en se basant sur les docuements qui suivent :

12.6 Configuration du mail lors d'une connexion avec un provider

Les provideurs reçoivent les messages et les rendent accessibles via un serveur POP (en général mail.fournisseur.fr). Il faut donc récupérer les messages reçus par ce serveur vers la machine linux dans /var/spool/mail/utilisateur. Pour cela, vous pouvez utiliser le programme gwpop de Stéphane Bortzmeyer. On le trouve dans ftp://ftp.pasteur.fr/pub/Network/gwpop.

Dans ce script, définir :

$mailhost = "mail.fournisseur.fr";
$deliver= "deliver NomUserLocal ";

Puis, une fois connecté, lancer via un script (histoire de ne pas avoir à tout retaper à chaque fois) :

gwpop -p MotDePasseServeurPop UserServeurPop

Une fois que le courier est reçu, la question est de savoir comment en envoyer. Il faut recompiler sendmail sans DNS. Pour cela, définir NAMED_BIND à 0 dans src/conf.h. Les versions récentes de sendmail ont par défaut un comportement qui peut être génant. Les messages accentués sont automatiquement convertis en Quoted Printable si le serveur auquel il se connecte n'annonce pas qu'il supporte le protocole ESMTP 8bit. Si on trouve cette initiative génante, il faut définir MIME8TO7 à 0 dans src/conf.h.

Voici le fichier de règles qu'il faut indiquer via le kit sendmail Jussieu :

#!/bin/sh
#
# Regles pour le domaine lolonet
#
Domaine="MonNomdeDomaineAvecUnPoint"
AdressesInternes=RIEN
V8="o"
Aliases="/etc/aliases"
SendmailSt="/etc/sendmail.st"
SendmailHf="/etc/sendmail.hf"
Mqueue="/var/spool/mqueue"
et le fichier de config :
#!/bin/sh
Host="NomDeMaMachine"
AdressesLocales=TOUT_DOMAINE
RelaisExterieur="smtp.[mail.fournisseur.fr]"
ReecritureadressesLocales="fournisseur.fr"
RevAliases="hash -N /etc/revaliases"
MailerLocal='/usr/bin/deliver DFMPlmnrs deliver $u'
SansDNS=1

Il suffit ensuite de modifier le configurateur en décommentant la ligne suivante:

CPP="$CPP -traditional"

puis générer le fichier de config :

./configurateur regles.lolonet Machine.config >sendmail.cf.Machine

Si on a désactivé MIME8TO7 dans sendmail, commenter la ligne du sendmail.cf générée :

# O EightBitMode=mime

et copier le fichier dans /etc

Il est nécessaire de définir l'adresse IP du serveur SMTP dans /etc/hosts. Enfin, il faut réécrire l'adresse locale pour que les messages envoyés aient un champ From correspondant à l'adresse fourni par le fournisseur. Il suffit d'ajouter dans /etc/revaliases une ligne du style:

NomLocal:       NomFournisseur@fournisseur.fr

et ensuite regénérer la base avec :

/usr/sbin/sendmail -bi -oA/etc/revaliases

Voila ! Les mails sont stoqués dans /var/spool/mqueue. Lorsque vous êtes connectés par PPP et que vous souhaitez envoyer tous les mails, il suffit de faire

/usr/sbin/sendmail -q 

12.7 netstat -s

Une option de netstat existant sur certaines plates-formes est inexistante avec Linux (option -s). Qu'importe : le script Perl 5 qui suit résoud ce problème ! Il suffit de le sauvegarder sous le nom de netstat, et de le mettre avec le vrai dans le PATH. Perl fait le reste.


#!/usr/local/bin/perl
# Il faut perl 5

$stats = "/proc/net/snmp";

if ($ARGV[0] eq '-s') {
    open (STATS, "< $stats") || die "Cannot open $stats: $!";
    while (<STATS>) {
        chop;
        undef $i;
        ($category, @fields) = split;
        chop $category;
        print "\n$category statistics:\n";
        $_ = <STATS>;
        ($category, @values) = split;
        $~ = "STAT";
        foreach $field (@fields) {
            write;
        }
    }
    close (STATS);
}
else {
    system ($0, join (' ', @ARGV));
}

format STAT =
@<<<<<<<<<<<<<<<<<:@>>>>>>> 
$field,       ,$values[$i++]
.



Page précédente Page suivante Table des matières