Partage de connexion sous Debian Linux
Y. Morère
Juillet 2003
Abstract
Cette article est tiré d'une expérience personnelle. Je tiens à remercier Anthony pour son aide pour la configuration d'IPtables.
Un grand merci aussi au créateur du site http://christian.caleca.free.fr/, qui a été d'une grande utilité à la compréhension de divers concepts.
Contents
1 Introduction
2 Installation des cartes réseaux.
3 Configurations du réseau
4 Installation du serveur DHCP(Dynamic Host Control Protocol)
4.1 Installation des clients DHCP
4.1.1 Client Win98
4.1.2 Client indows NT4/2000/XP
4.1.3 Client Linux
5 Installation du Firewall
5.1 La table de filtrage
5.2 La table de translation d'adresses
5.3 La table Mangle
5.4 Pratique
5.5 Remarques
6 Installation du DNS (Domaine Name Server)
6.1 Le serveur Domain Name System.
6.2 Mise en place
7 Installation d'un modem standard
7.1 Modem PCMCIA
7.2 Modem externe sur port série
7.3 Vérification du modem
7.4 Configuration de la connexion vers le fournisseur d'accès
1 Introduction
Je considère tout d'abord que vous avez une distribtion linux installée sur votre machine. Pour ma part, tout l'article est basé sur une Debian Woody, installée sur un pentium 133, 40Mo de Ram et 1.2Go de disque dur.
J'ai pas d'interface graphique et tout se fera avec VI et le mode console.
Je considère aussi que vous savez installer (physiquement) une carte réseau dans votre machine.
Le but ultime de cet article est de présenter l'installation d'une passerelle internet sous linux, qui comprend un serveur DHCP, une DNS pour votre sous-réseau local, et un firewall.
Remarque : Les adresses IP sont fantaisistes afin d'éviter tout problèmes avec certains petits malins.
2 Installation des cartes réseaux.
Comme la manip s'est effectuée sur du matériel de récupération, et que la machine ne servira que de passerelle, l'installation et la configuration des carte réseau fut un peu plus longue.
Il s'agit en effet de carte réseau ISA, non PNP, compatible NE2000. De plus elles sont quasiment identiques.
À l'aide de l'utilitaire modconf, installez les modules correspondants à vos carte réseau.
Il se peut aussi que votre carte réseua soit déjà gérée dans le noyau; pour vérifier cela, rien de tel qu'un petit dmesg | grep eth0 devrai faire l'affaire.
Pour des information plus complète je vous renvoie sur le site de léalinux http://lea-linux.org/reseau/gateway.php3
Si comme moi, les cartes réseaux ne sont pas détectées automatiquement par les modules, il faut passer en paramètres l'adresse d'E/S et l'irq pour chaque carte réseau, soit par l'intermédiaire de modconf, soit directement par les fichier /etc/modules et /etc/modules.conf.
Si vous n'avez pas la documentation des cartes (parfois la configuration se trouve écrite sur la carte), il faudra essayer les différentes conbinaisons irq adresse E/S, ou encore tester les cartes sur une machines windows qui vous donnera les précieuses informations.
Il reste encore le bon vieux pnpdump livré avec isapnp, mais il n'a pas été d'un grand secours pour moi (carte non PNP).
voici donc les fichiers /etc/modules et /etc/modules.conf :
yann@pport:/etc$ more modules
# /etc/modules: kernel modules to load at boot time.
#
# This file should contain the names of kernel modules that are
# to be loaded at boot time, one per line. Comments begin with
# a "#", and everything on the line after them are ignored.
ne
[snip]
### update-modules: start processing /etc/modutils/ne
options ne io=0x320,0x300 irq=10,5
[snip]
Un petit update-modules ou un redémarrage pour voir si tout cela fonctionne. Au final vous devriez avoir cela :
yann@pport:/etc$ dmesg | grep eth
NE*000 ethercard probe at 0x320: 00 00 b4 3f ff 92
eth0: NE2000 found at 0x320, using IRQ 10.
NE*000 ethercard probe at 0x300: 00 40 05 54 d2 bd
eth1: NE2000 found at 0x300, using IRQ 5.
yann@pport:/etc$
Nous deux cartes réseaux sont maintenant reconnues. Il nous reste à les configurer.
3 Configurations du réseau
Dans mon exemple, ma machine possède un adresse IP fixe dans le réseau de l'université, cette machine servira de passerelle pour un sous réseau local à mon bureau (1 machine pour le moment). Le réseau de la Fac arrivera sur l'interface ETH0 et le réseau local sera connecté à l'interface ETH1.
Pour le réseau local, nous choisirons un réseau de classe C en 192.168.1.0.
L'adresse de la passerelle dans ce réseau sera 192.168.1.254.
tout ceci nous donne le fichier /etc/network/interfaces suivant :
yann@pport:/etc$ more /etc/network/interfaces
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
# The loopback interface
auto lo
iface lo inet loopback
# The first network card - this entry was created during the Debian installation
# (network, broadcast and gateway are optional)
#reseau fac
auto eth0
iface eth0 inet static
address 160.60.2.101
netmask 255.255.255.0
network 160.60.2.0
broadcast 160.60.2.255
gateway 160.60.2.254
#reseau local
auto eth1
iface eth1 inet static
address 192.168.1.254
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
yann@pport:/etc$
Le fichier /etc/hosts :
yann@pport:/etc$ more /etc/hosts
127.0.0.1 localhost
160.60.2.153 pport.lasc.sciences.univ-metz.fr pport
# The following lines are desirable for IPv6 capable hosts
# (added automatically by netbase upgrade)
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
yann@pport:/etc$
et le fichier /etc/resolv.conf qui contient l'adresse du DNS de la fac.
yann@pport:/etc$ more /etc/resolv.conf
search lasc.sciences.univ-metz.fr
nameserver
yann@pport:/etc$
Il ne reste plus qu'a faire un /etc/init.d/networking restart pour redémarrer le réseau avec ces nouvelles configurations. Pour vérifier que les interfaces sont bien actives :
yann@pport:/etc$ /sbin/ifconfig
eth0 Lien encap:Ethernet HWaddr 00:00:B4:3F:FF:92
inet adr:160.60.2.153 Bcast:160.60.2.255 Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7712 errors:0 dropped:0 overruns:0 frame:0
TX packets:584 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:100
RX bytes:893247 (872.3 KiB) TX bytes:79661 (77.7 KiB)
Interruption:10 Adresse de base:0x320
eth1 Lien encap:Ethernet HWaddr 00:40:05:54:D2:BD
inet adr:192.168.1.254 Bcast:192.168.1.255 Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:100
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interruption:5 Adresse de base:0x300
lo Lien encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:22 errors:0 dropped:0 overruns:0 frame:0
TX packets:22 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:1925 (1.8 KiB) TX bytes:1925 (1.8 KiB)
yann@pport:/etc$
4 Installation du serveur DHCP(Dynamic Host Control Protocol)
d'après http://christian.caleca.free.fr/.
Ce protocole permet aux administrateurs de réseaux TCP/IP de configurer les postes clients de façon automatique. Il a été utilisé par les fournisseurs d'accès à l'Internet par le câble, mais a été abandonné au profit d'une connexion point à point type PPP, comme pour l'ADSL.
DHCP reste cependant un protocole de configuration de clients extrêmement pratique sur un réseau local Ethernet.
Bien que dans la plupart des cas, DHCP soit un luxe sur un réseau domestique, il peut tout de même y avoir plusieurs raisons pour vous pousser à l'utiliser :
- Vous avez des portables que vous connectez sur divers réseaux, typiquement chez vous et sur votre lieu de travail (si votre administrateur vous laisse faire, c'est qu'il est bien confiant :-) ),
- vous organisez chez vous des "Lan parties" avec les machines de vos collègues,
- votre réseau local contient plusieurs dizaines de machines (vous avez une famille nombreuse, peut-être),
- vous aimez bien vous compliquer la vie à bricoler avec votre Linux,
- vous aimez le luxe, tout simplement.
Il faut tout d'abord installer un serveur DHCP sur votre machine. Je vous conseille le paquet dhcp3 de la distribution debian. Il n'est pas conseillé d'installer le client dhcp sur la machine serveur. Pour cela vous pouvez passer par dselect ou encore un bon vieux apt-get install dhcp3-server.
dans la cas de la configuration sous mandrake, je vous renvoie à la page http://christian.caleca.free.fr/dhcp/serveur_dhcp.htm.
Il faut ensuite configurer le serveur DHCP. Cela passe par le fichier de configuration /etc/dhcp3/dhcp.conf
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
#
# option definitions common to all supported networks...
# Durée de vie du bail
default-lease-time 86400;
max-lease-time 86400;
# Les options que l'on va refiler aux clients
option domain-name "ecole-belan.org";
option domain-name-servers 192.168.1.254;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
# La définition du seul "sous-réseau" dont nous disposons
# Avec la plage d'IP à distribuer.
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.1 192.168.1.253;
}
Voici pour un réseau simple. Le ligne sont assez facile à comprendre. Les deux première concerne la durée de vie du bail de connexion de la machine cliente.
Ensuite viennes les options pour les clients. On retrouve entre autre le nom de domaine du sous-réseau (pour notre futur DNS) ainsi que le serveur de ce domaine qui est notre machine.
Ensuite viennent les options propres au sous-réseau.
Avant de lancer le serveur DHCP, il faut vérifier que ce dernier écoute bien sur la bonne carte réseau ses clients. Pour cela il faut se rendre dans le fichier /etc/default/dhcp3-server et posistionner la variable INTERFACES sur la bonne carte réseau. Dans notre cas, il s'agit d'ETH1.
pport:/etc# more /etc/default/dhcp3-server
# Defaults for dhcp initscript
# sourced by /etc/init.d/dhcp
# installed at /etc/default/dhcp3-server by the maintainer scripts
#
# This is a POSIX shell fragment
#
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth1"
pport:/etc#
Il ne reste plus qu'a relancer le serveur DHCP par /etc/init.d/dhcp3-server restart.
4.1 Installation des clients DHCP
4.1.1 Client Win98
On va prendre l'exemple d'une machine sous windows 98. Il faut tout d'abord dans la configuration TCP/IP, enlever tout ce qu'il y a concernant l'IP, le masque de sous réseau, DNS, passerelle et juste dire que vous voulez une configuration dynamique (DHCP). Relancez vos services réseaux, la méthode la plus simple et la plus bestiale étant le "reboot", et voilà. Une fois le système remonté, vous devez avoir hérité d'une configuration automatique.
la configuration pour notre sous réseau sera la suivante :
Figure 1: Fenêtre de winipcfg sous Win98
Figure 2: La configuration IP et WinS
Figure 3: La configuration Passerelle et DNS
4.1.2 Client indows NT4/2000/XP
La configuration se fait dans le panneau de configuration, icône "réseau", onglet "protocoles", puis "propriétés" de TCP/IP. Là, vous avez indiqué que la carte doit recevoir une adresse IP dynamiquement.
Pour une vérification, tapez dans une console, la commande ïpconfig"
Votre adresse doit être affichée. Si vous voulez tous les détails, utilisez la commande ïpconfig /all":
La commande ipconfig permet également :
- De résilier le bail: ipconfig /release
- De renouveler le bail: ipconfig /renew
C'est cette commande qui est à utiliser pour essayer de récupérer une adresse IP lorsque vous avez des problèmes.
Notes.
Les rubriques "Bail obtenu" et Ëxpiration du bail" contiennent des valeurs calculées par votre machine. Le serveur DHCP ne donne que la durée.
La commande en mode graphique "winipcfg" n'existe pas nativement sous Windows NT mais vous pouvez la récupérer dans le kit de ressources techniques (téléchargeable sur le site MS en cherchant bien :-).
N'essayez pas d'utiliser celle de Windows 95/98, les dll winsock32 utilisées ici ne sont pas compatibles.
4.1.3 Client Linux
Tiré de http://christian.caleca.free.fr/dhcp/serveur_dhcp.htm
Avec cet OS c'est beaucoup plus compliqué, parce qu'il y a beaucoup plus de configurations possibles.
La configuration utilisée dans l'exposé est la suivante :
- Un portable Compaq équipé d'une carte réseau D-LINK PCMCIA
- MANDRAKE 8.2
- Eth0 et configurée avec DHClient.
Notez que DHClient n'est pas le seul client possible. Vous pouvez parfaitement le remplacer par PUMP, DHCPXD ou par DHCPCD. Tous ces clients sont disponibles dans la distribution Mandrake, qui installe d'ailleurs DHCPCD par défaut, et non pas celui que j'utilise.
- DHCPCD semble avoir la préférence du distributeur. Je n'ai jamais rencontré de problèmes avec, mais je ne l'utilise normalement pas pour la raison suivante: Son paramétrage ne se fait que par la ligne de commande, ce qui oblige à aller modifier des scripts pas toujours faciles à trouver si l'on veut par exemple utiliser son propre DNS à la place de celui proposé dans le bail.
- PUMP Fonctionne également sans problèmes, il dispose d'un fichier de configuration /etc/pump.conf dans le quel on peut par exemple spécifier très simplement que l'on ne veut pas modifier le paramétrage du DNS avec l'information récupérée par DHCP. (Le ou les DNS sont inscrits dans le fichier /etc/resolv.conf).
- Je n'ai pas vraiment étudié DHCPXD qui fonctionne lui aussi sans difficultés. Il dispose d'un répertoire /etc/dhcpxd dans lequel vous trouverez quelques fichiers qui vous donneront toutes les indications sur le bail en cours.
- DHCLIENT a ma préférence. Il est écrit par ISC (les auteurs de BIND le fameux DNS et DHCPD lque nous utilisons ici, c'est dire qu'ils savent de quoi ils parlent :). Ce client cumule à mon sens tous les avantages :
- Un fichier de configuration /etc/dhclient.conf, sans doute encore plus performant que celui de PUMP. Notez que ce fichier n'existe pas dans la distribution Mandrake, il vous faudra éventuellement le créer si vous ne voulez pas vous contenter du fonctionnement par défaut.
- Des scripts optionnels exécutés automatiquement avant l'obtention du bail et après l'obtention du bail, avec à disposition des variables contenant toutes les informations recueillies par le client auprès du serveur. Très pratique par exemple pour vous envoyer par mail l'adresse courante de votre machine si celle-ci change; dans le cas par exemple où vous avez besoin de vous y connecter à distance par telnet ou ssh.
- Il tient un historique des baux obtenus dans le fichier /var/lib/dhcp/dhclient.leases
Son seul inconvénient est sa richesse. Il n'est pas le plus facile à mettre en oeuvre.
Dans tous les cas vous devriez avoir un fichier /etc/network/interfaces de ce style :
yann@yoda:~$ more /etc/network/interfaces
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
# The loopback interface
auto lo
iface lo inet loopback
# The first network card - this entry was created during the Debian installation
# (network, broadcast and gateway are optional)
auto eth0
iface eth0 inet dhcp
yann@yoda:~$
5 Installation du Firewall
Pour en savoir beaucoup plus sur Netfilter, le NAT, le filtrage ... je vous renvoie à l'adresse suivante http://christian.caleca.free.fr/netfilter/.
Dans cette partie je vais être assez bref et juste donner les commandes et les choses à ne pas oublier afin de faire fonctionner votre passerelle et de protéger un peu votre réseau local par quelques regles. Pour cette partie je remercie Anthony qui m'a fournit un script permettant de mettre en uvre facilement ces notions.
Dans la suite nous utiliserons IPTables. IPtables est en quelques sortes l'interface utilisateur de Netfilter. Dans sa partie "visible", ça ressemble à IPchains, mais ici, ce n'est qu'une interface de commande de Netfilter. La syntaxe est plus complète et plus rigoureuse.
Nous allons mettre en uvre 3 tables.
5.1 La table de filtrage
C'est la table qui va permettre de filtrer tous les paquets qui entrent et sortent de notre machine. Il n'y a ici aucune modification de ces paquets, ils seront comparés à des critères définis dans la table Filter. Dans notre cas, il peut se passer deux choses différentes :
- Un paquet qui entre est destiné à un processus de l'hôte (serveur HTTP, FTP...).
- Un paquet qui entre est destiné à un autre réseau, c'est alors une fonction de routage.
5.2 La table de translation d'adresses
La traduction d'adresse (NAT comme Network Address Translation) est à prendre ici au sens le plus large, puisque cette table permet non seulement de faire de la translation stricte d'adresses, mais également de la translation de ports et un mélange des deux, dont le masquage d'adresse est une forme particulière.
Mais qu'est-ce que c'est exactement ?
Dans un datagramme, en plus des données, on y trouve également quelques informations concernant le protocole utilisé et des identificateurs de l'émetteur et du destinataire. Ce sont ces identificateurs qui nous intéressent :
- L'adresse IP du destinataire.
- Le port du service utilisé sur le destinataire.
Ces informations constituent une ßocket", elles sont indispensables pour arriver à joindre le bon service sur le bon serveur, par exemple le service HTTP du serveur www.wanadoo.fr.
- L'adresse IP de l'émetteur.
- Le port de réponse.
Ces informations constituent une autre ßocket", elles sont indispensables pour que l'émetteur d'un paquet puisse espérer recevoir une réponse.
Avec les fonctions NAT de Netfilter, Lorsqu'un paquet transite par notre passerelle, nous allons pouvoir "bricoler" ces sockets absolument comme on veut. Par exemple, nous pourrons changer l'adresse de l'émetteur ou le port de l'émetteur ou les deux. Nous pouvons aussi changer l'adresse du destinataires, ou le port du destinataire, ou les deux.
Mais à quoi ça sert ?
Ca sert à une quasi infinité de choses. Parmi les plus intéressantes, citons :
- Le masquage d'adresse : C'est une fonction fondamentale lorsque l'on souhaite connecter un réseau privé à l'Internet lorsque l'on ne dispose que d'une seule IP valide sur le Net, même si celle-ci est dynamique, ce qui est le cas qui nous intéresse le plus. Les clients sont sur le réseau privé et les serveurs sont sur le Net. C'est une forme particulière de SNAT (Source NAT)
C'est ce que sont capables de faire tous les routeurs SOHO (Small Office, Home Office) qui permettent de relier un petit réseau local à l'Internet, lorsque l'on ne dispose que d'un accès RTC, NUMERIS, Câble, ADSL... Un simple (très) vieux PC (un 486 suffit) équipé d'un Linux 2.4.x permet de le faire aussi bien sinon mieux.
- Le NAT de destination : Ici, c'est pour résoudre les problèmes qui apparaissent dans l'autre sens. Les clients sont sur le Net et les serveurs sont sur le réseau privé.
Imaginons que nous n'ayons qu'une seule IP valide sur le Net et que nous voulions tout de même offrir des services tels que HTTP, FTP, SMTP, POP et peut-être d'autres encore. Comment faire ? La réponse triviale consiste à dire: "J'ai droit à une seule IP, donc je place tous ces serveurs sur la même machine, celle qui a la seule IP à laquelle j'ai droit."
5.3 La table Mangle
Nous n'avons pas parlé de la table Mangle. Cette table permet d'effectuer un marquage des paquets.
Nous pouvions, avec les premières versions de Netfilter, marquer les paquets en PREROUTING ou en OUTPUT pour les sorties d'un processus local (en rouge sur l'illustration). Notez que depuis la version 2.4.18 du noyau, le système a été étendu à tous les "hooks" (en bleu sur l'illustration).
L'intérêt de ce marquage, qui n'est visible que dans la pile de la machine, est de pouvoir être relu par d'autres fonctions comme IPROUTE ou la gestion de la qualité de service (QoS).
Ainsi, nous pouvons disposer de toute la puissance de Netfilter pour la sélection de divers types de paquets, et utiliser ensuite ce marquage pour le routage ou les priorités de passage.
Donner ici des exemples précis nous mènerait trop loin parce qu'il faudrait étudier en détail IProute2 et les fonctions de QoS des noyaux 2.4 et la vie est courte.
Voici tout de même un cas de figure qui serait gérable par ce système :
- Nous disposons de deux liens sur le Net :
- L'un, très rapide et très fiable, mais très cher et facturé au volume de données,
- L'autre, classique, comme une connexion ADSL, avec les limites que nous leurs connaissons.
- Nous souhaitons exploiter au mieux ces deux connexions, par exemple de la façon suivante :
- Nous devons mettre à jour le contenu d'un serveur distant. Il faut le faire de façon rapide et sûre. Il n'y a pas forcément beaucoup de données à transmettre, mais il est impératif que ce soit fait le plus rapidement et le plus sûrement possible.
- Nous devons assurer un accès au Net pour les utilisateurs du réseau local, mais avec une qualité de service plus faible.
Avec le marquage de paquets associé à IProute, nous pourrons arriver à faire passer les mises à jour du serveur sur le lien rapide mais cher et tout le reste sur le lien ADSL.
- Nous disposons d'une connexion ADSL et il arrive très souvent que certains utilisateurs fassent du téléchargement FTP sur des serveurs rapides. Chaque fois qu'un téléchargement est lancé, toute la bande passante Download est utilisée et les autres utilisateurs ne peuvent plus surfer dans de bonnes conditions.
- En exploitant le marquage de paquets associé aux fonctions de QoS, nous pourrons restreindre la bande passante exploitée par le download FTP afin de laisser un peu d'espace pour les autres activités.
- Ceci peut aussi être appliqué aux transferts "peer-to-peer", qui ont l'inconvénient de monopoliser le peu de bande passante upload dont on dispose sur des connexions asymétriques comme ADSL ou câble.
5.4 Pratique
Le script est le suivant :
#!/bin/sh
IPT="/sbin/iptables"
MODPROBE="/sbin/modprobe"
IFACE_EXT="eth0"
#"ppp0"
IFACE_INT="eth1"
PRIVATE_ADDR="192.168.1.254"
PRIVATE_NET="192.168.1.0/255.255.255.0"
test -f $IPT || exit 0
test -f $MODPROBE || exit 0
case "$1" in
start)
echo -n "Loading firwall's rules: "
############################
# FLUSH TABLES
############################
$IPT -t filter -F
$IPT -t nat -F
$IPT -t mangle -F
############################
# MASQUERADING
############################
$IPT -t nat -A POSTROUTING -s $PRIVATE_NET -j MASQUERADE
############################
# FORWARDING RULES
############################
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # ESTABLISHED
#$IPT -A FORWARD -p UDP -i $IFACE_INT --dport 53 -j ACCEPT # DOMAIN
#$IPT -A FORWARD -p TCP -i $IFACE_INT --dport 21 -j ACCEPT # FTP
#$IPT -A FORWARD -p TCP -i $IFACE_INT --dport 22 -j ACCEPT # SSH
#$IPT -A FORWARD -p TCP -i $IFACE_INT --dport 25 -j ACCEPT # SMTP
#$IPT -A FORWARD -p TCP -i $IFACE_INT --dport 80 -j ACCEPT # HTTP
#$IPT -A FORWARD -p TCP -i $IFACE_INT --dport 110 -j ACCEPT # POP3
#$IPT -A FORWARD -p TCP -i $IFACE_INT --dport 443 -j ACCEPT # HTTPS
$IPT -A FORWARD -p TCP -i $IFACE_EXT --dport 3389 -j ACCEPT # REMOTE DESKTOP
$IPT -A FORWARD -i $IFACE_INT -s $PRIVATE_NET -j ACCEPT
$IPT -A FORWARD -j LOG --log-prefix "Forwarding table : "
$IPT -A FORWARD -j DROP
############################
# INPUT LOOPBACK
############################
$IPT -A INPUT -i lo -j ACCEPT
############################
# INPUT INTRANET
############################
$IPT -A INPUT -p UDP -i $IFACE_INT --dport 53 -j ACCEPT # DNS
$IPT -A INPUT -p UDP -i $IFACE_INT --dport 123 -j ACCEPT # NTP
$IPT -A INPUT -p UDP -i $IFACE_INT --dport 137 -j ACCEPT # NETBIOS-NS
$IPT -A INPUT -p UDP -i $IFACE_INT --dport 138 -j ACCEPT # NETBIOS-DGM
$IPT -A INPUT -p TCP -i $IFACE_INT --dport 139 -j ACCEPT # NETBIOS-SSN
############################
# INPUT INTERNET
############################
############################
# INPUT GENERAL
############################
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # ESTABLISHED
$IPT -A INPUT -p ICMP -j ACCEPT # ICMP
$IPT -A INPUT -p TCP --dport 21 -j ACCEPT # FTP
$IPT -A INPUT -p TCP --dport 22 -j ACCEPT # SSH
$IPT -A INPUT -p TCP --dport 80 -j ACCEPT # HTTP
$IPT -A INPUT -p TCP --dport 113 -j ACCEPT # AUTH
$IPT -A INPUT -p TCP --dport 443 -j ACCEPT # HTTPS
$IPT -A INPUT -p TCP --dport 3000 -j ACCEPT # NTOP
#$IPT -A INPUT -i $IFACE_EXT -j LOG --log-prefix "Input ppp0 : " # LOG..
#$IPT -A INPUT -i $IFACE_INT -j LOG --log-prefix "Input eth0 : " # LOG..
$IPT -A INPUT -j DROP # DENY ALL
echo "Done."
;;
stop)
echo -n "Flushing firwall's rules: "
###########################
# FLUSH TABLES
###########################
$IPT -t filter -F
$IPT -t nat -F
$IPT -t mangle -F
echo "Done."
;;
restart)
/etc/init.d/firewall stop
/etc/init.d/firewall start
;;
status)
# List tables
echo
echo "---------- FILTER TABLE -----------"
echo
$IPT -t filter -L -v
echo
echo "---------- NAT TABLE -----------"
echo
$IPT -t nat -L -v
echo
;;
*)
echo "Usage: /etc/init.d/firewall {start|stop|status}"
exit 1
;;
esac
exit 0
Il s'agit d'un script qui permet de modifier facilement les règles mises dans les différentes tables. Il est facilement compréhensible et très configurable.
Je rajouterai une petite procédure afin que le firewall soit activé automatiquement sous ma Debian.
Avant toute chose, il ne faut pas oublier de d'autoriser l'ip_forward entre les deux cartes réseaux. Pour cela il suffit d'éditer le fichier /etc/sysctl.conf :
pport:/etc# more /etc/sysctl.conf
#
# /etc/sysctl.conf - Configuration file for setting system variables
# See sysctl.conf (5) for information.
#
#kernel.domainname = example.com
#net/ipv4/icmp_echo_ignore_broadcasts=1
#config pour faire du routage
net/ipv4/ip_forward=1
pport:/etc#
Ensuite voici la marche à suivre, pour avoir un firewall qui fonctionne au démarrage :
- charger les règles en mémoire à l'aide de notre script firewall : firewall start
- sauver ces tables dans le fichier active à l'aide le commande /etc/init.d/iptables save active
- effacer les tables à l'aide de firewall clear
- sauver ces tables dans le fichier inactive à l'aide le commande /etc/init.d/iptables save inactive
- finalement faire un dpkg-reconfigure iptables et choisir de le lancer au démarrage.
Afin de voir les portes que vous avez ouverts, la commande netstat est très interessante :
- netstat -an pour voir les ports,
Pour voir l'états des tables, il suffit de lancer iptables -L -v.
5.5 Remarques
Si vous avez configurer votre firewall pour que vos machines du réseau local puissent faire du ftp, il est nécessaire d'ajouter des modules au noyau. En effet lors d'une connexion ftp, les commandes sont envoyées sur un port, mais les réponses arrivent sur un autre port (qui n'est pas autorisé par votre firewall). Il faut donc ajouter les modules ip_nat_ftp et ip_conntrack_ftp. Ce qui donne :
yann@pport:/etc$ more modules
# /etc/modules: kernel modules to load at boot time.
#
# This file should contain the names of kernel modules that are
# to be loaded at boot time, one per line. Comments begin with
# a "#", and everything on the line after them are ignored.
ne
ip_nat_ftp
ip_conntrack_ftp
6 Installation du DNS (Domaine Name Server)
6.1 Le serveur Domain Name System.
Votre fournisseur d'accès met à votre disposition un outil pour traduire les noms FQDN en adresses IP. Chez Wanadoo, les DNS fournis aux clients sont généralement 193.252.19.3 et 193.252.19.4. Ce n'est pas une règle absolue, principalement pour les câblés.
Ce Serveur DNS travaille de manière "récursive" . Autrement dit, vous n'avez pas de questions à vous poser (sauf lorsqu'il ne fonctionne plus). Vous (ou votre logiciel) demandez de traduire un nom et vous attendez sagement la réponse, il s'occupe de tout. Le mécanisme est complètement transparent. Il est mis en route, par exemple, lorsque vous tapez quelque chose comme http://www.google.fr dans la barre d'adresse de votre navigateur.
Comme l'adresse de votre DNS vous est donnée avec le bail que vous accorde le DHCP (ou PPP), vous n'avez généralement même pas besoin de connaître son adresse IP.
Où les choses se compliquent un peu, c'est si vous avez par exemple réalisé la passerelle Linux entre le modem et votre (ou vos) ordinateur(s) personnel(s). Dans ce cas, la machine Linux est bien documentée sur l'adresse du DNS, mais pas votre ou vos postes qui sont, eux, configurés en "dur". Ils ont donc besoin de connaître une adresse de DNS pour pouvoir fonctionner.
Deux solutions sont alors possibles :
- Vous allez sur votre machine Linux, un petit coup de "nslookup" ou de "host -v" vous indiquera l'adresse du DNS, il ne vous restera plus qu'à la fournir à votre ou à vos postes de travail du réseau privé.
- Vous prenez votre courage à deux mains, vous lisez attentivement tout ce qui est dit dans ce chapitre et vous construisez sur votre passerelle Linux votre propre serveur DNS :-)
6.2 Mise en place
Il est bien évident que si votre sous-réseau ne comporte que quelques machines, un serveur DNS est un peu comme l'utilisation d'un char pour stopper une mouche. Mais bon, c'est surtout pour la beauté du geste :-).
Il est donc dans ce cas plus simple de passer par le fichier /etc/hosts
127.0.0.1 localhost
160.60.2.153 pport.lasc.sciences.univ-metz.fr pport
#mettre les hosts sous la forme suivante si l'on utilise pas
#de DNS sur la machine passerelle. Il faut ensuite faire de même
#sur les machines clientes (/etc/hosts et c:\windows\hosts)
192.168.1.2 pc1.ecole-belan.org pc1
192.168.1.3 pc2.ecole-belan.org pc2
192.168.1.4 pc3.ecole-belan.org pc3
192.168.1.5 pc4.ecole-belan.org pc4
192.168.1.6 pc5.ecole-belan.org pc5
192.168.1.7 pc6.ecole-belan.org pc6
192.168.1.8 pc7.ecole-belan.org pc7
192.168.1.9 pc8.ecole-belan.org pc8
# The following lines are desirable for IPv6 capable hosts
# (added automatically by netbase upgrade)
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
Allons y pour le DNS. Il faut tout d'abord installer un serveur de Noms. Je vous propose bind9 en standard sur la Debian. Toujours le même apt-get install bind9 pour l'installation.
Il faut ensuite configurer notre DNS par les fichiers qui se trouvent dans le répertoire /etc/bind.
Notre réseau local sera composé de quelques machine dont le nom de domaine sera ecole-belan.org. La passerelle vers internet et le serveur DNS sera notre machine actuelle. Il convient alors de modifier le fichier /etc/resolv.conf afin de ne plus pointer vers un DNS externe, mais sur la machine locale, c'est à dire 127.0.0.1. On fixe par la même occasion le domaine ecole-belan.org. Ceci nous donne :
Fichier /etc/resolv.conf
search ecole-belan.org
nameserver 127.0.0.1
Il convient ensuite de configurer le fichier /etc/bind/named.conf, qui va permettre de définir le domaine de notre nouveau réseau. Il est assez facile de comprendre les différentes parties de ce fichier.
Ce fichier est le premier que BIND va lire. Nous y trouvons déjà des informations intéressantes...
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you might need to uncomment the query-source
// directive below. Previous versions of BIND always asked
// questions using port 53, but BIND 8.1 and later use an unprivileged
// port by default.
// query-source address * port 53;
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
/*
allow-transfer {
192.168.1.0/24;
};
allow-query {
192.168.1.0/24;
};
*/
forwarders {
197.230.169.1; //dns de la fac
};
// forwarders {
// 0.0.0.0;
// };
auth-nxdomain no; # conform to RFC1035
};
Au paragraphe öptions", on trouve:
- L'emplacement des autres fichiers de configuration. Ici, ce sera le répertoire /var/cache/bind.
- Notify no indique que ce serveur travaillera pour son compte. Cette option est utile lorsque plusieurs DNS doivent se synchroniser entre eux. Ce ne sera pas notre cas.
- La variable forwarder qui permet de transferer les demande DNS vers le DNS de la fac
- Les variables allow-transfer et allow-query qui permettent de sécuriser votre domaine en autorisant qu'un plage de machine à se connecter au DNS
zone "." {
type hint;
file "/etc/bind/db.root";
};
La zone "." est fondamentale pour ce que l'on veut réaliser. C'est elle qui permettra à BIND d'interroger les root-servers. Le fichier root.cache dont on a déjà parlé contient les adresses de ces root servers. Il doit être périodiquement mis à jour, nous verrons çà plus loin.
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
Cette zone est une zone de recherche inverse pour les adresses de type 127.0.0. Ces adresses sont utilisées exclusivement en interne par la pile TCP/IP et correspondent à l'hôte "localhost"
Maintenant nous allons ajouter un zone d'autorité. C'est un domaine ou un sous-domaine que le DNS sait traiter avec sa propre base de données. Nous pouvons en créer une pour résoudre les noms des hôtes de notre réseau privé. Ceci ne présente, encore une fois, pas un intérêt capital mais tant qu'on y est, pourquoi nous en priver? (surtout si vous montez par exemple un petit serveur apache pour réaliser votre intranet :-)
Préparation du travail.
Vous avez en tête, bien entendu, l'adresse de chacun de vos postes privés ainsi que leur nom "NetBIOS", si ces postes sont sous Windows. Par ailleurs, vous connaissez également l'adresse et le nom de votre passerelle Linux.
Fixons les idées par un exemple:
Nous allons nous choisir un joli nom de domaine : ecole-belan.org
zone "ecole-belan.org" {
notify no;
type master;
file "/etc/bind/db.ecole-belan.org";
};
zone "1.168.192.in-addr.arpa" {
notify no;
type master;
file "/etc/bind/db.192.168.1";
};
Ces deux zones ont été ajoutées, ce qui veut dire que l'on va trouver deux nouveaux fichiers dans le répertoire /etc/bind/ :
- db.ecole-belan.org pour la résolution des noms
- db.192.168.1 pour la résolution inverse
Voici donc le fichier final :
Fichier /etc/bind/named.conf
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you might need to uncomment the query-source
// directive below. Previous versions of BIND always asked
// questions using port 53, but BIND 8.1 and later use an unprivileged
// port by default.
// query-source address * port 53;
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
/*
allow-transfer {
192.168.1.0/24;
};
allow-query {
192.168.1.0/24;
};
*/
forwarders {
197.230.169.1;
};
// forwarders {
// 0.0.0.0;
// };
auth-nxdomain no; # conform to RFC1035
};
// prime the server with knowledge of the root servers
zone "." {
type hint;
file "/etc/bind/db.root";
};
// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
zone "0.in-addr.arpa" {
type master;
file "/etc/bind/db.0";
};
zone "255.in-addr.arpa" {
type master;
file "/etc/bind/db.255";
};
// add entries for other zones below here
zone "ecole-belan.org" {
notify no;
type master;
file "/etc/bind/db.ecole-belan.org";
};
zone "1.168.192.in-addr.arpa" {
notify no;
type master;
file "/etc/bind/db.192.168.1";
};
Fichier /etc/bind/db.O
;
; BIND reverse data file for broadcast zone
;
$TTL 604800
@ IN SOA localhost. root.localhost. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
Fichier /etc/bind/db.127
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA localhost. root.localhost. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
1.0.0 IN PTR localhost.
Le signifie qu'il est fait référence au serveur lui-même.
Notez le Start Of Authority (SOA) et le CNAME www de server1
Fichier /etc/bind/db.192.168.1
$TTL 86400
@ IN SOA pc.ecole-belan.org. root.ecole-belan.org. (
2000042702; serial
0; refresh
0; retry
0; expire
0; default TTL
)
@ IN NS pc.ecole-belan.org.
254 IN PTR pc.ecole-belan.org.
1 IN PTR pc1.ecole-belan.org.
2 IN PTR pc2.ecole-belan.org.
3 IN PTR pc3.ecole-belan.org.
4 IN PTR pc4.ecole-belan.org.
5 IN PTR pc5.ecole-belan.org.
6 IN PTR pc6.ecole-belan.org.
7 IN PTR pc7.ecole-belan.org.
8 IN PTR pc8.ecole-belan.org.
Pas grand chose à dire, de plus, si ce n'est que seul le dernier octet de l'adresse est signalé, c'est normal, nous sommes dans une classe C, les trois autres octets sont ceux du réseau.
Fichier /etc/bind/db.ecole-belan.org
$TTL 86400
@ IN SOA pc.ecole-belan.org. root.ecole-belan.org.(
2000042701; serial
3600; refresh
900; retry
1209600; expire
43200; default TTL
)
@ IN NS pc.ecole-belan.org
pc IN A 192.168.1.254
pc IN HINFO "Pentium 133Mhz" "Debian Woody 2.4.18fb"
pc1 IN A 192.168.1.1
pc2 IN A 192.168.1.2
pc3 IN A 192.168.1.3
pc4 IN A 192.168.1.4
pc5 IN A 192.168.1.5
pc6 IN A 192.168.1.6
pc7 IN A 192.168.1.7
pc8 IN A 192.168.1.8
Fichier /etc/bind/db.local
$TTL 86400
@ IN SOA pc.ecole-belan.org. root.ecole-belan.org.(
2000042701; serial
3600; refresh
900; retry
1209600; expire
43200; default TTL
)
@ IN NS pc.ecole-belan.org
pc IN A 192.168.1.254
pc IN HINFO "Pentium 133Mhz" "Debian Woody 2.4.18fb"
pc1 IN A 192.168.1.1
pc2 IN A 192.168.1.2
pc3 IN A 192.168.1.3
pc4 IN A 192.168.1.4
pc5 IN A 192.168.1.5
pc6 IN A 192.168.1.6
pc7 IN A 192.168.1.7
pc8 IN A 192.168.1.8
Fichier /etc/bind/db.root
; This file holds the information on root name servers needed to
; initialize cache of Internet domain name servers
; (e.g. reference this file in the "cache . <file>"
; configuration file of BIND domain name servers).
;
; This file is made available by InterNIC registration services
; under anonymous FTP as
; file /domain/named.root
; on server FTP.RS.INTERNIC.NET
; -OR- under Gopher at RS.INTERNIC.NET
; under menu InterNIC Registration Services (NSI)
; submenu InterNIC Registration Archives
; file named.root
;
; last update: Aug 22, 1997
; related version of root zone: 1997082200
;
;
; formerly NS.INTERNIC.NET
;
. 3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
;
; formerly NS1.ISI.EDU
;
. 3600000 NS B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107
;
; formerly C.PSI.NET
;
. 3600000 NS C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12
;
; formerly TERP.UMD.EDU
;
. 3600000 NS D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90
;
; formerly NS.NASA.GOV
;
. 3600000 NS E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10
;
; formerly NS.ISC.ORG
;
. 3600000 NS F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241
;
; formerly NS.NIC.DDN.MIL
;
. 3600000 NS G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4
;
; formerly AOS.ARL.ARMY.MIL
;
. 3600000 NS H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53
;
; formerly NIC.NORDU.NET
;
. 3600000 NS I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17
;
; temporarily housed at NSI (InterNIC)
;
. 3600000 NS J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET. 3600000 A 198.41.0.10
;
; housed in LINX, operated by RIPE NCC
;
. 3600000 NS K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129
;
; temporarily housed at ISI (IANA)
;
. 3600000 NS L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12
;
; housed in Japan, operated by WIDE
;
. 3600000 NS M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
; End of File
Il faur alors relancer le serveur de noms par :/etc/init.d/bind9 restart.
Maintenant il est possible de tester le bon fonctionnement du réseau. A partir d'un client il suffit de faire un ping pc pour essayer de communiquer avec le serveur. Si le pc répond c'est que tout fonctionne bien.
7 Installation d'un modem standard
Cette section concerne l'installation d'un modem standard en vue de faire passer notre passerelle et DNS en une machine de partage de connexion internet dans le cadre d'une utilisation personnelle ou un petit réseau de machine.
Comme toujours, le matérielle étant de récupération, il séagit d'un modem 28800 Kbits branché sur le port série de la machine.
Nous allon utiliser le paquet pppconfig pour la configuration de notre modem et de la connection.
La suite est tirée de http://www.via.ecp.fr/~alexis/formation-linux/internet.html
Cette section explique comment se connecter à Internet avec un modem classique branché sur une ligne téléphonique classique. La procédure ci-dessous doit marcher sans problèmes avec un modem externe branché sur port série, ou avec un modem PCMCIA ; par contre, pour les modems PCI ou les modems intégrés, la procédure est différente et dépend de chaque modem...
7.1 Modem PCMCIA
Vérifiez que le package pcmcia-cs est bien installé (si vous avez bien suivi mes consignes pour la procédure d'installation, il doit l'être). Avec la commande suivante, il installe le package s'il n'est pas installé, et, dans le cas contraire, t'informe qu'il est déjà installé.
# apt-get install pcmcia-cs
7.2 Modem externe sur port série
Regardez sur quel port série le modem est branché :
- s'il est connecté sur le port série COM1, le device correspondant sera /dev/ttyS0 ;
- s'il est connecté sur le port série COM2, le device correspondant sera /dev/ttyS1.
Créez un lien symbolique /dev/modem pointant vers le bon périphérique ; par exemple, s'il est branché sur le port COM1, tapez :
# cd /dev
# ln -s ttyS0 modem
7.3 Vérification du modem
Si c'est un modem PCMCIA, insérez le carte dans votre portable ; si c'est un modem externe, allumez-le. Vous allez maintenant vérifier que le système a bien reconnu le modem :
# setserial /dev/modem
/dev/modem, UART: 16550A, Port: 0x03e8, IRQ: 0
- Si la ligne qui s'affiche contient UART: 16550A, alors cela signifie que le modem est bien reconnu.
- Si, par contre, la ligne qui s'affiche contient UART: unknown, alors cela signifie que le modem n'est pas reconnu (et là je ne sais pas trop ce qu'on peut faire...).
7.4 Configuration de la connexion vers le fournisseur d'accès
Le plus simple pour configurer la connexion vers votre fournisseur d'accès est d'utiliser l'assistant qui est installé par défaut :
# pppconfig
Sélectionnez Create - Create a connection et répondez aux questions successives :
- Provider Name : rentrez un nom pour cette connexion (par exemple le nom de votre fournisseur d'accès Internet) ;
- Configure Nameservers (DNS) : sélectionnez Use dynamic DNS pour obtenir automatiquement les adresses des serveurs DNS de votre fournisseur d'accès à chaque connexion ;
- Authentication Method : sélectionnez PAP Peer Authentication Protocol [FIXME : je ne sais pas dans quel cas il faut sélectionner Chat] ;
- User Name : tapez le login qui vous a été attribué par votre fournisseur d'accès (tapez-le entre guillements si le login contient des caractères de ponctuation) ;
- Password : tapez le mot de passe qui vous a été donné par votre fournisseur d'accès (tapez-le entre guillements si le mot de passe contient des caractères de ponctuation) ;
- Speed : laissez la valeur 115200 qui est présente par défaut ;
- Pulse or Tone : si votre ligne téléphonique fonctionne à fréquences vocales (ce qui est le cas presque partout en France), sélectionnez Tone ; si votre ligne fonctionne avec les impulsions, sélectionnez Pulse ;
- Phone Number : rentrez le numéro de téléphone de votre fournisseur d'accès ;
- Choose Modem Config Method : répondez No ;
- Manually Select Modem Port : tapez /dev/modem, qui est le lien symbolique qui pointe vers le bon périphérique ;
- Properties of nom_de_la_connexion : si vous pensez avoir bien répondu à toutes les questions, sélectionnez Finished - Write files and return to main menu et OK ;
- Main Menu : sélectionnez Quit - Exit this utility.
Pour créer une deuxième connexion, changer une connexion existante ou supprimer une connexion, relancez cet assistant et laissez-vous guider par les boites de dialogues (qui ne sont malheureusement pas encore traduites).
Se connecter
Pour se connecter au fournisseur d'accès, c'est très simple :
# pon nom_de_la_connexion
où nom_de_la_connexion est le nom que vous aviez entré à la première question de l'assistant.
Vous devez normalement entendre le modem se connecter. Pour suivre l'établissement de la connexion, tapez :
# plog -f
Dès que vous voyez une ligne du genre :
Dec 27 19:42:54 alpy pppd[1825]: Script /etc/ppp/ip-up started (pid 1843)
cela signifie que la connexion est établie. Vous pouvez alors arrêter l'affichage des messages (encore appelés logs) par la combinaison de touches Ctrl-c.
Pour se déconnecter :
# poff nom_de_la_connexion
Pour permettre à un simple utilisateur de se connecter et se déconnecter, il faut le rajouter aux groupes dialout et dip ; et pour lui permettre d'utiliser la commande plog, il faut le rajouter au groupe adm :
# adduser toto dialout
# adduser toto dip
# adduser toto adm
où toto est le nom de l'utilisateur à qui vous voulez rajouter les droits. Il pourra alors lancer lui-même les commandes pon, poff et plog.
File translated from
TEX
by
TTH,
version 3.40.
On 8 Jul 2003, 08:23.