Connexion Dial up sous Linux

[Aide Technique - Sommaire]

win.gif
[Win95]
linux.gif
[Linux]
atari.gif
[Atari]




PPP sous linux consiste en un pilote hdlc (format standard de transmission de données) comprit dans le noyau, et pppd, un programme daemon qui bascule et exploite une ligne série en PPP. Pour vous connecter à l'InterNet en PPP sous linux, il vous faut avoir bien configuré le port série correspondant à votre modem, la couche TCP/IP du système, la configuration DNS, ainsi que le lancement de PPP lui-même, qui peut s'automatiser...
  1. Configuration du port série sous linux.
  2. Configuration TCP/IP sous linux.
  3. Configuration DNS sous linux.
  4. Configuration PPP sous linux.
  5. Sécurite réseau sous linux.

Configuration du port série sous linux.

Les ports série sous linux sont représentés par
/dev/ttyS0, /dev/ttyS1, etc. lorsqu'on les utilise en entrée,
et par /dev/cua0, /dev/cua1, etc. lorsque l'on veut les utiliser en sortie également...
Donc dans notre cas nous utiliserons la représentation "cua" cua0 est équivalent au port COM1, cua1 au COM2, et ainsi de suite...

Il vous faut vérifier que le port série correspondant à votre modem ait été configuré avec les bons paramètres, c'est à dire la bonne adresse et le bon irq, pour cela, utiliser la commande:

setserial -bg /dev/cua*


si les paramètres concernant le port en question sont bons, passer à la section suivante, sinon (par défaut la configuration des ports correspond à la configuration par défaut des irqs standards (com2 et 4 : irq3...)), il vous faut forcer la configuration de l'adresse ou de l'irq par la commande:

setserial /dev/cuaX irq numero_irq


cette commande est à rentrer dans /etc/rc.d/rc.serial pour être executée au boot.


Configuration TCP/IP sous linux.

TCP/IP est indispensable sur tous les systèmes d'exploitation pour pouvoir établir une connexion InterNet, (même pour les accès téléphoniques), sous linux, tout est supporté au niveau du noyau (il vous faudra peut être le recompiler si votre noyau actuel ne comporte pas de support TCP/IP)

Le noyau gère des interfaces réseau telles que lo, interface de loopback qui permet des connexions en boucle (sur nous même), ou eth0, interface correspondant à une carte ethernet ; chaque interface pour pouvoir être utilisée, doit être attachée à une adresse IP, dans le cas d'une connexion par poste isolé en PPP, la seule interface à configurer est lo (ppp0 sera configuré par le daemon pppd), il faut s'assurer que la ligne suivante figure bien dans votre fichier /etc/rc.d/rc.inet1 (le chemin peut différer):


/sbin/ifconfig lo 127.0.0.1  # l'adresse 127.0.0.1 est attachée à lo

Le noyau entretient une table de routage, c'est à dire une table qui indique quelle interface réseau à utiliser en fonction de l'adresse IP de destination des paquets avec éventuellement l'adresse d'une passerelle par laquelle passer, l'existence d'une route par défaut (où envoyer les paquets de destinations non gerées par le reste de la table) dans la table de routage est indispensable dans le cas d'une connexion à l'InterNet, cependant la seule entrée à créer dans la table de routage est celle concernant le loopback (interface lo), les deux entrées nécessaires au bon routage à travers la connexion PPP pouvant être créées automatiquement par la plupart des versions de pppd, donc il faut juste que votre fichier /etc/rc.d/rc.inet2 contienne la ligne suivante:


/sbin/route add -net 127.0.0.0 #  on ajoute une ligne dans la table
				# de routage pour le
                               # réseau d'adresse 127.0.0.0


Configuration DNS sous linux.

Le DNS (Domain Name System), repose sur des serveurs qui ont pour fonction d'assurer le renseignement des adresses IP en fonction des adresses de machines en nom et vice versa (exemple www.cae.fr -> 194.51.83.20 ou le contraire), la gestion des noms est totalement décentralisée c'est à dire que chaque organisation gère les noms de ses propres machines, et donc administre son propre serveur, les serveurs sont en quelque sorte interconnectés de façon arborescente c'est à dire qu'ils ont tous un serveur père à contacter lorsque ils cherchent une adresse qui leur est inconnue...

Il vous faut donc configurer l'adresse IP d'un ou de plusieurs serveurs de noms à contacter lors d'une recherche de nom:

Fichier /etc/host.conf:


order hosts, bind
Cette configuration indique de chercher des adresses d'abord dans le fichier /etc/hosts, puis d'utiliser le resolver (ensemble de librairies d'utilisation des DNS) si rien n'a été trouvé.

Fichier /etc/resolv.conf:
nameserver 194.51.83.1	# serveur de noms primaire Imaginet.
nameserver 194.51.83.2	# serveur de noms secondaire.
domain imaginet.fr	# domaine à essayer de rajouter aux noms à
			# resoudre (ce qui permet d'avoir des noms locaux).


Il vous faut aussi régler votre nom d'hôte local ainsi que son domaine, grâce à la commande hostname (consulter le man), mais étant donné que l'adresse IP est attribuée dynamiquement lors de la connexion, le nom de machine est aussi attribué dynamiquement et donc vous pouvez au mieux régler de façon certaine le domaine.


Configuration PPP sous linux.

Pour activer PPP sous linux il faut donc executer pppd le daemon qui bascule une ligne série et l'exploite en mode PPP, mais il faut dans le cas d'une liaison téléphonique que cette liaison soit déjà établie, il faut utiliser pour cela le programme chat, qui permet d'intéragir avec le modem en lui envoyant certaines chaînes de caractères et en en attendant de sa part...puis une fois la liaison physique établie on peut utiliser pppd.
Vous pouvez vous identifier au serveur soit par échanges de chaînes grâce à chat soit avec le protocole PAP, couplé à PPP.

  • Options de pppd et fichier d'identification.
    pppd propose de nombreuses options et accepte beaucoup d'arguments sur la ligne de commande, et l'on peut au lieu de mettre tous ces paramètres sur la ligne de commande en écrire certains dans le fichier suivant:
    
    #/etc/ppp/options
    
    mtu 1000           #  on règle la taille maximum des paquets.
    domain imaginet.fr #  domaine sous lequel le nom de notre machine
    			#sera enregistré.
    noipdefault        #  indique qu'il faut accepter l'adresse IP qui
    			#nous sera attribuée.
    defaultroute       #  indique a pppd d'insérer les lignes
    			#adéquates dans la table
                       # de routage du noyau, une fois la connexion
    			#établie.
    
    
    Si vous voulez utiliser PAP comme protocole d'identification, il vous faut rentrer votre login, password et l'adresse de la passerelle dans le fichier :
    
    #/etc/ppp/pap-secrets
    
    #Login         nom_machine_passerelle                password
    votre_login   gw.lyon.imaginet.fr                votre_mot_de_passe
    
    
  • Blockage du port.
    Afin de ne pas provoquer d'erreurs sur un port série que l'on utilise, la convention veut que l'on utilise un fichier de lock contenant le nom du port que l'on utilise pour indiquer aux autres programmes qui auraient besoin d'y acceder qu'il est déjà utilisé. Ce fichier est d'habitude du type /var/spool/uucp/LCK..cua?

  • Lancement de PPP.
    pppd exploite une ligne série en mode PPP mais il faut que cette ligne soit établie et donc dans notre cas que notre modem soit déja connecté avec le serveur de terminaux, pour cela il faut utiliser le programme chat, ce programme dans ses versions les plus récentes permet l'utilisation de fichier de lock (il le génère lui-même) et on peut également l'utiliser pour envoyer les chaînes de caractères adéquates à l'identification et au lancement de PPP sur le serveur de terminaux...Voici un script de connexion présent dans la distribution slackware:

    ppp-on:
    On vérifie que le port n'est pas utilisé, puis on numérote, se connecte, s'identifie grâce à chat.
    En cas de réussite on lance pppd en lui indiquant d'utiliser le contrôle de flux matériel et que la ligne série utilisée est maintenue par un modem (ainsi pppd raccroche avant de s'arrêter).
    Une fois la connexion établie, vous pouvez vérifier son bon fonctionnement en executant la commande route, qui doit retourner une table de routage de 3 entrées.
    Vous pouvez tracer les connexions tcp/udp actives grâce à la commande netstat -tu.

    Pour fermer la connexion, il faut faire appel à un script du type de ppp-off.

    Ces deux scripts font appel à fix-cua et unlock, voici un fichier compressé qui inclut ppp-on (à completer), ppp-off, fix-cua et unlock: ppp.tar


Sécurite réseau sous linux.

Linux, comme tout système d'exploitation de type Unix, offre de nombreux services InterNet grâce à des serveurs (daemons) réseau: telnetd, ftpd, etc.
Ceci peut présenter une faille dans la sécurité de vos données si n'importe qui de la communauté internet peut tenter de faire un telnet sur votre machine lorsque vous êtes connecté (à l'entrée du réseau d'ImagiNet, tous les ports de connexion à distance sont filtrés), il vous faut donc éventuellement sécuriser votre système en interdisant eventuellement toute connexion ou en posant des restrictions à certains services sur l'origine des requêtes...

Tous les daemons réseaux (mis à part sendmail) sont lancés depuis inetd, un super daemon qui écoute sur tous les ports adéquats et lance les services lors d'une requête (ce qui économise des ressources système), le fichier de configuration de inetd s'appelle /etc/inetd.conf et les entrées sont du type:


port   type_connexion   tcp_ou_udp    wait_ou_nowait  utilisateur

programme_à_lancer

Le programme à lancer est le serveur qui sera lancé lors d'une requête sur le port correspondant (ex: /usr/sbin/wu.ftpd).

Pour fermer tout simplement un service, mettre en commentaire la ligne qui lui correspond (#) et faire un kill -HUP sur le numero de processus de inetd qui relira alors son fichier de configuration.

Pour appliquer uniquement une restriction d'accès sur un service particulier, il faut indiquer /usr/sbin/tcpd comme programme à lancer avec en paramètre le nom du serveur lui-même à lancer (tcpd vérifiera d'abord les restrictions d'accès avant de lancer le serveur en question), les fichiers de configuration de tcpd sont /etc/hosts.allow et /etc/hosts.deny, dans lesquels vous indiquez respectivement soit les noms de machines/domaines autorisés en accès, soit les noms de machines/domaines refusés en accès (soit vous n'autorisez qu'à un certain nombre, et refusez à tous les autres, soit vous autorisez à tout le monde sauf à un certain nombre), format de ces fichiers:

nom_du_serveur: [ALL, machine.toto.com, .toto.com, LOCALHOST]

(EXCEPT) [liste]
Exemple, pour autoriser le telnet uniquement en loopback soit on insère l'entrée suivante dans /etc/hosts.allow:
in.telnetd: LOCALHOST
soit l'entrée suivante dans hosts.deny:
in.telnetd: ALL EXCEPT LOCALHOST

Sinon vous pouvez restreindre l'accès au compte root depuis certains terminaux seulement en spécifiant ces terminaux dans /etc/securetty



Page réalisée par Régis VILLEMIN 1995-1996.
Toute remarque ou suggestion à adresser à cae@imaginet.fr


© - Tous droits réservés. Mise à jour : 24/11/96 par cae@imaginet.fr.