Howtos GNU/Linux .: kozaki :. Howtos GNU/Linux

Guide de Survie sous LinuxVIII - Le réseau

Mis à jour le 29/02/2008.

Linux sur une machine, c'est bien. Linux en réseau, c'est carrément top.

Installation d'une carte réseau Ethernet.

Procurez-vous une carte Ethernet compatible Linux (liste à http://www.scyld.com/network/) et installez-la (essentiellement vérifiez la présence d'un module adapté dans /lib/modules/2.x.xx) et chargez-le avec :
modprobe [module_de_la_carte] ; sinon compilez votre noyau pour y inclure le module approprié.
Rajoutez les bons paramètres dans /etc/modprobe.conf (noyau 2.6.x) ou /etc/modules.conf (2.4.x).
Activez-la par
modprobe votre_module. Vous pouvez voir le module chargé en faisant lsmod.
Pour ne plus avoir à taper cette commande, insérez dans le /etc/modprobe.conf (ou /etc/modules.conf pour les kernel 2.4.x) des lignes comme :
alias 3c509 eth0
options eth0 irq=10

coolAstuces :

  • Pour trouver le module de ma (mes) carte(s) réseau, j'utilise dmesg grep eth0 aussi bien que les messages à l'allumage de la machine.
  • Identification des interfaces réseau disponibles :
    Avant de pouvoir configurer une interface, il faut que le pilote de périphérique correspondant ait été chargé. linux-france.org explique comment le faire ainsi que :
    Comment identifier le périphérique réseau avec lspci ?
    La commande lspci (du paquet pciutils) donne la liste des périphériques reliés au bus PCI. linux-france.org donne 2 exemples caractéristiques : une première machine avec un contrôleur RNIS/ISDN et un contrôleur Ethernet puis une seconde machine avec un contrôleur Ethernet différent.
    Reste à identifier le pilote logiciel, facilement à partir du répertoire /usr/src/linux/Documentation/networking, et enfin à le charger et le valider :
    Le chargement d'un module s'effectue avec la commande modprobe et la validation du résultat avec les commandes dmesg et ifconfig. De plus, on peut vérifier la présence du pilote dans la liste des modules chargé avec la commande lsmod.

Si votre carte réseau utilise une IRQ qui ne vous convient pas, il est souvent possible de la changer avec une disquette de paramétrage sous DOS (même sur une autre machine, ces réglages étant permanents). Même problème pour choisir entre le coaxial BNC et le RJ45 sur les cartes de type Combo. Les paramètres sont enregistrés directement sur la carte et sont actifs dès l'allumage de la machine. Il faut simplement éteindre et ré-allumer l'ordinateur pour que la carte mère en tienne compte la première fois.

Si votre carte est une PCMCIA sur un portable, voyez la section consacrée aux portables.

Si votre carte réseau est USB (kawasaki), mettez :
alias eth0 kaweth

Enfin vous avez des utilitaires de diagnostic et de paramétrage de la carte réseau ici : http://www.scyld.com/diag/index.html. Entre autres, l'utilitaire mii-diag.

Configuration du réseau

Configurer Internet avec un modem RTC ou USB

Il existe plein de méthodes, allant du simple script (Aaargh !) au mode graphique.
kozaki NB, pour les possesseurs du speedtouch adsl, voyez le Howto Speedtouch & modems USB (installation de + en + simple avec les distribs modernes).

KDE propose un numéroteur appelé kppp, très simple de configuration (numéro de téléphone, DNS, serveur pop...), mais qui fournit un script par défaut qui ne fonctionne pas toujours. Il faut parfois éditer un script personnel du genre :

Expect ogin
ID votrelogin
expect word
password votremotdepasse

Dans les versions actuelles, il faut commenter (avec #) le mot lock dans /etc/ppp/options.

Sinon, Redhat propose un netcfg très simple et très efficace :

  • Onglet Names, rajoutez les IP de votre provider.
  • Onglet hosts : l'IP et le nom de votre provider
  • Onglet interfaces, add (choisissez ppp), puis le numéro de téléphone de votre provider, votre login et votre password.
  • Une fois configuré, il suffit de cliquer sur l'onglet interfaces, ligne ppp0, bouton activer.

Autre méthode pour se connecter, une fois la configuration effectuée : ifup ppp0. Se déconnecter : ifdown ppp0. Bien plus rapide que de lancer un connecteur graphique.

Pour AOL, essayez Pengaol http://www.pengaol.org/ (non valable pour AOL en ADSL).

Un peu de technique : sachez que la version 2.2 du kernel faisait appel à un module nommé ppp.o . Le 2.4 utilise deux modules : ppp_generic.o et ppp_async.o pour un modem non Numeris.

Configuration/Activation d'une carte ethernet cool

Etablir une connection à Internet depuis une machine connectée à un LAN (FAI-boîte par ex.), pas à pas à la main ;)

Soit un réseau local composé d'une machine cliente et d'une machine passerelle (gateway). Càd. deux machines (ou plus), ou une machine et un routeur, ou une machine et un FAI-boîte.
  - La passerelle dispose de 2 interfaces (ou plus) : une la reliant au réseau local et l'autre à internet.
  - L'adresse locale de la passerelle est : 192.168.0.254
  - L'adresse du client local est : 192.168.0.12

1) Vérification du réseau

La commande ping permet en gros de frapper à la porte d'une interface réseau afin de vérifier sa présence / son activation.
Nb: toutes les machines ne répondent pas obligatoirement à une requête ping.
Nous allons tester progressivement notre configuration :

La commande ifconfig permet de lister les interfaces actives. Note : "if" pour InterFace.

La première interface est la boucle locale (loopback) nommée aussi lo. Elle est nécessaire au bon fonctionnement de nombreux applicatifs de la machine, ainsi que pour les autres interfaces.

Test de la boucle locale :
$ ifconfig lo (/sbin/ifconfig marche à tous coups).
$ ping 127.0.0.1
resultat :
ping 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.1 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.0 ms

Test de la résolution du nom :
$ ping localhost

Test de l'interface ethernet eth0 (réseau local) :
$ ping 192.168.0.12

Test de communication avec la passerelle :
$ ping 192.168.0.254

Si tout s'est bien passé, c'est que nos deux machines sont connectées entre elles.

Nous pouvons maintenant tester la connexion vers l'exterieur du réseau local :
ping google.com
Si la réponse est : Network is unreachable (réseau inaccessible)
C'est qu'il nous faut préciser le chemin (route) à emprunter pour atteindre l'exterieur, à savoir ici notre passerelle.
Pour cela nous utiliserons la commande route :
# route add default gw 192.168.0.254
Toutefois un nouveau test de ping sur l'extérieur risque de nous retourner : Unknown Host (hôte inconnu).
Ça ne signifie que le réseau ne connait pas le nom "google.com" ou plutôt son IP, et pas forcément que nous ne sommes pas connecté à internet.
Pour le vérifier, lançons le même test mais en passant par son adresse ip (google.com est le nom de domaine, il répond en fait à l'adresse: 216.239.57.99) :
$ ping 216.239.57.99
Si le serveur répond bien, cela signifie que nous bien reliés au net mais que nous avons un soucis de résolution de nom de domaine. Ce qui est réalisé par des serveurs DNS.
Votre FAI a du vous faire parvenir les adresses de ses serveurs DNS. On peut aussi très bien utiliser ceux d'OpenDNS (valables quelque soit votre FAI). Il vous faut les rajouter au fichier /etc/resolv.conf. Exemple :

# nameserver [IP]
nameserver 213.228.0.212
nameserver 212.27.32.177

Ajoutez les adresses pour que le réseau puisse résoudre les noms de domaine internet !

2) Configuration de la connexion Internet statique de la machine cliente sur un réseau local

2.1 - Configuration statique à la mimine (sans DHCP)

Il nous faut :

  • les adresses des serveurs dns de votre FAI (ou d'OpenDNS)
  • l'adresse de votre passerelle (ici 192.168.0.254)
  • la plage d'adresse utilisée sur le réseau local, une adresse disponible (ici 192.168.0.10)

On monte l'interface eth0 avec l'adresse 192.168.0.10 :
# ifconfig eth0 192.168.0.10 up
Ici vous attribuez l'adresse 192.168.0.1. à votre première carte ethernet : eth0 (eth1 pour la deuxième, etc). Vous avez créé un réseau reliant directement les cartes d'adresse 192.168.0.x. et de même netmask (la commande complète est : ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up).

On peut ajouter une adresse de serveur DNS :
# echo nameserver 213.228.0.212 > /etc/resolv.conf

Dans le doute on supprime l'eventuelle route par défaut :
# route del defaultkbd>

Pour ajouter la route par défaut vers notre passerelle :
# route add default gw 192.168.0.254

Sources : http://doc.linucie.net/Install/ReseauBase

linucie.net

Note sur les adresses IP sur un réseau local.
La forme d'une adresse IP est X.X.X.X, nombre dont les X ont une valeur comprise entre 0 et 255. Pour un réseau privé, un bon commencement est 192.168.X.X, avec un netmask de 255.255.255.0 soit un réseau de classe C. Ainsi, 192.168.X est le numéro du réseau, et le dernier X celui de la machine : Le troisième chiffre sert à différencier vos différents réseaux et le quatrième à différencier les différents postes d'un réseau. Le zéro & 255 sont réservés. Vous avez donc droit à 255 réseaux de 254 postes chacun.

ifconfig permet de faire apparaître un paragraphe montrant tout ce qui concerne vos interfaces réseau.

2.2 - Configuration automatique de la connexion Internet avec DHCP

Admettons que vous ne vouliez pas donner une IP fixe aux machines (par exemple pour votre PC portable qui accède au web de différents endroits !). Vous aurez besoin qu'un serveur DHCP tourne quelque part sur le réseau et réponde aux requêtes d'adresse IP émises par un client DHCP en vous attribuant une adresse IP. Votre machine n'aura besoin que d'un nom ou "hostname".

DHCP permet une configuration simple du réseau quand un serveur DNS est présent sur celui-ci (le cas avec les FAI-boîtes).
Il est activé par défaut sur de nombreuses distros Linux, LiveCDs inclus. Sinon, l'outil permettant d'emettre une requête DHCP est soit dhclient, soit pump.
DHCP s'occupe de tout :
  - demande une adresse IP valide
  - configure l'interface en question avec cette adresse
  - recupère les paramètres nécessaires tels que la route par défaut (ex: la passerelle ou gateway) ou les adresses des serveurs de nom de domaine (DNS : remplit automatiquement /etc/resolv.conf)

Avec dhclient on fait tout simplement :
# dhclient eth0

Avec pump :
# pump -i eth0 : L'option -i permet de spécifier l'interface.

Vous êtes peut-être déjà un client DHCP sans le savoir. Par exemple si votre fournisseur d'accès Internet ne vous donne pas d'IP fixe, ou si vous utilisez le câble (la connexion au modem-câble se fait en DHCP).

Le paramétrage est également très facile en utilisant linuxconf ou control-panel de RedHat, voire Webmin . Vous précisez simplement votre interface ethernet (le plus souvent eth0 ). Il s'agit simplement de commenter les lignes "nameserver" dans /etc/resolv.conf et de laisser une ligne "search".

Vous aurez besoin des paquetages dhcp-client et dhcpcd.

Au final votre fichier /etc/sysconfig/network-scripts/ifcfg-eth0 doit contenir à peu près ça :

DEVICE="eth0"
IPADDR="" # Evidemment, puisqu'on utilise DHCP
NETMASK="255.255.255.0"
ONBOOT="yes"
BOOTPROTO="dhcp" # Puisqu'on vous dit qu'on est en DHCP  !

Lancement d'un serveur DHCP

Si vous devez lancer le serveur DHCP d'une machine, le service se lance par :
/etc/rc.d/init.d/dhcpd start.

  • Astuces Mandriva : Installer le paquet drakwizard pour avoir un tas d'assistants de configuration de serveurs apache, mysql, partage etc. dans le centre de configuration drakconf.
  • On peut aussi utiliser les DNS d'OpenDNS

Wi-Fi

bluetooth

Bluetooth (guide original de Gérard Delafond).

Un problème pour trouver le réseau ?

Vérifiez le branchement, vérifiez que le correspondant est bien sur le même numéro de réseau 192.168.0 (par ex 192.168.0.2), et tentez un ping 192.168.0.2. Si ça répond, la connexion est établie. Quittez par <Ctrl-C>. Sinon, recommencez la configuration réseau !

Dans ce cas (un seul numéro de réseau), il n'y a pas de route à définir. Pour voir les routes, tapez :
netstat -rn.

Une cause possible si le ping répond en local mais pas en distant est une mauvaise configuration d'IRQ.
Autre possibilité, si vous utilisez du coaxial : votre câble est interrompu quelque part ou n'a pas de bouchon à ses 2 extrémités (attention ce type de câble ne doit jamais être branché directement sur la carte réseau, mais par l'intermédiaire d'un T).
Et si vous utilisez du RJ45 sans HUB, il vous faut un câble croisé.

Normalement, vos utilitaires de configuration devraient avoir généré des fichiers de ce genre :

Exemple de /etc/sysconfig/network :

NETWORKING=yes
GATEWAYDEV=eth0 # la carte par où vous allez chercher des ressources sur le réseau
FORWARD_IPV4=no # yes si vous voulez partager votre connexion internet
DOMAINNAME=mon_domaine
HOSTNAME=ma_machine.mon_domaine
GATEWAY=192.168.0.1 # l'adresse de la machine qui vous donne accès à un autre réseau

Sur Debian, ces paramètres sont dans /etc/network/interfaces.
Sur Mandriva, dans /etc/sysconfig/network-scripts/ifcfg-eth0.
Exemple :

DEVICE="eth0" # votre carte réseau
IPADDR="192.168.0.4" # votre adresse IP
NETMASK="255.255.255.0"
NETWORK="192.168.0.0" # le masque de sous-réseau
ONBOOT="yes"

Note : Sans réseau configuré (par exemple, un seul poste connecté à internet), vous n'aurez sans doute que HOSTNAME et NETWORKING.

Démarrage automatique du réseau

Il faut enregistrer les paramètres précédents (adresses IP, netmask) dans des fichiers : /etc/sysconfig/network et /etc/sysconfig/network-scripts/ifcfg-eth0 (pour RedHat, Mandriva), ou en utilisant netcfg (sur RedHat).

Lancez le réseau par :
/etc/rc.d/init.d/network start (ou restart si vous essayez de nouveaux paramètres).
C'est tout de même plus rapide que de rebooter, non ?

  • Commande équivalente (Fedora, Mandriva...) : service network start

Éviter de taper des adresses IP (= le DNS)

Les IPs ça va un moment... Heureusement, il est possible de trouver une adresse IP en tapant un nom ordinaire.

Pour cela, vous pouvez :
a) soit configurer /etc/hosts (qui vous sert de serveur de noms juste pour la machine sur laquelle il se trouve) et y mettre quelque chose comme :

127.0.0.1 localhost localhost.localdomain
192.168.0.2 D386 cecile cecile.lourmel.fr
192.168.0.1 dx2_50.lourmel dx2_50 toto

b) soit être client d'un vrai serveur DNS :
Éditez le fichier /etc/resolv.conf, et mettez-y (adaptez avec les IPs fournies par votre FAI !) :

search lourmel club-internet.fr
nameserver 192.168.0.1 # votre serveur de noms local (s'il est installé)
nameserver 192.117.200.10 #l'IP du DNS de club-internet
nameserver 192.117.200.15
Pour installer le serveur DNS :
Installez le paquetage bind.
Créez un répertoire /var/named
Configurez le fichier /etc/named.conf :
(...)

Démarrez-le :
/etc/rc.d/init.d/named start

attention Un DNS non démarré, mais joignable, va ralentir toutes les demandes utilisant des noms de machines.

De cette manière, que vous tapiez toto ou dx2_50.lourmel ou dx2_50, vous arrivez au 192.168.0.1.

Liens DNS & Bind

Implémentation d'OpenDNS sur un réseau local

Pour : accélérer les résolutions de nom de domaine ; filtrage (white/blacklists), statistiques, IP dynamique. Sans installer de logiciel, puisqu'il suffit de changer les IPs des serveurs DNS (à la place de ceux de son FAI par ex.)

Avec :

  • Windows Server 2003 (ou SBS) et Active Directory
  • Un serveur DNS interne Unix/Linux
  • Un proxy web type Squid, Dan's Guardian

Source : http://www.opendns.com/best_practices/.
Le forum et le blog sont en bas de la page.
Détails :
- OpenDNS est un DNS recursif, qui fonctionne sur le même principe que ceux d'un FAI par ex. (translation des requêtes de nom de domaineen adresses IP).
- Selon certains articles, OpenDNS le ferait plus vite. Un autre avantage est que la résolution des noms de domaines en adresses IPs fonctionne quelque-soit le réseau / FAI auquel on se connecte.

Vous n'avez pas de carte réseau : null-modem

Un simple câble null modem série ou parallèle (dits câbles pour les transferts de fichiers, ou null printer pour le câble parallèle) peut parfaitement fonctionner en tcp/ip. Vous devrez avoir le module slip ou plip, le lancer (modprobe plip), et lui attribuer une adresse IP (ifconfig plip0 192.168.0.1 pointopoint 192.168.0.2 up). Le premier port parallèle trouvé sera toujours plip0 (depuis le kernel 2.2).

Si plip vous dit que le device est "busy", assurez-vous de retirer tous les modules qui pourraient utiliser parport, arrêtez le service d'impression :
/etc/rc.d/init.d/lpd stop, et surtout, allez voir si /proc/parport/0/irq montre bien le numéro d'IRQ de votre port parallèle et pas none.
Faites de même sur l'autre machine, en inversant les numéros d'IP.

attention Certains ports parallèles ne sont faits que pour les imprimantes et ne fonctionneront pas avec plip.

Autre piège : les machines peuvent se pinguer elles mêmes, mais elles échouent à pinguer l'autre : il s'agit soit d'une défaillance du câble, soit d'un port parallèle mal paramètré. Il doit être EPP ou ECP, et non en mode normal.

Quant aux ports série, ils ne fonctionnent avec slip que s'ils sont de type UART 16 550 (ça se voit dans dmesg ou setserial )..

Pour arrêter : ifconfig plip0 down.

Attention ! Même si votre port parallèle fonctionne sans IRQ pour une imprimante, une IRQ est indispensable pour un réseau plip.

Vous avez plusieurs cartes réseau : machine passerelle

Donnez-leur des adresses appartenant à des réseaux différents (192.168.0.1 et 192.168.1.1 par exemple). Votre machine pourra accéder à 2 réseaux différents et servir de passerelle de l'un à l'autre.

astuce si vous ne savez pas quelle carte est eth0 et eth1, activez / désactivez-les à tour de rôle (ifconfig ... up et down) et regardez les diodes situées sur les cartes.

Admettons que vous avez une machine cliente (192.168.0.1) et une machine routeuse (192.168.0.4 sur eth0) reliée à un deuxième réseau par sa deuxième carte eth1. La machine cliente doit chercher ses ressources sur l'IP de la carte du routeur (192.168.0.4) à laquelle elle est raccordée. La machine routeuse doit signaler que cette même carte sert de passerelle. Cela se traduit dans le /etc/sysconfig/network du routeur par un :

GATEWAY="192.168.0.4"
    GATEWAYDEV="eth0"

Voir les routes : netstat -rn.

Table de routage IP du noyau
Destination Passerelle Genmask Indic MSS Fenêtre irtt Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
212.198.35.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
0.0.0.0 212.198.35.1 0.0.0.0 UG 0 0 0 eth1
0.0.0.0 192.168.0.4 0.0.0.0 UG 0 0 0 eth0

Si votre machine ne doit servir que de routeur :

trop cool(par exemple un firewall pour raccorder votre réseau local au câble), un 486 sans disque dur suffit avec le Coyote Linux (http://www.coyotelinux.com/). Un OS + le réseau sur une simple disquette ! (Il existe des versions plus complètes sur le site).

Vous n'avez qu'une carte réseau et voulez quand même faire passerelle : IP-alias

La solution est l'IP-aliasing. (Merci à Vincent TOUGAIT)
Exemple : vous souhaitez partager une connexion Internet par câble. Vous avez besoin d'une adresse IP pour causer au modem-câble, et d'une autre pour causer à votre deuxième ordinateur. L'IP aliasing est une méthode qui consiste à donner deux adresses IP à une même interface (fonctionnalité à activer lors de la compilation du noyau : vous devez avoir un fichier /proc/net/ip_alias).
Vous déclarez la deuxième adresse avec :
ifconfig eth0:0 192.168.1.1 up. (Le nombre qui suit le : doit être unique). Ensuite, vous procédez comme au chapitre précédent pour faire la translation d'adresses.
Inconvénients :

  • Comme votre deuxième machine est physiquement reliée au réseau extérieur, elle n'est pas protégée et il peut y avoir des emmèlages de pinceaux si quelqu'un utilise la même IP sur le réseau.
  • Le débit est à chaque fois divisé par le nombre d'alias utilisant la même interface.

Travailler sur une machine distante

...avec telnet (non sécurisé)

Telnet permet une prise de contrôle à distance non sécurisée d'une autre machine. Faites telnet 194.168.0.2. Loguez-vous alors comme un simple utilisateur. Si vous voulez être le root de la machine distante, vous ne pourrez le faire que dans un deuxième temps (su -). Faites une commande quelconque (ls...). vous verrez le résultat s'afficher sur la console où vous êtes physiquement. C'est très pratique, car à partir de maintenant, vous pouvez changer tous les paramètres de la deuxième console sans quitter la première.

  • Pour autoriser les invités telnet sur votre machine, rajoutez leur nom ou leur IP dans /etc/hosts.allow
    (par exemple in.telnetd : 192.168.0.2 ). Le fichier hosts.allow est prioritaire sur hosts.deny.
  • attention Certaines distributions n'installent pas le serveur Telnet par défaut. Dans ce cas c'est à vous de le rajouter.
  • Vérifiez également que le service inet est actif (ps aux|grep inet doit renvoyer qqch comme root 11646 0.0 0.8 1104 528? S 10:19 0:00 inetd). Sinon lancez-le : /etc/rc.d/init.d/inet start, ou utilisez tksysv (utilitaire RedHat) pour le faire démarrer automatiquement.
  • Vérifiez également que le fichier /etc/inetd.conf contient la ligne telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd. Cette ligne fait obligatoirement référence à une ligne dans /etc/services, comme : telnet 23/tcp.
  • Pour mémoire, le service inet est un service qui tourne en tache de fond, et qui guette les requêtes sur des canaux (ici le port 23) et active les services demandés.
  • lea-linux explique ici pourquoi telnet est si peu sécurisé.

...avec ssh

Mieux que telnet , qui échange les mots de passe en clair sur le réseau, ssh établit un canal crypté pour sécuriser l'échange de mots de passe. SSH est donc, comme l'indique la page du manuel du client ssh OpenSSH, un client permettant de s'identifier sur une machine distante et constitue un remplacement sécurisé (en tout cas crypté) de telnet et des utilitaires comme rsh ou rlogin qui s'appuient sur un identification par adresse IP ou pas mot de passe en clair.

Syntaxe rapide :
$ ssh compte-utilisateur-distant@ip-machine-distante. Ensuite, répondez aux demandes de mots de passe.
Bien sûr, sshd doit être installé sur le serveur et actif : service sshd start.

Configuration de SSH

3 bons guides :

SSH : configuration de l'authentification par clé (sans devoir taper de mot de passe)

Auteur : Karles
URL : http://www.karlesnine.com/spip.php?article50
Introduction : Au lieu de s'authentifier par mot de passe, les utilisateurs peuvent s'authentifier grâce à la cryptographie asymétrique et son couple de clés privée/publique SSH utilise pour cela la cryptographie symétrique. Son principe est simple : si A veut envoyer un message confidentiel à B, A et B doivent d'abord posséder une même clé secrète. A crypte le message avec la clé secrète et l'envoie à B sur un canal qui n'est pas forcément sécurisé. B décrypte le message grâce à la clé secrète. Toute autre personne en possession de la clé secrète peut décrypter le message.

Autres fonctionnalités et sources cool

Accéder aux fichiers et dossiers sur une machine distante

Ci-dessous Partage de fichiers avec SSH, Konqueror, sshfs

Lancer des programmes depuis une machine distante

Vous pouvez voir ci-dessous :
  - SSH : Exécuter une commande sur une autre machine
  - X11Forwarding : lancer une application sur un serveur et l'afficher ailleurs avec SSH

Surveiller une machine distance avec SSH cool

Pré-requis : serveur ssh sur la machine distante, identification par clé (sans mot de passe), l'utilisateur distant a les droits de lecture sur le fichier de log qu'on souhaite lire.
$ ssh $MACHINE_DISTANTE "tail -f /var/log/iptables.log"
Où "$machine_distante" est de la forme [utilisateur@IP].

Source : Eterm : Log en background. Le classique fichiers de log dans un Eterm transparent, à la sauce Karles, http://www.karlesnine.com/spip.php?article63

Régler l'alerte "remote host identification changed" cool

Le cas le plus fréquent est que l'IP ou la clé a changé sur la machine distante (DHCP souvent).
Comment régler rapidement les situations où un changement de clef ou d'IP server ssh provoque cet avertissement :

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
    Someone could be eavesdropping on you right now (man-in-the-middle attack)!
    It is also possible that the RSA host key has just been changed.

Pour supprimer l'entrée fautive, sans toucher aux autres fingerprints d'hotes :
$ ssh-keygen -R [IP|alias] -R pour remove.
Une source : http://blog.hacker.dk/2008/01/script-to-fix-ssh-host-identification-changed/

Sauvez vos sessions SSH avec Screen cool

GNU Screen est un logiciel libre “multiplexeur de terminaux” en mode texte. Il a 3 fonctionnalités :

  • Persistance : une fois déconnecté (ssh par exemple), la session screen reste ouverte, ce qui permet par exemple de compiler toute la nuit sans rester connecté, ou encore de commencer un travail et de le finir le lendemain...
  • Multiplication des fenêtres (pour le pain c'est ailleurs svp ;) : comme pour tty, screen permet d’ouvrir plusieurs session et de naviguer entre elle via des raccourcis clavier ;
  • Le partage de sessions qui permet la collaboration entre plusieurs utilisateurs sur une même session (celle-ci je l'ignorais :)
Utilisation de screen :

SSH avec Windows cool

Lancer des programmes depuis une machine distante

SSH : Exécuter une commande sur une autre machine cool

Ex : je veux sauvegarder une grande quantité de données depuis un petit serveur sur mon LAN vers ma machine desktop, et ça sous forme d'archive compressée. OK je pourrais archiver et compresser ces données sur le petit serveur, mais son processeur mettrait un bon moment à compresser, bien plus que si je le compresse sur l'autre PC bien plus puissant...
Sur un LAN, la vitesse réseau n'est pas un soucis.

  • Comment faire avec un seul gros fichier :
    $ cat le_gros_fichier.log | ssh -c blowfish user@machine \
    "gzip -c - >le_gros_fichier_archivé.gz"
  • Avec un (gros) répertoire :
    $ tar cf - gros_rep | ssh -c blowfish pc_ou_tu_veux_compresser \
    "gzip > rep_archivé.tgz"

    Un message type "stty: standard input: Invalid argument" ne porte pas à conséquence.

X11Forwarding : lancer une application sur un serveur et l'afficher ailleurs avec SSH

Une des particularités du protocole SSH est qu'il est prévu pour servir de transport à n'importe quel type de données. Cette application est appelée TCPForwarding et dans le cas d'application particulier de données "graphiques" cela s'appelle le X11Forwarding mais peut être utile pour faire circuler n'importe quelle informations de manière sûre ou pour faire des redirections de ports pour franchir un firewall par exemple.
Ce qui suit est présenté en détail par pwet.fr.

Configuration

La mise en place de ce système est très simple. Sur le serveur sur lequel on va lancer les applications il faut installer OpenSSH (avec le gestionnaire de paquets de votre distrib) et configurer le daemon SSHd : l'option X11Forwarding doit ^etre sur "yes" dans le fichier de configuration /etc/ssh/sshd_config. Puis redémarrer le daemon sshd.

Utilisation

Cette opération réalisée, on peut lancer des applications sur la machine distante et les afficher sur votre machine locale (ou sur une autre machine distante d'ailleurs) avec la ligne de commande suivante :
moi@machine-locale:~ $ ssh -c blowfish -X -C -f login@machine-distante application
Explications : cette ligne indique à ssh de se connecter sur le serveur adresse "adresse" sous le login "login" pour y lancer ton_application. L'option -X indique que l'on souhaite utiliser le X11Forwarding (ssh va installer toutes les variables d'environnements et faire toutes les opérations nécessaires pour cela). Les autres options sont toutes facultatives.

ssh X Mandriva Arch Opera

Voir et agir sur la machine distante avec VNC

Une fois en réseau TCP/IP, que ce soit en local ou à distance, vous pouvez utiliser VNC, un logiciel libre multi-plates-formes qui permet de voir et agir sur une machine distante (Windows, Linux...) depuis Linux, ou le contraire.

Si l'écran de Windows est assez facile à voir (vncviewer 192.168.0.1:0), il peut être plus compliqué de dire à Linux quel écran on veut qu'il exporte (nb : pas de problème particulier avec TightVNC !). Le lancement par défaut de VNC serveur (vncserver) sous Linux exporte une fenêtre où... il ne se passe rien ! On peut obtenir quelque chose en faisant export DISPLAY=:1 (si l'affichage 1 est celui utilisé par VNC, ce qu'on peut voir en tapant ps -aux|grep Xvnc) avant de lancer les programmes.

Si vous avez un fichier ~/.vnc/xstartup du genre :

#!/bin/sh
exec  /etc/X11/xinit/xinitrc &
xsetroot  -solid grey
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & #facultatif
startkde &

vous pourrez exporter un vrai KDE. à ce moment, vous pouvez l'afficher en local avec l'option -shared (ex : vncviewer -shared 192.168.0.1:1). Cela vous permet de lancer un client sur une machine distante avec la même commande. De plus, on peut voir plusieurs serveurs depuis un même poste client.

Sur KDE, il y a une interface graphique pour VNC qui se trouve dans le centre de configuration, item "Internet et réseau". L'utilisation est très intuitive : quelques clics suffisent à partager un bureau en cours d'utilisation grâce à un envoi de mail automatisé.

NX cool

La technologie NX est un protocole client-serveur permettant des connexions graphiques X11 distantes rapides et sûres pour accéder à un bureau Linux / Unix à distance. Le protocole est basé à la fois sur SSH (pour la sécurité) et sur la compression X (pour l'interface graphique et la rapidité).

Afficher un programme à distance

  • Pour lancer un programme qui va s'afficher sur un autre écran : Autorisez sur la machine d'affichage (192.168.0.1) les étrangers à utiliser votre écran (xhost +, à lancer après le lancement de X). Sur la machine où le programme tourne sans s'afficher, tapez export DISPLAY=192.168.0.1:0.0. Quand vous lancerez le programme depuis la même xterm sur la machine 192.168.0.2, il s'affichera sur la machine 192.168.0.1.
    Pour récupérer l'affichage en local, vous devrez faire export DISPLAY=:0.0. Pour lancer un seul programme à distance :
    prog_a_lancer -display 192.168.0.1:0 devrait suffire, mais pas toujours.
  • Pour interdire à nouveau l'envahissement de votre écran, xhost -.
  • Pour éviter que n'importe qui ne vienne envahir votre écran, il est prudent de spécifier les hôtes autorisés (xhost + client_autorisé).

Lancer une session graphique à distance

Il est possible d'utiliser xdm (ou équivalent) pour se connecter graphiquement sur une machine distante (connexions XDMCP).

Sur la machine serveur, xdm doit tourner. Vous devez avoir autorisé l'accès aux autres machines dans le fichier Xaccess (par exemple en décommentant l'étoile). Si votre machine utilise kdm, vous devez avoir dans le fichier ~/kdmrc :
[Xdmcp] Enable=true.

Si vous avez gdm, la gestion de session distante se fait avec gdmsetup (sur une Mdk 9.0, c'est la seule méthode qui a fonctionné).
Sur la machine cliente, vous tapez (sous root en mode console) X -query 192.168.0.1 (adaptez l'IP à votre cas, ou tapez un nom de machine déclaré dans /etc/hosts ou fourni par un DNS), et le gestionnaire de connexion graphique du serveur s'affiche. Choisissez un nom d'utilisateur et tapez le mot de passe. Et hop, vous travaillez graphiquement à distance.

Autre possibilité : vous tapez :
startx -- -query 192.168.0.1. Dans ce cas, la machine cliente a tendance à lancer plein de choses qui risquent d'entrer en conflit avec celles lancées sur le serveur. Pensez donc à annuler tout ce qui fait double emploi, comme le démarrage du window manager sur la machine cliente.

Possibilité également startx -- -indirect 192.168.0.1, qui doit vous afficher une liste de machines-serveurs complaisantes si vous avez correctement renseigné le Xaccess.

La même chose en mode graphique (pas de ligne de commande à taper) :

Sur le serveur :
modifiez le fichier /usr/lib/X11/xdm/Xservers, et rajoutez après la ligne :0 local /usr/X11R6/bin/X la ligne 192.168.0.2:0 foreign.
Sur le client :
éditez le fichier qui lance xdm (ou équivalent). Il peut s'agir d'un fichier rc.local ou du fichier prefdm.
Ajoutez après la ligne /usr/bin/X11/xdm la ligne exec /usr/bin/X11/X -indirect 192.168.0.1.

Si votre machine distante est sous Windows :
  • Essayez Xwin32 (commercial, disponible à http://www.mcsr.olemiss.edu/computing/xwin32.html). Vous pourrez afficher une session X sur votre machine Windows.
  • Possibilité en libre : cygwin + Xfree86 (ne me demandez pas comment, je n'en sais rien).

Partage de fichiers, de périphériques et de connexion

Accéder à une autre machine Linux

Le plus simple : ssh

Afficher les fichiers du PC distant sous Konqueror cool

Requis : sshd lancé sur la machine distante
Dans Konqueror, écrivez dans la barre d'URL : sftp://utilisateur@adresse_IP_machine_distante. Si vous avez configuré l'authentification par clé les répertoires distants s'affichent de suite ; sinon, vous devez entrer le nom d'utilisateur distant et son mot de passe. Note : c'est un kioslave que vous venez de lancer (Konqueror).
Voilà, le répertoire distant est dans votre fenêtre. Comme tout ce qui est basé sur SSH, c'est sécurisé par chiffrement :-)

ssh X Mandriva Arch Opera

Si on a changé le port sur lequel sshd écoute, il faut l'indiquer dans Konqueror / Nautilus. Syntaxe :
sftp://utilisateur@IP:port/

Sshfs pour monter rapidement un répertoire distant cool

sshfs fait apparaître comme locaux des dossiers et fichiers distants à travers une connexion ssh. Aucune configuration côté serveur si sshd a été lancé. Il suffit dont de disposer d'un accès ssh à une machine pour pouvoir faire tout ce qu'on veut.

$ ssh loin.tresloin.com "ls -a ~/projets/"
    > . .. README projetv1 projetv2
$ mkdir ~/loin-projets
$ ls -a loin-projets
    > . ..
$ sshfs loin.tresloin.com:~/projets loin-projets
$ ls -a loin-projets
    > . .. README projetv1 projetv2

Et voilà ! Faîtes comme chez vous.

  • N'oubliez pas de charger le module fuse (filesystem in userland) : modprobe fuse
  • Si le rép distant ne se monte pas comme prévu, utilisez un chemin absolu :
    $ sshfs loin.tresloin.com:/home/raoul/projets loin-projets
    La forme générique est :
    $ sshfs utilisateur@machine_distante:repertoire point_de_montage_local
  • Remarque 1 : la plupart des hébergeurs supportent scp & ssh, et donc sshfs :)
  • Remarque 2 : les performances en lecture & écriture sont bonnes avec sshfs.
  • Remarque 3 : s'utilise aussi bien sous Windows avec Putty (puisque ce dernier implémente ssh).
    Si vous préférez le "tout graphique" voyez sftpdrive (€), webdrive (€) ou, plus librement, Filezilla + sftp.

Sources :

shfs cool

shfs procure des fonctionnalités équivalentes à sshfs et autorise le montage distant & sécurisé automatique (avec fstab).

Un bon guide http://wiki.archlinux.org/index.php/Shfs

MySecureShell

MySecureShell

MySecureShell (MSS) est un serveur ftp très sécurisé, facile à installer, à administrer et à configurer. Il s'appuie sur le cryptage très poussé SSH et sur son ftp sécurisé "sftp-server". MySecureShell est un shell qui va permettre d'ajouter plusieurs fonctionnalités à sftp-server et qui va se rapprocher des grands serveurs ftp tel que ProFtpd.

Les avantages de MySecureShell sont un cryptage complet des données et des requêtes émises, puisqu'il s'appuie sur le protocole très sécurisé SSH ; il est très simple à installer, à utiliser et hautement configurable.

Le plus classique : nfs

Facile ! Créez sur la machine cliente un répertoire de montage, disons /mnt/nfs, Sur la machine serveur, définissez les répertoires a exporter dans /etc/exports (par exemple /home), définissez les hôtes autorisés dans /etc/hosts.allow, retirez-les de hosts.deny puis lancez nfs :
/etc/rc.d/init.d/nfs start

Sur la machine locale, faites un :
mount -t nfs 192.168.0.2:/home /mnt/nfs. Cela devrait accrocher le répertoire home de l'arborescence du serveur sur votre machine locale dans le répertoire /mnt/nfs.

Le répertoire que le serveur met à disposition peut aussi bien être un disque monté. attention Vous ne pourrez plus démonter le disque sur le serveur tant que le client s'en servira ! Si vous voulez le démounter malgré tout, il faudra stopper le service nfs.

attention Les services nécessaires à nfs ne fonctionnent que si portmap est lancé (/etc/rc.d/init.d/portmap start).

Si ça vous convient, rajoutez une ligne dans le /etc/fstab du client, comme pour les cdroms ou autres disquettes. La ligne ressemblera à ceci :

192.168.0.1:/mnt/cdrom  /mnt/nfs  nfs  defaults,noauto,ro 0 0

(ce qui signifie que le répertoire /mnt/cdrom du serveur 192.168.0.1 sera monté dans le répertoire /mnt/nfs du client, en lecture seule). Vous pourrez ensuite y associer un icône sur le bureau de KDE par exemple.

L'idéal est de configurer votre système avec l'automontage.

Liens

Vous avez des machines Windows sur le réseau -> Samba

Dans ce cas Samba est fait pour vous. Installez TCP/IP sur Windows et donnez une adresse IP à votre carte ethernet, vérifiez que ça pingue dans les 2 sens, éditez le fichier /etc/smb.conf et le tour est joué. Vous avez plusieurs interfaces graphiques pour configurer Samba, entre autres Webmin et Swat (swat se démarre automatiquement par xinetd, et se paramètre dans /etc/xinetd.d/swat) et vous y accédez dans l'interface web avec http://127.0.0.1:901.

Sachez que samba est en fait composé de deux fonctions diamétralement opposées : Samba serveur (Linux fournit des ressources à Windows) et Samba client (Linux utilise les ressources de Windows).

Quelques détails pour smb.conf :

workgroup =lecourbe # ou ce que vous voulez d'autre, pourvu que ce soit le même que celui déclaré dans Windows

Après un service smb start, vous devriez voir la machine Linux dans le voisinage réseau de la machine Windows (à condition que la boucle locale lo soit active).

Si ça ne démarre pas, allez donc voir les fichiers de log dans /var/log/samba. Une cause possible est un nom de domaine déclaré dans le smb.conf différent de celui déclaré dans /etc/hosts.

Samba serveur

Pour toutes les fonctions serveurs de samba, vous avez besoin de mots de passe. Générez le fichier /etc/(samba/)smbpasswd par la commande cat /etc/passwd|mksmbpasswd.sh > /etc/(samba/)smbpasswd.

Ensuite, utilisez la commande smbpasswd de la même manière que la commande passwd.

Sous Win98/Millenium, vous aurez besoin de modifier la base de Registre :

  • Placez-vous sur [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]
  • Faites Edition > Nouveau > ValeurDWORD
  • Remplacez Nouvelle Valeur #1 par EnablePlainTextPassword.
  • Remplacez la valeur 0 par 1.

Si la modification à la main vous effraie, vous pouvez installer PTXT_ON.INF, présent sur le cd de Windows, dossier tools\mtsutil.

Sous Win 2000, syntaxe légèrement différente (au même emplacement) :
"EnablePlainTextPassword"=dword:00000001

Autoriser l'accès à vos disques sous Linux & Windows :

Accès aux disques Linux depuis Windows

Insérez un paragraphe de ce type dans smb.conf :

[cdrom] #le nom que Windows verra
path = /mnt/cdrom   # le répertoire de montage du cdrom.
                    # Pensez à le mounter, sinon vous aurez accès à un répertoire vide.
public = yes
only guest = yes
writable = no #logique !
printable = no
Accès aux disques Windows depuis Linux

Pour mounter sous Linux un disque de Windows, oubliez mount, mais faites plutôt smbmount //windows/C /mnt/win (nécessite le paquetage samba-client). Dans cet exemple, windows est le nom de votre machine sous Windows (original, non ?-) C est le nom de partage du disque C (de plus en plus fort !) et /mnt/win est le nom du répertoire de montage sous Linux. à partir de ce moment, vous pouvez faire toutes les opérations de transferts de fichiers facilement. Depuis les versions 2.x de Samba, smbmount a disparu, au profit de mount tout court :
mount -t smbfs -o username=toto,password=taratata //windows/C/ /mnt/win. (n'oubliez pas les "//" ...)
Avantage : ajoutez ça au /etc/fstab (chez moi, ça donne //maman/e /mnt/zip smbfs password="",user,noauto) et les montages se feront comme tous les montages Linux ordinaires.

Win-dos 95 pourra faire un telnet sur Linux, mais l'inverse n'est pas vrai car win 95 ne comporte pas de serveur telnet en standard.

Samba : Autoriser l'accès à vos imprimantes Linux & Windows

Accès aux imprimantes Linux
[printers]
# Un détail important  : Mettez
host allow = 192.168.0 127 # (127 pour vous et 192... pour votre réseau)

Lancez samba :
/etc(/rc.d ou /init.d)/smb start. restart pour le relancer après avoir changé un paramètre.

Autoriser l'accès à vos imprimantes Windows :

Pour imprimer avec une imprimante connectée à un serveur Windows à partir d'un client Linux :
smbclient //windows/canon (dans cet exemple, l'ordi Windows s'appelle windows et le nom de partage de l'imprimante est canon). Vous verrez apparaître un prompt : smb:\>. Tapez print unfichier.txt, et c'est parti.

Vous pouvez également configurer le /etc/printcap (par exemple avec le printtool ) :

##PRINTTOOL3## SMB POSTscript 300x300 a4 {} PostScript Default {}
lp:\
:sd=/var/spool/lpd/lp:\
:mx#0:\
:sh:\
:if=/var/spool/lpd/lp/filter:\
:af=/var/spool/lpd/lp/acct:\
:lp=/dev/null:

Le fichier /var/spool/lpd/lp/general.cfg contient :

export DESIRED_TO=ps
export PAPERSIZE=a4
export PRINTER_TYPE=SMB
export ASCII_TO_PS=YES

Avec Cups, choisissez d'ajouter une nouvelle imprimante, sélectionnez le type smb, et mettez comme Device URI
"smb://ordi_win/nom_de_partage_de_l_imprimante".

Vous pourrez même profiter de l'accès internet de la machine Linux avec ipchains ou iptables (définissez l'IP du serveur comme passerelle par défaut et mettez les coordonnées du provider dans l'onglet DNS). Vous pouvez aussi imprimer à distance, soit en installant l'imprimante avec les drivers Windows, soit en l'installant avec le driver Apple laser (même astuce que pour Linux/Linux).

Si vous aimez les messages winpopup, installez linpopup http://www.littleigloo.org/downloads.php3 (pour envoyer des messages Windows>Linux, je n'arrive pas à les faire afficher par Linux alors que Windows dit qu'ils sont partis).

Autoriser l'acccès à votre scanner Linux

Utilisez un client Windows : http://www.xsane.org/xsane-win32.html

Liens Samba

Des Macs sur le réseau !!

Vous avez des Macintosh sur le réseau. Netatalk est fait pour vous.
Voyez le Netatalk Howto : http://www.linux-france.org/article/materiel/mac/netatalk/index.html

Imprimer en réseau sous Linux

Une fois installée l'imprimante sur le serveur, vous installez l'imprimante sur le client avec printtool ou équivalent en précisant qu'il s'agit d'une imprimante réseau. Donnez l'IP et le nom d'imprimante du serveur. Éditez le /etc/hosts.lpd et rajoutez-y le nom des machines clientes ("machine.domaine") autorisées à utiliser l'imprimante. Redémarrez le serveur d'impression :
/etc/rc.d/init.d/lpd restart

Le /etc/printcap du client montrera quelque chose comme :

##PRINTTOOL3## REMOTE POSTscript 300x300 a4 {} PostScript Default {} # (...) 

:rm=192.168.0.1:\ # l'IP du serveur (rm = remote machine)
:rp=lp:\ # le nom de l'imprimante du serveur. Puisque vous avez une ligne rp (remote printer), vous n'avez pas de ligne lp (local printer)

Redémarrez le service d'impression du client (pareil que pour le serveur)

Vous n'êtes pas obligé de préciser le type réel de l'imprimante, indiquez simplement une imprimante postscript. Le filtre du serveur saura identifier qu'il reçoit du postscript et le transformera en langage imprimante.

Avantage : si vous changez d'imprimante, ce n'est pas la peine de reparamètrer les machines clientes mais seulement le serveur :-)

Pour supprimer un travail de la file d'impression, du fait que le travail en attente est très vite refilé de la file d'attente du client à la file d'attente du serveur, c'est sur le serveur qu'il faudra intervenir.

Scanner en réseau

Le pilote de Scanner SANE, qui est un peu l'équivalent de TWAIN sous Windows permet grâce à sa conception bien plus astucieuse en mode texte (l'interface graphique appartient à l'application) de scanner en réseau. Vous avez besoin de dll et net, les composants intermédiaires nécessaires au réseau.

Le fichier /etc/sane.d/net.conf du client doit contenir une ligne :
hôte:périphérique
Le serveur doit avoir une ligne :
sane 6566/tcp
dans son /etc/services (voir man sane-net et man saned).

Si vous voulez utiliser un client Windows, vous avez SaneTwain ( http://sanetwain.ozuzo.net/)

Transmettre du texte par le réseau

L'utilitaire talk est fait pour un dialogue en direct.
Tapez talk neness@192.168.0.1. Si le copain neness n'est pas en mode répondeur (et dans ce cas, vous aurez un message vous indiquant qu'il refuse les messages), vous aurez tous les deux sur vos écrans une fenêtre coupée en deux, où vous pourrez voir les messages de votre interlocuteur ainsi que les vôtres.
Vous pouvez également, si l'hôte vous y autorise, lancer un xmessage sur son display.

Transmettre du son par le réseau.

Il existe des utilitaires comme freephone (http://www.inria.fr) qui vous permettent le dialogue (presque) en direct, que le réseau soit local ou par téléphone. Ces utilitaires vous permettent d'envoyer au choix la voix avec un micro, un son du système ou un son de cd-audio.

kozaki Voyez aussi du côté de Skype (disponible sous Windows / Linux / Mac ). Détails ici

Partager un accès Minitel : xtel

Vous devez au préalable avoir un serveur sur lequel xtel fonctionne.
Il faut ensuite installer xtel sur le client. Le client doit alors lancer
xtel -serveur 192.168.0.1, en supposant qu'il s'agit de l'IP du serveur.

Vous pouvez même utiliser ce serveur à partir de Windows avec Hyper terminal 5.0.

Seule difficulté : lors de la configuration, en plus de l'adresse IP, HyperTerminal vous demande le port number, par défaut 23 (ce qui correspond à un telnet ). Regardez dans /etc/services le numéro affecté à xtelw (chez moi 1314). Renseignez-le et vous bénéficiez du modem connecté à la machine Linux pour faire du Minitel sous Windows.

Partager un accès fax

Installez sendfax ou hylafax, voire fax2send si vous aimez le commercial. (À compléter...)

FTP

Devenir un serveur FTP

  • N.B. Le serveur ftp est un serveur de fichiers (File Transfert Protocol)
  • Vérifiez si les paquetages nécessaires (contenant le mot ftp) ne sont pas déja installés : ils le sont souvent par défaut.
  • Voyez un des articles répertoriés juste ci-dessous. On les a sélectionnés parce-qu'ils sont très bons à notre avis.
  • Créez un utilisateur bidon, par exemple ftp_user . Donnez-lui aussi un mot de passe.
  • astuce pour créer plusieurs niveaux de répertoires d'un coup, utilisez l'argument -p et les "{}" :
    mkdir -p /www/{rep1,rep2/sous_rep1_de_rep2,rep2/sous_rep2_de_rep2}
  • Pour accepter les demandes de connexion ftp, vous devez avoir une ligne
    ftp 21/tcp
    dans /etc/services
    et une ligne
    ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a dans /etc/inetd.conf.
  • Redémarrez inetd si nécessaire (autrement dit s'il n'était pas démarré ou après modification de inetd.conf ).
  • Placez vos données dans /home/ftp/pub.
  • Vous devriez maintenant pouvoir vous connecter en anonyme avec n'importe client ftp :
    ftp nom_du_serveur
    name : anonymous
    password : moi@ma_machine
  • attentionCe mode est dangereux sur le plan de la sécurité.

Être un client FTP

astuce Konqueror peut même faire du ftp avec mot de passe

Il suffit de respecter cette syntaxe : ftp://votrelogin:votrepassword@ftp.votresite.
Si votre login contient le signe « @ », il faut le remplacer par « %40 ».
Vous pouvez aussi essayer gftp ou... toujours Midnight Commander.

Et si le serveur ftp n'accepte pas le mode interactif, ftp tout court en mode texte ou ncftp.

Autre possibilité : wget :
wget -c ftp://[adresse] ou wget -c http://[adresse], permet de récupérer des arborescenses entières et de reprendre des chargements interrompus (merci M.Klohn)

Reprendre un téléchargement interrompu : se placer dans le répertoire où se situe le malheureux fichier avorté, et taper :
wget -crk -nH URL_du_fichier_incomplet. Il fera la soudure tout seul. Konqueror fait aussi cela très bien automatiquement et sans syntaxe compliquée.

Vous pouvez vérifier que le fichier chargé est de bonne qualité en utilisant md5sum ou sha1sum. La plupart des sites FTP proposent un fichier de texte minuscule avec l'extension ".md5" (ou ".sha1"). Téléchargez-le et affichez-le. Il contient une ligne contenant un numéro bizarre et le nom du fichier téléchargé. En lançant la commande md5sum -c le-fichier-téléchargé.md5, le programme vous dira si le fichier est 100% identique à l'original. Sinon, votre fichier téléchargé est probablement défectueux. À ce sujet vous pouvez consulter vérifier l'intégrité de votre image ISO téléchargée sur le wiki de Mandriva.

Guides FTP

Le Peer to peer

Linux gère de nombreux protocoles P2P (protocoles qui permettent l'échange de fichiers, comme par exemple des images iso de distributions Linux): kazaa, e-donkey, bittorrent au moins.

Pour bittorrent, vous devez télécharger le fichier .torrent. Lancez ensuite un client, graphique comme btdownloadgui.py ou texte comme rtorrent, faites-le pointer sur le fichier .torrent téléchargé, et demandez d'enregistrer le fichier demandé dans un répertoire de votre choix.
kozaki Les détails sur certains clients comme Azureus avec des liens, informations et moyens de se protéger.

Autres moyens de partage et liens

  • Qnext - centralise une multitude d'outils permettant de communiquer via Internet
      - Partage en réseau privé ou public de fichiers : musicaux, photos, documents, instantanément.

      - Compatible avec toutes les messageries instantanées
      - Voix sur IP (?) même avec ceux n'utilisant pas Qnext.
      - OS : Apple / Linux / Windows :-)
    Qnext France - Avis d'utilisateurs sur Clubic
  • HFS - Http File Server
    http://www.rejetto.com/hfs/ - Qnext : du P2P tout en un, canadien et en java (NUMERAMA.com)
      - You can use HFS (Http File Server) to send and receive files.
      - It's different from classic file sharing because it uses web technology to be more compatible with today's Internet.
      - It also differs from classic web servers because it's very easy to use and runs "right out-of-the box".
    C'est quoi ?
      - Partage de fichiers
      - Serveur web
      - Open source, gratuit, garanti sans malwares.
  • Partager des fichiers en privé avec ses proches sous Windows, Linux ou mac (logithèque Clubic : réseau privé virtuel (VPN), Qnext, serveur multimédia, bureaux virtuels).

Partager une connexion Internet

Partager sa connection signifie en fait partager une adresse IP: Une seule adresse IP vous relie généralement à l'extérieur (Internet), celle-ci vous est attribuée par votre FAI.

Pour permettre le bon acheminement des informations vers votre(vos) machine(s) il vous faut activer la translation d'adresse réseau (NAT) :
# echo 1 > /proc/sys/net/ipv4/ip_forward
  # iptables -A POSTROUTING -t nat -o ppp0 -j MASQUERADE

Si ppp0 est l'interface vous reliant à l'exterieur / à internet.

Pour une machine connectée derrière un routeur (FAI-boite par exemple), on indiquera l'interface ethernet qui est reliée à cette boite.
Ex. avec une machine (future) passerelle :
  - connectée au routeur via l'interface eth0 (adresse 192.168.0.100),
  - connectée via l'interface eth1 (adresse 192.168.1.254) à une autre machine (via cable croisé) ou à un autre groupe de machine (par un switch par ex).
  - La machine cliente aura une adresse du type: 192.168.1.1

Petit schéma :

Internet
    ---> Routeur (192.168.0.254)
        ---> machine passerelle (eth0: 192.168.0.1) ---> (eth1: 192.168.1.254)
	---> machine cliente (eth0: 192.168.1.1) avec passerelle sur : 192.168.1.254

Sources : http://doc.linucie.net/Install/ReseauBase

avec ipchains (noyaux 2.2)

Commencez donc par vous assurer que le ip-forwarding est inclus dans le noyau. Sinon, recompilez. Vous devez ensuite installer ipchains. Puis activer le IP forwarding en tapant echo 1 > /proc/sys/net/ipv4/ip_forward. Le serveur doit autoriser l'accès aux clients en faisant : ipchains -A forward -j MASQ -s 192.168.0.0/24 -d 0.0.0.0/0 pour que toutes les machines 192... aient l'accès vers n'importe quelle autre adresse (-s=source, -d=destination). Le serveur doit aussi déclarer l'IP par laquelle il est raccordé au réseau local comme route.

Les clients n'ont strictement rien de spécial à faire d'autre que de déclarer l'IP du DNS du provider dans les paramètres réseau (donner l'IP de la machine qui est reliée au modem comme default Gateway et le numéro de la carte réseau -eth0 par ex. comme default Gateway Device ). Il leur suffit d'être en réseau TCP/IP avec le serveur et de taper une URL dans n'importe quel Navigateur. Ceci fonctionne quel que soit l'OS et le navigateur du client et quelque soit le type de connexion Internet (Modem, câble, etc.). Vous pouvez également récupérer les mails etc.

Pour tester, vous pouvez pinguer l'interface reliée à l'Internet (identifiez-la par ifconfig). Si ça ne répond pas, c'est un problème de routes. Vous pouvez aussi pinguer depuis le client l'IP du provider. Si ça répond, mais que les URL ne répondent pas, voyez du coté des serveurs DNS.

Pour ne pas tout retaper à chaque fois, éditez le /etc/sysconfig/network, et remplacez FORWARD_IPV4=no par yes (ceci remplace la ligne echo...)

Ensuite, placez la ligne ipchains... en fin de /etc/rc.d/rc.local.
astuce n'importe quelle ligne destinée à démarrer automatiquement peut être placée là.

Vous pourrez voir qui est connecté en faisant : ipchains -L -M.

Sur le kernel 2.4.x, ipchains est remplacé par Netfilter (commandé par iptable).

iptables

Vous voulez un Firewall, monter un routeur NAT, faire du masquerading (passerelle) : iptables est fait pour vous. Il remplace ipchains à partir du noyau Linux 2.4.

Tous les renseignements de base sont rassemblés sur l'une ou l'autre de ces pages :

  • Toujours présent, léa-linux donne l'essentiel des informations pour configurer Iptable, incluant 3 scripts de base) et le lancer automatiquement au démarrage.
  • Si vous avez envie, ou besoin d'en savoir un peu plus, voyiez Netfilter & iptables sur http://christian.caldera.free.fr/netfilter. Ce site d'aide réputé, en plus d'expliquer l'architecture, les fonctions (ipconntrack) & les tables grace auxquelles iptables fait son boulot, présente également un paquet d'informations à la portée de toute personne intéressée par les réseaux sur, entre autres, TCP/IP, l'ADSL, le routage, DHCP, DNS, POP3 & IMAP4, SMTP, HTTP, Squid & SquiGuard, FTP, ...
  • Si vous lisez l'anglais, linuxhomenetworking.com présente iptables dans son élément : situations pratiques comme : Monter une passerelle, autoriser l'accès SSH depuis l'extérieur, configurer l'accès à un sreveur Web sur la meme machine qu'Iptables, etc, etc : Il fournit des scripts extrêmement bien commentés
  • Iptables par l'exemple : Le Labo Linux nous apprend Netfilter et Iptables de façon claire et simple. Ils nous donnent aussi un bon cours sur le Firewalling : Mise en place d'une solution de firewalling avec netfilter et iptables.
  • Un superbe script pour configurer un routeur firewall : Arno's IPTABLES Firewall Script. Ce script tue sa race en permettant entre autres de configurer un FW (iptables), routeur avec ou sans DMZ, et ça les doigts dans le nez sur toute distro (vraiment facile à configurer) !
    http://freshmeat.net/projects/iptables-firewall/.
      Description: "Arno's IPTABLES Firewall Script is a secure stateful firewall for both single and multi-homed machines. It supports NAT and SNAT, port forwarding, ADSL ethernet modems with both static and dynamically assigned IPs, MAC address filtering, stealth port scan detection, DMZ support, protection against SYN/ICMP flooding, experimental IPv6 support, multi-interface/aliased-IP support, and extensive user definable logging with rate limiting to prevent log flooding. It has plugin support to add extra features (like SSH Brute Force protection and (Racoon) IPSEC support). It is easy to configure and highly customizable. A filter script that makes your firewall log more readable is also included."

Paramétrages généraux d'iptables/ipchains et du firewalling

Ipchains effectue plusieurs fonctions indépendantes : le filtrage de paquets entrants ou sortants, le masquage d'adresses IP, le proxy, etc.

Le principe général du filtrage est soit d'accepter tous les paquets par défaut, et de préciser des règles de refus, soit au contraire de tout refuser par défaut et d'accepter seuls certains paquets (meilleure sécurité).

Commandes utiles

Pour savoir dans quel état est votre système, tapez :
ipchains -L qui liste les "policies"
route -n : affiche la table de routage IP du noyau avec passerelles et tout
netstat -an : la liste des ports ouverts.
On peut créer des alias, en ajoutant dans ~/.bashrc une ligne du genre de :
alias openports='netstat -nape --inet'

Guides firewalling & Masquerade (Partage connexion) :

  • L'internet rapide et permanent : http://christian.caleca.free.fr/ propose de TB didacticiels (schémas inclus) sur les points suivants :
      - Les réseaux TCP/IP,
      - le transport d'informations à travers le monde,
      - les problèmes de bande passante, de PPPoE, de DNS,
      - le courrier électronique,
      - la sécurité, la connexion partagée...
  • Fonctionnement du parefeu sous Linux : un article illustré clair et compréhensible ;) :
    http://linbox.free.fr/chapitre11.html
  • Léa : Mettre en place sa passerelle :
    http://lea-linux.org/cached/index/Reseau-cxion_locale-gateway.html
  • Firewall et sécurité d'un réseau personnel sous Linux (la totale) :
    http://olivieraj.free.fr/fr/linux/information/firewall/index.html
  • Partage de connexion sous Debian Linux (Y. Morère Juillet 2003) :
    http://yann.morere.free.fr/article.php3?id_article=64
  • Un pare-feu pour un PC connecté à Internet
    http://esfa.chez.tiscali.fr/securite.html
  • Mise en place d'un partage de connexion internet via une passerelle GNU\Linux by labo SupInfo :
    Configuration du noyau, activation de la transmission des paquets IP, règles par-feu & protection
    http://www.labo-linux.org/index.php?page=articles&id=242&p=1
  • Firewalling et Partage de connexion internet : ajouter à votre ordinateur sous Linux la fonction de serveur NAT, qui permet de partager votre connexion avec d'autres machines. Votre ordinateur sous Linux aura deux interfaces réseau http://www.glatozen.org/iptables.php
  • Arno's IPTABLES Firewall Script : Un script éprouvé et souvent disponible sous forme de package, qu'il faut voir si vous souhaitez aisément configurer iptables pour un grand nombre de situations :
    Supporte NAT et SNAT, port forwarding, modems ADSL ethernet avec adresses IPs statiqies et dydynamiques, Filtrage par addresses MAC, Détection des stealth port scan, DMZ, protection contre le SYN/ICMP flooding, support expérimental d'IPv6, multi-interface/aliased-IP, logging hautement configurable, et ça sans compter les plugins...
    http://freshmeat.net/projects/iptables-firewall/ ou Homepage : http://rocky.eld.leidenuniv.nl/

Centraliser les comptes et les mots de passe (annuaire)

Open LDAP

Le Labo Linux propose ici aussi un petit cours complet sur OpenLDAP : Mise en place d'un annuaire OpenLDAP

NIS

Une autre possibilité est d'installer un serveur NIS. Celui-ci vérifiera s'il trouve votre login quelque part sur le réseau et vous donnera automatiquement accès à votre compte. Le serveur NIS vous évite également de modifier tous les /etc/hosts au moindre changement sur le réseau.

L'idée est de rassembler tous les fichiers de paramétrages utilisateurs dans des fichiers spéciaux de /var/yp/nom_du_domaine_nis.

Installation d'un serveur NIS

Vérifiez l'installation du paquetage ypserv.

Vérifiez le fonctionnement de portmap (ps -aux|grep portmap).

Attribuez un nom de domaine NIS : /bin/domainname --yp nom_de_domaine_NIS. Ne surtout pas attribuer un nom de domaine déjà attribué par ailleurs. Pour ne pas retaper cela à chaque fois, vous devriez avoir dans /etc/sysconfig/network une ligne comme :
NISDOMAINNAME=nom_de_domaine_nis (le fait de rajouter quelque part nis est une astuce pour ne pas se mélanger les pinceaux avec les noms de domaine d'autres types).

Redémarrez la lecture du fichier par :
. /etc/sysconfig/network. Vérifiez que le domaine est bien attribué en tapant domainname, qui doit vous renvoyer le nom de domaine NIS.

Placez-vous dans le bon répertoire : cd /var/yp.

Éditez le fichier Makefile si nécessaire. Dans la ligne all :, retirez tout le superflu ; all: passwd group \ devrait suffire. Faites très attention à ne pas mettre d'espace en fin de ligne car ce genre de chose rend la compilation impossible. Enregistrez et tapez Make target. Cette dernière opération devra être faite après chaque changement d'utilisateur.

Lancez le serveur en tapant /etc/rc.d/init.d/ypserv start (Redhat et dérivées).

Pour automatiser tout ceci, ajoutez domainname nom_de_domaine_nis dans votre /etc/profile, et paramétrez le démarrage automatique au service (par exemple avec tksysv ).

Vous aurez intérêt à installer des serveurs secondaires sur d'autres machines afin qu'une défaillance du serveur principal ne bloque pas tout le monde.

Installation d'un client NIS

Commencez à installer un client NIS sur la machine où fonctionne le serveur. ça sera plus facile pour tester le fonctionnement.

Vérifiez l'installation du paquetage ypbind. Éditez le fichier /etc/yp.conf. Rajoutez-y le nom du serveur : ypserver nomduserveur. et

vérifiez que le nom du serveur est bien déclaré dans /etc/hosts :

192.168.0.1 nom_du_serveur petit_nom

Dans le fichier /etc/host.conf, ajoutez avant hosts le mot yp. Ex :
order yp, hosts, bind

Éditez le fichier /etc/yp.conf, et ajoutez-y la ligne :
ypserver 192.168.0.1 (en supposant qu'il s'agisse de l'adresse IP du serveur NIS).

Assignez un nom de domaine NIS à votre machine (le même que pour le serveur).

Ajoutez la ligne

+::::::

dans /etc/passwd.

Lancez le service :
/etc/rc.d/init.d/ypbind start. à ce moment, il va chercher un serveur où se connecter.
Si ça a marché, vous devez recevoir un message affichant le nom de domaine NIS. Lancez alors la commande ypcat passwd, vous verrez tous les comptes sous lesquels vous pourrez vous connecter.

Si vous voulez que le service démarre automatiquement, utilisez un gestionnaire de démarrage comme tksysv ou Ksysv et rajoutez ypbind comme service devant démarrer automatiquement.

Une fois que vous avez vérifié que tout marche, vous pouvez effacer dans /etc/passwd les utilisateurs dont le n° est supérieur à 500 pour éviter les doublons. Par la suite, si vous voulez changer votre mot de passe, tapez yppasswd.

L'accès à vos répertoires à partir d'une machine distante nécessite un montage par nfs .

Sécurité du serveur NIS.

Éditez le fichier /var/yp/securenets, et annulez la ligne avec 0.0.0.0, qui donne accès à tout le monde.

à la place, mettez plutôt : 255.255.255.0 192.168.0.0, si votre réseau local est en 192.168.0.

Utiliser Internet pour mettre la pendule à l'heure :

rdate -s 128.115.14.97 (sous root ).

Votre courrier par Telnet (merci à Thierry Stoehr)

Se connecter au serveur : telnet pop3.votre-fournisseur-daccès 110 (Si le serveur l'accepte !)

S'identifier : user votre_nom, puis pass votre_mot de passe

Les principales commandes : list, quit, retr n°, dele n°

Énorme avantage : vous pouvez décider de ne pas rapatrier une grosse pièce jointe.

Envoyer du courrier :

  • smtp. votre-fournisseur-daccès 25
  • HELO <nom>
  • mail from:votre-adresse-email puis validez
  • rcpt to:adresse-email-du-destinataire puis validez
  • data puis validez et saisissez alors le texte du courrier
  • . puis validez pour envoyer le courrier

Devenir serveur

Devenir un serveur http

Vous devez installer le serveur Apache.
Le lancement du bazar se fait en tapant /etc/rc.d/init.d/httpd start (sous RH) ou /usr/sbin/apachectl start selon les cas.
Pour vous connecter, tapez http://127.0.0.1 ou http://localhost/ si vous êtes sur votre machine locale, ou http://ip_du_serveur si vous êtes sur un client distant.
Faites vos premiers tests avec Lynx (Netscape a une option par défaut qui empêche la connexion en local : désactiver le proxy).

Le répertoire de base, c'est à dire celui qui sert de racine vu du monde extérieur, était en principe /home/httpd/html, mais la nouvelle tendance est .../apache/html/, voire : /var/www/html. Vous y placerez les répertoires et fichiers destinés à être lus de l'extérieur.

Les scripts CGI sont à placer sous /home/httpd/cgi-bin (ou .../apache/cgi-bin). pour les faire fonctionner il faut s'assurer de la ligne suivante dans /etc/httpd/conf/srm.conf :
ScriptAlias /cgi-bin /home/httpd/cgi-bin.
Mais d'une manière générale il n'y a rien à retoucher dans les fichiers de config. Aux dernières nouvelles, tous les paramètrages d'Apache sont dans httpd.conf.

Sur Mandriva 8.0, il faut retoucher les fichiers de config httpd.conf et httpd-perl.conf, et remplacer les lignes
#ServerName localhost par
ServerName votre_machine.chez_vous.

hé hé Sur les distributions récentes (ex : Mandriva 10+), existe un outil d'installation et configuration graphique du serveur http : installez le package drakwizard et rendez-vous dans le centre de controle Mandriva.

Devenir un serveur de courriers

Admettons que vous vouliez utiliser un de vos ordinateurs pour échanger des courriers entre machines de votre réseau.
Installez un serveur comme Postfix.
Pour ce dernier, les réglages se font dans /etc/postfix/main.cf. Renseignez vos myhostname, mydomain, myorigin, mydestination. Redémarrez le service, et vous n'avez plus qu'à envoyer vos courriers à votremachine.votredomaine.

Faire un réseau à distance (par téléphone)

Il s'agit ici de configurer votre machine pour être un serveur ppp (comme votre fournisseur d'accès Internet).

Configuration : un modem pour chaque machine et une ligne téléphonique.
Le programme à activer est mgetty, en ayant soin d'autoriser le décrochage (il ne doit pas y avoir de fichier /etc/nologin.ttySx, x étant le numéro de votre port série). Lancer mgetty : mgetty /dev/modem.

Vous pouvez tester le fonctionnement en vous faisant appeler : il doit y avoir décroché et émission de sifflements.

Comme pour la réception de fax, vous pouvez configurer le /etc/inittab en rajoutant la ligne :

S0:2345:respawn:/sbin/mgetty ttyS0

Forcer la relecture de l'inittab sans rebooter : init q.

Créez sur le serveur un compte utilisateur (par exemple "ppp-user"), et arrangez-vous pour que ce compte lance pppd au démarrage. Pour cela, éditez le fichier /etc/passwd, repérez le compte de ppp-user, et remplacez à la fin de la ligne /bin/bash par /etc/mgetty+sendfax/login.config.

Paramétrez sur le client (celui qui appelle) une connexion de type internet avec le nom ppp-user et le password de ppp-user. Attribuez une adresse IP identique à celle qui figure dans /etc/mgetty+sendfax/login.config :

/AutoPPP/ - @ /usr/sbin/pppd /dev/modem 192.0.0.1:192.0.0.2 -chap +pap login modem crtscts debug

Pour autoriser la connexion, il faut rajouter au fichier /etc/hosts une ligne comme :

192.0.0.2 ipguest

et au fichier /etc/ppp/options :

lock
    :192.168.0.2

L'arrêter : mgetty stop.

Une fois connecté, la machine devient elle même une passerelle réseau pour peu qu'elle soit raccordée à un réseau local ou un client ou serveur VNC ou ce que vous voulez d'autre.

Clients Internet

Naviguer sur le Web

De (très) nombreux navigateurs internet sont disponibles sous Linux, tels que Galeon, Mozilla Firefox / SeaMonkey, Konqueror, Netscape, Opera, etc. pour le mode graphique. (détail sur la page Applications Internet et Opera)
Vous pourrez installer flash et java pour qu'un maximum de sites fonctionnent correctement.
Sur les sites qui vous rejettent pour cause d'identifiant du navigateur, il est possible de se faire passer pour un autre navigateur avec Mozilla Firefox, Konqueror ou Opera (fonction agent utilisateur).

Pour la navigation en mode texte/console, il y a lynx, links ou elinks, ces deux derniers étant plus complets et plus commodes.

ICQ, MSN, AIM, Jabber

ICQ (prononcez I seek you) est un système de serveur qui vous attribue un numéro permanent que vous donnez à vos correspondants. Ensuite, il suffit de lancer le programme client durant votre connexion pour voir si vos amis sont en ligne et pour leur parler par messages en direct.

Il existe plusieurs clients pour Linux, mais licq fait très bien l'affaire. Pour la messagerie multiprotocole, essayez kopete ou gaim . MSN dispose d'un client appelé amsn (excellent).
Détail sur la page Applications Internet.

FTP

Voir Ci-dessus

Hackiing et Sécurité Linux

Trop cool pour Internet Explorer