FAQ LinuxConsultez toutes les FAQ

Nombre d'auteurs : 50, nombre de questions : 217, dernière mise à jour : 22 avril 2016  Ajouter une question

 

Cette FAQ a été réalisée à partir des contributions des membres du forum Linux de Developpez.com et de l'équipe de rédaction. Merci à eux !

Nous sommes perpétuellement à l'écoute de vos suggestions et corrections, n'hésitez pas à nous en faire part sur le forum.


SommaireLinux en réseau (13)
précédent sommaire suivant
 

Placez les urls dans un fichier texte (nommé par exemple pg_dwd), et tapez simplement :

Code bash : Sélectionner tout
$ wget -i pg_dwd

Mis à jour le 23 octobre 2013 Francois Trazzi ok.Idriss

Sur un réseau /24 (anciennement "classe C") :

Code bash : Sélectionner tout
$ ping -b 192.168.0.255

L'adresse IP dépend de l'adresse de broadcast (diffusion) du réseau.

Si par exemple vous avez un serveur DHCP qui vous fournit automatiquement une IP :

Code bash : Sélectionner tout
$ ifconfig ethX

Cette commande vous donnera l'adresse de broadcast.

Mis à jour le 23 octobre 2013 Francois Trazzi ok.Idriss

Oui. Vous pouvez utiliser Links, ou Lynx (présents dans la plupart des distributions), ou encore w3m.

Mis à jour le 23 octobre 2013 Francois Trazzi ok.Idriss

Mettez dans un script au démarrage (par exemple : /etc/rc.local)

Code bash : Sélectionner tout
1
2
3
4
5
6
7
8
#Active le forwarding dans le kernel  
echo 1 > /proc/sys/net/ipv4/ip_forward                 
# Efface les règles actuelles  
iptables -F                                            
# idem  
iptables -t nat -F                                     
# Active le routage vers ppp0 
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Mis à jour le 23 octobre 2013 ok.Idriss vic

Voici diverses méthodes pour récupérer uniquement l'adresse IP en ligne de commande, utile pour intégrer dans un script.

Si vous avez une interface Ethernet :

Code bash : Sélectionner tout
$ ifconfig eth0 | grep inet | cut -d":" -f2 | cut -d" " -f1

Si vous avez une interface PPP :

Code bash : Sélectionner tout
$ /sbin/ifconfig | grep "P-t-P" | sed "s/^[: a-z]*\([.0-9]*\).*/\1/"

Pour trouver l'adresse de la passerelle :

Code bash : Sélectionner tout
1
2
$ awk '/eth0/{print $1}' /proc/net/arp  
192.168.0.101

Ou bien (toujours pour la passerelle) :

Code bash : Sélectionner tout
$ grep $(awk '/\t0003\t/{print $1}' /proc/net/route) /proc/net/arp | cut -d ' ' -f1


Ou encore :

Code bash : Sélectionner tout
$ grep $(netstat -arn |grep UG |awk '{ print $8 }' ) /proc/net/arp |awk ' {  print $1 }'

Mis à jour le 23 octobre 2013 chanmix nicolas581 ok.Idriss ovh

Depuis la machine A, nous souhaitons établir une connexion rsh vers une machine B pour un utilisateur.
Entre les deux machines, il est important d'avoir le même UID pour l'utilisateur.

1) Configurer la machine B

Dans le répertoire home du user, créer un fichier .rhosts (700 au niveau des droits) contenant

Code : Sélectionner tout
machineA le_user
Dans /etc/hosts, rajouter la machineA :

Code : Sélectionner tout
x.x.x.x    machineA
Dans (x)inetd, décommenter ou rajouter le service rsh et rlogin

Code : Sélectionner tout
shell  stream tcp  nowait root   /usr/sbin/tcpd       in.rshd
2) Configurer la machine A

Dans /etc/hosts, rajouter la machineB :

Code : Sélectionner tout
y.y.y.y   machineB
3) Tester la connexion

Lancer une commande depuis la machine A :

Code bash : Sélectionner tout
rsh machineB "hostname"

Si le hostname de la machine B apparait, c'est bon.

Mis à jour le 23 octobre 2013 Katyucha ok.Idriss

Nous souhaitons connecter deux PC par le port parallèle (via un câble de type LAPLINK) et que le second PC puisse accéder à internet (cet exemple a été testé sous Debian). La gestion TCP/IP via le port parallèle est géré par le module plip :

  • pc1 : 192.168.1.10 est connecté à Internet sur eth0
  • pc2 : 192.168.1.9 n'a que le port parallèle


Sur pc1 :

Si le pc1 possède un système d'impression il faut le désactiver pour pouvoir enlever le module imprimante du port parallèle. Dans cet exemple, le gestionnaire d'impression est CUPS :

Code bash : Sélectionner tout
1
2
$ /etc/init.d/cupsd stop 
$ rmmod lp

On ajoute la gestion de TCP/IP par port parallèle :

Code bash : Sélectionner tout
$ insmod /lib/module/2.6.x.x/kernel/driver/net/plip.ko

(plip dépend de parport.ko et parport_pc.ko, il faut les charger de la même manière s'il ne le sont pas déjà).

On ajoute l'interface plip0 (vérifier avec dmesg si c'est plip0 ou plip1 ou ...).

Code bash : Sélectionner tout
$ ifconfig plip0 192.168.1.10 pointopoint 192.168.1.9

On va permettre la redirection pour que l'autre PC puisse se connecter à internet :

Code bash : Sélectionner tout
1
2
$ echo 1 > /proc/sys/net/ipv4/ip_forward 
$ iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE

eth0 est l'interface qui est connecté à internet.

Sur pc2 :

Charger le module plip de la même manière que sur pc1.
Définir l'interface de connexion :

Code bash : Sélectionner tout
$ ifconfig plip0 192.168.1.9 pointopoint 192.168.1.10

Définir pc1 comme "routeur" :

Code bash : Sélectionner tout
$ route add default gw 192.168.1.10 plip0

Copier les lignes commençant par "nameserver" du fichier /etc/resolv.conf de pc1 dans /etc/resolv.conf de pc2 (pour les DNS, la résolution des noms)

Voilà pc2 à accès à internet et peut se connecter sur pc1.

Mis à jour le 23 octobre 2013 narmataru ok.Idriss

Voici dans l'ordre la liste des opérations pour diagnostiquer. Suivant leurs succès/échecs, vous pouvez ainsi en déduire votre problème.

Si vous utilisez un proxy, vérifier que votre navigateur est bien configuré pour passer par le proxy.

Pour vous assurez que c'est votre navigateur qui pose problème, essayez :

Code bash : Sélectionner tout
$ ping www.google.com

Si le ping est bon, alors c'est le navigateur. Sinon, afficher /etc/resolv.conf :

Code bash : Sélectionner tout
$ more /etc/resolv.conf

Vérifier que la ligne nameserver x.x.x.x contient bien l'adresse IP du serveur DNS de votre FAI. Modifiez la ligne, le cas échéant et recommencez le ping www.google.com.

Si le fichier est bien renseigné, faites un :

Code bash : Sélectionner tout
$ ping 216.239.57.104

C'est l'adresse IP de google.

Le ping est bon, alors tout va bien, vous avez bien un accès au web. Vérifiez l'adresse DNS et le fichier /etc/resolv.conf
Votre ping ne passe pas ? La connexion n'est pas établie. Vérifier votre configuration Ethernet, adresse IP/passerelle grâce à la commande ifconfig.

Faites un ping de votre passerelle :

Code bash : Sélectionner tout
$ ping x.x.x.x

Si ce ping passe bien mais le ping de 216.239.57.104 alors votre problème se trouve au niveau du routeur.

Mis à jour le 23 octobre 2013 Katyucha ok.Idriss

/etc/hosts contient une liste d'association nom de machine - adresse IP permettant de bypasser la résolution de nom classique (qui interroge les serveurs DNS) pour quelques serveurs dont on connaît l'adresse. Typiquement utilisé pour renseigner des noms de machines locales, plus facilement accessibles par leur nom qu'en tapant l'adresse complète. Le format du fichier est très simple :

Code bash : Sélectionner tout
1
2
3
127.0.0.1    localhost.localdomain    localhost 
192.168.1.11    mamachine 
192.168.1.12    monpc    lepc

En première colonne l'adresse de la machine, ensuite en 2e colonne (séparée par un espace ou une tabulation) le nom correspondant, suivi éventuellement par ses alias.

/etc/host.conf définit la séquence de recherche pour la résolution de nom. En général on trouve ceci :

Code bash : Sélectionner tout
1
2
order hosts,bind 
multi on

Cela signifie que le résolveur commencera par chercher dans le fichier /etc/hosts, puis interrogera le DNS. Le multi on veut simplement dire que le résolveur renverra toutes les adresses qu'il trouve pour un nom inscrit dans le fichier hosts, et non seulement la première. C'est l'option par défaut sous Debian et sans d'autres distributions aussi.

Mis à jour le 23 octobre 2013 ok.Idriss ovh

Le but de l'opération est que l'utilisateur A de la machine Source se connecte comme utilisateur B de la machine Destination. L'opération est un transfert de clé publique entre votre Source et votre Destination.

Sur la Source :

En tant qu'utilisateur A, vous devez générer une paire de clé RSA privée/publique :

Code bash : Sélectionner tout
$ ssh-keygen -t rsa -b > nombre de bits de la clé < -N ""

Nous vous conseillons 4096 pour la complexité de la clé.

Deux fichiers sont apparus dans ~/.ssh :

  • id_rsa
  • id_rsa.pub


id_rsa correspond à la clé privée
id_rsa.pub correspond à l'autre clé, celle publique.

Sur la Destination :

La clé publique va être recopiée sur la Destination dans ~/.ssh/authorized_keys :
Vous avez un fichier dans le format suivant :

Code bash : Sélectionner tout
$ ssh-rsa > la clé publique< A@Source

Maintenant depuis la machine Source en utilisateur A, il vous suffit de faire :

Code bash : Sélectionner tout
$ ssh B@Destination

Il est aussi possible de copier la clé avec la commande ssh-copy-id :
Code bash : Sélectionner tout
$ ssh-copy-id B@Destination

Mis à jour le 6 décembre 2013 Katyucha LittleWhite ok.Idriss

Linux accepte la création d'interfaces réseaux virtuels de manière simple, il suffit de configurer une carte eth0:1. Exemple :

Code bash : Sélectionner tout
$ /sbin/ifconfig eth0:1 192.6.1.23 broadcast 192.6.1.255 netmask 255.255.255.0

Ceci autant de fois que l'on désire d'interfaces différentes.

Mis à jour le 23 octobre 2013 MarcG ok.Idriss

Outre les outils graphiques qui peuvent être inclus dans votre distribution, la désactivation et l'activation d'une interface réseau se font respectivement par les commandes ifdown et ifup, en passant en argument le nom de l'interface.

L'interface pour un modem se nomme ppp0, pour une carte réseau eth0. Ainsi, pour réinitialiser la connexion du modem, cela donne :

Code bash : Sélectionner tout
1
2
$ /sbin/ifdown ppp0 
$ /sbin/ifup ppp0

Pour connaitre quelles sont les interfaces réseau sur votre machine, y compris les non actives :

Code bash : Sélectionner tout
$ /sbin/ifconfig -a

Mis à jour le 23 octobre 2013 Nightfall ok.Idriss

Avant toute chose, plantons le décor : nous avons un réseau local, un firewall, et l'internet.

Code : Sélectionner tout
LAN <====> Firewall <====> Internet
  • On ne maitrise pas les machines du réseau local (donc on ne peut pas désinstaller Skype)
  • Le firewall est déjà configuré de façon assez restrictive. Le trafic autorisé est donc très restreint (HTTP et HTTPS au moins, plus une poignée de trucs en plus comme le NTP, l'IRC, etc.)
  • Comme le firewall laisse passer le HTTPS : Skype passe (d'ailleurs le HTTP suffirait s'il n'y pas de filtre applicatif HTTP). Nous désirons cependant bloquer Skype du LAN vers internet.


Après quelques recherches, j'ai noté quelques aspects du protocole Skype qui semblaient intéressants :

Au tout début du protocole, Skype tente de se connecter à un super nœud. Un super nœud c'est, en substance, un utilisateur normal qui a été élu pour tenir la fonction de super nœud en vertu de sa bande passante et de son uptime au dessus du lot. Un super nœud attend les connections sur un port préférentiel qu'il définit arbitrairement et aléatoirement, mais également sur les ports 80 et 443.
Comme les super nœuds sont des utilisateurs normaux, Skype n'embarque pas de liste de super nœud "en dur" dans l'exécutable, c'est une liste dynamique et on ne peut donc bien entendu pas bloquer toutes les IP des super nœuds en dur sur le firewall. Chaque entrée de la liste est constituée d'un couple : adresse IP du super nœud, et port préférentiel du super nœud (ce port étant choisi aléatoirement par le super nœud).

Skype tente donc de se connecter de la façon suivante à un super nœud (dès qu'une connexion est établie les étapes suivantes ne sont, bien entendu, pas tentées) :

  • tentative de connexion en UDP aux super nœuds sur leur port préférentiel ;
  • tentative de connexion en TCP aux super nœuds sur leur port préférentiel ;
  • tentative de connexion en TCP aux super nœuds sur le port 80 (HTTP) ;
  • tentative de connexion en TCP aux super nœuds sur le port 443 (HTTPS).


Généralement donc, sur un réseau firewallé, Skype commence à jouer les passe murailles à partir de l'étape 3.

Une fois connecté à un super nœud le protocole de connexion continue, mais cette suite ne nous intéressera pas puisque nous allons tenter d’empêcher toute connexion à un super nœud (ce qui fait abandonner à Skype la tentative de connexion et remplie donc notre cahier des charges : Skype est bloqué !)

Si vous avez bien suivi, vous avez déjà deviné comment nous proposons de bloquer Skype.

Le principe : Lorsque Skype tente de connecter des super nœuds en UDP sur leur port préférentiel cela se repère aisément au niveau du firewall (les ports étant "exotiques" il y a bien peu de chance qu'ils soient autorisés à sortir) et on va donc, grâce au module récent d'iptables, mémoriser les IP des super nœuds. Ensuite l'idée est simple : toujours grâce au module "récent" d'iptables on DROP tous les paquets (TCP et UDP, sur tous les ports, ou au moins 80 et 443) en provenance de ces super nœuds pendant 10 minutes. De cette façon Skype ne parvient jamais à connecter un Super Nœud (puisque nous bloquons les SYN retour), et il abandonne les tentatives de connexions.

Bien entendu cette méthode a quelques "désagréments" :

  • si, par malheur, un interlocuteur extérieur autorisé se trouve être un super nœud que quelqu'un du réseau local tente de contacter, il risque de ne plus être accessible depuis le réseau local ;
  • si un individu mal intentionné sur le réseau local est au courant du fonctionnement de ce filtrage il lui est plus qu'aisé de couper toute communication entre les serveurs de son choix et le réseau local (joli DoS encore une fois, au moins pour les ports 80 et 443).


En résumé : cette méthode est utilisable pour des réseaux où la sureté de fonctionnement n'est pas critique (tout à fait au hasard on va dire : sur le réseau local d'une résidence étudiante par exemple ^_^ ).

Maintenant place au code :

Code bash : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash 
  
#.................Début du script de firewall 
#.................flush des tables principalement 
  
#premiere regle a mettre : on drop tout ce qui vient d'une ip identifiee comme super noeud. 
iptables -A FORWARD -m recent --rcheck --name skype_super_noeuds --second 600 -j LOG 
iptables -A FORWARD -m recent --rcheck --name skype_super_noeuds --second 600 -j DROP 
  
#.................suite du script de firewall, 
#.................éventuel nat, 
#.................tout les jumps en ACCEPT y compris sur ESTABLISHED 
#.................etc 
  
#en fin de script on memorise les ip des super noeuds grace a la tentative d'udp sur port bizarre 
iptables -A FORWARD -p udp -m recent --name skype_super_noeuds --rdest --set 
#on memorise toutes les autres tentatives bizarre,  
#en effet j'ai cru remarquer que pour certains Super Noeud skype tente directement en tcp sans passer par la case udp... 
iptables -A FORWARD -p tcp -m recent --name skype_super_noeuds --rdest --set

Étant donné que Skype peut aussi passer les proxy applicatif via httpS (port 443) et ne voulant pas bloquer HTTPS, nous n'avons trouvé qu'une solution qui ne nous a pas franchement satisfaite et que nous n'avons d'ailleurs pas testé. À savoir : bloquer les accès HTTPS sur IP n'ayant pas de résolution DNS au niveau du proxy... d'où la solution alternative que nous proposons et qui se passe de proxy applicatif (plutôt gourmand en CPU).

Mis à jour le 23 octobre 2013 ok.Idriss Ozwald

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2017 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Contacter le responsable de la rubrique Linux